@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 CHANGED
@@ -33,7 +33,7 @@ npm i @html-graph/html-graph
33
33
  ```
34
34
 
35
35
  ```typescript
36
- import { MarkNodePortRequest, HtmlGraphBuilder } from "@html-graph/html-graph";
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, Record<string, MarkNodePortRequest>] {
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
- return [node, { [frontPortId]: frontPort, [backPortId]: backPort }];
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?: string;
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?: string;
12
+ id?: unknown;
10
13
  element: HTMLElement;
11
14
  x: number;
12
15
  y: number;
13
- ports?: Record<string, MarkNodePortRequest>;
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: string): Canvas;
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 edge attached to port
93
+ * updates port and attached edges
86
94
  */
87
- updatePortEdges(portId: string): Canvas;
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: string): Canvas;
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: string): Canvas;
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 requires reinitialization in order to be used again
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
- moveNodeOnTop(nodeId: string): CanvasCore;
154
- removeNode(nodeId: string): CanvasCore;
157
+ updateNode(nodeId: unknown, request: UpdateNodeRequest): CanvasCore;
158
+ removeNode(nodeId: unknown): CanvasCore;
159
+ moveNodeOnTop(nodeId: unknown): CanvasCore;
155
160
  markPort(port: MarkPortRequest): CanvasCore;
156
- updatePortEdges(portId: string): CanvasCore;
161
+ updatePort(portId: string, request: UpdatePortRequest): CanvasCore;
157
162
  unmarkPort(portId: string): CanvasCore;
158
163
  addEdge(edge: AddEdgeRequest): CanvasCore;
159
- removeEdge(edgeId: string): CanvasCore;
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?: string;
405
+ readonly id?: unknown;
343
406
  readonly element: HTMLElement;
344
- readonly nodeId: string;
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: string;
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
- readonly centerFn: CenterFn;
378
- readonly direction: number;
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
- removeNode(nodeId: string): UserDraggableNodesCanvas;
556
+ updateNode(nodeId: unknown, request: UpdateNodeRequest): UserDraggableNodesCanvas;
557
+ removeNode(nodeId: unknown): UserDraggableNodesCanvas;
481
558
  markPort(port: MarkPortRequest): UserDraggableNodesCanvas;
482
- updatePortEdges(portId: string): UserDraggableNodesCanvas;
559
+ updatePort(portId: string, request?: UpdatePortRequest): UserDraggableNodesCanvas;
483
560
  unmarkPort(portId: string): UserDraggableNodesCanvas;
484
561
  addEdge(edge: AddEdgeRequest): UserDraggableNodesCanvas;
485
- removeEdge(edgeId: string): UserDraggableNodesCanvas;
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
- removeNode(nodeId: string): UserTransformableCanvas;
598
+ updateNode(nodeId: unknown, request: UpdateNodeRequest): UserTransformableCanvas;
599
+ removeNode(nodeId: unknown): UserTransformableCanvas;
523
600
  markPort(port: MarkPortRequest): UserTransformableCanvas;
524
- updatePortEdges(portId: string): UserTransformableCanvas;
601
+ updatePort(portId: string, request: UpdatePortRequest): UserTransformableCanvas;
525
602
  unmarkPort(portId: string): UserTransformableCanvas;
526
603
  addEdge(edge: AddEdgeRequest): UserTransformableCanvas;
527
- removeEdge(edgeId: string): UserTransformableCanvas;
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];