import { Point, Rect, BezierPoint, BoxSeriesDataType } from '../options'; import { TooltipData } from './tooltip'; import { LineModel, LabelModel } from './axis'; import { LegendData } from './legend'; import { TreemapSeriesData } from '../store/store'; import { BubbleDataLabel } from '../theme'; import { SectorStyle, SectorStyleName, CircleStyleName, RectStyleName } from '../brushes'; export type Nullable = T | null; export type StyleProp = (T | K)[]; export type PointModel = Point & { value?: number | string; name?: string; data?: (string | number)[]; }; export interface CircleStyle { strokeStyle?: string; lineWidth?: number; shadowColor?: string; shadowBlur?: number; shadowOffsetY?: number; } export type ResponderModel = | CircleResponderModel | RectResponderModel | RectModel | BoxPlotResponderModel | SectorResponderModel | TreemapRectResponderModel | MarkerResponderModel | BulletResponderModel | RadialBarResponderModel | GaugeResponderModel; export type TreemapSeriesModels = { series: TreemapRectModel[]; layer: TreemapRectModel[] }; export type CircleModel = { type: 'circle'; radius: number; color: string; style?: StyleProp; seriesIndex?: number; index?: number; angle?: { start: number; end: number; }; name?: string; borderWidth?: number; borderColor?: string; } & Point; export type CircleResponderModel = { detectionSize?: number; data: TooltipData; } & CircleModel; export type ClipRectAreaModel = { type: 'clipRectArea'; } & Rect; export type LinePointsModel = { type: 'linePoints'; color: string; lineWidth: number; points: (BezierPoint | null)[]; name?: string; seriesIndex?: number; dashSegments?: number[]; distances?: number[]; }; export type AreaPointsModel = Omit & { type: 'areaPoints'; fillColor: string; }; export type PathRectModel = { type: 'pathRect'; radius?: number; fill?: string; stroke?: string; lineWidth?: number; } & Rect; export type RectStyle = { shadowColor?: string; shadowOffsetX?: number; shadowOffsetY?: number; shadowBlur?: number; }; export type RectModel = { type: 'rect'; color: string; borderColor?: string; style?: StyleProp; thickness?: number; value?: BoxSeriesDataType; name?: string; index?: number; } & Rect; export type TreemapRectModel = { type: 'rect'; color: string; colorRatio?: number; style?: StyleProp; thickness?: number; } & Rect & TreemapSeriesData; export type HeatmapRectModels = { series: HeatmapRectModel[]; }; export type HeatmapRectModel = { type: 'rect'; name: string; color: string; colorRatio: number; colorValue: number | null; style?: StyleProp; thickness: number; } & Rect; export type HeatmapRectResponderModel = HeatmapRectModel & { data?: { name?: string } & Partial; }; export type TreemapRectResponderModel = Omit & { index?: number; data?: Partial; } & Rect; export type RectResponderModel = Partial & { type: 'rect'; index?: number; data?: { name?: string } & Partial; label?: string; } & Rect & Partial; export type AreaSeriesModels = { rect: ClipRectAreaModel[]; series: (AreaPointsModel | LinePointsModel)[]; dot: CircleModel[]; }; export type BoxSeriesModels = { clipRect?: ClipRectAreaModel[]; series: RectModel[]; connector?: LineModel[]; label?: LabelModel[]; }; export type CircleSeriesModels = { series: CircleModel[]; }; export type ScatterSeriesModels = { series: ScatterSeriesModel[]; }; export type LineSeriesModels = { rect: ClipRectAreaModel[]; series: LinePointsModel[]; dot: CircleModel[]; }; export type StackTotalModel = Omit & { type: 'stackTotal'; theme: BubbleDataLabel; }; type PieSeriesModels = Record; type RadialBarSeriesModels = Record; interface PieSectorModel extends SectorModel { totalAngle: number; percentValue: number; } interface RadialBarSectorModel extends SectorModel { totalAngle: number; } export type SectorModel = { type: 'sector'; color: string; degree: { start: number; end: number; }; radius: { inner: number; outer: number; }; name?: string; value?: number; style?: StyleProp; clockwise: boolean; drawingStartAngle?: number; index?: number; seriesColor?: string; seriesIndex?: number; lineWidth?: number; animationDegree?: { start: number; end: number; }; } & Point; export type SectorResponderModel = { data: TooltipData; } & SectorModel; type GroupedSectorResponderModel = Pick< SectorModel, 'type' | 'x' | 'y' | 'degree' | 'radius' | 'name' | 'clockwise' | 'index' >; type RadialBarResponderModel = SectorResponderModel | GroupedSectorResponderModel; interface ClockHandResponderModel extends ClockHandModel { detectionSize: number; data: TooltipData; } type GaugeResponderModel = SectorResponderModel | ClockHandResponderModel; export type PolygonModel = { type: 'polygon'; points: Point[]; color: string; lineWidth: number; fillColor?: string; distances?: number[]; name?: string; dashSegments?: number[]; }; export type RadarSeriesModels = { area: AreaPointsModel[]; line: LinePointsModel[]; dot: CircleModel[]; }; export type BoxPlotSeriesModel = RectModel | LineModel | CircleModel; export type BoxPlotResponderTypes = | BoxPlotResponderModel | CircleResponderModel | RectResponderModel; export type BoxPlotSeriesModels = { rect: RectModel[]; line: LineModel[]; circle: CircleModel[]; }; export type LineResponderModel = { detectionSize?: number; } & LineModel; export type BoxPlotModel = { type: 'boxPlot'; color: string; name: string; rect: RectModel | null; median: LineModel | null; upperWhisker: LineModel | null; lowerWhisker: LineModel | null; minimum: LineModel | null; maximum: LineModel | null; index?: number; boxPlotDetection: { x: number; width: number }; }; export type BoxPlotResponderModel = { data?: TooltipData; } & BoxPlotModel & Point; export type BulletRectModel = { modelType: 'bullet' | 'range'; seriesColor?: string; tooltipColor?: string; } & RectModel; export type BulletLineModel = LineModel & { seriesColor?: string; tooltipColor?: string; value: number; }; type BulletModel = BulletRectModel | BulletLineModel; export type MarkerResponderModel = { data?: TooltipData; } & LineModel & LineResponderModel; export type BulletRectResponderModel = { data?: TooltipData; } & BulletModel; export type BulletResponderModel = | RectResponderModel | BulletRectResponderModel | MarkerResponderModel; export type BulletSeriesModels = { range: BulletRectModel[]; bullet: BulletRectModel[]; marker: BulletLineModel[]; clipRect?: ClipRectAreaModel[]; }; export interface MouseEventType { responders: CircleResponderModel[] | RectResponderModel[]; mousePosition: Point; } export type NestedPieSeriesModels = Record & { selectedSeries: SectorModel[]; }; export type ScatterSeriesIconType = | 'circle' | 'rect' | 'triangle' | 'pentagon' | 'star' | 'diamond' | 'cross' | 'hexagon'; export interface ScatterSeriesModel { type: 'scatterSeries'; iconType: ScatterSeriesIconType; x: number; y: number; borderColor: string; borderWidth: number; fillColor: string; size: number; index?: number; seriesIndex?: number; name?: string; } export type NoDataTextModel = LabelModel[]; export type BackgroundModel = RectModel[]; export type RadiusRange = { inner: number; outer: number }; export type ClockHandModel = { type: 'clockHand'; color: string; name: string; value: number | string; x: number; y: number; x2: number; y2: number; pin: { color: string; radius: number; style: StyleProp; }; degree: number; baseLine: number; animationDegree: number; handSize: number; seriesData: (number | string)[]; index: number; seriesIndex: number; }; export type GaugeSeriesModels = { clockHand: ClockHandModel[]; solid: SectorModel[]; backgroundSolid: SectorModel[]; };