UNPKG

@toast-ui/chart

Version:

TOAST UI Application: Chart

387 lines (331 loc) 8.43 kB
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> = T | null; export type StyleProp<T, K> = (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<CircleStyle, CircleStyleName>; 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<LinePointsModel, 'type'> & { 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<RectStyle, RectStyleName>; thickness?: number; value?: BoxSeriesDataType; name?: string; index?: number; } & Rect; export type TreemapRectModel = { type: 'rect'; color: string; colorRatio?: number; style?: StyleProp<RectStyle, RectStyleName>; 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<RectStyle, RectStyleName>; thickness: number; } & Rect; export type HeatmapRectResponderModel = HeatmapRectModel & { data?: { name?: string } & Partial<TooltipData>; }; export type TreemapRectResponderModel = Omit<TreemapRectModel, 'data'> & { index?: number; data?: Partial<TooltipData>; } & Rect; export type RectResponderModel = Partial<RectModel> & { type: 'rect'; index?: number; data?: { name?: string } & Partial<TooltipData>; label?: string; } & Rect & Partial<LegendData>; 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<RectModel, 'type' | 'color'> & { type: 'stackTotal'; theme: BubbleDataLabel; }; type PieSeriesModels = Record<string, PieSectorModel[]>; type RadialBarSeriesModels = Record<string, RadialBarSectorModel[]>; 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<SectorStyle, SectorStyleName>; 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<string, SectorModel[]> & { 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<CircleStyle, CircleStyleName>; }; degree: number; baseLine: number; animationDegree: number; handSize: number; seriesData: (number | string)[]; index: number; seriesIndex: number; }; export type GaugeSeriesModels = { clockHand: ClockHandModel[]; solid: SectorModel[]; backgroundSolid: SectorModel[]; };