import React from 'react'; import styled from '@emotion/styled'; import * as Timeline from 'sentry/components/replays/breadcrumbs/timeline'; import {countColumns, formatTime} from '../utils'; type LineStyle = 'dotted' | 'solid' | 'none'; const Line = styled(Timeline.Col)<{lineStyle: LineStyle}>` border-right: 1px ${p => p.lineStyle} ${p => p.theme.gray100}; text-align: right; `; function Gridlines({ children, cols, lineStyle, remaining, }: { cols: number; lineStyle: LineStyle; remaining: number; children?: (i: number) => React.ReactNode; }) { return ( {[...Array(cols)].map((_, i) => ( {children ? children(i) : null} ))} ); } type Props = { duration: number; width: number; minWidth?: number; }; export function MajorGridlines({duration, minWidth = 50, width}: Props) { const {timespan, cols, remaining} = countColumns(duration, width, minWidth); return ( {i => {formatTime((i + 1) * timespan)}} ); } export function MinorGridlines({duration, minWidth = 20, width}: Props) { const {cols, remaining} = countColumns(duration, width, minWidth); return ; }