@html-graph/html-graph 0.0.51 → 0.0.52
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/README.md +8 -3
- package/dist/main.d.ts +147 -40
- package/dist/main.js +964 -722
- package/dist/main.umd.cjs +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ npm i @html-graph/html-graph
|
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
```typescript
|
|
36
|
-
import {
|
|
36
|
+
import { AddNodePorts, HtmlGraphBuilder } from "@html-graph/html-graph";
|
|
37
37
|
|
|
38
38
|
const canvas = new HtmlGraphBuilder()
|
|
39
39
|
.setOptions({
|
|
@@ -48,7 +48,7 @@ function createNode(
|
|
|
48
48
|
name: string,
|
|
49
49
|
frontPortId: string,
|
|
50
50
|
backPortId: string,
|
|
51
|
-
): [HTMLElement,
|
|
51
|
+
): [HTMLElement, AddNodePorts] {
|
|
52
52
|
const node = document.createElement("div");
|
|
53
53
|
node.classList.add("node");
|
|
54
54
|
|
|
@@ -64,7 +64,12 @@ function createNode(
|
|
|
64
64
|
backPort.classList.add("port");
|
|
65
65
|
node.appendChild(backPort);
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
const ports = new Map([
|
|
68
|
+
[frontPortId, frontPort],
|
|
69
|
+
[backPortId, backPort],
|
|
70
|
+
]);
|
|
71
|
+
|
|
72
|
+
return [node, ports];
|
|
68
73
|
}
|
|
69
74
|
|
|
70
75
|
const [node1, ports1] = createNode("Node 1", "port-1-1", "port-1-2");
|
package/dist/main.d.ts
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
export declare interface AddEdgeRequest {
|
|
2
|
-
id?:
|
|
2
|
+
id?: unknown;
|
|
3
3
|
from: string;
|
|
4
4
|
to: string;
|
|
5
5
|
options?: EdgeOptions;
|
|
6
|
+
priority?: number;
|
|
6
7
|
}
|
|
7
8
|
|
|
9
|
+
export declare type AddNodePorts = ReadonlyMap<unknown, MarkNodePortRequest>;
|
|
10
|
+
|
|
8
11
|
export declare interface AddNodeRequest {
|
|
9
|
-
id?:
|
|
12
|
+
id?: unknown;
|
|
10
13
|
element: HTMLElement;
|
|
11
14
|
x: number;
|
|
12
15
|
y: number;
|
|
13
|
-
ports?:
|
|
16
|
+
ports?: AddNodePorts;
|
|
14
17
|
centerFn?: CenterFn;
|
|
18
|
+
priority?: number;
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
export declare type BackgroundDrawingFn = (ctx: CanvasRenderingContext2D, transformer: PublicViewportTransformer) => void;
|
|
@@ -71,20 +75,24 @@ export declare interface Canvas {
|
|
|
71
75
|
* adds node to graph
|
|
72
76
|
*/
|
|
73
77
|
addNode(node: AddNodeRequest): Canvas;
|
|
78
|
+
/**
|
|
79
|
+
* updates node absolute coordinates
|
|
80
|
+
*/
|
|
81
|
+
updateNode(nodeId: unknown, request: UpdateNodeRequest): Canvas;
|
|
74
82
|
/**
|
|
75
83
|
* removes node from graph
|
|
76
84
|
* all the ports of node get unmarked
|
|
77
85
|
* all the edges adjacent to node get removed
|
|
78
86
|
*/
|
|
79
|
-
removeNode(nodeId:
|
|
87
|
+
removeNode(nodeId: unknown): Canvas;
|
|
80
88
|
/**
|
|
81
89
|
* marks element as port of node
|
|
82
90
|
*/
|
|
83
91
|
markPort(port: MarkPortRequest): Canvas;
|
|
84
92
|
/**
|
|
85
|
-
* updates
|
|
93
|
+
* updates port and attached edges
|
|
86
94
|
*/
|
|
87
|
-
|
|
95
|
+
updatePort(portId: string, request?: UpdatePortRequest): Canvas;
|
|
88
96
|
/**
|
|
89
97
|
* ummarks element as port of node
|
|
90
98
|
* all the edges adjacent to port get removed
|
|
@@ -94,10 +102,14 @@ export declare interface Canvas {
|
|
|
94
102
|
* adds edge to graph
|
|
95
103
|
*/
|
|
96
104
|
addEdge(edge: AddEdgeRequest): Canvas;
|
|
105
|
+
/**
|
|
106
|
+
* updates edge
|
|
107
|
+
*/
|
|
108
|
+
updateEdge(edgeId: unknown, request: UpdateEdgeRequest): Canvas;
|
|
97
109
|
/**
|
|
98
110
|
* removes edge from graph
|
|
99
111
|
*/
|
|
100
|
-
removeEdge(edgeId:
|
|
112
|
+
removeEdge(edgeId: unknown): Canvas;
|
|
101
113
|
/**
|
|
102
114
|
* applies transformation for viewport
|
|
103
115
|
*/
|
|
@@ -106,18 +118,10 @@ export declare interface Canvas {
|
|
|
106
118
|
* moves viewport to nodes
|
|
107
119
|
*/
|
|
108
120
|
moveToNodes(nodeIds: readonly string[]): Canvas;
|
|
109
|
-
/**
|
|
110
|
-
* updates node absolute coordinates
|
|
111
|
-
*/
|
|
112
|
-
updateNodeCoordinates(nodeId: string, x: number, y: number): Canvas;
|
|
113
|
-
/**
|
|
114
|
-
* updates edge
|
|
115
|
-
*/
|
|
116
|
-
updateEdge(edgeId: string, request: UpdateEdgeRequest): Canvas;
|
|
117
121
|
/**
|
|
118
122
|
* moves specified node on top
|
|
119
123
|
*/
|
|
120
|
-
moveNodeOnTop(nodeId:
|
|
124
|
+
moveNodeOnTop(nodeId: unknown): Canvas;
|
|
121
125
|
/**
|
|
122
126
|
* attaches canvas to given element
|
|
123
127
|
*/
|
|
@@ -135,7 +139,7 @@ export declare interface Canvas {
|
|
|
135
139
|
/**
|
|
136
140
|
* destroys canvas
|
|
137
141
|
* canvas element gets rolled back to initial state
|
|
138
|
-
* canvas
|
|
142
|
+
* canvas can not be reused
|
|
139
143
|
*/
|
|
140
144
|
destroy(): void;
|
|
141
145
|
}
|
|
@@ -150,24 +154,24 @@ export declare class CanvasCore implements Canvas {
|
|
|
150
154
|
private readonly edgeControllerFactory;
|
|
151
155
|
constructor(apiOptions?: CoreOptions | undefined);
|
|
152
156
|
addNode(node: AddNodeRequest): CanvasCore;
|
|
153
|
-
|
|
154
|
-
removeNode(nodeId:
|
|
157
|
+
updateNode(nodeId: unknown, request: UpdateNodeRequest): CanvasCore;
|
|
158
|
+
removeNode(nodeId: unknown): CanvasCore;
|
|
159
|
+
moveNodeOnTop(nodeId: unknown): CanvasCore;
|
|
155
160
|
markPort(port: MarkPortRequest): CanvasCore;
|
|
156
|
-
|
|
161
|
+
updatePort(portId: string, request: UpdatePortRequest): CanvasCore;
|
|
157
162
|
unmarkPort(portId: string): CanvasCore;
|
|
158
163
|
addEdge(edge: AddEdgeRequest): CanvasCore;
|
|
159
|
-
|
|
164
|
+
updateEdge(edgeId: unknown, request: UpdateEdgeRequest): CanvasCore;
|
|
165
|
+
removeEdge(edgeId: unknown): CanvasCore;
|
|
160
166
|
patchViewportState(request: PatchViewportRequest): CanvasCore;
|
|
161
167
|
moveToNodes(nodeIds: readonly string[]): CanvasCore;
|
|
162
|
-
updateNodeCoordinates(nodeId: string, x: number, y: number): CanvasCore;
|
|
163
|
-
updateEdge(edgeId: string, request: UpdateEdgeRequest): CanvasCore;
|
|
164
168
|
clear(): CanvasCore;
|
|
165
169
|
attach(element: HTMLElement): CanvasCore;
|
|
166
170
|
detach(): CanvasCore;
|
|
167
171
|
destroy(): void;
|
|
168
172
|
}
|
|
169
173
|
|
|
170
|
-
declare type CenterFn = (width: number, height: number) => [number, number];
|
|
174
|
+
export declare type CenterFn = (width: number, height: number) => [number, number];
|
|
171
175
|
|
|
172
176
|
export declare interface CoreOptions {
|
|
173
177
|
/**
|
|
@@ -227,6 +231,20 @@ export declare const createBezierEdgeControllerFactory: (options: {
|
|
|
227
231
|
detourDirection: number;
|
|
228
232
|
}) => EdgeControllerFactory;
|
|
229
233
|
|
|
234
|
+
export declare const createHorizontalEdgeControllerFactory: (options: {
|
|
235
|
+
color: string;
|
|
236
|
+
width: number;
|
|
237
|
+
arrowLength: number;
|
|
238
|
+
arrowWidth: number;
|
|
239
|
+
arrowOffset: number;
|
|
240
|
+
hasSourceArrow: boolean;
|
|
241
|
+
hasTargetArrow: boolean;
|
|
242
|
+
cycleSquareSide: number;
|
|
243
|
+
roundness: number;
|
|
244
|
+
detourDistance: number;
|
|
245
|
+
detourDirection: number;
|
|
246
|
+
}) => EdgeControllerFactory;
|
|
247
|
+
|
|
230
248
|
export declare const createStraightEdgeControllerFactory: (options: {
|
|
231
249
|
color: string;
|
|
232
250
|
width: number;
|
|
@@ -241,6 +259,20 @@ export declare const createStraightEdgeControllerFactory: (options: {
|
|
|
241
259
|
detourDirection: number;
|
|
242
260
|
}) => EdgeControllerFactory;
|
|
243
261
|
|
|
262
|
+
export declare const createVerticalEdgeControllerFactory: (options: {
|
|
263
|
+
color: string;
|
|
264
|
+
width: number;
|
|
265
|
+
arrowLength: number;
|
|
266
|
+
arrowWidth: number;
|
|
267
|
+
arrowOffset: number;
|
|
268
|
+
hasSourceArrow: boolean;
|
|
269
|
+
hasTargetArrow: boolean;
|
|
270
|
+
cycleSquareSide: number;
|
|
271
|
+
roundness: number;
|
|
272
|
+
detourDistance: number;
|
|
273
|
+
detourDirection: number;
|
|
274
|
+
}) => EdgeControllerFactory;
|
|
275
|
+
|
|
244
276
|
declare interface CustomEdgeOptions {
|
|
245
277
|
readonly type: "custom";
|
|
246
278
|
readonly controllerFactory: EdgeControllerFactory;
|
|
@@ -310,7 +342,7 @@ export declare interface EdgeController {
|
|
|
310
342
|
|
|
311
343
|
declare type EdgeControllerFactory = (type: EdgeType) => EdgeController;
|
|
312
344
|
|
|
313
|
-
declare type EdgeOptions = BezierEdgeOptions | StraightEdgeOptions | CustomEdgeOptions;
|
|
345
|
+
declare type EdgeOptions = BezierEdgeOptions | StraightEdgeOptions | CustomEdgeOptions | HorizontalEdgeOptions | VerticalEdgeOptions;
|
|
314
346
|
|
|
315
347
|
export declare enum EdgeType {
|
|
316
348
|
Regular = "regular",
|
|
@@ -318,6 +350,37 @@ export declare enum EdgeType {
|
|
|
318
350
|
NodeCycle = "node-cycle"
|
|
319
351
|
}
|
|
320
352
|
|
|
353
|
+
export declare class HorizontalEdgeController implements EdgeController {
|
|
354
|
+
private readonly color;
|
|
355
|
+
private readonly width;
|
|
356
|
+
private readonly arrowLength;
|
|
357
|
+
private readonly arrowWidth;
|
|
358
|
+
private readonly arrowOffset;
|
|
359
|
+
private readonly roundness;
|
|
360
|
+
readonly svg: SVGSVGElement;
|
|
361
|
+
private readonly group;
|
|
362
|
+
private readonly line;
|
|
363
|
+
private readonly sourceArrow;
|
|
364
|
+
private readonly targetArrow;
|
|
365
|
+
constructor(color: string, width: number, arrowLength: number, arrowWidth: number, arrowOffset: number, hasSourceArrow: boolean, hasTargetArrow: boolean, roundness: number);
|
|
366
|
+
update(x: number, y: number, width: number, height: number, from: PortPayload, to: PortPayload): void;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
declare interface HorizontalEdgeOptions {
|
|
370
|
+
readonly type: "horizontal";
|
|
371
|
+
readonly color?: string;
|
|
372
|
+
readonly width?: number;
|
|
373
|
+
readonly arrowLength?: number;
|
|
374
|
+
readonly arrowWidth?: number;
|
|
375
|
+
readonly arrowOffset?: number;
|
|
376
|
+
readonly hasSourceArrow?: boolean;
|
|
377
|
+
readonly hasTargetArrow?: boolean;
|
|
378
|
+
readonly cycleSquareSide?: number;
|
|
379
|
+
readonly roundness?: number;
|
|
380
|
+
readonly detourDistance?: number;
|
|
381
|
+
readonly detourDirection?: number;
|
|
382
|
+
}
|
|
383
|
+
|
|
321
384
|
export declare class HtmlGraphBuilder {
|
|
322
385
|
private coreOptions;
|
|
323
386
|
private dragOptions;
|
|
@@ -339,15 +402,15 @@ export declare type MarkNodePortRequest = HTMLElement | {
|
|
|
339
402
|
};
|
|
340
403
|
|
|
341
404
|
export declare interface MarkPortRequest {
|
|
342
|
-
readonly id?:
|
|
405
|
+
readonly id?: unknown;
|
|
343
406
|
readonly element: HTMLElement;
|
|
344
|
-
readonly nodeId:
|
|
407
|
+
readonly nodeId: unknown;
|
|
345
408
|
readonly centerFn?: CenterFn;
|
|
346
409
|
readonly direction?: number;
|
|
347
410
|
}
|
|
348
411
|
|
|
349
412
|
export declare interface NodeDragPayload {
|
|
350
|
-
readonly nodeId:
|
|
413
|
+
readonly nodeId: unknown;
|
|
351
414
|
readonly element: HTMLElement;
|
|
352
415
|
readonly x: number;
|
|
353
416
|
readonly y: number;
|
|
@@ -374,8 +437,8 @@ export declare interface PatchViewportRequest {
|
|
|
374
437
|
|
|
375
438
|
export declare interface PortPayload {
|
|
376
439
|
readonly element: HTMLElement;
|
|
377
|
-
|
|
378
|
-
|
|
440
|
+
centerFn: CenterFn;
|
|
441
|
+
direction: number;
|
|
379
442
|
}
|
|
380
443
|
|
|
381
444
|
export declare class PublicViewportTransformer {
|
|
@@ -458,6 +521,19 @@ export declare interface TransformPayload {
|
|
|
458
521
|
|
|
459
522
|
export declare interface UpdateEdgeRequest {
|
|
460
523
|
readonly controller?: EdgeController;
|
|
524
|
+
readonly priority?: number;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
declare interface UpdateNodeRequest {
|
|
528
|
+
readonly x?: number;
|
|
529
|
+
readonly y?: number;
|
|
530
|
+
readonly priority?: number;
|
|
531
|
+
readonly centerFn?: CenterFn;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
declare interface UpdatePortRequest {
|
|
535
|
+
readonly direction?: number;
|
|
536
|
+
readonly centerFn?: CenterFn;
|
|
461
537
|
}
|
|
462
538
|
|
|
463
539
|
export declare class UserDraggableNodesCanvas implements Canvas {
|
|
@@ -477,16 +553,16 @@ export declare class UserDraggableNodesCanvas implements Canvas {
|
|
|
477
553
|
private previousTouchCoords;
|
|
478
554
|
constructor(canvas: Canvas, dragOptions?: DragOptions);
|
|
479
555
|
addNode(node: AddNodeRequest): UserDraggableNodesCanvas;
|
|
480
|
-
|
|
556
|
+
updateNode(nodeId: unknown, request: UpdateNodeRequest): UserDraggableNodesCanvas;
|
|
557
|
+
removeNode(nodeId: unknown): UserDraggableNodesCanvas;
|
|
481
558
|
markPort(port: MarkPortRequest): UserDraggableNodesCanvas;
|
|
482
|
-
|
|
559
|
+
updatePort(portId: string, request?: UpdatePortRequest): UserDraggableNodesCanvas;
|
|
483
560
|
unmarkPort(portId: string): UserDraggableNodesCanvas;
|
|
484
561
|
addEdge(edge: AddEdgeRequest): UserDraggableNodesCanvas;
|
|
485
|
-
|
|
562
|
+
updateEdge(edgeId: unknown, request: UpdateEdgeRequest): UserDraggableNodesCanvas;
|
|
563
|
+
removeEdge(edgeId: unknown): UserDraggableNodesCanvas;
|
|
486
564
|
patchViewportState(request: PatchViewportRequest): UserDraggableNodesCanvas;
|
|
487
565
|
moveToNodes(nodeIds: readonly string[]): UserDraggableNodesCanvas;
|
|
488
|
-
updateNodeCoordinates(nodeId: string, x: number, y: number): UserDraggableNodesCanvas;
|
|
489
|
-
updateEdge(edgeId: string, request: UpdateEdgeRequest): UserDraggableNodesCanvas;
|
|
490
566
|
moveNodeOnTop(nodeId: string): UserDraggableNodesCanvas;
|
|
491
567
|
clear(): UserDraggableNodesCanvas;
|
|
492
568
|
attach(element: HTMLElement): UserDraggableNodesCanvas;
|
|
@@ -519,16 +595,16 @@ export declare class UserTransformableCanvas implements Canvas {
|
|
|
519
595
|
private readonly onTouchEnd;
|
|
520
596
|
constructor(canvas: Canvas, options?: TransformOptions | undefined);
|
|
521
597
|
addNode(node: AddNodeRequest): UserTransformableCanvas;
|
|
522
|
-
|
|
598
|
+
updateNode(nodeId: unknown, request: UpdateNodeRequest): UserTransformableCanvas;
|
|
599
|
+
removeNode(nodeId: unknown): UserTransformableCanvas;
|
|
523
600
|
markPort(port: MarkPortRequest): UserTransformableCanvas;
|
|
524
|
-
|
|
601
|
+
updatePort(portId: string, request: UpdatePortRequest): UserTransformableCanvas;
|
|
525
602
|
unmarkPort(portId: string): UserTransformableCanvas;
|
|
526
603
|
addEdge(edge: AddEdgeRequest): UserTransformableCanvas;
|
|
527
|
-
|
|
604
|
+
updateEdge(edgeId: unknown, request: UpdateEdgeRequest): UserTransformableCanvas;
|
|
605
|
+
removeEdge(edgeId: unknown): UserTransformableCanvas;
|
|
528
606
|
patchViewportState(request: PatchViewportRequest): UserTransformableCanvas;
|
|
529
607
|
moveToNodes(nodeIds: readonly string[]): UserTransformableCanvas;
|
|
530
|
-
updateNodeCoordinates(nodeId: string, x: number, y: number): UserTransformableCanvas;
|
|
531
|
-
updateEdge(edgeId: string, request: UpdateEdgeRequest): UserTransformableCanvas;
|
|
532
608
|
moveNodeOnTop(nodeId: string): UserTransformableCanvas;
|
|
533
609
|
clear(): UserTransformableCanvas;
|
|
534
610
|
attach(element: HTMLElement): UserTransformableCanvas;
|
|
@@ -540,6 +616,37 @@ export declare class UserTransformableCanvas implements Canvas {
|
|
|
540
616
|
private scaleViewport;
|
|
541
617
|
}
|
|
542
618
|
|
|
619
|
+
export declare class VerticalEdgeController implements EdgeController {
|
|
620
|
+
private readonly color;
|
|
621
|
+
private readonly width;
|
|
622
|
+
private readonly arrowLength;
|
|
623
|
+
private readonly arrowWidth;
|
|
624
|
+
private readonly arrowOffset;
|
|
625
|
+
private readonly roundness;
|
|
626
|
+
readonly svg: SVGSVGElement;
|
|
627
|
+
private readonly group;
|
|
628
|
+
private readonly line;
|
|
629
|
+
private readonly sourceArrow;
|
|
630
|
+
private readonly targetArrow;
|
|
631
|
+
constructor(color: string, width: number, arrowLength: number, arrowWidth: number, arrowOffset: number, hasSourceArrow: boolean, hasTargetArrow: boolean, roundness: number);
|
|
632
|
+
update(x: number, y: number, width: number, height: number, from: PortPayload, to: PortPayload): void;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
declare interface VerticalEdgeOptions {
|
|
636
|
+
readonly type: "vertical";
|
|
637
|
+
readonly color?: string;
|
|
638
|
+
readonly width?: number;
|
|
639
|
+
readonly arrowLength?: number;
|
|
640
|
+
readonly arrowWidth?: number;
|
|
641
|
+
readonly arrowOffset?: number;
|
|
642
|
+
readonly hasSourceArrow?: boolean;
|
|
643
|
+
readonly hasTargetArrow?: boolean;
|
|
644
|
+
readonly cycleSquareSide?: number;
|
|
645
|
+
readonly roundness?: number;
|
|
646
|
+
readonly detourDistance?: number;
|
|
647
|
+
readonly detourDirection?: number;
|
|
648
|
+
}
|
|
649
|
+
|
|
543
650
|
declare class ViewportTransformer {
|
|
544
651
|
private state;
|
|
545
652
|
getViewCoords(xa: number, ya: number): [number, number];
|