forked from chartjs/chartjs-plugin-zoom
/
options.d.ts
184 lines (151 loc) · 3.92 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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
import { Chart, Color, Point } from 'chart.js';
type Mode = 'x' | 'y' | 'xy';
type Key = 'ctrl' | 'alt' | 'shift' | 'meta';
export interface WheelOptions {
/**
* Enable the zoom via mouse wheel
*/
enabled?: boolean;
/**
* Speed of zoom via mouse wheel
* (percentage of zoom on a wheel event)
*/
speed?: number;
/**
* Modifier key required for zooming with mouse
*/
modifierKey?: Key;
}
export interface DragOptions {
/**
* Enable the zoom via drag
*/
enabled?: boolean;
/**
* Minimal zoom distance required before actually applying zoom
*/
threshold?: number;
/**
* Border color of the drag area
*/
borderColor?: Color;
/**
* Border width of the drag area
*/
borderWidth?: number;
/**
* Background color of the drag area
*/
backgroundColor?: Color;
/**
* Modifier key required for drag-to-zoom
*/
modifierKey?: Key;
}
export interface PinchOptions {
/**
* Enable the zoom via pinch
*/
enabled?: boolean;
}
/**
* Container for zoom options
*/
export interface ZoomOptions {
/**
* Zooming directions. Remove the appropriate direction to disable
* E.g. 'y' would only allow zooming in the y direction
* A function that is called as the user is zooming and returns the
* available directions can also be used:
* mode: function({ chart }) {
* return 'xy';
* },
*/
mode?: Mode | { (chart: Chart): Mode };
/**
* Options of the mouse wheel mode
*/
wheel?: WheelOptions;
/**
* Options of the drag-to-zoom mode
*/
drag?: DragOptions;
/**
* Options of the pinch mode
*/
pinch?: PinchOptions;
scaleMode?: Mode | { (chart: Chart): Mode };
/** @deprecated Use scaleMode instead */
overScaleMode?: Mode | { (chart: Chart): Mode };
/**
* Function called while the user is zooming
*/
onZoom?: (context: { chart: Chart }) => void;
/**
* Function called once zooming is completed
*/
onZoomComplete?: (context: { chart: Chart }) => void;
/**
* Function called when wheel input occurs without modifier key
*/
onZoomRejected?: (context: { chart: Chart, event: Event }) => void;
onZoomStart?: (context: { chart: Chart, event: Event, point: Point }) => void;
}
/**
* Container for pan options
*/
export interface PanOptions {
/**
* Boolean to enable panning
*/
enabled?: boolean;
/**
* Panning directions. Remove the appropriate direction to disable
* E.g. 'y' would only allow panning in the y direction
* A function that is called as the user is panning and returns the
* available directions can also be used:
* mode: function({ chart }) {
* return 'xy';
* },
*/
mode?: Mode | { (char: Chart): Mode };
/**
* Modifier key required for panning with mouse
*/
modifierKey?: Key;
scaleMode?: Mode | { (chart: Chart): Mode };
/** @deprecated Use scaleMode instead */
overScaleMode?: Mode | { (chart: Chart): Mode };
/**
* Minimal pan distance required before actually applying pan
*/
threshold?: number;
/**
* Function called while the user is panning
*/
onPan?: (context: { chart: Chart }) => void;
/**
* Function called once panning is completed
*/
onPanComplete?: (context: { chart: Chart }) => void;
/**
* Function called when pan fails because modifier key was not detected.
* event is the a hammer event that failed - see https://hammerjs.github.io/api#event-object
*/
onPanRejected?: (context: { chart: Chart, event: Event }) => void;
onPanStart?: (context: { chart: Chart, event: Event, point: Point }) => boolean | undefined;
}
export interface ScaleLimits {
min?: number | 'original';
max?: number | 'original';
minRange?: number;
}
export interface LimitOptions {
// Scale limits, indexed by the scale's ID (key) or by axis (x/y)
[axisId: string]: ScaleLimits;
}
export interface ZoomPluginOptions {
pan?: PanOptions;
limits?: LimitOptions;
zoom?: ZoomOptions;
}