-
Notifications
You must be signed in to change notification settings - Fork 328
/
options.d.ts
157 lines (139 loc) · 6.39 KB
/
options.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
import { Chart, Color, PointStyle, BorderRadius, CoreInteractionOptions } from 'chart.js';
import { AnnotationEvents, PartialEventContext, EventContext } from './events';
import { LabelOptions, BoxLabelOptions, LabelTypeOptions } from './label';
import { AnnotationBoxModel, AnnotationElement } from './element';
export type DrawTime = 'afterDraw' | 'afterDatasetsDraw' | 'beforeDraw' | 'beforeDatasetsDraw';
export interface AnnotationTypeRegistry {
box: BoxAnnotationOptions
ellipse: EllipseAnnotationOptions
label: LabelAnnotationOptions
line: LineAnnotationOptions
point: PointAnnotationOptions
polygon: PolygonAnnotationOptions
}
export type AnnotationType = keyof AnnotationTypeRegistry;
export type AnnotationOptions<TYPE extends AnnotationType = AnnotationType> =
{ [key in TYPE]: { type: key } & AnnotationTypeRegistry[key] }[TYPE]
interface AnnotationHooks {
beforeDraw?(context: EventContext): void,
afterDraw?(context: EventContext): void
}
export type Scriptable<T, TContext> = T | ((ctx: TContext, options: AnnotationOptions) => T);
export type ScaleValue = number | string;
interface ShadowOptions {
backgroundShadowColor?: Scriptable<Color, PartialEventContext>,
borderShadowColor?: Scriptable<Color, PartialEventContext>,
shadowBlur?: Scriptable<number, PartialEventContext>,
shadowOffsetX?: Scriptable<number, PartialEventContext>,
shadowOffsetY?: Scriptable<number, PartialEventContext>
}
export interface CoreAnnotationOptions extends AnnotationEvents, ShadowOptions, AnnotationHooks {
adjustScaleRange?: Scriptable<boolean, PartialEventContext>,
borderColor?: Scriptable<Color, PartialEventContext>,
borderDash?: Scriptable<number[], PartialEventContext>,
borderDashOffset?: Scriptable<number, PartialEventContext>,
borderWidth?: Scriptable<number, PartialEventContext>,
display?: Scriptable<boolean, PartialEventContext>,
drawTime?: Scriptable<DrawTime, PartialEventContext>,
init?: boolean | ((chart: Chart, properties: AnnotationBoxModel, options: AnnotationOptions) => void | boolean | AnnotationElement),
id?: string,
xMax?: Scriptable<ScaleValue, PartialEventContext>,
xMin?: Scriptable<ScaleValue, PartialEventContext>,
xScaleID?: Scriptable<string, PartialEventContext>,
yMax?: Scriptable<ScaleValue, PartialEventContext>,
yMin?: Scriptable<ScaleValue, PartialEventContext>,
yScaleID?: Scriptable<string, PartialEventContext>,
z?: Scriptable<number, PartialEventContext>
}
interface AnnotationPointCoordinates {
xValue?: Scriptable<ScaleValue, PartialEventContext>,
yValue?: Scriptable<ScaleValue, PartialEventContext>,
}
export interface ArrowHeadOptions extends ShadowOptions {
backgroundColor?: Scriptable<Color, PartialEventContext>,
borderColor?: Scriptable<Color, PartialEventContext>,
borderDash?: Scriptable<number[], PartialEventContext>,
borderDashOffset?: Scriptable<number, PartialEventContext>,
borderWidth?: Scriptable<number, PartialEventContext>,
display?: Scriptable<boolean, PartialEventContext>,
fill?: Scriptable<boolean, PartialEventContext>,
length?: Scriptable<number, PartialEventContext>,
width?: Scriptable<number, PartialEventContext>,
}
export interface ArrowHeadsOptions extends ArrowHeadOptions{
end?: ArrowHeadOptions,
start?: ArrowHeadOptions,
}
export interface ControlPointOptions {
x?: Scriptable<number | string, PartialEventContext>,
y?: Scriptable<number | string, PartialEventContext>,
}
export interface LineAnnotationOptions extends CoreAnnotationOptions {
arrowHeads?: ArrowHeadsOptions,
curve?: Scriptable<boolean, PartialEventContext>,
controlPoint?: Scriptable<number | string | ControlPointOptions, PartialEventContext>,
endValue?: Scriptable<number|string, PartialEventContext>,
label?: LabelOptions,
scaleID?: Scriptable<string, PartialEventContext>,
value?: Scriptable<number|string, PartialEventContext>
}
export interface BoxAnnotationOptions extends CoreAnnotationOptions {
backgroundColor?: Scriptable<Color, PartialEventContext>,
/**
* Border line cap style. See MDN.
* @default 'butt'
*/
borderCapStyle?: Scriptable<CanvasLineCap, PartialEventContext>,
/**
* Border line dash. See MDN.
* @default []
*/
borderDash?: Scriptable<number[], PartialEventContext>,
/**
* Border line dash offset. See MDN.
* @default 0.0
*/
borderDashOffset?: Scriptable<number, PartialEventContext>,
/**
* Border line join style. See MDN.
* @default 'miter'
*/
borderJoinStyle?: Scriptable<CanvasLineJoin, PartialEventContext>,
borderRadius?: Scriptable<number | BorderRadius, PartialEventContext>,
label?: BoxLabelOptions,
rotation?: Scriptable<number, PartialEventContext>
}
export interface EllipseAnnotationOptions extends CoreAnnotationOptions {
backgroundColor?: Scriptable<Color, PartialEventContext>,
label?: BoxLabelOptions,
rotation?: Scriptable<number, PartialEventContext>
}
export interface PointAnnotationOptions extends CoreAnnotationOptions, AnnotationPointCoordinates {
backgroundColor: Scriptable<Color, PartialEventContext>,
pointStyle?: Scriptable<PointStyle, PartialEventContext>,
radius?: Scriptable<number, PartialEventContext>,
rotation?: Scriptable<number, PartialEventContext>,
xAdjust?: Scriptable<number, PartialEventContext>,
yAdjust?: Scriptable<number, PartialEventContext>,
}
export interface LabelAnnotationOptions extends CoreAnnotationOptions, LabelTypeOptions, AnnotationPointCoordinates {
rotation?: Scriptable<number, PartialEventContext>
}
interface PolygonAnnotationOptions extends CoreAnnotationOptions, AnnotationPointCoordinates {
backgroundColor: Scriptable<Color, PartialEventContext>,
borderCapStyle?: Scriptable<CanvasLineCap, PartialEventContext>,
borderJoinStyle?: Scriptable<CanvasLineJoin, PartialEventContext>,
point?: PointAnnotationOptions,
radius?: Scriptable<number, PartialEventContext>,
rotation?: Scriptable<number, PartialEventContext>,
sides?: Scriptable<number, PartialEventContext>,
xAdjust?: Scriptable<number, PartialEventContext>,
yAdjust?: Scriptable<number, PartialEventContext>,
}
export interface AnnotationPluginOptions extends AnnotationEvents, AnnotationHooks {
animations?: Record<string, unknown>,
annotations: AnnotationOptions[] | Record<string, AnnotationOptions>,
clip?: boolean,
common?: BoxAnnotationOptions | EllipseAnnotationOptions | LabelAnnotationOptions | LineAnnotationOptions | PointAnnotationOptions | PolygonAnnotationOptions,
interaction?: CoreInteractionOptions
}