1 | import { PluginListeners } from './plugins.js';
|
2 | import { CChart } from './module/cchart.js';
|
3 | import { HtmlCanvas, HtmlCanvasContext } from './htmlcanvas.js';
|
4 | import * as Data from './types/data.js';
|
5 | import * as Anim from './types/anim.js';
|
6 | import { Point, Rect, Line, TransformedRect } from './geom.js';
|
7 | export declare enum EventType {
|
8 | click = "click",
|
9 | pointermove = "pointermove",
|
10 | pointerdown = "pointerdown",
|
11 | pointerup = "pointerup",
|
12 | pointerleave = "pointerleave",
|
13 | wheel = "wheel",
|
14 | update = "update",
|
15 | drawBegin = "draw-begin",
|
16 | drawComplete = "draw-complete",
|
17 | backgroundDraw = "background-draw",
|
18 | titleDraw = "title-draw",
|
19 | subtitleDraw = "subtitle-draw",
|
20 | captionDraw = "caption-draw",
|
21 | logoDraw = "logo-draw",
|
22 | legendBackgroundDraw = "legend-background-draw",
|
23 | legendTitleDraw = "legend-title-draw",
|
24 | legendLabelDraw = "legend-label-draw",
|
25 | legendMarkerDraw = "legend-marker-draw",
|
26 | legendBarDraw = "legend-bar-draw",
|
27 | plotBackgroundDraw = "plot-background-draw",
|
28 | plotAreaDraw = "plot-area-draw",
|
29 | plotMarkerDraw = "plot-marker-draw",
|
30 | plotMarkerLabelDraw = "plot-marker-label-draw",
|
31 | plotMarkerGuideDraw = "plot-marker-guide-draw",
|
32 | plotAxisDraw = "plot-axis-draw",
|
33 | plotAxisTitleDraw = "plot-axis-title-draw",
|
34 | plotAxisLabelDraw = "plot-axis-label-draw",
|
35 | plotAxisTickDraw = "plot-axis-tick-draw",
|
36 | plotAxisGuideDraw = "plot-axis-guide-draw",
|
37 | plotAxisInterlacingDraw = "plot-axis-interlacing-draw",
|
38 | animationBegin = "animation-begin",
|
39 | animationComplete = "animation-complete"
|
40 | }
|
41 | export interface EventMap {
|
42 | [EventType.click]: PointerEvent;
|
43 | [EventType.pointermove]: PointerEvent;
|
44 | [EventType.pointerdown]: PointerEvent;
|
45 | [EventType.pointerup]: PointerEvent;
|
46 | [EventType.pointerleave]: PointerEvent;
|
47 | [EventType.wheel]: WheelEvent;
|
48 | [EventType.update]: UpdateEvent;
|
49 | [EventType.drawBegin]: Event<Element>;
|
50 | [EventType.drawComplete]: Event<Element>;
|
51 | [EventType.backgroundDraw]: RectDrawEvent<Root>;
|
52 | [EventType.titleDraw]: TextDrawEvent<Title>;
|
53 | [EventType.subtitleDraw]: TextDrawEvent<Subtitle>;
|
54 | [EventType.captionDraw]: TextDrawEvent<Caption>;
|
55 | [EventType.logoDraw]: RectDrawEvent<Logo>;
|
56 | [EventType.legendBackgroundDraw]: RectDrawEvent<Legend>;
|
57 | [EventType.legendTitleDraw]: TextDrawEvent<LegendTitle>;
|
58 | [EventType.legendLabelDraw]: TextDrawEvent<LegendLabel>;
|
59 | [EventType.legendMarkerDraw]: RectDrawEvent<LegendMarker>;
|
60 | [EventType.legendBarDraw]: RectDrawEvent<LegendBar>;
|
61 | [EventType.plotBackgroundDraw]: RectDrawEvent<Plot>;
|
62 | [EventType.plotAreaDraw]: RectDrawEvent<Area>;
|
63 | [EventType.plotMarkerDraw]: RectDrawEvent<Marker>;
|
64 | [EventType.plotMarkerLabelDraw]: TextDrawEvent<MarkerLabel>;
|
65 | [EventType.plotMarkerGuideDraw]: LineDrawEvent<MarkerGuide>;
|
66 | [EventType.plotAxisDraw]: LineDrawEvent<Axis>;
|
67 | [EventType.plotAxisTitleDraw]: TextDrawEvent<AxisTitle>;
|
68 | [EventType.plotAxisLabelDraw]: TextDrawEvent<AxisLabel>;
|
69 | [EventType.plotAxisTickDraw]: LineDrawEvent<AxisTick>;
|
70 | [EventType.plotAxisGuideDraw]: LineDrawEvent<AxisGuide>;
|
71 | [EventType.plotAxisInterlacingDraw]: RectDrawEvent<AxisInterlacing>;
|
72 | [EventType.animationBegin]: Event<Element>;
|
73 | [EventType.animationComplete]: Event<Element>;
|
74 | }
|
75 |
|
76 | export interface Element {
|
77 |
|
78 | tagName: string;
|
79 |
|
80 | parent?: Element;
|
81 | }
|
82 |
|
83 | export interface TextElement extends Element {
|
84 | value: string;
|
85 | }
|
86 |
|
87 | export interface OrientedElement extends Element {
|
88 | id: 'x' | 'y';
|
89 | }
|
90 |
|
91 | export interface Root extends Element {
|
92 | tagName: 'root';
|
93 | }
|
94 |
|
95 | export interface Plot extends Element {
|
96 | tagName: 'plot';
|
97 | }
|
98 |
|
99 | export interface Title extends TextElement {
|
100 | tagName: 'title';
|
101 | }
|
102 |
|
103 | export interface Subtitle extends TextElement {
|
104 | tagName: 'subtitle';
|
105 | }
|
106 |
|
107 | export interface Caption extends TextElement {
|
108 | tagName: 'caption';
|
109 | }
|
110 |
|
111 | export interface Legend extends Element {
|
112 | tagName: 'legend';
|
113 | channel: string;
|
114 | }
|
115 |
|
116 | export interface Logo extends Element {
|
117 | tagName: 'logo';
|
118 | }
|
119 |
|
120 | export interface Area extends Element {
|
121 | tagName: 'plot-area';
|
122 | }
|
123 |
|
124 | export interface Marker extends Element {
|
125 | tagName: 'plot-marker';
|
126 | categories: Data.Record;
|
127 | values: Data.Record;
|
128 |
|
129 | index: number;
|
130 | }
|
131 |
|
132 | export interface MarkerLabel extends TextElement {
|
133 | tagName: 'plot-marker-label';
|
134 | parent: Marker;
|
135 | }
|
136 |
|
137 | export interface MarkerGuide extends OrientedElement {
|
138 | tagName: 'plot-marker-guide';
|
139 | parent: Marker;
|
140 | }
|
141 |
|
142 | export interface Axis extends OrientedElement {
|
143 | tagName: 'plot-axis';
|
144 | }
|
145 |
|
146 | export interface AxisLabel extends TextElement {
|
147 | tagName: 'plot-axis-label';
|
148 | parent: Axis;
|
149 | }
|
150 |
|
151 | export interface AxisGuide extends Element {
|
152 | tagName: 'plot-axis-guide';
|
153 | parent: Axis;
|
154 | }
|
155 |
|
156 | export interface AxisTick extends Element {
|
157 | tagName: 'plot-axis-tick';
|
158 | parent: Axis;
|
159 | }
|
160 |
|
161 | export interface AxisTitle extends TextElement {
|
162 | tagName: 'plot-axis-title';
|
163 | parent: Axis;
|
164 | }
|
165 |
|
166 | export interface AxisInterlacing extends Element {
|
167 | tagName: 'plot-axis-interlacing';
|
168 | parent: Axis;
|
169 | }
|
170 |
|
171 | export interface LegendTitle extends TextElement {
|
172 | tagName: 'legend-title';
|
173 | parent: Legend;
|
174 | }
|
175 |
|
176 | export interface LegendMarker extends Element {
|
177 | tagName: 'legend-marker';
|
178 | parent: Legend;
|
179 | }
|
180 |
|
181 | export interface LegendLabel extends TextElement {
|
182 | tagName: 'legend-label';
|
183 | parent: Legend;
|
184 | }
|
185 |
|
186 | export interface LegendBar extends Element {
|
187 | tagName: 'legend-bar';
|
188 | parent: Legend;
|
189 | }
|
190 |
|
191 |
|
192 | export interface Event<T> {
|
193 | type: EventType;
|
194 |
|
195 | target: T | null;
|
196 |
|
197 | preventDefault(): void;
|
198 | |
199 |
|
200 | renderingContext?: HtmlCanvasContext;
|
201 | }
|
202 | export interface PointerDetail {
|
203 | pointerId: number | null;
|
204 | position: Point;
|
205 | }
|
206 |
|
207 | export interface PointerEvent extends Event<Element> {
|
208 | detail: PointerDetail;
|
209 | }
|
210 | export interface WheelDetail {
|
211 | delta: number;
|
212 | }
|
213 |
|
214 | export interface WheelEvent extends Event<Element> {
|
215 | detail: WheelDetail;
|
216 | }
|
217 | export interface UpdateDetail {
|
218 | position: Anim.Duration;
|
219 | progress: number;
|
220 | }
|
221 |
|
222 | export interface UpdateEvent extends Event<Element> {
|
223 | detail: UpdateDetail;
|
224 | }
|
225 | export interface RectDrawDetail {
|
226 | rect: Rect;
|
227 | relative: boolean;
|
228 | }
|
229 |
|
230 |
|
231 | export interface RectDrawEvent<T> extends Event<T> {
|
232 | detail: RectDrawDetail;
|
233 | }
|
234 | export interface LineDrawDetail {
|
235 | line: Line;
|
236 | relative: boolean;
|
237 | }
|
238 |
|
239 | export interface LineDrawEvent<T> extends Event<T> {
|
240 | detail: LineDrawDetail;
|
241 | }
|
242 | export interface TextDrawDetail {
|
243 | rect: TransformedRect;
|
244 | text: string;
|
245 | }
|
246 |
|
247 | export interface TextDrawEvent<T> extends Event<T> {
|
248 | detail: TextDrawDetail;
|
249 | }
|
250 | export type EventHandler<Event> = (event: Event) => void;
|
251 | export declare class Events {
|
252 | private _cChart;
|
253 | private _canvas;
|
254 | private _eventHandlers;
|
255 | constructor(cChart: CChart, canvas: HtmlCanvas);
|
256 | add<T extends EventType>(eventName: T, handler: EventHandler<EventMap[T]>): void;
|
257 | private _getHandlers;
|
258 | remove<T extends EventType>(eventName: T, handler: EventHandler<EventMap[T]>): void;
|
259 | addMany(events: PluginListeners): void;
|
260 | removeMany(events: PluginListeners): void;
|
261 | private _invoke;
|
262 | private _isJSEvent;
|
263 | private _makeJSEventParam;
|
264 | private _makeCEventParam;
|
265 | }
|