force-graph 1.42.3

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 (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +228 -0
  3. package/dist/force-graph.common.js +1754 -0
  4. package/dist/force-graph.d.ts +195 -0
  5. package/dist/force-graph.js +12168 -0
  6. package/dist/force-graph.js.map +1 -0
  7. package/dist/force-graph.min.js +5 -0
  8. package/dist/force-graph.module.js +1743 -0
  9. package/example/auto-colored/index.html +34 -0
  10. package/example/basic/index.html +29 -0
  11. package/example/build-a-graph/index.html +108 -0
  12. package/example/click-to-focus/index.html +28 -0
  13. package/example/collision-detection/index.html +50 -0
  14. package/example/curved-links/index.html +37 -0
  15. package/example/curved-links-computed-curvature/index.html +76 -0
  16. package/example/custom-node-shape/index.html +44 -0
  17. package/example/dag-yarn/index.html +96 -0
  18. package/example/dagre/index.html +119 -0
  19. package/example/dash-odd-links/index.html +47 -0
  20. package/example/datasets/blocks.json +1 -0
  21. package/example/datasets/d3-dependencies.csv +464 -0
  22. package/example/datasets/miserables.json +337 -0
  23. package/example/datasets/mplate.mtx +74090 -0
  24. package/example/directional-links-arrows/index.html +29 -0
  25. package/example/directional-links-particles/index.html +22 -0
  26. package/example/dynamic/index.html +42 -0
  27. package/example/emit-particles/index.html +50 -0
  28. package/example/expandable-nodes/index.html +66 -0
  29. package/example/expandable-tree/index.html +85 -0
  30. package/example/fit-to-canvas/index.html +34 -0
  31. package/example/fix-dragged-nodes/index.html +24 -0
  32. package/example/highlight/index.html +84 -0
  33. package/example/huge-1M/index.html +37 -0
  34. package/example/img-nodes/imgs/cat.jpg +0 -0
  35. package/example/img-nodes/imgs/dog.jpg +0 -0
  36. package/example/img-nodes/imgs/eagle.jpg +0 -0
  37. package/example/img-nodes/imgs/elephant.jpg +0 -0
  38. package/example/img-nodes/imgs/grasshopper.jpg +0 -0
  39. package/example/img-nodes/imgs/octopus.jpg +0 -0
  40. package/example/img-nodes/imgs/owl.jpg +0 -0
  41. package/example/img-nodes/imgs/panda.jpg +0 -0
  42. package/example/img-nodes/imgs/squirrel.jpg +0 -0
  43. package/example/img-nodes/imgs/tiger.jpg +0 -0
  44. package/example/img-nodes/imgs/whale.jpg +0 -0
  45. package/example/img-nodes/index.html +43 -0
  46. package/example/large-graph/index.html +41 -0
  47. package/example/load-json/index.html +24 -0
  48. package/example/medium-graph/index.html +26 -0
  49. package/example/medium-graph/preview.png +0 -0
  50. package/example/move-viewport/index.html +42 -0
  51. package/example/multi-selection/index.html +57 -0
  52. package/example/responsive/index.html +37 -0
  53. package/example/text-links/index.html +69 -0
  54. package/example/text-nodes/index.html +42 -0
  55. package/example/tree/index.html +71 -0
  56. package/package.json +72 -0
  57. package/src/canvas-force-graph.js +544 -0
  58. package/src/color-utils.js +17 -0
  59. package/src/dagDepths.js +51 -0
  60. package/src/force-graph.css +35 -0
  61. package/src/force-graph.js +644 -0
  62. package/src/index.d.ts +195 -0
  63. package/src/index.js +3 -0
  64. package/src/kapsule-link.js +34 -0
@@ -0,0 +1,195 @@
1
+ interface GraphData {
2
+ nodes: NodeObject[];
3
+ links: LinkObject[];
4
+ }
5
+
6
+ type NodeObject = object & {
7
+ id?: string | number;
8
+ x?: number;
9
+ y?: number;
10
+ vx?: number;
11
+ vy?: number;
12
+ fx?: number;
13
+ fy?: number;
14
+ };
15
+
16
+ type LinkObject = object & {
17
+ source?: string | number | NodeObject;
18
+ target?: string | number | NodeObject;
19
+ };
20
+
21
+ type Accessor<In, Out> = Out | string | ((obj: In) => Out);
22
+ type NodeAccessor<T> = Accessor<NodeObject, T>;
23
+ type LinkAccessor<T> = Accessor<LinkObject, T>;
24
+
25
+ type CanvasCustomRenderMode = 'replace' | 'before' | 'after';
26
+ type CanvasCustomRenderFn<T> = (obj: T, canvasContext: CanvasRenderingContext2D, globalScale: number) => void;
27
+ type CanvasPointerAreaPaintFn<T> = (obj: T, paintColor: string, canvasContext: CanvasRenderingContext2D, globalScale: number) => void;
28
+
29
+ type DagMode = 'td' | 'bu' | 'lr' | 'rl' | 'radialout' | 'radialin';
30
+
31
+ interface ForceFn {
32
+ (alpha: number): void;
33
+ initialize?: (nodes: NodeObject[]) => void;
34
+ [key: string]: any;
35
+ }
36
+
37
+ interface ForceGraphGenericInstance<ChainableInstance> {
38
+ (element: HTMLElement): ChainableInstance;
39
+ resetProps(): ChainableInstance;
40
+ _destructor(): void;
41
+
42
+ // Data input
43
+ graphData(): GraphData;
44
+ graphData(data: GraphData): ChainableInstance;
45
+ nodeId(): string;
46
+ nodeId(id: string): ChainableInstance;
47
+ linkSource(): string;
48
+ linkSource(source: string): ChainableInstance;
49
+ linkTarget(): string;
50
+ linkTarget(target: string): ChainableInstance;
51
+
52
+ // Container layout
53
+ width(): number;
54
+ width(width: number): ChainableInstance;
55
+ height(): number;
56
+ height(height: number): ChainableInstance;
57
+ backgroundColor(): string;
58
+ backgroundColor(color?: string): ChainableInstance;
59
+
60
+ // Node styling
61
+ nodeRelSize(): number;
62
+ nodeRelSize(size: number): ChainableInstance;
63
+ nodeVal(): NodeAccessor<number>;
64
+ nodeVal(valAccessor: NodeAccessor<number>): ChainableInstance;
65
+ nodeLabel(): NodeAccessor<string>;
66
+ nodeLabel(labelAccessor: NodeAccessor<string>): ChainableInstance;
67
+ nodeVisibility(): NodeAccessor<boolean>;
68
+ nodeVisibility(visibilityAccessor: NodeAccessor<boolean>): ChainableInstance;
69
+ nodeColor(): NodeAccessor<string>;
70
+ nodeColor(colorAccessor: NodeAccessor<string>): ChainableInstance;
71
+ nodeAutoColorBy(): NodeAccessor<string | null>;
72
+ nodeAutoColorBy(colorByAccessor: NodeAccessor<string | null>): ChainableInstance;
73
+ nodeCanvasObject(): CanvasCustomRenderFn<NodeObject>;
74
+ nodeCanvasObject(renderFn: CanvasCustomRenderFn<NodeObject>): ChainableInstance;
75
+ nodeCanvasObjectMode(): string | ((obj: NodeObject) => CanvasCustomRenderMode);
76
+ nodeCanvasObjectMode(modeAccessor: string | ((obj: NodeObject) => CanvasCustomRenderMode)): ChainableInstance;
77
+ nodePointerAreaPaint(): CanvasPointerAreaPaintFn<NodeObject>;
78
+ nodePointerAreaPaint(renderFn: CanvasPointerAreaPaintFn<NodeObject>): ChainableInstance;
79
+
80
+ // Link styling
81
+ linkLabel(): LinkAccessor<string>;
82
+ linkLabel(labelAccessor: LinkAccessor<string>): ChainableInstance;
83
+ linkVisibility(): LinkAccessor<boolean>;
84
+ linkVisibility(visibilityAccessor: LinkAccessor<boolean>): ChainableInstance;
85
+ linkColor(): LinkAccessor<string>;
86
+ linkColor(colorAccessor: LinkAccessor<string>): ChainableInstance;
87
+ linkAutoColorBy(): LinkAccessor<string | null>;
88
+ linkAutoColorBy(colorByAccessor: LinkAccessor<string | null>): ChainableInstance;
89
+ linkLineDash(): LinkAccessor<number[] | null>;
90
+ linkLineDash(linkLineDashAccessor: LinkAccessor<number[] | null>): ChainableInstance;
91
+ linkWidth(): LinkAccessor<number>;
92
+ linkWidth(widthAccessor: LinkAccessor<number>): ChainableInstance;
93
+ linkCurvature(): LinkAccessor<number>;
94
+ linkCurvature(curvatureAccessor: LinkAccessor<number>): ChainableInstance;
95
+ linkCanvasObject(): CanvasCustomRenderFn<LinkObject>;
96
+ linkCanvasObject(renderFn: CanvasCustomRenderFn<LinkObject>): ChainableInstance;
97
+ linkCanvasObjectMode(): string | ((obj: LinkObject) => CanvasCustomRenderMode);
98
+ linkCanvasObjectMode(modeAccessor: string | ((obj: LinkObject) => CanvasCustomRenderMode)): ChainableInstance;
99
+ linkDirectionalArrowLength(): LinkAccessor<number>;
100
+ linkDirectionalArrowLength(lengthAccessor: LinkAccessor<number>): ChainableInstance;
101
+ linkDirectionalArrowColor(): LinkAccessor<string>;
102
+ linkDirectionalArrowColor(colorAccessor: LinkAccessor<string>): ChainableInstance;
103
+ linkDirectionalArrowRelPos(): LinkAccessor<number>;
104
+ linkDirectionalArrowRelPos(fractionAccessor: LinkAccessor<number>): ChainableInstance;
105
+ linkDirectionalParticles(): LinkAccessor<number>;
106
+ linkDirectionalParticles(numParticlesAccessor: LinkAccessor<number>): ChainableInstance;
107
+ linkDirectionalParticleSpeed(): LinkAccessor<number>;
108
+ linkDirectionalParticleSpeed(relDistancePerFrameAccessor: LinkAccessor<number>): ChainableInstance;
109
+ linkDirectionalParticleWidth(): LinkAccessor<number>;
110
+ linkDirectionalParticleWidth(widthAccessor: LinkAccessor<number>): ChainableInstance;
111
+ linkDirectionalParticleColor(): LinkAccessor<string>;
112
+ linkDirectionalParticleColor(colorAccessor: LinkAccessor<string>): ChainableInstance;
113
+ emitParticle(link: LinkObject): ChainableInstance;
114
+ linkPointerAreaPaint(): CanvasPointerAreaPaintFn<LinkObject>;
115
+ linkPointerAreaPaint(renderFn: CanvasPointerAreaPaintFn<LinkObject>): ChainableInstance;
116
+
117
+ // Render control
118
+ autoPauseRedraw(): boolean;
119
+ autoPauseRedraw(enable?: boolean): ChainableInstance;
120
+ pauseAnimation(): ChainableInstance;
121
+ resumeAnimation(): ChainableInstance;
122
+ centerAt(): {x: number, y: number};
123
+ centerAt(x?: number, y?: number, durationMs?: number): ChainableInstance;
124
+ zoom(): number;
125
+ zoom(scale: number, durationMs?: number): ChainableInstance;
126
+ zoomToFit(durationMs?: number, padding?: number, nodeFilter?: (node: NodeObject) => boolean): ChainableInstance;
127
+ minZoom(): number;
128
+ minZoom(scale: number): ChainableInstance;
129
+ maxZoom(): number;
130
+ maxZoom(scale: number): ChainableInstance;
131
+ onRenderFramePre(callback: (canvasContext: CanvasRenderingContext2D, globalScale: number) => void): ChainableInstance;
132
+ onRenderFramePost(callback: (canvasContext: CanvasRenderingContext2D, globalScale: number) => void): ChainableInstance;
133
+
134
+ // Force engine (d3-force) configuration
135
+ dagMode(): DagMode;
136
+ dagMode(mode: DagMode): ChainableInstance;
137
+ dagLevelDistance(): number | null;
138
+ dagLevelDistance(distance: number): ChainableInstance;
139
+ dagNodeFilter(): (node: NodeObject) => boolean;
140
+ dagNodeFilter(filterFn: (node: NodeObject) => boolean): ChainableInstance;
141
+ onDagError(): (loopNodeIds: (string | number)[]) => void;
142
+ onDagError(errorHandleFn: (loopNodeIds: (string | number)[]) => void): ChainableInstance;
143
+ d3AlphaMin(): number;
144
+ d3AlphaMin(alphaMin: number): ChainableInstance;
145
+ d3AlphaDecay(): number;
146
+ d3AlphaDecay(alphaDecay: number): ChainableInstance;
147
+ d3VelocityDecay(): number;
148
+ d3VelocityDecay(velocityDecay: number): ChainableInstance;
149
+ d3Force(forceName: 'link' | 'charge' | 'center' | string): ForceFn | undefined;
150
+ d3Force(forceName: 'link' | 'charge' | 'center' | string, forceFn: ForceFn): ChainableInstance;
151
+ d3ReheatSimulation(): ChainableInstance;
152
+ warmupTicks(): number;
153
+ warmupTicks(ticks: number): ChainableInstance;
154
+ cooldownTicks(): number;
155
+ cooldownTicks(ticks: number): ChainableInstance;
156
+ cooldownTime(): number;
157
+ cooldownTime(milliseconds: number): ChainableInstance;
158
+ onEngineTick(callback: () => void): ChainableInstance;
159
+ onEngineStop(callback: () => void): ChainableInstance;
160
+
161
+ // Interaction
162
+ onNodeClick(callback: (node: NodeObject, event: MouseEvent) => void): ChainableInstance;
163
+ onNodeRightClick(callback: (node: NodeObject, event: MouseEvent) => void): ChainableInstance;
164
+ onNodeHover(callback: (node: NodeObject | null, previousNode: NodeObject | null) => void): ChainableInstance;
165
+ onNodeDrag(callback: (node: NodeObject, translate: { x: number, y: number }) => void): ChainableInstance;
166
+ onNodeDragEnd(callback: (node: NodeObject, translate: { x: number, y: number }) => void): ChainableInstance;
167
+ onLinkClick(callback: (link: LinkObject, event: MouseEvent) => void): ChainableInstance;
168
+ onLinkRightClick(callback: (link: LinkObject, event: MouseEvent) => void): ChainableInstance;
169
+ onLinkHover(callback: (link: LinkObject | null, previousLink: LinkObject | null) => void): ChainableInstance;
170
+ linkHoverPrecision(): number;
171
+ linkHoverPrecision(precision: number): ChainableInstance;
172
+ onBackgroundClick(callback: (event: MouseEvent) => void): ChainableInstance;
173
+ onBackgroundRightClick(callback: (event: MouseEvent) => void): ChainableInstance;
174
+ onZoom(callback: (transform: {k: number, x: number, y: number}) => void): ChainableInstance;
175
+ onZoomEnd(callback: (transform: {k: number, x: number, y: number}) => void): ChainableInstance;
176
+ enableNodeDrag(): boolean;
177
+ enableNodeDrag(enable: boolean): ChainableInstance;
178
+ enableZoomInteraction(): boolean;
179
+ enableZoomInteraction(enable: boolean): ChainableInstance;
180
+ enablePanInteraction(): boolean;
181
+ enablePanInteraction(enable: boolean): ChainableInstance;
182
+ enablePointerInteraction(): boolean;
183
+ enablePointerInteraction(enable?: boolean): ChainableInstance;
184
+
185
+ // Utility
186
+ getGraphBbox(nodeFilter?: (node: NodeObject) => boolean): { x: [number, number], y: [number, number] };
187
+ screen2GraphCoords(x: number, y: number): { x: number, y: number };
188
+ graph2ScreenCoords(x: number, y: number): { x: number, y: number };
189
+ }
190
+
191
+ type ForceGraphInstance = ForceGraphGenericInstance<ForceGraphInstance>;
192
+
193
+ declare function ForceGraph(): ForceGraphInstance;
194
+
195
+ export { ForceGraphGenericInstance, ForceGraphInstance, GraphData, LinkObject, NodeObject, ForceGraph as default };