squarified 0.3.7 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -3,350 +3,618 @@ type Any = any
3
3
 
4
4
  type AnyObject = Record<keyof Any, Any>
5
5
 
6
+ type NonNull = NonNullable<unknown>
6
7
 
7
- interface MatrixLoc {
8
- a: number;
9
- b: number;
10
- c: number;
11
- d: number;
12
- e: number;
13
- f: number;
14
- }
15
- declare class Matrix2D implements MatrixLoc {
16
- a: number;
17
- b: number;
18
- c: number;
19
- d: number;
20
- e: number;
21
- f: number;
22
- constructor(loc?: Partial<MatrixLoc>);
23
- create(loc: MatrixLoc): this;
24
- transform(x: number, y: number, scaleX: number, scaleY: number, rotation: number, skewX: number, skewY: number): this;
25
- translation(x: number, y: number): this;
26
- scale(a: number, d: number): this;
27
- private skew;
28
- private roate;
29
- }
30
8
 
31
- declare const enum DisplayType {
32
- Graph = "Graph",
33
- Box = "Box",
34
- Text = "Text",
35
- RoundRect = "RoundRect",
36
- Bitmap = "Bitmap"
37
- }
38
- declare abstract class Display {
39
- parent: Display | null;
40
- id: number;
41
- matrix: Matrix2D;
42
- abstract get __instanceOf__(): DisplayType;
43
- constructor();
44
- destory(): void;
45
- }
46
-
47
- declare abstract class C extends Display {
48
- elements: Display[];
49
- constructor();
50
- abstract get __instanceOf__(): DisplayType;
51
- add(...elements: Display[]): void;
52
- remove(...elements: Display[]): void;
53
- destory(): void;
54
- }
55
- declare class Box extends C {
56
- elements: Display[];
57
- constructor();
58
- add(...elements: Display[]): void;
59
- remove(...elements: Display[]): void;
60
- destory(): void;
61
- get __instanceOf__(): DisplayType.Box;
62
- clone(): Box;
63
- }
64
-
65
- interface RGBColor {
66
- r: number;
67
- g: number;
68
- b: number;
69
- a?: number;
70
- }
71
- interface HLSColor {
72
- h: number;
73
- l: number;
74
- s: number;
75
- a?: number;
76
- }
77
- interface ColorDecoratorResultHLS {
78
- mode?: 'hsl';
79
- desc: HLSColor;
80
- }
81
- interface ColorDecoratorResultRGB {
82
- mode: 'rgb';
83
- desc: RGBColor;
84
- }
85
- type ColorDecoratorResult = ColorDecoratorResultHLS | ColorDecoratorResultRGB;
86
-
87
- type EventCallback<P = Any[]> = P extends Any[] ? (...args: P) => Any : never;
88
- type DefaultEventDefinition = Record<string, EventCallback>;
89
- type BindThisParameter<T, C = unknown> = T extends (...args: infer P) => infer R ? (this: C, ...args: P) => R : never;
90
- interface EventCollectionData<EvtDefinition extends DefaultEventDefinition, C = unknown> {
91
- name: string;
92
- handler: BindThisParameter<EvtDefinition[keyof EvtDefinition], C>;
93
- ctx: C;
94
- silent: boolean;
95
- }
96
- type EventCollections<EvtDefinition extends DefaultEventDefinition> = Record<keyof EvtDefinition, EventCollectionData<EvtDefinition>[]>;
97
- declare class Event<EvtDefinition extends DefaultEventDefinition = DefaultEventDefinition> {
98
- eventCollections: EventCollections<EvtDefinition>;
99
- constructor();
100
- on<C, Evt extends keyof EvtDefinition>(evt: Evt, handler: BindThisParameter<EvtDefinition[Evt], unknown extends C ? this : C>, c?: C): void;
101
- off(evt: keyof EvtDefinition, handler?: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown>): void;
102
- silent(evt: keyof EvtDefinition, handler?: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown>): void;
103
- active(evt: keyof EvtDefinition, handler?: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown>): void;
104
- emit(evt: keyof EvtDefinition, ...args: Parameters<EvtDefinition[keyof EvtDefinition]>): void;
105
- bindWithContext<C>(c: C): (evt: keyof EvtDefinition, handler: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown extends C ? this : C>) => void;
106
- }
107
-
108
- interface RenderViewportOptions {
109
- width: number;
110
- height: number;
111
- devicePixelRatio: number;
112
- shaow?: boolean;
113
- }
114
- declare class Canvas {
115
- canvas: HTMLCanvasElement;
116
- ctx: CanvasRenderingContext2D;
117
- constructor(options: RenderViewportOptions);
118
- setOptions(options: RenderViewportOptions): void;
119
- }
120
- declare class Render {
121
- options: RenderViewportOptions;
122
- private container;
123
- constructor(to: HTMLElement, options: RenderViewportOptions);
124
- clear(width: number, height: number): void;
125
- get canvas(): HTMLCanvasElement;
126
- get ctx(): CanvasRenderingContext2D;
127
- initOptions(userOptions?: Partial<RenderViewportOptions>): void;
128
- destory(): void;
129
- }
130
-
131
- type ApplyTo = string | HTMLElement;
132
- declare class Schedule<D extends DefaultEventDefinition = DefaultEventDefinition> extends Box {
133
- render: Render;
134
- to: HTMLElement;
135
- event: Event<D>;
136
- constructor(to: ApplyTo, renderOptions?: Partial<RenderViewportOptions>);
137
- update(): void;
138
- execute(render: Render, graph?: Display): void;
139
- }
140
-
141
- declare const DOM_EVENTS: readonly ["click", "mousedown", "mousemove", "mouseup", "mouseover", "mouseout", "wheel"];
142
- type DOMEventType = typeof DOM_EVENTS[number];
143
- interface DOMLoc {
144
- x: number;
145
- y: number;
146
- }
147
- interface DOMEventMetadata<T extends keyof HTMLElementEventMap = Any> {
148
- native: HTMLElementEventMap[T];
149
- loc: DOMLoc;
150
- }
151
- type DOMEventCallback<T extends DOMEventType> = (metadata: DOMEventMetadata<T>) => void;
152
- type DOMEventDefinition<API = unknown> = {
153
- [K in DOMEventType]: BindThisParameter<DOMEventCallback<K>, API>;
154
- };
155
-
156
- declare abstract class Cache {
157
- abstract key: string;
158
- abstract get state(): boolean;
159
- abstract flush(...args: never): void;
160
- abstract destroy(): void;
161
- }
162
- declare class RenderCache extends Canvas implements Cache {
163
- key: string;
164
- private $memory;
165
- constructor(opts: RenderViewportOptions);
166
- get state(): boolean;
167
- flush(treemap: TreemapLayout, matrix?: Matrix2D): void;
168
- destroy(): void;
169
- }
170
- declare class FontCache implements Cache {
171
- key: string;
172
- private fonts;
173
- ellispsis: Record<string, number>;
174
- constructor();
175
- get state(): boolean;
176
- flush(treemap: TreemapLayout, matrix?: Matrix2D): void;
177
- destroy(): void;
178
- queryFontById(id: string, byDefault: () => number): number;
179
- }
180
-
181
- type ColorMappings = Record<string, ColorDecoratorResult>;
182
- type Rect = {
183
- w: number;
184
- h: number;
185
- };
186
- type Series<T> = {
187
- max: T;
188
- min: T;
189
- };
190
- interface RenderColor {
191
- mappings: ColorMappings;
192
- }
193
- interface RenderLayout {
194
- titleAreaHeight: Series<number>;
195
- rectBorderRadius: number;
196
- rectBorderWidth: number;
197
- rectGap: number;
198
- }
199
- interface RenderFont {
200
- color: string;
201
- fontSize: Series<number>;
202
- fontFamily: string;
203
- }
204
- interface RenderDecorator {
205
- color: RenderColor;
206
- layout: RenderLayout;
207
- font: RenderFont;
208
- }
209
- declare const defaultLayoutOptions: {
210
- titleAreaHeight: {
211
- max: number;
212
- min: number;
213
- };
214
- rectGap: number;
215
- rectBorderRadius: number;
216
- rectBorderWidth: number;
217
- };
218
- declare const defaultFontOptions: {
219
- color: string;
220
- fontSize: {
221
- max: number;
222
- min: number;
223
- };
224
- fontFamily: string;
225
- };
226
- declare function presetDecorator(app: TreemapLayout): void;
227
-
228
- declare function sortChildrenByKey<T extends AnyObject, K extends keyof T = 'weight'>(data: T[], ...keys: K[]): T[];
229
- declare function c2m<T extends AnyObject & {
230
- groups: Any[];
231
- }, K extends keyof T>(data: T, key: K, modifier?: (data: T) => T): T & {
232
- weight: number;
233
- };
234
- declare function flatten<T extends AnyObject & {
235
- groups: T[];
236
- }>(data: T[]): Omit<T, "groups">[];
237
- type Module = ReturnType<typeof c2m>;
238
- declare function bindParentForModule<T extends Module & {
239
- parent: Module;
240
- }>(modules: Module[], parent?: Module): T[];
241
- type NativeModule = ReturnType<typeof bindParentForModule>[number] & {
242
- id: string;
243
- parent: NativeModule;
244
- groups: NativeModule[];
245
- };
246
- declare function getNodeDepth(node: NativeModule): number;
247
- declare function visit<T extends AnyObject>(data: T[], fn: (data: T) => boolean | void): T | null;
248
- declare function findRelativeNode(p: {
249
- x: number;
250
- y: number;
251
- }, layoutNodes: LayoutModule[]): LayoutModule | null;
252
- declare function findRelativeNodeById(id: string, layoutNodes: LayoutModule[]): LayoutModule | null;
253
-
254
- type LayoutModule = {
255
- node: NativeModule;
256
- layout: [number, number, number, number];
257
- children: LayoutModule[];
258
- decorator: {
259
- titleHeight: number;
260
- rectBorderRadius: number;
261
- rectGap: number;
262
- rectBorderWidth: number;
263
- };
264
- };
265
-
266
- interface PrimitiveEventMetadata<T extends keyof HTMLElementEventMap> {
267
- native: HTMLElementEventMap[T];
268
- module: LayoutModule | null;
269
- }
270
- type ExposedEventCallback<T extends DOMEventType> = (metadata: PrimitiveEventMetadata<T>) => void;
271
- type ExposedEventDefinition = {
272
- [K in DOMEventType]: BindThisParameter<ExposedEventCallback<K>, TreemapInstanceAPI>;
273
- };
274
- interface ExposedEventMethods<C = TreemapInstanceAPI, D = ExposedEventDefinition> {
275
- on<Evt extends keyof D>(evt: Evt, handler: BindThisParameter<D[Evt], unknown extends C ? this : C>): void;
276
- off<Evt extends keyof D>(evt: keyof D, handler?: BindThisParameter<D[Evt], unknown extends C ? this : C>): void;
277
- }
278
- declare const INTERNAL_EVENT_MAPPINGS: {
279
- readonly ON_ZOOM: 1;
280
- readonly ON_CLEANUP: 3;
281
- };
282
- type InternalEventType = typeof INTERNAL_EVENT_MAPPINGS[keyof typeof INTERNAL_EVENT_MAPPINGS];
283
- interface InternalEventMappings {
284
- [INTERNAL_EVENT_MAPPINGS.ON_ZOOM]: (node: LayoutModule) => void;
285
- [INTERNAL_EVENT_MAPPINGS.ON_CLEANUP]: () => void;
286
- }
287
- type InternalEventDefinition = {
288
- [key in InternalEventType]: InternalEventMappings[key];
289
- };
290
-
291
- interface TreemapOptions {
292
- data: Module[];
293
- }
294
- type UseKind = 'decorator';
295
- interface App {
296
- init: (el: HTMLElement) => void;
297
- dispose: () => void;
298
- setOptions: (options: TreemapOptions) => void;
299
- resize: () => void;
300
- use: (using: UseKind, register: (app: TreemapLayout) => void) => void;
301
- zoom: (id: string) => void;
302
- }
303
- /**
304
- * This interface isn't stable it might be remove at next few versions.
305
- * If you want set custom decorator pls see 'presetDecorator' for details.
306
- */
307
- type unstable_use = (app: TreemapLayout) => void;
308
- declare class Highlight extends Schedule<DOMEventDefinition> {
309
- reset(): void;
310
- get canvas(): HTMLCanvasElement;
311
- setZIndexForHighlight(zIndex?: string): void;
312
- init(): void;
313
- }
314
- declare class TreemapLayout extends Schedule<InternalEventDefinition> {
315
- data: NativeModule[];
316
- layoutNodes: LayoutModule[];
317
- decorator: RenderDecorator;
318
- bgBox: Box;
319
- fgBox: Box;
320
- highlight: Highlight;
321
- renderCache: RenderCache;
322
- fontCache: FontCache;
323
- constructor(...args: ConstructorParameters<typeof Schedule>);
324
- drawBackgroundNode(node: LayoutModule): void;
325
- drawForegroundNode(node: LayoutModule): void;
326
- reset(refresh?: boolean): void;
327
- get api(): {
328
- zoom: (node: LayoutModule | null) => void;
329
- };
330
- }
331
- declare function createTreemap(): App & ExposedEventMethods;
332
- type TreemapInstanceAPI = TreemapLayout['api'];
333
-
334
- /**
335
- * @deprecated compat `PrimitiveEvent` using `DOMEventType` replace it. (will be removed in the next three versions.)
336
- */
337
- type PrimitiveEvent = DOMEventType;
338
- /**
339
- * @deprecated compat `EventMethods` using `ExposedEventMethods` replace it. (will be removed in the next three versions.)
340
- */
341
- type EventMethods = ExposedEventMethods;
342
- /**
343
- * @deprecated compat `PrimitiveEventCallback` using `ExposedEventCallback` replace it. (will be removed in the next three versions.)
344
- */
345
- type PrimitiveEventCallback<T extends PrimitiveEvent> = ExposedEventCallback<T>;
346
- /**
347
- * @deprecated compat `PrimitiveEventDefinition` using `ExposedEventDefinition` replace it. (will be removed in the next three versions.)
348
- */
349
- type PrimitiveEventDefinition = ExposedEventDefinition;
350
-
351
- export { TreemapLayout, c2m, createTreemap, defaultFontOptions, defaultLayoutOptions, findRelativeNode, findRelativeNodeById, flatten as flattenModule, getNodeDepth, presetDecorator, sortChildrenByKey, visit };
352
- export type { App, ColorMappings, DOMEventType, EventMethods, ExposedEventCallback, ExposedEventDefinition, ExposedEventMethods, LayoutModule, Module, NativeModule, PrimitiveEvent, PrimitiveEventCallback, PrimitiveEventDefinition, PrimitiveEventMetadata, Rect, RenderColor, RenderDecorator, RenderFont, RenderLayout, Series, TreemapInstanceAPI, TreemapOptions, unstable_use };
9
+ export declare function applyCanvasTransform(ctx: CanvasRenderingContext2D, matrix: Matrix2D, dpr: number): void;
10
+
11
+ declare type ApplyTo = string | HTMLElement;
12
+
13
+ declare type BasicPluginHooks = Pick<PluginHooks, 'onLoad' | 'onDOMEventTriggered' | 'onResize' | 'onDispose'>;
14
+
15
+ export declare interface BasicTreemapInstance {
16
+ init: (el: HTMLElement) => void;
17
+ dispose: () => void;
18
+ resize: () => void;
19
+ setOptions: (options: TreemapOptions) => void;
20
+ }
21
+
22
+ declare function bindDOMEvent(el: HTMLElement, evt: DOMEventType, dom: DOMEvent): {
23
+ evt: "click" | "mousedown" | "mousemove" | "mouseup" | "mouseover" | "mouseout" | "wheel" | "contextmenu";
24
+ handler: (e: unknown) => void;
25
+ };
26
+
27
+ declare function bindParentForModule<T extends Module & {
28
+ parent: Module;
29
+ }>(modules: Module[], parent?: Module): T[];
30
+
31
+ declare type BindThisParameter<T, C = unknown> = T extends (...args: infer P) => infer R ? (this: C, ...args: P) => R : never;
32
+
33
+ declare class Box extends C {
34
+ elements: Display[];
35
+ constructor();
36
+ add(...elements: Display[]): void;
37
+ remove(...elements: Display[]): void;
38
+ destory(): void;
39
+ get __instanceOf__(): DisplayType.Box;
40
+ clone(): Box;
41
+ }
42
+
43
+ declare abstract class C extends Display {
44
+ elements: Display[];
45
+ constructor();
46
+ abstract get __instanceOf__(): DisplayType;
47
+ add(...elements: Display[]): void;
48
+ remove(...elements: Display[]): void;
49
+ destory(): void;
50
+ }
51
+
52
+ export declare function c2m<T extends AnyObject & {
53
+ groups: Any[];
54
+ }, K extends keyof T>(data: T, key: K, modifier?: (data: T) => T): T & {
55
+ weight: number;
56
+ };
57
+
58
+ declare type CascadedPluginHooks = Pick<PluginHooks, 'onModuleInit'>;
59
+
60
+ declare type ColorDecoratorResult = ColorDecoratorResultHLS | ColorDecoratorResultRGB;
61
+
62
+ declare interface ColorDecoratorResultHLS {
63
+ mode?: 'hsl';
64
+ desc: HLSColor;
65
+ }
66
+
67
+ declare interface ColorDecoratorResultRGB {
68
+ mode: 'rgb';
69
+ desc: RGBColor;
70
+ }
71
+
72
+ declare type ColorMappings = Record<string, ColorDecoratorResult>;
73
+
74
+ declare class Component extends Schedule {
75
+ pluginDriver: PluginDriver<Component>;
76
+ data: NativeModule[];
77
+ colorMappings: ColorMappings;
78
+ rectLayer: Box;
79
+ textLayer: Box;
80
+ layoutNodes: LayoutModule[];
81
+ config: GraphicConfig;
82
+ caches: DefaultMap<string, number>;
83
+ constructor(config: GraphicConfig, ...args: ConstructorParameters<typeof Schedule>);
84
+ private drawBroundRect;
85
+ private drawText;
86
+ draw(flush?: boolean, update?: boolean): void;
87
+ cleanup(): void;
88
+ calculateLayoutNodes(data: NativeModule[], rect: Parameters<typeof squarify>[1], scale?: number): LayoutModule[];
89
+ }
90
+
91
+ export declare function createCanvasElement(): HTMLCanvasElement;
92
+
93
+ declare function createInstruction(): Instruction;
94
+
95
+ export declare function createRoundBlock(x: number, y: number, width: number, height: number, style?: Partial<RoundRectStyleOptions>): RoundRect;
96
+
97
+ export declare function createTitleText(text: string, x: number, y: number, font: string, color: string): Text_2;
98
+
99
+ export declare function createTreemap<const P extends readonly Plugin_2[]>(options?: CreateTreemapOptions<P>): ({
100
+ init: (el: HTMLElement) => void;
101
+ dispose: () => void;
102
+ resize: () => void;
103
+ setOptions: (options: TreemapOptions) => void;
104
+ } & {
105
+ on: () => (evt: string, handler: (this: TreemapInstanceAPI, ...args: any[]) => any) => void;
106
+ } & {
107
+ off: () => (evt: string, handler?: ((this: unknown, ...args: any[]) => any) | undefined) => void;
108
+ } & Record<string, never>) & BasicTreemapInstance & ExposedEventMethods & PluginMixins<P>;
109
+
110
+ export declare interface CreateTreemapOptions<P extends Plugin_2[]> {
111
+ plugins: P;
112
+ graphic?: GraphicConfig;
113
+ }
114
+
115
+ declare type DefaultEventDefinition = Record<string, EventCallback>;
116
+
117
+ export declare class DefaultMap<K, V> extends Map<K, V> {
118
+ private defaultFactory;
119
+ constructor(defaultFactory: () => V, entries?: readonly [K, V][] | null);
120
+ get(key: K): V;
121
+ getOrInsert(key: K, value?: V): V;
122
+ }
123
+
124
+ export declare function definePlugin<T extends string = string, M = Any, P extends Plugin_2<T, M> = Plugin_2<T, M>>(plugin: P): P;
125
+
126
+ declare abstract class Display {
127
+ parent: Display | null;
128
+ id: number;
129
+ matrix: Matrix2D;
130
+ abstract get __instanceOf__(): DisplayType;
131
+ constructor();
132
+ destory(): void;
133
+ }
134
+
135
+ declare const enum DisplayType {
136
+ Graph = "Graph",
137
+ Box = "Box",
138
+ Text = "Text",
139
+ RoundRect = "RoundRect",
140
+ Bitmap = "Bitmap"
141
+ }
142
+
143
+ declare const DOM_EVENTS: readonly ["click", "mousedown", "mousemove", "mouseup", "mouseover", "mouseout", "wheel", "contextmenu"];
144
+
145
+ declare class DOMEvent extends Event_2<DOMEVEntDefinition> {
146
+ domEvents: Array<ReturnType<typeof bindDOMEvent>>;
147
+ el: HTMLElement | null;
148
+ currentModule: LayoutModule | null;
149
+ component: Component;
150
+ matrix: Matrix2D;
151
+ stateManager: StateManager;
152
+ constructor(component: Component);
153
+ destory(): void;
154
+ private dispatch;
155
+ findRelativeNode(e: DOMEventMetadata): LayoutModule | null;
156
+ }
157
+
158
+ declare type DOMEventCallback<T extends DOMEventType> = (metadata: DOMEventMetadata<T>) => void;
159
+
160
+ declare type DOMEVEntDefinition<API = unknown> = {
161
+ [K in DOMEventType]: BindThisParameter<DOMEventCallback<K>, API>;
162
+ } & {
163
+ __exposed__: (type: DOMEventType, metadata: PrimitiveEventMetadata<DOMEventType>) => void;
164
+ };
165
+
166
+ declare interface DOMEventMetadata<T extends keyof HTMLElementEventMap = Any> {
167
+ native: HTMLElementEventMap[T];
168
+ readonly kind: T;
169
+ }
170
+
171
+ export declare type DOMEventType = typeof DOM_EVENTS[number];
172
+
173
+ declare interface DuckE {
174
+ which: number;
175
+ }
176
+
177
+ declare interface EffectOptions {
178
+ duration: number;
179
+ onStop?: () => void;
180
+ deps?: Array<() => boolean>;
181
+ }
182
+
183
+ declare class Event_2<EvtDefinition extends DefaultEventDefinition = DefaultEventDefinition> {
184
+ eventCollections: EventCollections<EvtDefinition>;
185
+ constructor();
186
+ on<C, Evt extends keyof EvtDefinition>(evt: Evt, handler: BindThisParameter<EvtDefinition[Evt], unknown extends C ? this : C>, c?: C): void;
187
+ off(evt: keyof EvtDefinition, handler?: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown>): void;
188
+ silent(evt: keyof EvtDefinition, handler?: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown>): void;
189
+ active(evt: keyof EvtDefinition, handler?: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown>): void;
190
+ emit(evt: keyof EvtDefinition, ...args: Parameters<EvtDefinition[keyof EvtDefinition]>): void;
191
+ bindWithContext<C>(c: C): (evt: keyof EvtDefinition, handler: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown extends C ? this : C>) => void;
192
+ }
193
+
194
+ declare type EventCallback<P = Any[]> = P extends Any[] ? (...args: P) => Any : never;
195
+
196
+ declare interface EventCollectionData<EvtDefinition extends DefaultEventDefinition, C = unknown> {
197
+ name: string;
198
+ handler: BindThisParameter<EvtDefinition[keyof EvtDefinition], C>;
199
+ ctx: C;
200
+ silent: boolean;
201
+ }
202
+
203
+ declare type EventCollections<EvtDefinition extends DefaultEventDefinition> = Record<keyof EvtDefinition, EventCollectionData<EvtDefinition>[]>;
204
+
205
+ export declare type ExposedEventCallback<T extends DOMEventType> = (metadata: PrimitiveEventMetadata<T>) => void;
206
+
207
+ export declare type ExposedEventDefinition = {
208
+ [K in DOMEventType]: BindThisParameter<ExposedEventCallback<K>, TreemapInstanceAPI>;
209
+ };
210
+
211
+ export declare interface ExposedEventMethods<C = TreemapInstanceAPI, D = ExposedEventDefinition> {
212
+ on<Evt extends keyof D>(evt: Evt, handler: BindThisParameter<D[Evt], unknown extends C ? this : C>): void;
213
+ off<Evt extends keyof D>(evt: keyof D, handler?: BindThisParameter<D[Evt], unknown extends C ? this : C>): void;
214
+ }
215
+
216
+ export declare function findRelativeNode(p: {
217
+ x: number;
218
+ y: number;
219
+ }, layoutNodes: LayoutModule[]): LayoutModule | null;
220
+
221
+ export declare function findRelativeNodeById(id: string, layoutNodes: LayoutModule[]): LayoutModule | null;
222
+
223
+ export declare function flattenModule<T extends AnyObject & {
224
+ groups: T[];
225
+ }>(data: T[]): Omit<T, "groups">[];
226
+
227
+ export declare function getNodeDepth(node: NativeModule): number;
228
+
229
+ declare abstract class Graph extends S {
230
+ instruction: ReturnType<typeof createInstruction>;
231
+ __options__: Partial<LocOptions>;
232
+ __widget__: Any;
233
+ abstract style: GraphStyleSheet;
234
+ constructor(options?: Partial<GraphOptions>);
235
+ abstract create(): void;
236
+ abstract clone(): Graph;
237
+ abstract get __shape__(): DisplayType;
238
+ render(ctx: CanvasRenderingContext2D): void;
239
+ get __instanceOf__(): DisplayType.Graph;
240
+ }
241
+
242
+ export declare interface GraphicConfig {
243
+ layout?: GraphicLayout;
244
+ font?: GraphicFont;
245
+ }
246
+
247
+ export declare interface GraphicFont {
248
+ color?: string;
249
+ fontSize?: Series<number>;
250
+ family?: string;
251
+ }
252
+
253
+ export declare interface GraphicLayout {
254
+ rectRadius?: number;
255
+ rectGap?: number;
256
+ titleAreaHeight?: Series<number>;
257
+ }
258
+
259
+ declare interface GraphOptions extends LocOptions {
260
+ [key: string]: unknown;
261
+ }
262
+
263
+ declare interface GraphStyleSheet {
264
+ stroke: string;
265
+ opacity: number;
266
+ font: string;
267
+ lineWidth: number;
268
+ }
269
+
270
+ export declare function hashCode(str: string): number;
271
+
272
+ declare interface HLSColor {
273
+ h: number;
274
+ l: number;
275
+ s: number;
276
+ a?: number;
277
+ }
278
+
279
+ export declare interface InheritedCollections<T = object> {
280
+ name: string;
281
+ fn: (instance: T) => void;
282
+ }
283
+
284
+ export declare interface InheritedCollectionsWithParamter<T = Any> {
285
+ name: string;
286
+ fn: (instance: T) => (...args: Any[]) => Any;
287
+ }
288
+
289
+ declare interface Instruction extends InstructionAssignMappings, InstructionWithFunctionCall {
290
+ mods: Array<{
291
+ mod: Mod;
292
+ type: number;
293
+ }>;
294
+ }
295
+
296
+ declare interface InstructionAssignMappings {
297
+ fillStyle: (arg: string) => void;
298
+ strokeStyle: (arg: string) => void;
299
+ font: (arg: string) => void;
300
+ lineWidth: (arg: number) => void;
301
+ textAlign: (arg: CanvasTextAlign) => void;
302
+ textBaseline: (arg: CanvasTextBaseline) => void;
303
+ }
304
+
305
+ declare interface InstructionWithFunctionCall extends CanvasDrawImage {
306
+ fillRect: (x: number, y: number, w: number, h: number) => void;
307
+ strokeRect: (x: number, y: number, w: number, h: number) => void;
308
+ fillText: (text: string, x: number, y: number, maxWidth?: number) => void;
309
+ beginPath: () => void;
310
+ moveTo: (x: number, y: number) => void;
311
+ arcTo: (x1: number, y1: number, x2: number, y2: number, radius: number) => void;
312
+ closePath: () => void;
313
+ fill: () => void;
314
+ stroke: () => void;
315
+ }
316
+
317
+ export declare function isClickEvent(metadata: DOMEventMetadata<DOMEventType>): metadata is DOMEventMetadata<'click'>;
318
+
319
+ export declare function isContextMenuEvent(metadata: DOMEventMetadata<DOMEventType>): metadata is DOMEventMetadata<'contextmenu'>;
320
+
321
+ export declare function isMacOS(): boolean;
322
+
323
+ export declare function isMouseEvent(metadata: DOMEventMetadata<DOMEventType>): metadata is DOMEventMetadata<'mousedown' | 'mouseup' | 'mousemove'>;
324
+
325
+ export declare function isScrollWheelOrRightButtonOnMouseupAndDown<E extends DuckE = DuckE>(e: E): boolean;
326
+
327
+ export declare function isWheelEvent(metadata: DOMEventMetadata<DOMEventType>): metadata is DOMEventMetadata<'wheel'>;
328
+
329
+ export declare interface LayoutModule {
330
+ node: SquarifiedModule;
331
+ layout: [number, number, number, number];
332
+ children: LayoutModule[];
333
+ config: {
334
+ titleAreaHeight: number;
335
+ rectGap: number;
336
+ rectRadius: number;
337
+ };
338
+ }
339
+
340
+ declare interface LocOptions {
341
+ width: number;
342
+ height: number;
343
+ x: number;
344
+ y: number;
345
+ scaleX: number;
346
+ scaleY: number;
347
+ rotation: number;
348
+ skewX: number;
349
+ skewY: number;
350
+ }
351
+
352
+ declare class Matrix2D implements MatrixLoc {
353
+ a: number;
354
+ b: number;
355
+ c: number;
356
+ d: number;
357
+ e: number;
358
+ f: number;
359
+ constructor(loc?: Partial<MatrixLoc>);
360
+ create(loc: MatrixLoc): this;
361
+ transform(x: number, y: number, scaleX: number, scaleY: number, rotation: number, skewX: number, skewY: number): this;
362
+ translation(x: number, y: number): this;
363
+ scale(a: number, d: number): this;
364
+ private skew;
365
+ private roate;
366
+ }
367
+
368
+ declare interface MatrixLoc {
369
+ a: number;
370
+ b: number;
371
+ c: number;
372
+ d: number;
373
+ e: number;
374
+ f: number;
375
+ }
376
+
377
+ export declare function mixin<T extends AnyObject, const I extends InheritedCollections<T>[]>(app: T, methods: I): T & MixinHelp<I>;
378
+
379
+ declare type MixinHelp<T extends InheritedCollections[]> = T extends [infer L, ...infer R] ? L extends InheritedCollections ? R extends InheritedCollections[] ? {
380
+ [key in L['name']]: L['fn'];
381
+ } & MixinHelp<R> : Record<string, never> : Record<string, never> : Record<string, never>;
382
+
383
+ declare type MixinHelpWithParamater<T extends InheritedCollectionsWithParamter[]> = T extends [infer L, ...infer R] ? L extends InheritedCollectionsWithParamter ? R extends InheritedCollectionsWithParamter[] ? {
384
+ [key in L['name']]: ReturnType<L['fn']>;
385
+ } & MixinHelpWithParamater<R> : Record<string, never> : Record<string, never> : Record<string, never>;
386
+
387
+ export declare function mixinWithParams<T extends AnyObject, const M extends InheritedCollectionsWithParamter<T>[]>(app: T, methods: M): T & MixinHelpWithParamater<M>;
388
+
389
+ declare type Mod<T extends InstructionAssignMappings & InstructionWithFunctionCall = InstructionAssignMappings & InstructionWithFunctionCall, K extends keyof T = keyof T> = T[K] extends (...args: Any) => Any ? [K, Parameters<T[K]>] : never;
390
+
391
+ export declare type Module = ReturnType<typeof c2m>;
392
+
393
+ export declare type NativeModule = ReturnType<typeof bindParentForModule>[number] & {
394
+ id: string;
395
+ parent: NativeModule | null;
396
+ groups: NativeModule[];
397
+ };
398
+
399
+ export declare function noop(): void;
400
+
401
+ declare interface OnModuleInitResult {
402
+ colorMappings?: ColorMappings;
403
+ }
404
+
405
+ export declare function perferNumeric(s: string | number): boolean;
406
+
407
+ declare interface Plugin_2<T = string, M = Any> extends PluginHooks {
408
+ name: T;
409
+ meta?: M;
410
+ }
411
+ export { Plugin_2 as Plugin }
412
+
413
+ export declare interface PluginContext {
414
+ resolveModuleById: (id: string) => LayoutModule | null;
415
+ getPluginMetadata: <M = Any>(pluginName: string) => M | null;
416
+ get instance(): Component;
417
+ }
418
+
419
+ declare class PluginDriver<T extends Component> {
420
+ private plugins;
421
+ private pluginContext;
422
+ constructor(component: T);
423
+ use(plugin: Plugin_2): void;
424
+ runHook<K extends keyof BasicPluginHooks>(hookName: K, ...args: Parameters<NonNullable<BasicPluginHooks[K]>>): void;
425
+ cascadeHook<K extends keyof CascadedPluginHooks>(hookName: K, ...args: Parameters<NonNullable<CascadedPluginHooks[K]>>): ReturnType<NonNullable<CascadedPluginHooks[K]>>;
426
+ getPluginMetadata<M = Any>(pluginName: string): M | null;
427
+ }
428
+
429
+ export declare interface PluginHooks {
430
+ onLoad?: (this: PluginContext, treemapContext: BasicTreemapInstance, domEvent: DOMEvent) => void | Record<string, Any>;
431
+ onModuleInit?: (this: PluginContext, modules: LayoutModule[]) => OnModuleInitResult | void;
432
+ onDOMEventTriggered?: <N extends DOMEventType>(this: PluginContext, name: N, event: DOMEventMetadata<N>, module: LayoutModule | null, domEvent: DOMEvent) => void;
433
+ onResize?: (this: PluginContext, domEvent: DOMEvent) => void;
434
+ onDispose?: (this: PluginContext) => void;
435
+ }
436
+
437
+ declare type PluginMixins<P extends readonly Plugin_2[]> = UnionToIntersection<{
438
+ [K in keyof P]: P[K] extends {
439
+ onLoad?: (ctx: Any, component: Any) => infer R;
440
+ } ? R extends object ? R : NonNull : NonNull;
441
+ }[number]>;
442
+
443
+ export declare function prettyStrJoin<T extends string[]>(...s: T): StrJoin<T, T[0]>;
444
+
445
+ export declare interface PrimitiveEventMetadata<T extends keyof HTMLElementEventMap> {
446
+ native: HTMLElementEventMap[T];
447
+ module: LayoutModule | null;
448
+ }
449
+
450
+ export declare const raf: ((callback: FrameRequestCallback) => number) & typeof requestAnimationFrame;
451
+
452
+ declare type Rect = {
453
+ w: number;
454
+ h: number;
455
+ x: number;
456
+ y: number;
457
+ };
458
+
459
+ declare type RectOptions = GraphOptions & {
460
+ style: Partial<RectStyleOptions>;
461
+ };
462
+
463
+ declare type RectStyleOptions = GraphStyleSheet & {
464
+ fill: ColorDecoratorResult;
465
+ padding?: number;
466
+ };
467
+
468
+ declare class Render {
469
+ options: RenderViewportOptions;
470
+ private container;
471
+ constructor(to: HTMLElement, options: RenderViewportOptions);
472
+ clear(width: number, height: number): void;
473
+ get canvas(): HTMLCanvasElement;
474
+ get ctx(): CanvasRenderingContext2D;
475
+ initOptions(userOptions?: Partial<RenderViewportOptions>): void;
476
+ destory(): void;
477
+ }
478
+
479
+ declare interface RenderViewportOptions {
480
+ width: number;
481
+ height: number;
482
+ devicePixelRatio: number;
483
+ shaow?: boolean;
484
+ }
485
+
486
+ declare interface RGBColor {
487
+ r: number;
488
+ g: number;
489
+ b: number;
490
+ a?: number;
491
+ }
492
+
493
+ declare class RoundRect extends Graph {
494
+ style: Required<RoundRectStyleOptions>;
495
+ constructor(options?: Partial<RoundRectOptions>);
496
+ get __shape__(): DisplayType;
497
+ create(): void;
498
+ clone(): RoundRect;
499
+ }
500
+
501
+ declare type RoundRectOptions = RectOptions & {
502
+ style: Partial<RoundRectStyleOptions>;
503
+ };
504
+
505
+ declare type RoundRectStyleOptions = RectStyleOptions & {
506
+ radius: number;
507
+ };
508
+
509
+ declare abstract class S extends Display {
510
+ width: number;
511
+ height: number;
512
+ x: number;
513
+ y: number;
514
+ scaleX: number;
515
+ scaleY: number;
516
+ rotation: number;
517
+ skewX: number;
518
+ skewY: number;
519
+ constructor(options?: Partial<LocOptions>);
520
+ }
521
+
522
+ declare class Schedule<D extends DefaultEventDefinition = DefaultEventDefinition> extends Box {
523
+ render: Render;
524
+ to: HTMLElement;
525
+ event: Event_2<D>;
526
+ constructor(to: ApplyTo, renderOptions?: Partial<RenderViewportOptions>);
527
+ update(): void;
528
+ execute(render: Render, graph?: Display): void;
529
+ }
530
+
531
+ export declare type Series<T> = {
532
+ max: T;
533
+ min: T;
534
+ };
535
+
536
+ export declare function smoothFrame(callback: (progress: number, cleanup: () => void) => void, opts: EffectOptions): void;
537
+
538
+ export declare function sortChildrenByKey<T extends AnyObject, K extends keyof T = 'weight'>(data: T[], ...keys: K[]): T[];
539
+
540
+ declare type SquarifiedModule = NativeModule & {
541
+ parent: SquarifiedModule | null;
542
+ groups: SquarifiedModule[];
543
+ isCombinedNode?: boolean;
544
+ originalNodeCount?: number;
545
+ originalNodes?: SquarifiedModule[];
546
+ };
547
+
548
+ declare function squarify(data: NativeModule[], rect: Rect, config: Required<GraphicLayout>, scale?: number): LayoutModule[];
549
+
550
+ export declare function stackMatrixTransform(graph: S, e: number, f: number, scale: number): void;
551
+
552
+ export declare function stackMatrixTransformWithGraphAndLayer(graphs: Display[], e: number, f: number, scale: number): void;
553
+
554
+ declare const STATE_TRANSITION: {
555
+ readonly IDLE: "IDLE";
556
+ readonly PRESSED: "PRESSED";
557
+ readonly DRAGGING: "DRAGGING";
558
+ readonly CLICK_POTENTIAL: "CLICK_POTENTIAL";
559
+ readonly ZOOMING: "ZOOMING";
560
+ readonly MOVE: "MOVE";
561
+ readonly SCALING: "SCALING";
562
+ };
563
+
564
+ declare class StateManager {
565
+ current: StateTransition;
566
+ constructor();
567
+ canTransition(to: StateTransition): boolean;
568
+ transition(to: StateTransition): boolean;
569
+ reset(): void;
570
+ isInState(state: StateTransition): boolean;
571
+ }
572
+
573
+ declare type StateTransition = typeof STATE_TRANSITION[keyof typeof STATE_TRANSITION];
574
+
575
+ declare type StrJoin<T extends string[], F extends string> = T extends readonly [] ? '' : T extends readonly [infer FF] ? FF : `${F}${StrJoin<Tail<T>, T[0]>}`;
576
+
577
+ declare type Tail<T extends string[]> = T extends readonly [infer _, ...infer Rest] ? Rest : [];
578
+
579
+ declare class Text_2 extends Graph {
580
+ text: string;
581
+ style: Required<TextOptions['style']>;
582
+ constructor(options?: Partial<TextOptions>);
583
+ create(): void;
584
+ clone(): Text_2;
585
+ get __shape__(): DisplayType;
586
+ }
587
+
588
+ declare interface TextOptions extends Omit<GraphOptions, 'style'> {
589
+ text: string;
590
+ style: Partial<GraphStyleSheet & {
591
+ font: string;
592
+ textAlign: CanvasTextAlign;
593
+ baseline: CanvasTextBaseline;
594
+ lineWidth: number;
595
+ fill: string;
596
+ }>;
597
+ }
598
+
599
+ /**
600
+ * @deprecated `TreemapInstanceAPI` don't provide methods anymore. (will be removed in the future versions)
601
+ * Keep it only for migration convenience
602
+ */
603
+ export declare interface TreemapInstanceAPI {
604
+ /**
605
+ * @deprecated don't call this method anymore.
606
+ */
607
+ zoom: () => void;
608
+ }
609
+
610
+ export declare interface TreemapOptions {
611
+ data: Module[];
612
+ }
613
+
614
+ export declare function typedForIn<T extends NonNullable<object>>(obj: T, callback: (key: keyof T, value: T[keyof T]) => void): void;
615
+
616
+ declare type UnionToIntersection<U> = (U extends Any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
617
+
618
+ export declare function visit<T extends AnyObject>(data: T[], fn: (data: T) => boolean | void): T | null;
619
+
620
+ export { }