@yurialvesbordin/graphium 0.0.0-stage → 2.0.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.
- package/LICENSE +21 -0
- package/README.md +112 -2
- package/dist/Graphium.d.ts +156 -0
- package/dist/Graphium.d.ts.map +1 -0
- package/dist/Graphium.js +413 -0
- package/dist/Graphium.js.map +1 -0
- package/dist/core/FocusController.d.ts +16 -0
- package/dist/core/FocusController.d.ts.map +1 -0
- package/dist/core/FocusController.js +53 -0
- package/dist/core/FocusController.js.map +1 -0
- package/dist/core/GraphEditor.d.ts +61 -0
- package/dist/core/GraphEditor.d.ts.map +1 -0
- package/dist/core/GraphEditor.js +165 -0
- package/dist/core/GraphEditor.js.map +1 -0
- package/dist/core/GraphModel.d.ts +166 -0
- package/dist/core/GraphModel.d.ts.map +1 -0
- package/dist/core/GraphModel.js +730 -0
- package/dist/core/GraphModel.js.map +1 -0
- package/dist/core/SelectionController.d.ts +26 -0
- package/dist/core/SelectionController.d.ts.map +1 -0
- package/dist/core/SelectionController.js +78 -0
- package/dist/core/SelectionController.js.map +1 -0
- package/dist/core/colors.d.ts +27 -0
- package/dist/core/colors.d.ts.map +1 -0
- package/dist/core/colors.js +141 -0
- package/dist/core/colors.js.map +1 -0
- package/dist/core/events.d.ts +21 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +64 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/handles.d.ts +60 -0
- package/dist/core/handles.d.ts.map +1 -0
- package/dist/core/handles.js +116 -0
- package/dist/core/handles.js.map +1 -0
- package/dist/core/theme.d.ts +9 -0
- package/dist/core/theme.d.ts.map +1 -0
- package/dist/core/theme.js +167 -0
- package/dist/core/theme.js.map +1 -0
- package/dist/core/themes.d.ts +9 -0
- package/dist/core/themes.d.ts.map +1 -0
- package/dist/core/themes.js +103 -0
- package/dist/core/themes.js.map +1 -0
- package/dist/core/types.d.ts +287 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +7 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction/InteractionBinder.d.ts +43 -0
- package/dist/interaction/InteractionBinder.d.ts.map +1 -0
- package/dist/interaction/InteractionBinder.js +121 -0
- package/dist/interaction/InteractionBinder.js.map +1 -0
- package/dist/interaction/PointerController.d.ts +83 -0
- package/dist/interaction/PointerController.d.ts.map +1 -0
- package/dist/interaction/PointerController.js +294 -0
- package/dist/interaction/PointerController.js.map +1 -0
- package/dist/physics/PhysicsEngine.d.ts +82 -0
- package/dist/physics/PhysicsEngine.d.ts.map +1 -0
- package/dist/physics/PhysicsEngine.js +469 -0
- package/dist/physics/PhysicsEngine.js.map +1 -0
- package/dist/physics/SpatialHash.d.ts +36 -0
- package/dist/physics/SpatialHash.d.ts.map +1 -0
- package/dist/physics/SpatialHash.js +126 -0
- package/dist/physics/SpatialHash.js.map +1 -0
- package/dist/physics/presets.d.ts +14 -0
- package/dist/physics/presets.d.ts.map +1 -0
- package/dist/physics/presets.js +108 -0
- package/dist/physics/presets.js.map +1 -0
- package/dist/render/Camera.d.ts +55 -0
- package/dist/render/Camera.d.ts.map +1 -0
- package/dist/render/Camera.js +94 -0
- package/dist/render/Camera.js.map +1 -0
- package/dist/render/LabelLayer.d.ts +32 -0
- package/dist/render/LabelLayer.d.ts.map +1 -0
- package/dist/render/LabelLayer.js +142 -0
- package/dist/render/LabelLayer.js.map +1 -0
- package/dist/render/RenderLoop.d.ts +67 -0
- package/dist/render/RenderLoop.d.ts.map +1 -0
- package/dist/render/RenderLoop.js +126 -0
- package/dist/render/RenderLoop.js.map +1 -0
- package/dist/render/Renderer.d.ts +73 -0
- package/dist/render/Renderer.d.ts.map +1 -0
- package/dist/render/Renderer.js +512 -0
- package/dist/render/Renderer.js.map +1 -0
- package/dist/render/TextureAtlas.d.ts +51 -0
- package/dist/render/TextureAtlas.d.ts.map +1 -0
- package/dist/render/TextureAtlas.js +160 -0
- package/dist/render/TextureAtlas.js.map +1 -0
- package/dist/render/ViewportController.d.ts +34 -0
- package/dist/render/ViewportController.d.ts.map +1 -0
- package/dist/render/ViewportController.js +57 -0
- package/dist/render/ViewportController.js.map +1 -0
- package/dist/render/geometry.d.ts +19 -0
- package/dist/render/geometry.d.ts.map +1 -0
- package/dist/render/geometry.js +71 -0
- package/dist/render/geometry.js.map +1 -0
- package/dist/render/shaders.d.ts +13 -0
- package/dist/render/shaders.d.ts.map +1 -0
- package/dist/render/shaders.js +183 -0
- package/dist/render/shaders.js.map +1 -0
- package/package.json +73 -4
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines every public contract used by the Graphium public API, the physics
|
|
3
|
+
* engine and the renderer. Keeping all option shapes in one module makes the
|
|
4
|
+
* library surface searchable and refactors predictable.
|
|
5
|
+
*/
|
|
6
|
+
export type NodeId = string | number;
|
|
7
|
+
export type LinkId = string | number;
|
|
8
|
+
export type NodeStateName = 'normal' | 'hover' | 'selected' | 'dragging' | 'fixed' | 'disabled';
|
|
9
|
+
export type LinkStyleName = 'solid' | 'dashed';
|
|
10
|
+
export type ColorInput = string | number | [number, number, number] | [number, number, number, number];
|
|
11
|
+
export interface NodeOptions {
|
|
12
|
+
id?: NodeId;
|
|
13
|
+
x?: number;
|
|
14
|
+
y?: number;
|
|
15
|
+
label?: string | null;
|
|
16
|
+
color?: ColorInput;
|
|
17
|
+
borderColor?: ColorInput;
|
|
18
|
+
borderWidth?: number;
|
|
19
|
+
borderOpacity?: number;
|
|
20
|
+
opacity?: number;
|
|
21
|
+
radius?: number;
|
|
22
|
+
visualRadius?: number;
|
|
23
|
+
mass?: number;
|
|
24
|
+
image?: string | null;
|
|
25
|
+
imageMode?: 'cover' | 'contain';
|
|
26
|
+
fixed?: boolean;
|
|
27
|
+
state?: NodeStateName;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
hidden?: boolean;
|
|
30
|
+
data?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
export interface LinkOptions {
|
|
33
|
+
id?: LinkId;
|
|
34
|
+
source?: NodeId;
|
|
35
|
+
target?: NodeId;
|
|
36
|
+
color?: ColorInput;
|
|
37
|
+
width?: number;
|
|
38
|
+
opacity?: number;
|
|
39
|
+
curvature?: number;
|
|
40
|
+
style?: LinkStyleName;
|
|
41
|
+
dashPattern?: [number, number];
|
|
42
|
+
dashOffset?: number;
|
|
43
|
+
dashWorldScale?: boolean;
|
|
44
|
+
arrow?: boolean;
|
|
45
|
+
arrowSize?: number;
|
|
46
|
+
arrowWidth?: number;
|
|
47
|
+
strength?: number;
|
|
48
|
+
restLength?: number;
|
|
49
|
+
hidden?: boolean;
|
|
50
|
+
data?: Record<string, unknown>;
|
|
51
|
+
}
|
|
52
|
+
export interface PhysicsOptions {
|
|
53
|
+
preset?: PhysicsPresetName;
|
|
54
|
+
repulsion?: number;
|
|
55
|
+
repulsionRadius?: number;
|
|
56
|
+
degreeFactor?: number;
|
|
57
|
+
degreeExponent?: number;
|
|
58
|
+
springStrength?: number;
|
|
59
|
+
gravity?: number;
|
|
60
|
+
damping?: number;
|
|
61
|
+
maxSpeed?: number;
|
|
62
|
+
collisionStrength?: number;
|
|
63
|
+
positionIterations?: number;
|
|
64
|
+
temperature?: number;
|
|
65
|
+
cooling?: number;
|
|
66
|
+
minTemperature?: number;
|
|
67
|
+
sleepEnergy?: number;
|
|
68
|
+
sleepFrames?: number;
|
|
69
|
+
maxNeighbors?: number;
|
|
70
|
+
edgeSeparation?: number;
|
|
71
|
+
dragSmooth?: number;
|
|
72
|
+
throwFactor?: number;
|
|
73
|
+
}
|
|
74
|
+
export type PhysicsPresetName = 'silk' | 'bouncy' | 'crystal' | 'liquid';
|
|
75
|
+
export interface ThemeOptions {
|
|
76
|
+
background?: string;
|
|
77
|
+
node?: {
|
|
78
|
+
radius?: number;
|
|
79
|
+
color?: ColorInput;
|
|
80
|
+
colorPalette?: ColorInput[];
|
|
81
|
+
borderColor?: ColorInput;
|
|
82
|
+
borderWidth?: number;
|
|
83
|
+
borderOpacity?: number;
|
|
84
|
+
opacity?: number;
|
|
85
|
+
};
|
|
86
|
+
edge?: {
|
|
87
|
+
color?: ColorInput;
|
|
88
|
+
width?: number;
|
|
89
|
+
opacity?: number;
|
|
90
|
+
curvature?: number;
|
|
91
|
+
style?: LinkStyleName;
|
|
92
|
+
arrowEnabled?: boolean;
|
|
93
|
+
arrowSize?: number;
|
|
94
|
+
arrowWidth?: number;
|
|
95
|
+
};
|
|
96
|
+
hoverRing?: {
|
|
97
|
+
color?: ColorInput;
|
|
98
|
+
width?: number;
|
|
99
|
+
};
|
|
100
|
+
selectedRing?: {
|
|
101
|
+
color?: ColorInput;
|
|
102
|
+
width?: number;
|
|
103
|
+
};
|
|
104
|
+
fixedRing?: {
|
|
105
|
+
color?: ColorInput;
|
|
106
|
+
width?: number;
|
|
107
|
+
};
|
|
108
|
+
disabledOpacity?: number;
|
|
109
|
+
selectedEdge?: {
|
|
110
|
+
color?: ColorInput;
|
|
111
|
+
widthMultiplier?: number;
|
|
112
|
+
opacity?: number;
|
|
113
|
+
};
|
|
114
|
+
label?: {
|
|
115
|
+
enabled?: boolean;
|
|
116
|
+
position?: 'above' | 'below' | 'center';
|
|
117
|
+
offset?: number;
|
|
118
|
+
size?: number;
|
|
119
|
+
color?: string;
|
|
120
|
+
font?: string;
|
|
121
|
+
weight?: number | string;
|
|
122
|
+
background?: string | null;
|
|
123
|
+
padding?: [number, number];
|
|
124
|
+
radius?: number;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export interface InteractionOptions {
|
|
128
|
+
enabled?: boolean;
|
|
129
|
+
wheelZoomSpeed?: number;
|
|
130
|
+
dragThreshold?: number;
|
|
131
|
+
longPressMs?: number;
|
|
132
|
+
linkHitRadius?: number;
|
|
133
|
+
hoverEnabled?: boolean;
|
|
134
|
+
panEnabled?: boolean;
|
|
135
|
+
zoomEnabled?: boolean;
|
|
136
|
+
dragEnabled?: boolean;
|
|
137
|
+
}
|
|
138
|
+
export interface RendererOptions {
|
|
139
|
+
clearColor?: string;
|
|
140
|
+
antialias?: boolean;
|
|
141
|
+
maxPixelRatio?: number;
|
|
142
|
+
fadeZoom?: number;
|
|
143
|
+
}
|
|
144
|
+
export interface GraphiumOptions {
|
|
145
|
+
canvas?: HTMLCanvasElement | null;
|
|
146
|
+
container?: HTMLElement | null;
|
|
147
|
+
autoStart?: boolean;
|
|
148
|
+
autoResize?: boolean;
|
|
149
|
+
autoFit?: boolean;
|
|
150
|
+
nodeCapacity?: number;
|
|
151
|
+
linkCapacity?: number;
|
|
152
|
+
physics?: PhysicsOptions;
|
|
153
|
+
theme?: ThemeOptions;
|
|
154
|
+
interaction?: boolean | InteractionOptions;
|
|
155
|
+
renderer?: RendererOptions;
|
|
156
|
+
camera?: {
|
|
157
|
+
minZoom?: number;
|
|
158
|
+
maxZoom?: number;
|
|
159
|
+
x?: number;
|
|
160
|
+
y?: number;
|
|
161
|
+
zoom?: number;
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export interface GraphData {
|
|
165
|
+
nodes?: Array<NodeOptions & {
|
|
166
|
+
id: NodeId;
|
|
167
|
+
}>;
|
|
168
|
+
links?: Array<LinkOptions & {
|
|
169
|
+
source: NodeId;
|
|
170
|
+
target: NodeId;
|
|
171
|
+
}>;
|
|
172
|
+
}
|
|
173
|
+
export interface NodeSnapshot {
|
|
174
|
+
id: NodeId;
|
|
175
|
+
index: number;
|
|
176
|
+
x: number;
|
|
177
|
+
y: number;
|
|
178
|
+
vx: number;
|
|
179
|
+
vy: number;
|
|
180
|
+
radius: number;
|
|
181
|
+
visualRadius: number;
|
|
182
|
+
mass: number;
|
|
183
|
+
degree: number;
|
|
184
|
+
color: number;
|
|
185
|
+
borderColor: number;
|
|
186
|
+
borderWidth: number;
|
|
187
|
+
opacity: number;
|
|
188
|
+
image: string | null;
|
|
189
|
+
label: string | null;
|
|
190
|
+
state: NodeStateName;
|
|
191
|
+
fixed: boolean;
|
|
192
|
+
hidden: boolean;
|
|
193
|
+
disabled: boolean;
|
|
194
|
+
data: Record<string, unknown>;
|
|
195
|
+
}
|
|
196
|
+
export interface LinkSnapshot {
|
|
197
|
+
id: LinkId;
|
|
198
|
+
index: number;
|
|
199
|
+
source: NodeId;
|
|
200
|
+
target: NodeId;
|
|
201
|
+
sourceIndex: number;
|
|
202
|
+
targetIndex: number;
|
|
203
|
+
color: number;
|
|
204
|
+
width: number;
|
|
205
|
+
opacity: number;
|
|
206
|
+
curvature: number;
|
|
207
|
+
style: LinkStyleName;
|
|
208
|
+
dashPattern: [number, number];
|
|
209
|
+
dashOffset: number;
|
|
210
|
+
arrow: boolean | undefined;
|
|
211
|
+
arrowSize: number;
|
|
212
|
+
arrowWidth: number;
|
|
213
|
+
strength: number;
|
|
214
|
+
restLength: number;
|
|
215
|
+
hidden: boolean;
|
|
216
|
+
data: Record<string, unknown>;
|
|
217
|
+
}
|
|
218
|
+
export interface PointerEventPayload {
|
|
219
|
+
type: string;
|
|
220
|
+
originalEvent: PointerEvent | WheelEvent | MouseEvent;
|
|
221
|
+
nodeIndex: number;
|
|
222
|
+
nodeId?: NodeId;
|
|
223
|
+
linkIndex: number;
|
|
224
|
+
linkId?: LinkId;
|
|
225
|
+
screenX: number;
|
|
226
|
+
screenY: number;
|
|
227
|
+
worldX: number;
|
|
228
|
+
worldY: number;
|
|
229
|
+
}
|
|
230
|
+
export interface SelectionEventPayload {
|
|
231
|
+
nodes: NodeId[];
|
|
232
|
+
links: LinkId[];
|
|
233
|
+
}
|
|
234
|
+
export interface PhysicsRuntime {
|
|
235
|
+
energy: number;
|
|
236
|
+
sleeping: boolean;
|
|
237
|
+
temperature: number;
|
|
238
|
+
iteration: number;
|
|
239
|
+
}
|
|
240
|
+
export interface StatsSnapshot {
|
|
241
|
+
nodeCount: number;
|
|
242
|
+
linkCount: number;
|
|
243
|
+
fps: number;
|
|
244
|
+
frameMs: number;
|
|
245
|
+
physicsMs: number;
|
|
246
|
+
renderMs: number;
|
|
247
|
+
sleeping: boolean;
|
|
248
|
+
}
|
|
249
|
+
export interface ThemeResolved {
|
|
250
|
+
background: string;
|
|
251
|
+
nodeRadius: number;
|
|
252
|
+
nodeColor: number;
|
|
253
|
+
nodeColorPalette: number[];
|
|
254
|
+
nodeBorderColor: number;
|
|
255
|
+
nodeBorderWidth: number;
|
|
256
|
+
nodeBorderOpacity: number;
|
|
257
|
+
nodeOpacity: number;
|
|
258
|
+
edgeColor: number;
|
|
259
|
+
edgeWidth: number;
|
|
260
|
+
edgeOpacity: number;
|
|
261
|
+
edgeCurvature: number;
|
|
262
|
+
edgeStyle: LinkStyleName;
|
|
263
|
+
edgeArrowEnabled: boolean;
|
|
264
|
+
edgeArrowSize: number;
|
|
265
|
+
edgeArrowWidth: number;
|
|
266
|
+
hoverRingColor: number;
|
|
267
|
+
hoverRingWidth: number;
|
|
268
|
+
selectedRingColor: number;
|
|
269
|
+
selectedRingWidth: number;
|
|
270
|
+
fixedRingColor: number;
|
|
271
|
+
fixedRingWidth: number;
|
|
272
|
+
disabledOpacity: number;
|
|
273
|
+
selectedEdgeColor: number;
|
|
274
|
+
selectedEdgeWidthMultiplier: number;
|
|
275
|
+
selectedEdgeOpacity: number;
|
|
276
|
+
labelEnabled: boolean;
|
|
277
|
+
labelPosition: 'above' | 'below' | 'center';
|
|
278
|
+
labelOffset: number;
|
|
279
|
+
labelSize: number;
|
|
280
|
+
labelColor: string;
|
|
281
|
+
labelFont: string;
|
|
282
|
+
labelWeight: number | string;
|
|
283
|
+
labelBackground: string | null;
|
|
284
|
+
labelPadding: [number, number];
|
|
285
|
+
labelRadius: number;
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines every public contract used by the Graphium public API, the physics
|
|
3
|
+
* engine and the renderer. Keeping all option shapes in one module makes the
|
|
4
|
+
* library surface searchable and refactors predictable.
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public entry point of the Graphium library. Everything a consumer needs is
|
|
3
|
+
* re-exported here while internal modules stay private.
|
|
4
|
+
*/
|
|
5
|
+
export { Graphium } from './Graphium.js';
|
|
6
|
+
export { GraphModel, NODE_FIXED, NODE_SELECTED, NODE_DRAGGED, NODE_HIDDEN, NODE_DISABLED, NODE_DIM, LINK_SELECTED, LINK_HIDDEN, LINK_DIM, STATE_NORMAL, STATE_HOVER, STATE_SELECTED, STATE_DRAGGING, STATE_FIXED, STATE_DISABLED } from './core/GraphModel.js';
|
|
7
|
+
export { NodeHandle, LinkHandle } from './core/handles.js';
|
|
8
|
+
export { Emitter } from './core/events.js';
|
|
9
|
+
export { packRGBA, unpackRGBA, deterministicColor } from './core/colors.js';
|
|
10
|
+
export { BUILT_IN_THEMES, themeNames } from './core/themes.js';
|
|
11
|
+
export { PhysicsEngine } from './physics/PhysicsEngine.js';
|
|
12
|
+
export { PRESETS, presetNames } from './physics/presets.js';
|
|
13
|
+
export { SpatialHash } from './physics/SpatialHash.js';
|
|
14
|
+
export { Camera } from './render/Camera.js';
|
|
15
|
+
export { Renderer } from './render/Renderer.js';
|
|
16
|
+
export { TextureAtlas } from './render/TextureAtlas.js';
|
|
17
|
+
export { LabelLayer } from './render/LabelLayer.js';
|
|
18
|
+
export { PointerController } from './interaction/PointerController.js';
|
|
19
|
+
export { controlPoint, bezierPoint, bezierLength, distanceToEdge, distanceToSegment } from './render/geometry.js';
|
|
20
|
+
export type { NodeId, LinkId, NodeStateName, LinkStyleName, ColorInput, NodeOptions, LinkOptions, PhysicsOptions, PhysicsPresetName, ThemeOptions, InteractionOptions, RendererOptions, GraphiumOptions, GraphData, NodeSnapshot, LinkSnapshot, PointerEventPayload, StatsSnapshot, ThemeResolved, } from './core/types.js';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC/P,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAClH,YAAY,EACV,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,GACd,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public entry point of the Graphium library. Everything a consumer needs is
|
|
3
|
+
* re-exported here while internal modules stay private.
|
|
4
|
+
*/
|
|
5
|
+
export { Graphium } from './Graphium.js';
|
|
6
|
+
export { GraphModel, NODE_FIXED, NODE_SELECTED, NODE_DRAGGED, NODE_HIDDEN, NODE_DISABLED, NODE_DIM, LINK_SELECTED, LINK_HIDDEN, LINK_DIM, STATE_NORMAL, STATE_HOVER, STATE_SELECTED, STATE_DRAGGING, STATE_FIXED, STATE_DISABLED } from './core/GraphModel.js';
|
|
7
|
+
export { NodeHandle, LinkHandle } from './core/handles.js';
|
|
8
|
+
export { Emitter } from './core/events.js';
|
|
9
|
+
export { packRGBA, unpackRGBA, deterministicColor } from './core/colors.js';
|
|
10
|
+
export { BUILT_IN_THEMES, themeNames } from './core/themes.js';
|
|
11
|
+
export { PhysicsEngine } from './physics/PhysicsEngine.js';
|
|
12
|
+
export { PRESETS, presetNames } from './physics/presets.js';
|
|
13
|
+
export { SpatialHash } from './physics/SpatialHash.js';
|
|
14
|
+
export { Camera } from './render/Camera.js';
|
|
15
|
+
export { Renderer } from './render/Renderer.js';
|
|
16
|
+
export { TextureAtlas } from './render/TextureAtlas.js';
|
|
17
|
+
export { LabelLayer } from './render/LabelLayer.js';
|
|
18
|
+
export { PointerController } from './interaction/PointerController.js';
|
|
19
|
+
export { controlPoint, bezierPoint, bezierLength, distanceToEdge, distanceToSegment } from './render/geometry.js';
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC/P,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connects user input to graph behavior: builds the pointer controller,
|
|
3
|
+
* routes pointer and physics events, maintains the hover state and exposes
|
|
4
|
+
* link hit testing.
|
|
5
|
+
*/
|
|
6
|
+
import type { Emitter } from '../core/events.js';
|
|
7
|
+
import { GraphModel } from '../core/GraphModel.js';
|
|
8
|
+
import type { SelectionController } from '../core/SelectionController.js';
|
|
9
|
+
import type { GraphiumOptions, InteractionOptions } from '../core/types.js';
|
|
10
|
+
import type { PhysicsEngine } from '../physics/PhysicsEngine.js';
|
|
11
|
+
import type { SpatialHash } from '../physics/SpatialHash.js';
|
|
12
|
+
import type { Camera } from '../render/Camera.js';
|
|
13
|
+
/** Collaborators and hooks the binder needs from the main facade. */
|
|
14
|
+
export interface InteractionDeps {
|
|
15
|
+
canvas: HTMLCanvasElement;
|
|
16
|
+
model: GraphModel;
|
|
17
|
+
physics: PhysicsEngine;
|
|
18
|
+
camera: Camera;
|
|
19
|
+
hash: SpatialHash;
|
|
20
|
+
events: Emitter;
|
|
21
|
+
interaction: GraphiumOptions['interaction'];
|
|
22
|
+
selection: SelectionController;
|
|
23
|
+
invalidate: () => void;
|
|
24
|
+
}
|
|
25
|
+
export declare class InteractionBinder {
|
|
26
|
+
private readonly deps;
|
|
27
|
+
private pointer;
|
|
28
|
+
private hoverIndex;
|
|
29
|
+
constructor(deps: InteractionDeps);
|
|
30
|
+
/** Updates interaction options on the live pointer controller. */
|
|
31
|
+
setInteraction(options: InteractionOptions): void;
|
|
32
|
+
/** Finds the link index closest to a world position within a radius. */
|
|
33
|
+
pickLinkAt(worldX: number, worldY: number, hitRadius?: number): number;
|
|
34
|
+
/** Releases the pointer controller. */
|
|
35
|
+
destroy(): void;
|
|
36
|
+
/** Builds the pointer controller when interaction is not disabled. */
|
|
37
|
+
private wirePointer;
|
|
38
|
+
/** Connects library internal reactions to emitter traffic. */
|
|
39
|
+
private wireEvents;
|
|
40
|
+
/** Updates the hovered node and keeps the previous one consistent. */
|
|
41
|
+
private setHover;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=InteractionBinder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractionBinder.d.ts","sourceRoot":"","sources":["../../src/interaction/InteractionBinder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAA0C,MAAM,uBAAuB,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC5C,SAAS,EAAE,mBAAmB,CAAC;IAC/B,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,qBAAa,iBAAiB;IAIhB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAM;gBAEK,IAAI,EAAE,eAAe;IAKlD,kEAAkE;IAClE,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAMjD,wEAAwE;IACxE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,MAAM;IAqBjE,uCAAuC;IACvC,OAAO,IAAI,IAAI;IAIf,sEAAsE;IACtE,OAAO,CAAC,WAAW;IAmBnB,8DAA8D;IAC9D,OAAO,CAAC,UAAU;IAoClB,sEAAsE;IACtE,OAAO,CAAC,QAAQ;CAcjB"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connects user input to graph behavior: builds the pointer controller,
|
|
3
|
+
* routes pointer and physics events, maintains the hover state and exposes
|
|
4
|
+
* link hit testing.
|
|
5
|
+
*/
|
|
6
|
+
import { LINK_HIDDEN, STATE_HOVER, STATE_NORMAL } from '../core/GraphModel.js';
|
|
7
|
+
import { PointerController } from './PointerController.js';
|
|
8
|
+
import { distanceToEdge } from '../render/geometry.js';
|
|
9
|
+
export class InteractionBinder {
|
|
10
|
+
constructor(deps) {
|
|
11
|
+
this.deps = deps;
|
|
12
|
+
this.pointer = null;
|
|
13
|
+
this.hoverIndex = -1;
|
|
14
|
+
this.wirePointer();
|
|
15
|
+
this.wireEvents();
|
|
16
|
+
}
|
|
17
|
+
/** Updates interaction options on the live pointer controller. */
|
|
18
|
+
setInteraction(options) {
|
|
19
|
+
if (this.pointer) {
|
|
20
|
+
Object.assign(this.pointer.options, options);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Finds the link index closest to a world position within a radius. */
|
|
24
|
+
pickLinkAt(worldX, worldY, hitRadius = 8) {
|
|
25
|
+
const model = this.deps.model;
|
|
26
|
+
const tolerance = hitRadius / Math.max(this.deps.camera.zoom, 0.0001);
|
|
27
|
+
let best = -1;
|
|
28
|
+
let bestDistance = Infinity;
|
|
29
|
+
for (let link = 0; link < model.linkCount; link++) {
|
|
30
|
+
if (model.linkFlags[link] & LINK_HIDDEN) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const source = model.source[link];
|
|
34
|
+
const target = model.target[link];
|
|
35
|
+
const distance = distanceToEdge(worldX, worldY, model.x[source], model.y[source], model.x[target], model.y[target], model.linkCurvature[link]);
|
|
36
|
+
const limit = tolerance + model.linkWidth[link] / Math.max(this.deps.camera.zoom, 0.0001);
|
|
37
|
+
if (distance <= limit && distance < bestDistance) {
|
|
38
|
+
best = link;
|
|
39
|
+
bestDistance = distance;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return best;
|
|
43
|
+
}
|
|
44
|
+
/** Releases the pointer controller. */
|
|
45
|
+
destroy() {
|
|
46
|
+
this.pointer?.destroy();
|
|
47
|
+
}
|
|
48
|
+
/** Builds the pointer controller when interaction is not disabled. */
|
|
49
|
+
wirePointer() {
|
|
50
|
+
const interaction = this.deps.interaction;
|
|
51
|
+
if (interaction === false) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const settings = interaction === true || interaction === undefined ? {} : interaction;
|
|
55
|
+
this.pointer = new PointerController(this.deps.canvas, this.deps.camera, this.deps.model, this.deps.physics, this.deps.hash, this.deps.events, {
|
|
56
|
+
wheelZoomSpeed: settings.wheelZoomSpeed,
|
|
57
|
+
dragThreshold: settings.dragThreshold,
|
|
58
|
+
longPressMs: settings.longPressMs,
|
|
59
|
+
linkHitRadius: settings.linkHitRadius,
|
|
60
|
+
hoverEnabled: settings.hoverEnabled,
|
|
61
|
+
panEnabled: settings.panEnabled,
|
|
62
|
+
zoomEnabled: settings.zoomEnabled,
|
|
63
|
+
dragEnabled: settings.dragEnabled,
|
|
64
|
+
pickLink: (worldX, worldY, radius) => this.pickLinkAt(worldX, worldY, radius),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** Connects library internal reactions to emitter traffic. */
|
|
68
|
+
wireEvents() {
|
|
69
|
+
const { physics, events, selection, invalidate } = this.deps;
|
|
70
|
+
physics.onSleep = energy => {
|
|
71
|
+
events.emit('sleep', { energy });
|
|
72
|
+
};
|
|
73
|
+
physics.onWake = () => {
|
|
74
|
+
events.emit('wake', {});
|
|
75
|
+
invalidate();
|
|
76
|
+
};
|
|
77
|
+
events.on('pan', () => invalidate());
|
|
78
|
+
events.on('zoom', () => invalidate());
|
|
79
|
+
events.on('pinch', () => invalidate());
|
|
80
|
+
events.on('hover', payload => {
|
|
81
|
+
const event = payload;
|
|
82
|
+
this.setHover(typeof event.nodeIndex === 'number' ? event.nodeIndex : -1);
|
|
83
|
+
invalidate();
|
|
84
|
+
});
|
|
85
|
+
events.on('click', payload => {
|
|
86
|
+
const event = payload;
|
|
87
|
+
if (event.linkIndex >= 0) {
|
|
88
|
+
selection.selectLink(event.linkIndex, true);
|
|
89
|
+
}
|
|
90
|
+
else if (event.nodeIndex >= 0) {
|
|
91
|
+
selection.selectNode(event.nodeIndex, true);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
selection.clear();
|
|
95
|
+
}
|
|
96
|
+
invalidate();
|
|
97
|
+
});
|
|
98
|
+
events.on('drag', () => {
|
|
99
|
+
physics.wake();
|
|
100
|
+
invalidate();
|
|
101
|
+
});
|
|
102
|
+
events.on('dragend', () => invalidate());
|
|
103
|
+
events.on('imageload', () => invalidate());
|
|
104
|
+
}
|
|
105
|
+
/** Updates the hovered node and keeps the previous one consistent. */
|
|
106
|
+
setHover(index) {
|
|
107
|
+
const previous = this.hoverIndex;
|
|
108
|
+
if (previous === index) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const state = this.deps.model.state;
|
|
112
|
+
if (previous >= 0 && state[previous] === STATE_HOVER) {
|
|
113
|
+
state[previous] = STATE_NORMAL;
|
|
114
|
+
}
|
|
115
|
+
this.hoverIndex = index;
|
|
116
|
+
if (index >= 0 && state[index] === STATE_NORMAL) {
|
|
117
|
+
state[index] = STATE_HOVER;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=InteractionBinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractionBinder.js","sourceRoot":"","sources":["../../src/interaction/InteractionBinder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Translates pointer and wheel activity into graph gestures. The controller
|
|
3
|
+
* handles node dragging through the physics engine so releases carry
|
|
4
|
+
* momentum, supports pinch zoom, hover picking, click detection and long
|
|
5
|
+
* presses, and emits normalized event payloads.
|
|
6
|
+
*/
|
|
7
|
+
import { GraphModel } from '../core/GraphModel.js';
|
|
8
|
+
import type { Emitter } from '../core/events.js';
|
|
9
|
+
import { Camera } from '../render/Camera.js';
|
|
10
|
+
import { PhysicsEngine } from '../physics/PhysicsEngine.js';
|
|
11
|
+
import { SpatialHash } from '../physics/SpatialHash.js';
|
|
12
|
+
export interface PointerOptions {
|
|
13
|
+
wheelZoomSpeed?: number;
|
|
14
|
+
dragThreshold?: number;
|
|
15
|
+
longPressMs?: number;
|
|
16
|
+
linkHitRadius?: number;
|
|
17
|
+
hoverEnabled?: boolean;
|
|
18
|
+
panEnabled?: boolean;
|
|
19
|
+
zoomEnabled?: boolean;
|
|
20
|
+
dragEnabled?: boolean;
|
|
21
|
+
pickLink?: (worldX: number, worldY: number, radius: number) => number;
|
|
22
|
+
}
|
|
23
|
+
export declare class PointerController {
|
|
24
|
+
options: Required<Omit<PointerOptions, 'pickLink'>> & Pick<PointerOptions, 'pickLink'>;
|
|
25
|
+
enabled: boolean;
|
|
26
|
+
private element;
|
|
27
|
+
private camera;
|
|
28
|
+
private model;
|
|
29
|
+
private physics;
|
|
30
|
+
private hash;
|
|
31
|
+
private emitter;
|
|
32
|
+
private pointers;
|
|
33
|
+
private dragNode;
|
|
34
|
+
private activeLink;
|
|
35
|
+
private isPanning;
|
|
36
|
+
private downX;
|
|
37
|
+
private downY;
|
|
38
|
+
private moved;
|
|
39
|
+
private longPressTimer;
|
|
40
|
+
private pickBuffer;
|
|
41
|
+
private world;
|
|
42
|
+
private lastClickTime;
|
|
43
|
+
private lastClickButton;
|
|
44
|
+
private boundDown;
|
|
45
|
+
private boundMove;
|
|
46
|
+
private boundUp;
|
|
47
|
+
private boundWheel;
|
|
48
|
+
private boundLeave;
|
|
49
|
+
private boundContext;
|
|
50
|
+
constructor(element: HTMLElement, camera: Camera, model: GraphModel, physics: PhysicsEngine, hash: SpatialHash, emitter: Emitter, options?: PointerOptions);
|
|
51
|
+
/** Converts client coordinates into camera space and world space. */
|
|
52
|
+
private updateWorld;
|
|
53
|
+
/** Finds the topmost node under a world position. */
|
|
54
|
+
private pickNode;
|
|
55
|
+
/** Resolves the link under a world position through the host callback. */
|
|
56
|
+
private pickLinkAt;
|
|
57
|
+
/** Emits a normalized payload to the shared event emitter. */
|
|
58
|
+
private emit;
|
|
59
|
+
/** Handles pointer press by picking nodes, links or starting a pan. */
|
|
60
|
+
private onPointerDown;
|
|
61
|
+
/** Handles pointer motion for dragging, panning, pinching and hovering. */
|
|
62
|
+
private onPointerMove;
|
|
63
|
+
private pinchDistance;
|
|
64
|
+
private pinchCenterX;
|
|
65
|
+
private pinchCenterY;
|
|
66
|
+
/** Clears drag flags and lets the physics engine keep the momentum. */
|
|
67
|
+
private releaseDrag;
|
|
68
|
+
/** Handles pointer release, click synthesis and double click detection. */
|
|
69
|
+
private onPointerUp;
|
|
70
|
+
/** Emits click or dblclick depending on timing of consecutive clicks. */
|
|
71
|
+
private emitClick;
|
|
72
|
+
/** Zooms the view around the wheel position. */
|
|
73
|
+
private onWheel;
|
|
74
|
+
/** Ends hover tracking when the pointer leaves the canvas. */
|
|
75
|
+
private onLeave;
|
|
76
|
+
/** Attaches all DOM listeners and activates gesture handling. */
|
|
77
|
+
enable(): this;
|
|
78
|
+
/** Detaches all DOM listeners and stops gesture handling. */
|
|
79
|
+
disable(): this;
|
|
80
|
+
/** Fully releases controller resources. */
|
|
81
|
+
destroy(): void;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=PointerController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PointerController.d.ts","sourceRoot":"","sources":["../../src/interaction/PointerController.ts"],"names":[],"mappings":"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"}
|