@krainovsd/graph 0.14.0-beta.9 → 0.15.0-beta.1

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.
Files changed (78) hide show
  1. package/lib/cjs/index.cjs +636 -375
  2. package/lib/cjs/index.cjs.map +1 -1
  3. package/lib/esm/constants/force-controls.js +6 -4
  4. package/lib/esm/constants/force-controls.js.map +1 -1
  5. package/lib/esm/constants/highlight-controls.js +6 -3
  6. package/lib/esm/constants/highlight-controls.js.map +1 -1
  7. package/lib/esm/constants/link-controls.js +6 -3
  8. package/lib/esm/constants/link-controls.js.map +1 -1
  9. package/lib/esm/constants/node-controls.js +6 -3
  10. package/lib/esm/constants/node-controls.js.map +1 -1
  11. package/lib/esm/index.js +8 -6
  12. package/lib/esm/index.js.map +1 -1
  13. package/lib/esm/module/GraphCanvas/GraphCanvas.js +36 -17
  14. package/lib/esm/module/GraphCanvas/GraphCanvas.js.map +1 -1
  15. package/lib/esm/module/GraphCanvas/StaticGraphCanvas.js +127 -0
  16. package/lib/esm/module/GraphCanvas/StaticGraphCanvas.js.map +1 -0
  17. package/lib/esm/module/GraphCanvas/constants/graph-settings.js +6 -7
  18. package/lib/esm/module/GraphCanvas/constants/graph-settings.js.map +1 -1
  19. package/lib/esm/module/GraphCanvas/constants/highlight-settings.js +1 -4
  20. package/lib/esm/module/GraphCanvas/constants/highlight-settings.js.map +1 -1
  21. package/lib/esm/module/GraphCanvas/constants/index.js +6 -4
  22. package/lib/esm/module/GraphCanvas/constants/index.js.map +1 -1
  23. package/lib/esm/module/GraphCanvas/constants/link-settings.js +1 -9
  24. package/lib/esm/module/GraphCanvas/constants/link-settings.js.map +1 -1
  25. package/lib/esm/module/GraphCanvas/constants/node-settings.js +1 -10
  26. package/lib/esm/module/GraphCanvas/constants/node-settings.js.map +1 -1
  27. package/lib/esm/module/GraphCanvas/lib/settings/force-settings-getter.js +6 -4
  28. package/lib/esm/module/GraphCanvas/lib/settings/force-settings-getter.js.map +1 -1
  29. package/lib/esm/module/GraphCanvas/lib/settings/graph-settings-getter.js +0 -3
  30. package/lib/esm/module/GraphCanvas/lib/settings/graph-settings-getter.js.map +1 -1
  31. package/lib/esm/module/GraphCanvas/lib/settings/highlight-settings-getter.js +6 -3
  32. package/lib/esm/module/GraphCanvas/lib/settings/highlight-settings-getter.js.map +1 -1
  33. package/lib/esm/module/GraphCanvas/lib/settings/link-settings-getter.js +6 -3
  34. package/lib/esm/module/GraphCanvas/lib/settings/link-settings-getter.js.map +1 -1
  35. package/lib/esm/module/GraphCanvas/lib/settings/node-settings-getter.js +20 -6
  36. package/lib/esm/module/GraphCanvas/lib/settings/node-settings-getter.js.map +1 -1
  37. package/lib/esm/module/GraphCanvas/lib/utils/calculate-curve-link-position-by-node.js +6 -4
  38. package/lib/esm/module/GraphCanvas/lib/utils/calculate-curve-link-position-by-node.js.map +1 -1
  39. package/lib/esm/module/GraphCanvas/lib/utils/calculate-link-position-by-node.js +6 -4
  40. package/lib/esm/module/GraphCanvas/lib/utils/calculate-link-position-by-node.js.map +1 -1
  41. package/lib/esm/module/GraphCanvas/lib/utils/get-particle-position.js +1 -1
  42. package/lib/esm/module/GraphCanvas/lib/utils/get-particle-position.js.map +1 -1
  43. package/lib/esm/module/GraphCanvas/lib/utils/is-node-visible.js +25 -27
  44. package/lib/esm/module/GraphCanvas/lib/utils/is-node-visible.js.map +1 -1
  45. package/lib/esm/module/GraphCanvas/lib/utils/is-overlaps-node.js.map +1 -1
  46. package/lib/esm/module/GraphCanvas/lib/utils/node-by-pointer-getter.js +2 -1
  47. package/lib/esm/module/GraphCanvas/lib/utils/node-by-pointer-getter.js.map +1 -1
  48. package/lib/esm/module/GraphCanvas/lib/utils/node-highlight.js +7 -11
  49. package/lib/esm/module/GraphCanvas/lib/utils/node-highlight.js.map +1 -1
  50. package/lib/esm/module/GraphCanvas/lib/utils/node-iteration-extractor.js +3 -0
  51. package/lib/esm/module/GraphCanvas/lib/utils/node-iteration-extractor.js.map +1 -1
  52. package/lib/esm/module/GraphCanvas/lib/utils/precompute-graph.js +24 -0
  53. package/lib/esm/module/GraphCanvas/lib/utils/precompute-graph.js.map +1 -0
  54. package/lib/esm/module/GraphCanvas/lib/utils/prepare-graph-data.js +49 -0
  55. package/lib/esm/module/GraphCanvas/lib/utils/prepare-graph-data.js.map +1 -0
  56. package/lib/esm/module/GraphCanvas/slices/draw-links.js +24 -42
  57. package/lib/esm/module/GraphCanvas/slices/draw-links.js.map +1 -1
  58. package/lib/esm/module/GraphCanvas/slices/draw-nodes.js +80 -168
  59. package/lib/esm/module/GraphCanvas/slices/draw-nodes.js.map +1 -1
  60. package/lib/esm/module/GraphCanvas/slices/draw-text.js +1 -9
  61. package/lib/esm/module/GraphCanvas/slices/draw-text.js.map +1 -1
  62. package/lib/esm/module/GraphCanvas/slices/export-svg.js +4 -5
  63. package/lib/esm/module/GraphCanvas/slices/export-svg.js.map +1 -1
  64. package/lib/esm/module/GraphCanvas/slices/init-dnd.js +15 -3
  65. package/lib/esm/module/GraphCanvas/slices/init-dnd.js.map +1 -1
  66. package/lib/esm/module/GraphCanvas/slices/init-draw.js +212 -8
  67. package/lib/esm/module/GraphCanvas/slices/init-draw.js.map +1 -1
  68. package/lib/esm/module/GraphCanvas/slices/init-pointer.js +6 -8
  69. package/lib/esm/module/GraphCanvas/slices/init-pointer.js.map +1 -1
  70. package/lib/esm/module/GraphCanvas/slices/init-simulation.js +3 -4
  71. package/lib/esm/module/GraphCanvas/slices/init-simulation.js.map +1 -1
  72. package/lib/esm/module/GraphCanvas/slices/init-zoom.js +2 -4
  73. package/lib/esm/module/GraphCanvas/slices/init-zoom.js.map +1 -1
  74. package/lib/esm/module/GraphCanvas/slices/update-link-cache.js +5 -5
  75. package/lib/esm/module/GraphCanvas/slices/update-node-cache.js +17 -29
  76. package/lib/esm/module/GraphCanvas/slices/update-node-cache.js.map +1 -1
  77. package/lib/index.d.ts +94 -43
  78. package/package.json +1 -1
package/lib/index.d.ts CHANGED
@@ -3,6 +3,8 @@ import { ValueOf } from '@krainovsd/js-helpers';
3
3
  import { SimulationNodeDatum, SimulationLinkDatum, Simulation } from 'd3-force';
4
4
  import { D3DragEvent } from 'd3-drag';
5
5
 
6
+ declare function initDraw<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(this: GraphCanvas<NodeData, LinkData>): (recursive?: boolean) => void;
7
+
6
8
  declare const COMMON_SETTINGS: {
7
9
  nodeRadius: number;
8
10
  nodeSize: number;
@@ -32,6 +34,21 @@ interface NodeInterface<NodeData extends Record<string, unknown>> extends Simula
32
34
  type NodeShape = "circle" | "square" | "text";
33
35
  type TextStyleEnum = "normal" | "italic" | "oblique";
34
36
  type CachedNodeTextInterface = Record<string | number, string[] | undefined>;
37
+ type NodeDrawBatch = {
38
+ shape: NodeShape;
39
+ x: number;
40
+ y: number;
41
+ radius: number;
42
+ width: number;
43
+ height: number;
44
+ image: HTMLImageElement | undefined;
45
+ };
46
+ type NodeTextDrawBatch = {
47
+ text: string;
48
+ x: number;
49
+ y: number;
50
+ };
51
+ type DeferredDraw = () => void;
35
52
 
36
53
  interface LinkInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> extends SimulationLinkDatum<NodeInterface<NodeData>> {
37
54
  data?: LinkData;
@@ -58,11 +75,37 @@ type LinkParticle = {
58
75
  _lastDistance?: number;
59
76
  _lastTime?: number;
60
77
  };
78
+ type LinkDrawBatch = {
79
+ curve: boolean;
80
+ xStart: number;
81
+ yStart: number;
82
+ xEnd: number;
83
+ yEnd: number;
84
+ xControl: number;
85
+ yControl: number;
86
+ };
87
+ type LinkParticleDrawBatch = {
88
+ x: number;
89
+ y: number;
90
+ r: number;
91
+ };
92
+ type LinkArrowDrawBatch = {
93
+ x: number;
94
+ y: number;
95
+ size: number;
96
+ angle: number;
97
+ };
61
98
 
62
99
  type NodeIterationPropsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Return = number> = (this: GraphCanvas<NodeData, LinkData>, node: NodeInterface<NodeData>, i: number, nodes: NodeInterface<NodeData>[]) => Return;
63
100
  type LinkIterationPropsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Return = number> = (this: GraphCanvas<NodeData, LinkData>, link: LinkInterface<NodeData, LinkData>, i: number, links: LinkInterface<NodeData, LinkData>[]) => Return;
64
101
  type NodeIterationPropsNoThisInterface<NodeData extends Record<string, unknown>, Return = number> = (node: NodeInterface<NodeData>, i: number, nodes: NodeInterface<NodeData>[]) => Return;
65
102
  type LinkIterationPropsNoThisInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>, Return = number> = (link: LinkInterface<NodeData, LinkData>, i: number, links: LinkInterface<NodeData, LinkData>[]) => Return;
103
+ type Area = {
104
+ left: number;
105
+ right: number;
106
+ top: number;
107
+ bottom: number;
108
+ };
66
109
 
67
110
  type PrecomputeForceSettingsInterface = {
68
111
  precompute?: boolean;
@@ -123,10 +166,10 @@ type GraphSettingsInterface<NodeData extends Record<string, unknown>> = {
123
166
  dragPlaceCoefficient?: (node: NodeInterface<NodeData>, pxEvent: number, pyEvent: number) => number | undefined;
124
167
  showDrawTime?: boolean;
125
168
  showDrawTimeEveryTick?: boolean;
169
+ maxFps?: number;
126
170
  };
127
171
 
128
172
  declare const GRAPH_SETTINGS: Required<GraphSettingsInterface<Record<string, unknown>>>;
129
- declare const PERFORMANCE_GRAPH_SETTINGS: Required<GraphSettingsInterface<Record<string, unknown>>>;
130
173
 
131
174
  type HighlightSettingsInterface = HighlighCommonSettingsInterface & HighlightByNodeForNodeSettingsInterface & HighlightByNodeForLabelSettingsInterface & HighlightByNodeForTextSettingsInterface & HighlightByNodeForLinkSettingsInterface & HighlightByNodeForArrowSettingsInterface & HighlightByLinkForNodeSettingsInterface & HighlightByLinkForTextSettingsInterface & HighlightByLinkForLabelSettingsInterface & HighlightByLinkForLinkSettingsInterface & HighlightByLinkForArrowSettingsInterface;
132
175
  type HighlighCommonSettingsInterface = {
@@ -204,8 +247,8 @@ type HighlightByLinkForArrowSettingsInterface = {
204
247
  };
205
248
 
206
249
  declare const HIGHLIGHT_SETTINGS: Required<HighlightSettingsInterface>;
207
- declare const PERFORMANCE_HIGHLIGHT_SETTINGS: Required<HighlightSettingsInterface>;
208
250
 
251
+ type GraphLinkSettingsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = Required<Omit<LinkSettingsInterface<NodeData, LinkData>, "options">> & Pick<LinkSettingsInterface<NodeData, LinkData>, "options">;
209
252
  type LinkSettingsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
210
253
  smartCache?: boolean;
211
254
  prettyDraw?: boolean;
@@ -248,8 +291,6 @@ type LinkOptionsParticleInterface = {
248
291
 
249
292
  declare const LINK_SETTINGS: Omit<Required<LinkSettingsInterface<Record<string, unknown>, Record<string, unknown>>>, "options">;
250
293
  declare const LINK_OPTIONS: Omit<Required<LinkOptionsInterface<Record<string, unknown>, Record<string, unknown>>>, "color" | "width" | "drawLink" | "drawExtraLink" | "arrowColor">;
251
- declare const PERFORMANCE_LINK_SETTINGS: Omit<Required<LinkSettingsInterface<Record<string, unknown>, Record<string, unknown>>>, "options">;
252
- declare const PERFORMANCE_LINK_OPTIONS: Omit<Required<LinkOptionsInterface<Record<string, unknown>, Record<string, unknown>>>, "color" | "width" | "drawLink" | "drawExtraLink" | "arrowColor">;
253
294
 
254
295
  type NodeSettingsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
255
296
  smartCache?: boolean;
@@ -275,7 +316,10 @@ type NodeSettingsInterface<NodeData extends Record<string, unknown>, LinkData ex
275
316
  textShiftYMax?: number;
276
317
  idGetter?: NodeIterationPropsInterface<NodeData, LinkData, string | number>;
277
318
  options?: NodeIterationPropsInterface<NodeData, LinkData, NodeOptionsInterface<NodeData, LinkData>> | NodeOptionsInterface<NodeData, LinkData>;
319
+ text?: NodeIterationPropsInterface<NodeData, LinkData, string | null> | string | null;
320
+ label?: NodeIterationPropsInterface<NodeData, LinkData, string | null> | string | null;
278
321
  };
322
+ type GraphNodeSettingsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = Required<Omit<NodeSettingsInterface<NodeData, LinkData>, "options" | "label" | "text">> & Pick<NodeSettingsInterface<NodeData, LinkData>, "options" | "label" | "text">;
279
323
  type NodeOptionsInterface<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
280
324
  nodeDraw?: ((this: GraphCanvas<NodeData, LinkData>, node: NodeInterface<NodeData>, options: Required<NodeOptionsInterface<NodeData, LinkData>>) => void) | null;
281
325
  textDraw?: ((this: GraphCanvas<NodeData, LinkData>, node: NodeInterface<NodeData>, options: Required<NodeOptionsInterface<NodeData, LinkData>>) => void) | null;
@@ -294,8 +338,6 @@ type NodeOptionsNodeInterface = {
294
338
  borderWidth?: number;
295
339
  };
296
340
  type NodeOptionsTextInterface = {
297
- textVisible?: boolean;
298
- text?: string | null;
299
341
  textColor?: string;
300
342
  textSize?: number;
301
343
  textAlpha?: number;
@@ -320,13 +362,10 @@ type NodeOptionsLabelInterface = {
320
362
  labelStyle?: TextStyleEnum;
321
363
  labelWeight?: number;
322
364
  labelGap?: number;
323
- label?: string | null;
324
365
  };
325
366
 
326
- declare const NODE_SETTINGS: Omit<Required<NodeSettingsInterface<Record<string, unknown>, Record<string, unknown>>>, "options" | "idGetter">;
367
+ declare const NODE_SETTINGS: Omit<Required<NodeSettingsInterface<Record<string, unknown>, Record<string, unknown>>>, "options" | "idGetter" | "text" | "label">;
327
368
  declare const NODE_OPTIONS: Omit<Required<NodeOptionsInterface<Record<string, unknown>, Record<string, unknown>>>, "color" | "text" | "textVisible" | "textSize" | "textShiftY" | "nodeDraw" | "nodeExtraDraw" | "textDraw" | "textExtraDraw">;
328
- declare const PERFORMANCE_NODE_SETTINGS: Omit<Required<NodeSettingsInterface<Record<string, unknown>, Record<string, unknown>>>, "options" | "idGetter">;
329
- declare const PERFOMANCE_NODE_OPTIONS: Omit<Required<NodeOptionsInterface<Record<string, unknown>, Record<string, unknown>>>, "color" | "text" | "textVisible" | "textSize" | "textShiftY" | "nodeDraw" | "nodeExtraDraw" | "textDraw" | "textExtraDraw">;
330
369
 
331
370
  declare const GRAPH_CACHE_TYPE: {
332
371
  readonly NodeOptions: "nodeOptions";
@@ -370,6 +409,10 @@ type GraphCanvasInterface<NodeData extends Record<string, unknown>, LinkData ext
370
409
  type GraphCanvasSimulation<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = Simulation<NodeInterface<NodeData>, LinkInterface<NodeData, LinkData>>;
371
410
  type GraphCanvasCacheKeys = ValueOf<typeof GRAPH_CACHE_TYPE>;
372
411
 
412
+ declare function getDrawLink<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(linkBatch: Record<string, LinkDrawBatch[]>, particleBatch: Record<string, LinkParticleDrawBatch[]>, arrowBatch: Record<string, LinkArrowDrawBatch[]>, now: number): (this: GraphCanvas<NodeData, LinkData>, link: LinkInterface<NodeData, LinkData>, index: number) => void;
413
+
414
+ declare function getDrawNode<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(nodeBatch: Record<string, NodeDrawBatch[]>, nodeImageBatch: Record<string, NodeDrawBatch[]>, textBatch: Record<string, Record<string, NodeTextDrawBatch[]>>, deferredNodeRender: DeferredDraw[], deferredTextRender: DeferredDraw[], area: Area): (this: GraphCanvas<NodeData, LinkData>, node: NodeInterface<NodeData>, index: number) => void;
415
+
373
416
  declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> {
374
417
  /** initial data */
375
418
  protected nodes: NodeInterface<NodeData>[];
@@ -384,8 +427,8 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
384
427
  protected graphSettings: Required<GraphSettingsInterface<NodeData>>;
385
428
  protected forceSettings: Required<ForceSettingsInterface<NodeData, LinkData>>;
386
429
  protected highlightSettings: Required<HighlightSettingsInterface>;
387
- protected nodeSettings: Required<Omit<NodeSettingsInterface<NodeData, LinkData>, "options">> & Pick<NodeSettingsInterface<NodeData, LinkData>, "options">;
388
- protected linkSettings: Required<Omit<LinkSettingsInterface<NodeData, LinkData>, "options">> & Pick<LinkSettingsInterface<NodeData, LinkData>, "options">;
430
+ protected nodeSettings: GraphNodeSettingsInterface<NodeData, LinkData>;
431
+ protected linkSettings: GraphLinkSettingsInterface<NodeData, LinkData>;
389
432
  protected listeners: ListenersInterface<NodeData, LinkData>;
390
433
  /** service */
391
434
  protected context: CanvasRenderingContext2D | null | undefined;
@@ -393,6 +436,7 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
393
436
  protected areaTransform: ZoomTransform;
394
437
  protected _translateExtent: [[number, number], [number, number]] | undefined;
395
438
  protected draw: (this: GraphCanvas<NodeData, LinkData>) => void;
439
+ protected instantDraw: (this: GraphCanvas<NodeData, LinkData>) => void;
396
440
  protected eventAbortController: AbortController;
397
441
  protected cachedNodeText: (string[] | undefined)[];
398
442
  protected cachedNodeLabel: (string[] | undefined)[];
@@ -431,10 +475,10 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
431
475
  clearCache: (keys: boolean | GraphCanvasCacheKeys[]) => void;
432
476
  tick: () => void;
433
477
  restart: (alpha?: number, options?: Partial<PrecomputeForceSettingsInterface>) => void;
434
- start: () => void;
435
- stop: () => void;
436
478
  create: () => void;
437
479
  destroy: () => void;
480
+ precompute: () => void;
481
+ protected initSmartDraw: (draw: ReturnType<typeof initDraw>) => () => void;
438
482
  protected getPointerAreaPosition: (event: MouseEvent | TouchEvent) => number[];
439
483
  protected clearHTMLElements: () => void;
440
484
  protected updateSimulation: (precompute?: boolean) => void;
@@ -445,18 +489,32 @@ declare class GraphCanvas<NodeData extends Record<string, unknown>, LinkData ext
445
489
  protected animateZoom: (area: HTMLCanvasElement, target: ZoomTransform, start: ZoomTransform, duration: number) => void;
446
490
  }
447
491
 
492
+ declare class StaticGraphCanvas<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> extends GraphCanvas<NodeData, LinkData> {
493
+ protected get simulationWorking(): boolean;
494
+ protected _rafTickId: number | undefined;
495
+ protected init: () => void;
496
+ tick: () => void;
497
+ restart: () => void;
498
+ changeData: (options: Pick<Partial<GraphCanvasInterface<NodeData, LinkData>>, "links" | "nodes">, _alpha?: number, clearCache?: boolean | GraphCanvasCacheKeys[]) => void;
499
+ changeSettings: (options: Omit<Partial<GraphCanvasInterface<NodeData, LinkData>>, "links" | "nodes" | "listeners" | "forceSettings">, clearCache?: boolean | GraphCanvasCacheKeys[]) => undefined;
500
+ destroy: () => void;
501
+ protected updateData: (_alpha?: number, clearCache?: boolean | GraphCanvasCacheKeys[]) => void;
502
+ }
503
+
448
504
  declare function forceSettingsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(settings: ForceSettingsInterface<NodeData, LinkData> | undefined, prevSettings?: Required<ForceSettingsInterface<NodeData, LinkData>>): Required<ForceSettingsInterface<NodeData, LinkData>>;
449
505
 
450
506
  declare function graphSettingsGetter<NodeData extends Record<string, unknown>>(settings: GraphSettingsInterface<NodeData> | undefined, prevSettings?: Required<GraphSettingsInterface<NodeData>>): Required<GraphSettingsInterface<NodeData>>;
451
507
 
452
- declare function linkSettingsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(settings: LinkSettingsInterface<NodeData, LinkData> | undefined, prevSettings?: Required<Omit<LinkSettingsInterface<NodeData, LinkData>, "options">> & Pick<LinkSettingsInterface<NodeData, LinkData>, "options">): Required<Omit<LinkSettingsInterface<NodeData, LinkData>, "options">> & Pick<LinkSettingsInterface<NodeData, LinkData>, "options">;
508
+ declare function linkSettingsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(settings: LinkSettingsInterface<NodeData, LinkData> | undefined, prevSettings?: GraphLinkSettingsInterface<NodeData, LinkData>): GraphLinkSettingsInterface<NodeData, LinkData>;
453
509
  declare function linkOptionsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(this: GraphCanvas<NodeData, LinkData>): Required<LinkOptionsInterface<NodeData, LinkData>>;
454
510
 
455
511
  declare function listenersGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(settings: ListenersInterface<NodeData, LinkData> | undefined): ListenersInterface<NodeData, LinkData>;
456
512
 
457
- declare function nodeSettingsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(settings: NodeSettingsInterface<NodeData, LinkData> | undefined, prevNodeSettings?: Required<Omit<NodeSettingsInterface<NodeData, LinkData>, "options">> & Pick<NodeSettingsInterface<NodeData, LinkData>, "options">): Required<Omit<NodeSettingsInterface<NodeData, LinkData>, "options">> & Pick<NodeSettingsInterface<NodeData, LinkData>, "options">;
513
+ declare function nodeSettingsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(settings: NodeSettingsInterface<NodeData, LinkData> | undefined, prevNodeSettings?: GraphNodeSettingsInterface<NodeData, LinkData>): GraphNodeSettingsInterface<NodeData, LinkData>;
458
514
  declare function nodeOptionsGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(this: GraphCanvas<NodeData, LinkData>, node: NodeInterface<NodeData>): Required<NodeOptionsInterface<NodeData, LinkData>>;
459
- declare function nodeTextSizeGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(transform: ZoomTransform | undefined, nodeSettings: Required<Omit<NodeSettingsInterface<NodeData, LinkData>, "options">> & Pick<NodeSettingsInterface<NodeData, LinkData>, "options">): {
515
+ declare function nodeTextGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(this: GraphCanvas<NodeData, LinkData>, node: NodeInterface<NodeData>, index: number): Required<string | null>;
516
+ declare function nodeLabelGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(this: GraphCanvas<NodeData, LinkData>, node: NodeInterface<NodeData>, index: number): Required<string | null>;
517
+ declare function nodeTextSizeGetter<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(transform: ZoomTransform | undefined, nodeSettings: GraphNodeSettingsInterface<NodeData, LinkData>): {
460
518
  textSize: number;
461
519
  textShiftY: number;
462
520
  };
@@ -499,6 +557,13 @@ interface GraphBounds {
499
557
  }
500
558
  declare function computeGraphBounds<NodeData extends Record<string, unknown>>(nodes: NodeInterface<NodeData>[]): GraphBounds | null;
501
559
 
560
+ type PrepareGraphOptions<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
561
+ nodes: NodeInterface<NodeData>[];
562
+ links: LinkInterface<NodeData, LinkData>[];
563
+ neighbors?: boolean;
564
+ };
565
+ declare function prepareGraph<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(opts: PrepareGraphOptions<NodeData, LinkData>): void;
566
+
502
567
  declare function pointerGetter(mouseEvent: MouseEvent | TouchEvent, areaRect: DOMRect | undefined, areaTransform: ZoomTransform): number[];
503
568
 
504
569
  declare function dragPlaceCoefficientGetter<NodeData extends Record<string, unknown>>(node: NodeInterface<NodeData>, pointerX: number, pointerY: number): number | undefined;
@@ -530,13 +595,7 @@ declare function calculateLinkPositionByNode<NodeData extends Record<string, unk
530
595
 
531
596
  declare function animationByProgress(initial: number, additional: number, progress: number): number;
532
597
 
533
- type IsNodeVisibleOptions<NodeData extends Record<string, unknown>> = {
534
- width: number;
535
- height: number;
536
- transform: ZoomTransform;
537
- node: NodeInterface<NodeData>;
538
- };
539
- declare function isNodeVisible<NodeData extends Record<string, unknown>>(opts: IsNodeVisibleOptions<NodeData>): boolean;
598
+ declare function isNodeVisible<NodeData extends Record<string, unknown>>(node: NodeInterface<NodeData>, area: Area): boolean;
540
599
 
541
600
  type GetParticlePositionOptions = {
542
601
  particle: LinkParticle;
@@ -549,6 +608,7 @@ type GetParticlePositionOptions = {
549
608
  distance: number;
550
609
  totalCount: number;
551
610
  speed: number;
611
+ now: number;
552
612
  };
553
613
  declare function getParticlePosition(opts: GetParticlePositionOptions): void;
554
614
  declare function approximateQuadraticBezierLength(x0: number, y0: number, x1: number, y1: number, x2: number, y2: number): number;
@@ -648,24 +708,15 @@ declare function extractLinkPointIds<NodeData extends Record<string, unknown>, L
648
708
 
649
709
  declare function isEmptyObject(obj: Record<string, unknown>): boolean;
650
710
 
651
- declare function getDrawLink<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(): (this: GraphCanvas<NodeData, LinkData>, link: LinkInterface<NodeData, LinkData>, index: number) => void;
652
-
653
- declare function getDrawNode<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(nodeRenders: (() => void)[], textRenders: (() => void)[]): (this: GraphCanvas<NodeData, LinkData>, node: NodeInterface<NodeData>, index: number) => void;
654
-
655
- type DrawTextOptions = {
656
- lines: string[];
657
- x: number;
658
- y: number;
659
- textSize: number;
660
- textStyle: TextStyleEnum;
661
- textWeight: number;
662
- textFont: string;
663
- textColor: string;
664
- textGap: number;
665
- textAlign: CanvasTextAlign;
666
- context: CanvasRenderingContext2D;
711
+ type PrecomputeGraphOptions<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>> = {
712
+ nodes: NodeInterface<NodeData>[];
713
+ links: LinkInterface<NodeData, LinkData>[];
714
+ forceSettings?: ForceSettingsInterface<NodeData, LinkData>;
715
+ nodeSettings?: NodeSettingsInterface<NodeData, LinkData>;
716
+ linkSettings?: LinkSettingsInterface<NodeData, LinkData>;
717
+ maxMs?: number;
667
718
  };
668
- declare function drawText({ context, textAlign, textColor, textFont, textStyle, textGap, textWeight, textSize, x, y, lines, }: DrawTextOptions): void;
719
+ declare function precomputeGraph<NodeData extends Record<string, unknown>, LinkData extends Record<string, unknown>>(opts: PrecomputeGraphOptions<NodeData, LinkData>): void;
669
720
 
670
721
  type GraphSettingsInputRange<I extends string> = {
671
722
  type: "range";
@@ -748,5 +799,5 @@ declare const NODE_OPTIONS_NODE_CONTROLS: GraphSettingsInputInterface<keyof Node
748
799
  declare const NODE_OPTIONS_TEXT_CONTROLS: GraphSettingsInputInterface<keyof NodeOptionsTextInterface>[];
749
800
  declare const NODE_OPTIONS_LABEL_CONTROLS: GraphSettingsInputInterface<keyof NodeOptionsLabelInterface>[];
750
801
 
751
- export { COMMON_SETTINGS, FORCE_CONTROLS, FORCE_SETTINGS, GRAPH_CACHE_TYPE, GRAPH_SETTINGS, GraphCanvas, HIGHLIGHT_BY_LINK_FOR_ARROW_CONTROLS, HIGHLIGHT_BY_LINK_FOR_LABEL_CONTROLS, HIGHLIGHT_BY_LINK_FOR_LINK_CONTROLS, HIGHLIGHT_BY_LINK_FOR_NODE_CONTROLS, HIGHLIGHT_BY_LINK_FOR_TEXT_CONTROLS, HIGHLIGHT_BY_NODE_FOR_ARROW_CONTROLS, HIGHLIGHT_BY_NODE_FOR_LABEL_CONTROLS, HIGHLIGHT_BY_NODE_FOR_LINK_CONTROLS, HIGHLIGHT_BY_NODE_FOR_NODE_CONTROLS, HIGHLIGHT_BY_NODE_FOR_TEXT_CONTROLS, HIGHLIGHT_COMMON_CONTROLS, HIGHLIGHT_SETTINGS, LINK_OPTIONS, LINK_OPTIONS_ARROW_CONTROLS, LINK_OPTIONS_LINK_CONTROLS, LINK_OPTIONS_PARTICLE_CONTROLS, LINK_SETTINGS, LINK_SETTINGS_CONTROLS, NODE_OPTIONS, NODE_OPTIONS_LABEL_CONTROLS, NODE_OPTIONS_NODE_CONTROLS, NODE_OPTIONS_TEXT_CONTROLS, NODE_SETTINGS, NODE_SETTINGS_CONTROLS, PERFOMANCE_NODE_OPTIONS, PERFORMANCE_FORCE_SETTINGS, PERFORMANCE_GRAPH_SETTINGS, PERFORMANCE_HIGHLIGHT_SETTINGS, PERFORMANCE_LINK_OPTIONS, PERFORMANCE_LINK_SETTINGS, PERFORMANCE_NODE_SETTINGS, animationByProgress, approximateQuadraticBezierLength, calculateLinkPositionByNode, colorGetter, colorToRgb, computeGraphBounds, dragPlaceCoefficientGetter, drawText, extractLinkPointIds, extractRgb, fadeRgb, forceSettingsGetter, getDrawLink, getDrawNode, getParticlePosition, graphSettingsGetter, highlightSettingsGetter, isEmptyObject, isNodeVisible, isOverlapsNode, linkByPointerGetter, linkFade, linkHighlight, linkIterationExtractor, linkOptionsGetter, linkSettingsGetter, listenersGetter, nodeByPointerGetter, nodeFade, nodeHighlight, nodeIdGetter, nodeIterationExtractor, nodeOptionsGetter, nodeRadiusGetter, nodeSettingsGetter, nodeSizeGetter, nodeTextSizeGetter, pointerGetter, rgbAnimationByProgress };
752
- export type { CachedNodeTextInterface, DragEventInterface, ForceSettingsInterface, GraphBounds, GraphCanvasCacheKeys, GraphCanvasInterface, GraphCanvasSimulation, GraphSettingsInputInterface, GraphSettingsInterface, HighlighCommonSettingsInterface, HighlightByLinkForArrowSettingsInterface, HighlightByLinkForLabelSettingsInterface, HighlightByLinkForLinkSettingsInterface, HighlightByLinkForNodeSettingsInterface, HighlightByLinkForTextSettingsInterface, HighlightByNodeForArrowSettingsInterface, HighlightByNodeForLabelSettingsInterface, HighlightByNodeForLinkSettingsInterface, HighlightByNodeForNodeSettingsInterface, HighlightByNodeForTextSettingsInterface, HighlightSettingsInterface, LinkByPointerGetterOptions, LinkInterface, LinkIterationPropsInterface, LinkIterationPropsNoThisInterface, LinkOptionsArrowInterface, LinkOptionsInterface, LinkOptionsLinkInterface, LinkOptionsParticleInterface, LinkParticle, LinkSettingsInterface, ListenersInterface, NodeByPointerGetterOptions, NodeInterface, NodeIterationPropsInterface, NodeIterationPropsNoThisInterface, NodeOptionsInterface, NodeOptionsLabelInterface, NodeOptionsNodeInterface, NodeOptionsTextInterface, NodeRadiusGetterOptions, NodeSettingsInterface, NodeShape, NodeSizeGetterOptions, PrecomputeForceSettingsInterface, RGB, TextStyleEnum, ZoomEventInterface };
802
+ export { COMMON_SETTINGS, FORCE_CONTROLS, FORCE_SETTINGS, GRAPH_CACHE_TYPE, GRAPH_SETTINGS, GraphCanvas, HIGHLIGHT_BY_LINK_FOR_ARROW_CONTROLS, HIGHLIGHT_BY_LINK_FOR_LABEL_CONTROLS, HIGHLIGHT_BY_LINK_FOR_LINK_CONTROLS, HIGHLIGHT_BY_LINK_FOR_NODE_CONTROLS, HIGHLIGHT_BY_LINK_FOR_TEXT_CONTROLS, HIGHLIGHT_BY_NODE_FOR_ARROW_CONTROLS, HIGHLIGHT_BY_NODE_FOR_LABEL_CONTROLS, HIGHLIGHT_BY_NODE_FOR_LINK_CONTROLS, HIGHLIGHT_BY_NODE_FOR_NODE_CONTROLS, HIGHLIGHT_BY_NODE_FOR_TEXT_CONTROLS, HIGHLIGHT_COMMON_CONTROLS, HIGHLIGHT_SETTINGS, LINK_OPTIONS, LINK_OPTIONS_ARROW_CONTROLS, LINK_OPTIONS_LINK_CONTROLS, LINK_OPTIONS_PARTICLE_CONTROLS, LINK_SETTINGS, LINK_SETTINGS_CONTROLS, NODE_OPTIONS, NODE_OPTIONS_LABEL_CONTROLS, NODE_OPTIONS_NODE_CONTROLS, NODE_OPTIONS_TEXT_CONTROLS, NODE_SETTINGS, NODE_SETTINGS_CONTROLS, PERFORMANCE_FORCE_SETTINGS, StaticGraphCanvas, animationByProgress, approximateQuadraticBezierLength, calculateLinkPositionByNode, colorGetter, colorToRgb, computeGraphBounds, dragPlaceCoefficientGetter, extractLinkPointIds, extractRgb, fadeRgb, forceSettingsGetter, getDrawLink, getDrawNode, getParticlePosition, graphSettingsGetter, highlightSettingsGetter, isEmptyObject, isNodeVisible, isOverlapsNode, linkByPointerGetter, linkFade, linkHighlight, linkIterationExtractor, linkOptionsGetter, linkSettingsGetter, listenersGetter, nodeByPointerGetter, nodeFade, nodeHighlight, nodeIdGetter, nodeIterationExtractor, nodeLabelGetter, nodeOptionsGetter, nodeRadiusGetter, nodeSettingsGetter, nodeSizeGetter, nodeTextGetter, nodeTextSizeGetter, pointerGetter, precomputeGraph, prepareGraph, rgbAnimationByProgress };
803
+ export type { Area, CachedNodeTextInterface, DeferredDraw, DragEventInterface, ForceSettingsInterface, GraphBounds, GraphCanvasCacheKeys, GraphCanvasInterface, GraphCanvasSimulation, GraphLinkSettingsInterface, GraphNodeSettingsInterface, GraphSettingsInputInterface, GraphSettingsInterface, HighlighCommonSettingsInterface, HighlightByLinkForArrowSettingsInterface, HighlightByLinkForLabelSettingsInterface, HighlightByLinkForLinkSettingsInterface, HighlightByLinkForNodeSettingsInterface, HighlightByLinkForTextSettingsInterface, HighlightByNodeForArrowSettingsInterface, HighlightByNodeForLabelSettingsInterface, HighlightByNodeForLinkSettingsInterface, HighlightByNodeForNodeSettingsInterface, HighlightByNodeForTextSettingsInterface, HighlightSettingsInterface, LinkArrowDrawBatch, LinkByPointerGetterOptions, LinkDrawBatch, LinkInterface, LinkIterationPropsInterface, LinkIterationPropsNoThisInterface, LinkOptionsArrowInterface, LinkOptionsInterface, LinkOptionsLinkInterface, LinkOptionsParticleInterface, LinkParticle, LinkParticleDrawBatch, LinkSettingsInterface, ListenersInterface, NodeByPointerGetterOptions, NodeDrawBatch, NodeInterface, NodeIterationPropsInterface, NodeIterationPropsNoThisInterface, NodeOptionsInterface, NodeOptionsLabelInterface, NodeOptionsNodeInterface, NodeOptionsTextInterface, NodeRadiusGetterOptions, NodeSettingsInterface, NodeShape, NodeSizeGetterOptions, NodeTextDrawBatch, PrecomputeForceSettingsInterface, RGB, TextStyleEnum, ZoomEventInterface };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krainovsd/graph",
3
- "version": "0.14.0-beta.9",
3
+ "version": "0.15.0-beta.1",
4
4
  "description": "Krainov graph",
5
5
  "type": "module",
6
6
  "author": "KrainovSD <denislosev48@gmail.com>",