import { SyntheticEvent } from 'react'; import type { RenderableContent, IGraphProps, IEdgeRouterMode, IARCProps, GraphNodeId } from '@adam-sv/arc'; export interface IGanttChart extends IARCProps { data: IGanttChartDatum[]; barOpts: IGanttDevBarProps; valueDomain?: [Date | number, Date | number]; edges?: IGanttChartEdge[]; edgeMode?: IEdgeRouterMode; edgeSpacing?: number; connectionActions?: IGraphProps['connectionActions']; axisSettings?: Partial>; minContentHeight?: number; zoomSettings?: Partial; mouseOverContent?: (bar: IGanttChartDatum) => RenderableContent; mouseOverTargetElement?: Element; } export interface IGanttChartZoom { min: number; max: number; value?: number; } export interface IGanttChartEdge { from: NodeIdType; to: NodeIdType; } export interface IGanttChartDatum { id: NodeIdType; className?: string; data?: NodeType; label: string; start: Date | number; finish: Date | number; } export interface IGanttDevBarProps { height: number; padding: number; onClick?: (e: SyntheticEvent, datum: IGanttChartDatum) => unknown; onMouseOver?: (e: SyntheticEvent, datum: IGanttChartDatum) => unknown; onMouseOut?: (e: SyntheticEvent, datum: IGanttChartDatum) => unknown; } export interface IGanttChartAxisProps { size?: number; label?: string; preventResize?: boolean; } export type DatumId = string | number;