squarified 0.2.2 → 0.3.2

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.ts CHANGED
@@ -16,8 +16,8 @@ declare class Matrix2D implements MatrixLoc {
16
16
  constructor(loc?: Partial<MatrixLoc>);
17
17
  create(loc: MatrixLoc): this;
18
18
  transform(x: number, y: number, scaleX: number, scaleY: number, rotation: number, skewX: number, skewY: number): this;
19
- private translation;
20
- private scale;
19
+ translation(x: number, y: number): this;
20
+ scale(a: number, d: number): this;
21
21
  private skew;
22
22
  private roate;
23
23
  }
@@ -25,46 +25,23 @@ declare class Matrix2D implements MatrixLoc {
25
25
  declare const enum DisplayType {
26
26
  Graph = "Graph",
27
27
  Box = "Box",
28
- Rect = "Rect",
29
28
  Text = "Text",
30
- Layer = "Layer"
29
+ RoundRect = "RoundRect",
30
+ Bitmap = "Bitmap"
31
31
  }
32
32
  declare abstract class Display {
33
33
  parent: Display | null;
34
34
  id: number;
35
35
  matrix: Matrix2D;
36
- abstract get __instanceOf__(): string;
36
+ abstract get __instanceOf__(): DisplayType;
37
37
  constructor();
38
38
  destory(): void;
39
39
  }
40
- interface LocOptions {
41
- width: number;
42
- height: number;
43
- x: number;
44
- y: number;
45
- scaleX: number;
46
- scaleY: number;
47
- rotation: number;
48
- skewX: number;
49
- skewY: number;
50
- }
51
- declare abstract class S extends Display {
52
- width: number;
53
- height: number;
54
- x: number;
55
- y: number;
56
- scaleX: number;
57
- scaleY: number;
58
- rotation: number;
59
- skewX: number;
60
- skewY: number;
61
- constructor(options?: Partial<LocOptions>);
62
- }
63
40
 
64
41
  declare abstract class C extends Display {
65
42
  elements: Display[];
66
43
  constructor();
67
- abstract get __instanceOf__(): string;
44
+ abstract get __instanceOf__(): DisplayType;
68
45
  add(...elements: Display[]): void;
69
46
  remove(...elements: Display[]): void;
70
47
  destory(): void;
@@ -79,50 +56,6 @@ declare class Box extends C {
79
56
  clone(): Box;
80
57
  }
81
58
 
82
- interface RenderViewportOptions {
83
- width: number;
84
- height: number;
85
- devicePixelRatio: number;
86
- shaow?: boolean;
87
- }
88
- declare class Render {
89
- private c;
90
- options: RenderViewportOptions;
91
- constructor(to: Element, options: RenderViewportOptions);
92
- clear(width: number, height: number): void;
93
- get canvas(): HTMLCanvasElement;
94
- get ctx(): CanvasRenderingContext2D;
95
- initOptions(userOptions?: Partial<RenderViewportOptions>): void;
96
- destory(): void;
97
- }
98
-
99
- declare class Layer extends C implements S {
100
- private c;
101
- __refresh__: boolean;
102
- options: RenderViewportOptions;
103
- width: number;
104
- height: number;
105
- x: number;
106
- y: number;
107
- scaleX: number;
108
- scaleY: number;
109
- rotation: number;
110
- skewX: number;
111
- skewY: number;
112
- constructor(options?: Partial<LocOptions>);
113
- get __instanceOf__(): DisplayType.Layer;
114
- setCanvasOptions(options?: Partial<RenderViewportOptions>): void;
115
- cleanCacheSnapshot(): {
116
- dpr: number;
117
- matrix: Matrix2D;
118
- };
119
- setCacheSnapshot(c: HTMLCanvasElement): void;
120
- initLoc(options?: Partial<LocOptions>): void;
121
- draw(ctx: CanvasRenderingContext2D): void;
122
- get canvas(): HTMLCanvasElement;
123
- get ctx(): CanvasRenderingContext2D;
124
- }
125
-
126
59
  interface RGBColor {
127
60
  r: number;
128
61
  g: number;
@@ -145,13 +78,14 @@ interface ColorDecoratorResultRGB {
145
78
  }
146
79
  type ColorDecoratorResult = ColorDecoratorResultHLS | ColorDecoratorResultRGB;
147
80
 
148
- type EventCallback<P = any[]> = P extends any[] ? (...args: P) => any : never;
81
+ type EventCallback<P = Any[]> = P extends Any[] ? (...args: P) => Any : never;
149
82
  type DefaultEventDefinition = Record<string, EventCallback>;
150
83
  type BindThisParameter<T, C = unknown> = T extends (...args: infer P) => infer R ? (this: C, ...args: P) => R : never;
151
84
  interface EventCollectionData<EvtDefinition extends DefaultEventDefinition, C = unknown> {
152
85
  name: string;
153
86
  handler: BindThisParameter<EvtDefinition[keyof EvtDefinition], C>;
154
87
  ctx: C;
88
+ silent: boolean;
155
89
  }
156
90
  type EventCollections<EvtDefinition extends DefaultEventDefinition> = Record<keyof EvtDefinition, EventCollectionData<EvtDefinition>[]>;
157
91
  declare class Event<EvtDefinition extends DefaultEventDefinition = DefaultEventDefinition> {
@@ -159,26 +93,85 @@ declare class Event<EvtDefinition extends DefaultEventDefinition = DefaultEventD
159
93
  constructor();
160
94
  on<C, Evt extends keyof EvtDefinition>(evt: Evt, handler: BindThisParameter<EvtDefinition[Evt], unknown extends C ? this : C>, c?: C): void;
161
95
  off(evt: keyof EvtDefinition, handler?: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown>): void;
96
+ silent(evt: keyof EvtDefinition, handler?: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown>): void;
97
+ active(evt: keyof EvtDefinition, handler?: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown>): void;
162
98
  emit(evt: keyof EvtDefinition, ...args: Parameters<EvtDefinition[keyof EvtDefinition]>): void;
163
99
  bindWithContext<C>(c: C): (evt: keyof EvtDefinition, handler: BindThisParameter<EvtDefinition[keyof EvtDefinition], unknown extends C ? this : C>) => void;
164
100
  }
165
101
 
166
- type ApplyTo = string | Element;
102
+ interface RenderViewportOptions {
103
+ width: number;
104
+ height: number;
105
+ devicePixelRatio: number;
106
+ shaow?: boolean;
107
+ }
108
+ declare class Canvas {
109
+ canvas: HTMLCanvasElement;
110
+ ctx: CanvasRenderingContext2D;
111
+ constructor(options: RenderViewportOptions);
112
+ setOptions(options: RenderViewportOptions): void;
113
+ }
114
+ declare class Render {
115
+ options: RenderViewportOptions;
116
+ private container;
117
+ constructor(to: HTMLElement, options: RenderViewportOptions);
118
+ clear(width: number, height: number): void;
119
+ get canvas(): HTMLCanvasElement;
120
+ get ctx(): CanvasRenderingContext2D;
121
+ initOptions(userOptions?: Partial<RenderViewportOptions>): void;
122
+ destory(): void;
123
+ }
124
+
125
+ type ApplyTo = string | HTMLElement;
167
126
  declare class Schedule<D extends DefaultEventDefinition = DefaultEventDefinition> extends Box {
168
127
  render: Render;
169
- to: Element;
128
+ to: HTMLElement;
170
129
  event: Event<D>;
171
130
  constructor(to: ApplyTo, renderOptions?: Partial<RenderViewportOptions>);
172
131
  update(): void;
173
132
  execute(render: Render, graph?: Display): void;
174
133
  }
175
134
 
176
- declare function traverse(graphs: Display[], handler: (graph: S) => void): void;
177
- declare const etoile: {
178
- Schedule: typeof Schedule;
179
- traverse: typeof traverse;
135
+ declare const DOM_EVENTS: readonly ["click", "mousedown", "mousemove", "mouseup", "mouseover", "mouseout", "wheel"];
136
+ type DOMEventType = typeof DOM_EVENTS[number];
137
+ interface DOMLoc {
138
+ x: number;
139
+ y: number;
140
+ }
141
+ interface DOMEventMetadata<T extends keyof HTMLElementEventMap = Any> {
142
+ native: HTMLElementEventMap[T];
143
+ loc: DOMLoc;
144
+ }
145
+ type DOMEventCallback<T extends DOMEventType> = (metadata: DOMEventMetadata<T>) => void;
146
+ type DOMEventDefinition<API = unknown> = {
147
+ [K in DOMEventType]: BindThisParameter<DOMEventCallback<K>, API>;
180
148
  };
181
149
 
150
+ declare abstract class Cache {
151
+ abstract key: string;
152
+ abstract get state(): boolean;
153
+ abstract flush(...args: never): void;
154
+ abstract destroy(): void;
155
+ }
156
+ declare class RenderCache extends Canvas implements Cache {
157
+ key: string;
158
+ private $memory;
159
+ constructor(opts: RenderViewportOptions);
160
+ get state(): boolean;
161
+ flush(treemap: TreemapLayout, matrix?: Matrix2D): void;
162
+ destroy(): void;
163
+ }
164
+ declare class FontCache implements Cache {
165
+ key: string;
166
+ private fonts;
167
+ ellispsis: Record<string, number>;
168
+ constructor();
169
+ get state(): boolean;
170
+ flush(treemap: TreemapLayout, matrix?: Matrix2D): void;
171
+ destroy(): void;
172
+ queryFontById(id: string, byDefault: () => number): number;
173
+ }
174
+
182
175
  type ColorMappings = Record<string, ColorDecoratorResult>;
183
176
  type Rect = {
184
177
  w: number;
@@ -226,10 +219,10 @@ declare const defaultFontOptions: {
226
219
  };
227
220
  declare function presetDecorator(app: TreemapLayout): void;
228
221
 
229
- type AnyObject = Record<keyof any, any>;
222
+ type AnyObject = Record<keyof Any, Any>;
230
223
  declare function sortChildrenByKey<T extends AnyObject, K extends keyof T = 'weight'>(data: T[], ...keys: K[]): T[];
231
224
  declare function c2m<T extends AnyObject & {
232
- groups: any[];
225
+ groups: Any[];
233
226
  }, K extends keyof T>(data: T, key: K, modifier?: (data: T) => T): T & {
234
227
  weight: number;
235
228
  };
@@ -265,30 +258,26 @@ type LayoutModule = {
265
258
  };
266
259
  };
267
260
 
268
- declare const primitiveEvents: readonly ["click", "mousedown", "mousemove", "mouseup", "mouseover", "mouseout"];
269
- type PrimitiveEvent = typeof primitiveEvents[number];
270
261
  interface PrimitiveEventMetadata<T extends keyof HTMLElementEventMap> {
271
262
  native: HTMLElementEventMap[T];
272
- module: LayoutModule;
263
+ module: LayoutModule | null;
273
264
  }
274
- type PrimitiveEventCallback<T extends PrimitiveEvent> = (metadata: PrimitiveEventMetadata<T>) => void;
275
- type PrimitiveEventDefinition = {
276
- [key in PrimitiveEvent]: BindThisParameter<PrimitiveEventCallback<key>, TreemapInstanceAPI>;
265
+ type ExposedEventCallback<T extends DOMEventType> = (metadata: PrimitiveEventMetadata<T>) => void;
266
+ type ExposedEventDefinition = {
267
+ [K in DOMEventType]: BindThisParameter<ExposedEventCallback<K>, TreemapInstanceAPI>;
277
268
  };
278
- interface EventMethods<C = TreemapInstanceAPI, D = PrimitiveEventDefinition> {
269
+ interface ExposedEventMethods<C = TreemapInstanceAPI, D = ExposedEventDefinition> {
279
270
  on<Evt extends keyof D>(evt: Evt, handler: BindThisParameter<D[Evt], unknown extends C ? this : C>): void;
280
271
  off<Evt extends keyof D>(evt: keyof D, handler?: BindThisParameter<D[Evt], unknown extends C ? this : C>): void;
281
272
  }
282
- declare const internalEventMappings: {
283
- readonly CLEAN_UP: "self:cleanup";
284
- readonly ON_LOAD: "self:onload";
285
- readonly ON_ZOOM: "zoom";
273
+ declare const INTERNAL_EVENT_MAPPINGS: {
274
+ readonly ON_ZOOM: 1;
275
+ readonly ON_CLEANUP: 3;
286
276
  };
287
- type InternalEventType = typeof internalEventMappings[keyof typeof internalEventMappings];
277
+ type InternalEventType = typeof INTERNAL_EVENT_MAPPINGS[keyof typeof INTERNAL_EVENT_MAPPINGS];
288
278
  interface InternalEventMappings {
289
- [internalEventMappings.CLEAN_UP]: () => void;
290
- [internalEventMappings.ON_LOAD]: (width: number, height: number, root: HTMLElement) => void;
291
- [internalEventMappings.ON_ZOOM]: (node: LayoutModule) => void;
279
+ [INTERNAL_EVENT_MAPPINGS.ON_ZOOM]: (node: LayoutModule) => void;
280
+ [INTERNAL_EVENT_MAPPINGS.ON_CLEANUP]: () => void;
292
281
  }
293
282
  type InternalEventDefinition = {
294
283
  [key in InternalEventType]: InternalEventMappings[key];
@@ -297,13 +286,13 @@ type InternalEventDefinition = {
297
286
  interface TreemapOptions {
298
287
  data: Module[];
299
288
  }
300
- type Using = 'decorator';
289
+ type UseKind = 'decorator';
301
290
  interface App {
302
291
  init: (el: HTMLElement) => void;
303
292
  dispose: () => void;
304
293
  setOptions: (options: TreemapOptions) => void;
305
294
  resize: () => void;
306
- use: (using: Using, register: (app: TreemapLayout) => void) => void;
295
+ use: (using: UseKind, register: (app: TreemapLayout) => void) => void;
307
296
  zoom: (id: string) => void;
308
297
  }
309
298
  /**
@@ -311,24 +300,47 @@ interface App {
311
300
  * If you want set custom decorator pls see 'presetDecorator' for details.
312
301
  */
313
302
  type unstable_use = (app: TreemapLayout) => void;
314
- declare class TreemapLayout extends etoile.Schedule<InternalEventDefinition> {
303
+ declare class Highlight extends Schedule<DOMEventDefinition> {
304
+ reset(): void;
305
+ get canvas(): HTMLCanvasElement;
306
+ setZIndexForHighlight(zIndex?: string): void;
307
+ init(): void;
308
+ }
309
+ declare class TreemapLayout extends Schedule<InternalEventDefinition> {
315
310
  data: NativeModule[];
316
311
  layoutNodes: LayoutModule[];
317
312
  decorator: RenderDecorator;
318
- private bgLayer;
319
- private fgBox;
320
- fontsCaches: Record<string, number>;
321
- ellispsisWidthCache: Record<string, number>;
322
- constructor(...args: ConstructorParameters<typeof etoile.Schedule>);
313
+ bgBox: Box;
314
+ fgBox: Box;
315
+ highlight: Highlight;
316
+ renderCache: RenderCache;
317
+ fontCache: FontCache;
318
+ constructor(...args: ConstructorParameters<typeof Schedule>);
323
319
  drawBackgroundNode(node: LayoutModule): void;
324
320
  drawForegroundNode(node: LayoutModule): void;
325
321
  reset(refresh?: boolean): void;
326
322
  get api(): {
327
- zoom: (node: LayoutModule) => void;
323
+ zoom: (node: LayoutModule | null) => void;
328
324
  };
329
- get backgroundLayer(): Layer;
330
325
  }
331
- declare function createTreemap(): App & EventMethods;
326
+ declare function createTreemap(): App & ExposedEventMethods;
332
327
  type TreemapInstanceAPI = TreemapLayout['api'];
333
328
 
334
- export { type App, type ColorMappings, type EventMethods, type LayoutModule, type Module, type NativeModule, type PrimitiveEvent, type PrimitiveEventCallback, type PrimitiveEventDefinition, type PrimitiveEventMetadata, type Rect, type RenderColor, type RenderDecorator, type RenderFont, type RenderLayout, type Series, type TreemapInstanceAPI, TreemapLayout, type TreemapOptions, c2m, createTreemap, defaultFontOptions, defaultLayoutOptions, findRelativeNode, findRelativeNodeById, flatten as flattenModule, getNodeDepth, presetDecorator, sortChildrenByKey, type unstable_use, visit };
329
+ /**
330
+ * @deprecated compat `PrimitiveEvent` using `DOMEventType` replace it. (will be removed in the next three versions.)
331
+ */
332
+ type PrimitiveEvent = DOMEventType;
333
+ /**
334
+ * @deprecated compat `EventMethods` using `ExposedEventMethods` replace it. (will be removed in the next three versions.)
335
+ */
336
+ type EventMethods = ExposedEventMethods;
337
+ /**
338
+ * @deprecated compat `PrimitiveEventCallback` using `ExposedEventCallback` replace it. (will be removed in the next three versions.)
339
+ */
340
+ type PrimitiveEventCallback<T extends PrimitiveEvent> = ExposedEventCallback<T>;
341
+ /**
342
+ * @deprecated compat `PrimitiveEventDefinition` using `ExposedEventDefinition` replace it. (will be removed in the next three versions.)
343
+ */
344
+ type PrimitiveEventDefinition = ExposedEventDefinition;
345
+
346
+ export { type App, type ColorMappings, type DOMEventType, type EventMethods, type ExposedEventCallback, type ExposedEventDefinition, type ExposedEventMethods, type LayoutModule, type Module, type NativeModule, type PrimitiveEvent, type PrimitiveEventCallback, type PrimitiveEventDefinition, type PrimitiveEventMetadata, type Rect, type RenderColor, type RenderDecorator, type RenderFont, type RenderLayout, type Series, type TreemapInstanceAPI, TreemapLayout, type TreemapOptions, c2m, createTreemap, defaultFontOptions, defaultLayoutOptions, findRelativeNode, findRelativeNodeById, flatten as flattenModule, getNodeDepth, presetDecorator, sortChildrenByKey, type unstable_use, visit };