@html-graph/html-graph 1.0.0 → 1.1.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/README.md CHANGED
@@ -20,7 +20,7 @@ npm i @html-graph/html-graph
20
20
  ```
21
21
 
22
22
  ```javascript
23
- import { HtmlGraphBuilder } from "@html-graph/html-graph";
23
+ import { CanvasBuilder } from "@html-graph/html-graph";
24
24
 
25
25
  function createNode({ name, x, y, frontPortId, backPortId }) {
26
26
  const node = document.createElement("div");
@@ -33,9 +33,9 @@ function createNode({ name, x, y, frontPortId, backPortId }) {
33
33
  backPort.classList.add("port");
34
34
  text.innerText = name;
35
35
 
36
- node.appendChild(backPort);
37
- node.appendChild(text);
38
36
  node.appendChild(frontPort);
37
+ node.appendChild(text);
38
+ node.appendChild(backPort);
39
39
 
40
40
  return {
41
41
  element: node,
@@ -48,7 +48,7 @@ function createNode({ name, x, y, frontPortId, backPortId }) {
48
48
  };
49
49
  }
50
50
 
51
- const canvas = new HtmlGraphBuilder()
51
+ const canvas = new CanvasBuilder()
52
52
  .setOptions({
53
53
  edges: {
54
54
  shape: {
@@ -57,7 +57,7 @@ const canvas = new HtmlGraphBuilder()
57
57
  },
58
58
  })
59
59
  .setUserDraggableNodes()
60
- .setUserTransformableCanvas()
60
+ .setUserTransformableViewport()
61
61
  .setResizeReactiveNodes()
62
62
  .build();
63
63
 
package/dist/main.d.ts CHANGED
@@ -90,6 +90,21 @@ declare interface BezierEdgeShape_2 {
90
90
  readonly detourDirection?: number | undefined;
91
91
  }
92
92
 
93
+ declare interface BezierEdgeShape_3 {
94
+ readonly type?: "bezier" | undefined;
95
+ readonly color?: string | undefined;
96
+ readonly width?: number | undefined;
97
+ readonly curvature?: number | undefined;
98
+ readonly arrowLength?: number | undefined;
99
+ readonly arrowWidth?: number | undefined;
100
+ readonly hasSourceArrow?: boolean | undefined;
101
+ readonly hasTargetArrow?: boolean | undefined;
102
+ readonly cycleRadius?: number | undefined;
103
+ readonly smallCycleRadius?: number | undefined;
104
+ readonly detourDistance?: number | undefined;
105
+ readonly detourDirection?: number | undefined;
106
+ }
107
+
93
108
  export declare interface Canvas {
94
109
  /**
95
110
  * provides api for accessing graph model
@@ -168,25 +183,58 @@ export declare interface Canvas {
168
183
  destroy(): void;
169
184
  }
170
185
 
186
+ declare class CanvasBuilder {
187
+ private coreOptions;
188
+ private dragOptions;
189
+ private transformOptions;
190
+ private hasDraggableNode;
191
+ private hasTransformableViewport;
192
+ private hasResizeReactiveNodes;
193
+ setOptions(options: CoreOptions): CanvasBuilder;
194
+ setUserDraggableNodes(options?: DragOptions): CanvasBuilder;
195
+ /**
196
+ * @deprecated
197
+ * use setUserTransformableViewport instead
198
+ */
199
+ setUserTransformableCanvas(options?: TransformOptions): CanvasBuilder;
200
+ setUserTransformableViewport(options?: TransformOptions): CanvasBuilder;
201
+ setResizeReactiveNodes(): CanvasBuilder;
202
+ build(): Canvas;
203
+ }
204
+ export { CanvasBuilder }
205
+ export { CanvasBuilder as HtmlGraphBuilder }
206
+
171
207
  /**
172
- * Provides low level API for acting on graph
208
+ * @deprecated
173
209
  */
174
210
  export declare class CanvasCore implements Canvas {
175
- private readonly apiOptions?;
176
211
  readonly transformation: PublicViewportTransformer;
177
212
  readonly model: PublicGraphStore;
178
- private readonly canvasController;
179
- private readonly edgeShapeFactory;
180
- constructor(apiOptions?: CoreOptions | undefined);
213
+ private readonly internalTransformation;
214
+ private readonly internalModel;
215
+ private readonly graphStoreController;
216
+ private readonly htmlController;
217
+ private readonly onAfterNodeAdded;
218
+ private readonly onAfterEdgeAdded;
219
+ private readonly onAfterEdgeShapeUpdated;
220
+ private readonly onAfterEdgePriorityUpdated;
221
+ private readonly onAfterEdgeUpdated;
222
+ private readonly onAfterPortUpdated;
223
+ private readonly onAfterNodePriorityUpdated;
224
+ private readonly onAfterNodeUpdated;
225
+ private readonly onBeforeEdgeRemoved;
226
+ private readonly onBeforeNodeRemoved;
227
+ private readonly onAfterTransformUpdate;
228
+ constructor(apiOptions?: CoreOptions_2);
181
229
  attach(element: HTMLElement): CanvasCore;
182
230
  detach(): CanvasCore;
183
231
  addNode(request: AddNodeRequest): CanvasCore;
184
232
  updateNode(nodeId: unknown, request?: UpdateNodeRequest): CanvasCore;
185
233
  removeNode(nodeId: unknown): CanvasCore;
186
- addEdge(edge: AddEdgeRequest): CanvasCore;
234
+ addEdge(request: AddEdgeRequest): CanvasCore;
187
235
  updateEdge(edgeId: unknown, request?: UpdateEdgeRequest): CanvasCore;
188
236
  removeEdge(edgeId: unknown): CanvasCore;
189
- markPort(port: MarkPortRequest): CanvasCore;
237
+ markPort(request: MarkPortRequest): CanvasCore;
190
238
  updatePort(portId: string, request?: UpdatePortRequest): CanvasCore;
191
239
  unmarkPort(portId: string): CanvasCore;
192
240
  patchViewportMatrix(request: PatchMatrixRequest): CanvasCore;
@@ -199,6 +247,8 @@ export declare type CenterFn = (width: number, height: number) => Point;
199
247
 
200
248
  declare type ConstantPriority = number;
201
249
 
250
+ declare type ConstantPriority_2 = number;
251
+
202
252
  export declare interface CoreOptions {
203
253
  /**
204
254
  * nodes related behavior
@@ -238,8 +288,49 @@ export declare interface CoreOptions {
238
288
  };
239
289
  }
240
290
 
291
+ declare interface CoreOptions_2 {
292
+ /**
293
+ * nodes related behavior
294
+ */
295
+ readonly nodes?: {
296
+ /**
297
+ * specifies how to determine center of node
298
+ * center of nodes specified in addNode method by x and y
299
+ */
300
+ readonly centerFn?: CenterFn;
301
+ /**
302
+ * specifies default z-index value
303
+ */
304
+ readonly priority?: Priority_2;
305
+ };
306
+ /**
307
+ * ports related behavior
308
+ */
309
+ readonly ports?: {
310
+ /**
311
+ * specifies default direction of port
312
+ */
313
+ readonly direction?: number;
314
+ };
315
+ /**
316
+ *edges related behavior
317
+ */
318
+ readonly edges?: {
319
+ /**
320
+ * specifies default controller
321
+ */
322
+ readonly shape?: EdgeShape_3;
323
+ /**
324
+ * specifies default z-index value
325
+ */
326
+ readonly priority?: Priority_2;
327
+ };
328
+ }
329
+
241
330
  declare type CustomPriority = PriorityFn;
242
331
 
332
+ declare type CustomPriority_2 = PriorityFn;
333
+
243
334
  export declare interface DragOptions {
244
335
  readonly moveOnTop?: boolean;
245
336
  readonly mouse?: {
@@ -250,7 +341,7 @@ export declare interface DragOptions {
250
341
  readonly events?: {
251
342
  readonly onNodeDrag?: (payload: NodeDragPayload) => void;
252
343
  readonly onBeforeNodeDrag?: (payload: NodeDragPayload) => boolean;
253
- readonly onNodeDragFinished?: (nodeId: NodeDragPayload) => void;
344
+ readonly onNodeDragFinished?: (payload: NodeDragPayload) => void;
254
345
  };
255
346
  }
256
347
 
@@ -283,8 +374,17 @@ export declare interface EdgeShape {
283
374
 
284
375
  declare type EdgeShape_2 = BezierEdgeShape_2 | StraightEdgeShape_2 | HorizontalEdgeShape_2 | VerticalEdgeShape_2 | EdgeShapeFactory;
285
376
 
377
+ declare type EdgeShape_3 = BezierEdgeShape_3 | StraightEdgeShape_3 | HorizontalEdgeShape_3 | VerticalEdgeShape_3 | EdgeShapeFactory_2;
378
+
286
379
  declare type EdgeShapeFactory = () => EdgeShape;
287
380
 
381
+ declare type EdgeShapeFactory_2 = () => EdgeShape;
382
+
383
+ declare interface EventHandler<T> {
384
+ subscribe(callback: (payload: T) => void): void;
385
+ unsubscribe(callback: (payload: T) => void): void;
386
+ }
387
+
288
388
  export declare interface GraphEdge {
289
389
  readonly from: unknown;
290
390
  readonly to: unknown;
@@ -304,6 +404,9 @@ export declare interface GraphPort {
304
404
  readonly direction: number;
305
405
  }
306
406
 
407
+ /**
408
+ * This entity is responsible for storing state of graph
409
+ */
307
410
  declare class GraphStore {
308
411
  private readonly nodes;
309
412
  private readonly ports;
@@ -388,18 +491,19 @@ declare interface HorizontalEdgeShape_2 {
388
491
  readonly detourDirection?: number | undefined;
389
492
  }
390
493
 
391
- export declare class HtmlGraphBuilder {
392
- private coreOptions;
393
- private dragOptions;
394
- private transformOptions;
395
- private isDraggable;
396
- private isTransformable;
397
- private hasResizeReactiveNodes;
398
- setOptions(options: CoreOptions): HtmlGraphBuilder;
399
- setUserDraggableNodes(options?: DragOptions): HtmlGraphBuilder;
400
- setUserTransformableCanvas(options?: TransformOptions): HtmlGraphBuilder;
401
- setResizeReactiveNodes(): HtmlGraphBuilder;
402
- build(): Canvas;
494
+ declare interface HorizontalEdgeShape_3 {
495
+ readonly type: "horizontal";
496
+ readonly color?: string | undefined;
497
+ readonly width?: number | undefined;
498
+ readonly arrowLength?: number | undefined;
499
+ readonly arrowWidth?: number | undefined;
500
+ readonly arrowOffset?: number | undefined;
501
+ readonly hasSourceArrow?: boolean | undefined;
502
+ readonly hasTargetArrow?: boolean | undefined;
503
+ readonly cycleSquareSide?: number | undefined;
504
+ readonly roundness?: number | undefined;
505
+ readonly detourDistance?: number | undefined;
506
+ readonly detourDirection?: number | undefined;
403
507
  }
404
508
 
405
509
  export declare class HtmlGraphError extends Error {
@@ -408,6 +512,8 @@ export declare class HtmlGraphError extends Error {
408
512
 
409
513
  declare type IncrementalPriority = "incremental";
410
514
 
515
+ declare type IncrementalPriority_2 = "incremental";
516
+
411
517
  export declare type MarkNodePortRequest = {
412
518
  readonly id?: unknown | undefined;
413
519
  readonly element: HTMLElement;
@@ -415,10 +521,10 @@ export declare type MarkNodePortRequest = {
415
521
  };
416
522
 
417
523
  export declare interface MarkPortRequest {
418
- readonly id?: unknown | undefined;
524
+ readonly id?: unknown;
419
525
  readonly element: HTMLElement;
420
526
  readonly nodeId: unknown;
421
- readonly direction?: number | undefined;
527
+ readonly direction?: number;
422
528
  }
423
529
 
424
530
  export declare interface NodeDragPayload {
@@ -460,8 +566,13 @@ declare interface PortPayload {
460
566
 
461
567
  declare type Priority = ConstantPriority | IncrementalPriority | SharedIncrementalPriority | CustomPriority;
462
568
 
569
+ declare type Priority_2 = ConstantPriority_2 | IncrementalPriority_2 | SharedIncrementalPriority_2 | CustomPriority_2;
570
+
463
571
  export declare type PriorityFn = () => number;
464
572
 
573
+ /**
574
+ * This entity is responsible for providing access to end user in a safe way
575
+ */
465
576
  export declare class PublicGraphStore {
466
577
  private readonly graphStore;
467
578
  constructor(graphStore: GraphStore);
@@ -483,6 +594,10 @@ export declare class PublicGraphStore {
483
594
  getNodeAdjacentEdgeIds(nodeId: unknown): readonly unknown[] | null;
484
595
  }
485
596
 
597
+ /**
598
+ * This entity is responsible for providing viewport transformation state to the
599
+ * end user in a safe way
600
+ */
486
601
  export declare class PublicViewportTransformer {
487
602
  private readonly transformer;
488
603
  constructor(transformer: ViewportTransformer);
@@ -513,7 +628,7 @@ export declare class ResizeReactiveNodesCanvas implements Canvas {
513
628
  patchContentMatrix(request: PatchMatrixRequest): ResizeReactiveNodesCanvas;
514
629
  clear(): ResizeReactiveNodesCanvas;
515
630
  destroy(): void;
516
- private reactNodeChange;
631
+ private handleNodeResize;
517
632
  }
518
633
 
519
634
  export declare interface ScaleLimitPreprocessorParams {
@@ -523,6 +638,8 @@ export declare interface ScaleLimitPreprocessorParams {
523
638
 
524
639
  declare type SharedIncrementalPriority = "shared-incremental";
525
640
 
641
+ declare type SharedIncrementalPriority_2 = "shared-incremental";
642
+
526
643
  export declare interface ShiftLimitPreprocessorParams {
527
644
  readonly minX: number | null;
528
645
  readonly maxX: number | null;
@@ -578,6 +695,21 @@ declare interface StraightEdgeShape_2 {
578
695
  readonly detourDirection?: number | undefined;
579
696
  }
580
697
 
698
+ declare interface StraightEdgeShape_3 {
699
+ readonly type: "straight";
700
+ readonly color?: string | undefined;
701
+ readonly width?: number | undefined;
702
+ readonly arrowLength?: number | undefined;
703
+ readonly arrowWidth?: number | undefined;
704
+ readonly arrowOffset?: number | undefined;
705
+ readonly hasSourceArrow?: boolean | undefined;
706
+ readonly hasTargetArrow?: boolean | undefined;
707
+ readonly cycleSquareSide?: number | undefined;
708
+ readonly roundness?: number | undefined;
709
+ readonly detourDistance?: number | undefined;
710
+ readonly detourDirection?: number | undefined;
711
+ }
712
+
581
713
  export declare interface TransformOptions {
582
714
  readonly scale?: {
583
715
  readonly mouseWheelSensitivity?: number;
@@ -645,7 +777,7 @@ export declare interface UpdateNodeRequest {
645
777
  }
646
778
 
647
779
  export declare interface UpdatePortRequest {
648
- readonly direction?: number | undefined;
780
+ readonly direction?: number;
649
781
  }
650
782
 
651
783
  export declare class UserDraggableNodesCanvas implements Canvas {
@@ -689,7 +821,7 @@ export declare class UserDraggableNodesCanvas implements Canvas {
689
821
  private removeTouchDragListeners;
690
822
  }
691
823
 
692
- export declare class UserTransformableCanvas implements Canvas {
824
+ declare class UserTransformableViewportCanvas implements Canvas {
693
825
  private readonly canvas;
694
826
  readonly model: PublicGraphStore;
695
827
  readonly transformation: PublicViewportTransformer;
@@ -706,20 +838,20 @@ export declare class UserTransformableCanvas implements Canvas {
706
838
  private readonly observer;
707
839
  private readonly options;
708
840
  constructor(canvas: Canvas, transformOptions?: TransformOptions);
709
- attach(element: HTMLElement): UserTransformableCanvas;
710
- detach(): UserTransformableCanvas;
711
- addNode(node: AddNodeRequest): UserTransformableCanvas;
712
- updateNode(nodeId: unknown, request?: UpdateNodeRequest): UserTransformableCanvas;
713
- removeNode(nodeId: unknown): UserTransformableCanvas;
714
- markPort(port: MarkPortRequest): UserTransformableCanvas;
715
- updatePort(portId: string, request?: UpdatePortRequest): UserTransformableCanvas;
716
- unmarkPort(portId: string): UserTransformableCanvas;
717
- addEdge(edge: AddEdgeRequest): UserTransformableCanvas;
718
- updateEdge(edgeId: unknown, request?: UpdateEdgeRequest): UserTransformableCanvas;
719
- removeEdge(edgeId: unknown): UserTransformableCanvas;
720
- patchViewportMatrix(request: PatchMatrixRequest): UserTransformableCanvas;
721
- patchContentMatrix(request: PatchMatrixRequest): UserTransformableCanvas;
722
- clear(): UserTransformableCanvas;
841
+ attach(element: HTMLElement): UserTransformableViewportCanvas;
842
+ detach(): UserTransformableViewportCanvas;
843
+ addNode(node: AddNodeRequest): UserTransformableViewportCanvas;
844
+ updateNode(nodeId: unknown, request?: UpdateNodeRequest): UserTransformableViewportCanvas;
845
+ removeNode(nodeId: unknown): UserTransformableViewportCanvas;
846
+ markPort(port: MarkPortRequest): UserTransformableViewportCanvas;
847
+ updatePort(portId: string, request?: UpdatePortRequest): UserTransformableViewportCanvas;
848
+ unmarkPort(portId: string): UserTransformableViewportCanvas;
849
+ addEdge(edge: AddEdgeRequest): UserTransformableViewportCanvas;
850
+ updateEdge(edgeId: unknown, request?: UpdateEdgeRequest): UserTransformableViewportCanvas;
851
+ removeEdge(edgeId: unknown): UserTransformableViewportCanvas;
852
+ patchViewportMatrix(request: PatchMatrixRequest): UserTransformableViewportCanvas;
853
+ patchContentMatrix(request: PatchMatrixRequest): UserTransformableViewportCanvas;
854
+ clear(): UserTransformableViewportCanvas;
723
855
  destroy(): void;
724
856
  private moveViewport;
725
857
  private scaleViewport;
@@ -728,6 +860,8 @@ export declare class UserTransformableCanvas implements Canvas {
728
860
  private stopTouchDrag;
729
861
  private removeTouchDragListeners;
730
862
  }
863
+ export { UserTransformableViewportCanvas as UserTransformableCanvas }
864
+ export { UserTransformableViewportCanvas }
731
865
 
732
866
  export declare interface VerticalEdgeParams {
733
867
  readonly color?: string | undefined;
@@ -777,9 +911,30 @@ declare interface VerticalEdgeShape_2 {
777
911
  readonly detourDirection?: number | undefined;
778
912
  }
779
913
 
914
+ declare interface VerticalEdgeShape_3 {
915
+ readonly type: "vertical";
916
+ readonly color?: string | undefined;
917
+ readonly width?: number | undefined;
918
+ readonly arrowLength?: number | undefined;
919
+ readonly arrowWidth?: number | undefined;
920
+ readonly arrowOffset?: number | undefined;
921
+ readonly hasSourceArrow?: boolean | undefined;
922
+ readonly hasTargetArrow?: boolean | undefined;
923
+ readonly cycleSquareSide?: number | undefined;
924
+ readonly roundness?: number | undefined;
925
+ readonly detourDistance?: number | undefined;
926
+ readonly detourDirection?: number | undefined;
927
+ }
928
+
929
+ /**
930
+ * This entity is responsible for storing viewport transformation
931
+ */
780
932
  declare class ViewportTransformer {
781
933
  private viewportMatrix;
782
934
  private contentMatrix;
935
+ private readonly emitter;
936
+ readonly onAfterUpdate: EventHandler<void>;
937
+ constructor();
783
938
  getViewportMatrix(): TransformState;
784
939
  getContentMatrix(): TransformState;
785
940
  patchViewportMatrix(matrix: PatchTransformRequest): void;