/// import { ScaleBand, ScaleLinear } from 'd3-scale'; import { Domain, LaneDisplayMode, TimelineEvent, TimelineEventCluster, TimelineLane } from '../model'; import { ZoomLevels } from '../shared/ZoomScale'; export type TimelineLayerType = 'grid' | 'axes' | 'interaction' | 'marks'; export interface CustomLayerProps> { width: number; height: number; events: ReadonlyArray; eventClusters: ReadonlyArray>; lanes: ReadonlyArray>; laneDisplayMode?: LaneDisplayMode; xScale: ScaleLinear; yScale: ScaleBand; domain: Domain; maxDomain: Domain; maxDomainStart: number; maxDomainEnd: number; currentZoomScale: ZoomLevels; nextSmallerZoomScale: ZoomLevels; isAnimationInProgress: boolean; } export type CustomLayer = >(props: CustomLayerProps) => React.ReactNode; export type TimelineLayer = TimelineLayerType | CustomLayer;