ngx-vflow 1.14.0 → 1.16.0

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 (44) hide show
  1. package/esm2022/lib/vflow/components/alignment-helper/alignment-helper.component.mjs +103 -0
  2. package/esm2022/lib/vflow/components/node/node.component.mjs +5 -4
  3. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +8 -5
  4. package/esm2022/lib/vflow/interfaces/alignment-helper-settings.interface.mjs +2 -0
  5. package/esm2022/lib/vflow/interfaces/flow-entity.interface.mjs +1 -1
  6. package/esm2022/lib/vflow/interfaces/node.interface.mjs +13 -5
  7. package/esm2022/lib/vflow/interfaces/optimization.interface.mjs +2 -1
  8. package/esm2022/lib/vflow/interfaces/rect.mjs +10 -2
  9. package/esm2022/lib/vflow/interfaces/template-context.interface.mjs +1 -1
  10. package/esm2022/lib/vflow/models/edge.model.mjs +4 -9
  11. package/esm2022/lib/vflow/models/node.model.mjs +51 -7
  12. package/esm2022/lib/vflow/services/draggable.service.mjs +7 -1
  13. package/esm2022/lib/vflow/services/edge-rendering.service.mjs +1 -1
  14. package/esm2022/lib/vflow/services/flow-rendering.service.mjs +9 -1
  15. package/esm2022/lib/vflow/services/flow-status.service.mjs +13 -1
  16. package/esm2022/lib/vflow/utils/is-callable.mjs +10 -0
  17. package/esm2022/lib/vflow/utils/is-vflow-component.mjs +9 -0
  18. package/esm2022/public-api.mjs +3 -1
  19. package/esm2022/testing/component-mocks/vflow-mock.component.mjs +4 -3
  20. package/esm2022/testing/provide-custom-node-mocks.mjs +3 -2
  21. package/fesm2022/ngx-vflow-testing.mjs +5 -3
  22. package/fesm2022/ngx-vflow-testing.mjs.map +1 -1
  23. package/fesm2022/ngx-vflow.mjs +387 -201
  24. package/fesm2022/ngx-vflow.mjs.map +1 -1
  25. package/lib/vflow/components/alignment-helper/alignment-helper.component.d.ts +21 -0
  26. package/lib/vflow/components/vflow/vflow.component.d.ts +3 -1
  27. package/lib/vflow/interfaces/alignment-helper-settings.interface.d.ts +4 -0
  28. package/lib/vflow/interfaces/flow-entity.interface.d.ts +2 -1
  29. package/lib/vflow/interfaces/node.interface.d.ts +2 -2
  30. package/lib/vflow/interfaces/optimization.interface.d.ts +4 -0
  31. package/lib/vflow/interfaces/rect.d.ts +7 -0
  32. package/lib/vflow/interfaces/template-context.interface.d.ts +4 -0
  33. package/lib/vflow/models/edge.model.d.ts +2 -0
  34. package/lib/vflow/models/node.model.d.ts +4 -0
  35. package/lib/vflow/public-components/custom-template-edge/custom-template-edge.component.d.ts +1 -0
  36. package/lib/vflow/services/draggable.service.d.ts +1 -0
  37. package/lib/vflow/services/edge-rendering.service.d.ts +1 -1
  38. package/lib/vflow/services/flow-rendering.service.d.ts +4 -0
  39. package/lib/vflow/services/flow-status.service.d.ts +17 -1
  40. package/lib/vflow/utils/is-callable.d.ts +1 -0
  41. package/lib/vflow/utils/is-vflow-component.d.ts +4 -0
  42. package/package.json +1 -1
  43. package/public-api.d.ts +2 -0
  44. package/testing/component-mocks/vflow-mock.component.d.ts +3 -2
@@ -0,0 +1,21 @@
1
+ import { Box } from '../../interfaces/box';
2
+ import * as i0 from "@angular/core";
3
+ interface Intersection {
4
+ lines: (Box & {
5
+ isCenter: boolean;
6
+ })[];
7
+ snappedX: number;
8
+ snappedY: number;
9
+ }
10
+ export declare class AlignmentHelperComponent {
11
+ private nodeRenderingService;
12
+ private flowStatus;
13
+ readonly tolerance: import("@angular/core").InputSignal<number>;
14
+ readonly lineColor: import("@angular/core").InputSignal<string>;
15
+ protected isNodeDragging: import("@angular/core").Signal<boolean>;
16
+ protected readonly intersections: import("@angular/core").Signal<Intersection>;
17
+ constructor();
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<AlignmentHelperComponent, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<AlignmentHelperComponent, "g[alignmentHelper]", never, { "tolerance": { "alias": "tolerance"; "required": false; "isSignal": true; }; "lineColor": { "alias": "lineColor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
20
+ }
21
+ export {};
@@ -15,6 +15,7 @@ import { FitViewOptions } from '../../interfaces/fit-view-options.interface';
15
15
  import { Optimization } from '../../interfaces/optimization.interface';
16
16
  import { KeyboardShortcuts } from '../../types/keyboard-action.type';
17
17
  import { IntersectingNodesOptions } from '../../interfaces/intersecting-nodes-options.interface';
18
+ import { AlignmentHelperSettings } from '../../interfaces/alignment-helper-settings.interface';
18
19
  import * as i0 from "@angular/core";
19
20
  import * as i1 from "../../directives/changes-controller.directive";
20
21
  import * as i2 from "../../interfaces/connection-settings.interface";
@@ -85,6 +86,7 @@ export declare class VflowComponent {
85
86
  * Nodes to render
86
87
  */
87
88
  set nodes(newNodes: Node[] | DynamicNode[]);
89
+ alignmentHelper: import("@angular/core").InputSignal<boolean | AlignmentHelperSettings>;
88
90
  protected nodeModels: import("@angular/core").Signal<NodeModel<unknown>[]>;
89
91
  protected groups: import("@angular/core").Signal<NodeModel<unknown>[]>;
90
92
  protected nonGroups: import("@angular/core").Signal<NodeModel<unknown>[]>;
@@ -202,6 +204,6 @@ export declare class VflowComponent {
202
204
  protected trackNodes(idx: number, { rawNode: node }: NodeModel): Node<unknown> | DynamicNode<unknown>;
203
205
  protected trackEdges(idx: number, { edge }: EdgeModel): Edge<unknown>;
204
206
  static ɵfac: i0.ɵɵFactoryDeclaration<VflowComponent, never>;
205
- static ɵcmp: i0.ɵɵComponentDeclaration<VflowComponent, "vflow", never, { "view": { "alias": "view"; "required": false; }; "minZoom": { "alias": "minZoom"; "required": false; }; "maxZoom": { "alias": "maxZoom"; "required": false; }; "background": { "alias": "background"; "required": false; }; "optimization": { "alias": "optimization"; "required": false; }; "entitiesSelectable": { "alias": "entitiesSelectable"; "required": false; }; "keyboardShortcuts": { "alias": "keyboardShortcuts"; "required": false; }; "connection": { "alias": "connection"; "required": false; }; "snapGrid": { "alias": "snapGrid"; "required": false; }; "elevateNodesOnSelect": { "alias": "elevateNodesOnSelect"; "required": false; }; "elevateEdgesOnSelect": { "alias": "elevateEdgesOnSelect"; "required": false; }; "nodes": { "alias": "nodes"; "required": true; }; "edges": { "alias": "edges"; "required": false; }; }, { "onComponentNodeEvent": "onComponentNodeEvent"; }, ["nodeTemplateDirective", "nodeSvgTemplateDirective", "groupNodeTemplateDirective", "edgeTemplateDirective", "edgeLabelHtmlDirective", "connectionTemplateDirective"], never, true, [{ directive: typeof i1.ChangesControllerDirective; inputs: {}; outputs: { "onNodesChange": "onNodesChange"; "onNodesChange.position": "onNodesChange.position"; "onNodesChange.position.single": "onNodesChange.position.single"; "onNodesChange.position.many": "onNodesChange.position.many"; "onNodesChange.size": "onNodesChange.size"; "onNodesChange.size.single": "onNodesChange.size.single"; "onNodesChange.size.many": "onNodesChange.size.many"; "onNodesChange.add": "onNodesChange.add"; "onNodesChange.add.single": "onNodesChange.add.single"; "onNodesChange.add.many": "onNodesChange.add.many"; "onNodesChange.remove": "onNodesChange.remove"; "onNodesChange.remove.single": "onNodesChange.remove.single"; "onNodesChange.remove.many": "onNodesChange.remove.many"; "onNodesChange.select": "onNodesChange.select"; "onNodesChange.select.single": "onNodesChange.select.single"; "onNodesChange.select.many": "onNodesChange.select.many"; "onEdgesChange": "onEdgesChange"; "onEdgesChange.detached": "onEdgesChange.detached"; "onEdgesChange.detached.single": "onEdgesChange.detached.single"; "onEdgesChange.detached.many": "onEdgesChange.detached.many"; "onEdgesChange.add": "onEdgesChange.add"; "onEdgesChange.add.single": "onEdgesChange.add.single"; "onEdgesChange.add.many": "onEdgesChange.add.many"; "onEdgesChange.remove": "onEdgesChange.remove"; "onEdgesChange.remove.single": "onEdgesChange.remove.single"; "onEdgesChange.remove.many": "onEdgesChange.remove.many"; "onEdgesChange.select": "onEdgesChange.select"; "onEdgesChange.select.single": "onEdgesChange.select.single"; "onEdgesChange.select.many": "onEdgesChange.select.many"; }; }]>;
207
+ static ɵcmp: i0.ɵɵComponentDeclaration<VflowComponent, "vflow", never, { "view": { "alias": "view"; "required": false; }; "minZoom": { "alias": "minZoom"; "required": false; }; "maxZoom": { "alias": "maxZoom"; "required": false; }; "background": { "alias": "background"; "required": false; }; "optimization": { "alias": "optimization"; "required": false; }; "entitiesSelectable": { "alias": "entitiesSelectable"; "required": false; }; "keyboardShortcuts": { "alias": "keyboardShortcuts"; "required": false; }; "connection": { "alias": "connection"; "required": false; }; "snapGrid": { "alias": "snapGrid"; "required": false; }; "elevateNodesOnSelect": { "alias": "elevateNodesOnSelect"; "required": false; }; "elevateEdgesOnSelect": { "alias": "elevateEdgesOnSelect"; "required": false; }; "nodes": { "alias": "nodes"; "required": true; }; "alignmentHelper": { "alias": "alignmentHelper"; "required": false; "isSignal": true; }; "edges": { "alias": "edges"; "required": false; }; }, { "onComponentNodeEvent": "onComponentNodeEvent"; }, ["nodeTemplateDirective", "nodeSvgTemplateDirective", "groupNodeTemplateDirective", "edgeTemplateDirective", "edgeLabelHtmlDirective", "connectionTemplateDirective"], never, true, [{ directive: typeof i1.ChangesControllerDirective; inputs: {}; outputs: { "onNodesChange": "onNodesChange"; "onNodesChange.position": "onNodesChange.position"; "onNodesChange.position.single": "onNodesChange.position.single"; "onNodesChange.position.many": "onNodesChange.position.many"; "onNodesChange.size": "onNodesChange.size"; "onNodesChange.size.single": "onNodesChange.size.single"; "onNodesChange.size.many": "onNodesChange.size.many"; "onNodesChange.add": "onNodesChange.add"; "onNodesChange.add.single": "onNodesChange.add.single"; "onNodesChange.add.many": "onNodesChange.add.many"; "onNodesChange.remove": "onNodesChange.remove"; "onNodesChange.remove.single": "onNodesChange.remove.single"; "onNodesChange.remove.many": "onNodesChange.remove.many"; "onNodesChange.select": "onNodesChange.select"; "onNodesChange.select.single": "onNodesChange.select.single"; "onNodesChange.select.many": "onNodesChange.select.many"; "onEdgesChange": "onEdgesChange"; "onEdgesChange.detached": "onEdgesChange.detached"; "onEdgesChange.detached.single": "onEdgesChange.detached.single"; "onEdgesChange.detached.many": "onEdgesChange.detached.many"; "onEdgesChange.add": "onEdgesChange.add"; "onEdgesChange.add.single": "onEdgesChange.add.single"; "onEdgesChange.add.many": "onEdgesChange.add.many"; "onEdgesChange.remove": "onEdgesChange.remove"; "onEdgesChange.remove.single": "onEdgesChange.remove.single"; "onEdgesChange.remove.many": "onEdgesChange.remove.many"; "onEdgesChange.select": "onEdgesChange.select"; "onEdgesChange.select.single": "onEdgesChange.select.single"; "onEdgesChange.select.many": "onEdgesChange.select.many"; }; }]>;
206
208
  static ngAcceptInputType_connection: i2.ConnectionSettings;
207
209
  }
@@ -0,0 +1,4 @@
1
+ export interface AlignmentHelperSettings {
2
+ tolerance: number;
3
+ lineColor: string;
4
+ }
@@ -1,4 +1,5 @@
1
- import { WritableSignal } from '@angular/core';
1
+ import { Signal, WritableSignal } from '@angular/core';
2
2
  export interface FlowEntity {
3
3
  selected: WritableSignal<boolean>;
4
+ shouldLoad: Signal<boolean>;
4
5
  }
@@ -82,13 +82,13 @@ export interface TemplateDynamicGroupNode<T> extends SharedDynamicNode {
82
82
  data?: WritableSignal<T>;
83
83
  }
84
84
  export interface ComponentNode<T = any> extends SharedNode {
85
- type: Type<CustomNodeComponent<T>>;
85
+ type: Type<CustomNodeComponent<T>> | (() => Promise<Type<CustomNodeComponent<T>>>);
86
86
  data?: T;
87
87
  width?: number;
88
88
  height?: number;
89
89
  }
90
90
  export interface ComponentDynamicNode<T = any> extends SharedDynamicNode {
91
- type: Type<CustomDynamicNodeComponent<T>>;
91
+ type: Type<CustomDynamicNodeComponent<T>> | (() => Promise<Type<CustomDynamicNodeComponent<T>>>);
92
92
  data?: WritableSignal<T>;
93
93
  width?: WritableSignal<number>;
94
94
  height?: WritableSignal<number>;
@@ -22,4 +22,8 @@ export interface Optimization {
22
22
  * This should help to avoid performance issues when zooming out too much.
23
23
  */
24
24
  virtualizationZoomThreshold?: number;
25
+ /**
26
+ * The trigger for lazy loading of entities.
27
+ */
28
+ lazyLoadTrigger?: 'immediate' | 'viewport';
25
29
  }
@@ -4,3 +4,10 @@ export interface Rect {
4
4
  width: number;
5
5
  height: number;
6
6
  }
7
+ export interface RectWithSides extends Rect {
8
+ left: number;
9
+ right: number;
10
+ top: number;
11
+ bottom: number;
12
+ }
13
+ export declare function rectToRectWithSides(rect: Rect): RectWithSides;
@@ -10,12 +10,14 @@ export interface EdgeContext {
10
10
  markerStart: Signal<string>;
11
11
  markerEnd: Signal<string>;
12
12
  selected: Signal<boolean>;
13
+ shouldLoad: Signal<boolean>;
13
14
  };
14
15
  }
15
16
  export interface NodeContext {
16
17
  $implicit: {
17
18
  node: any;
18
19
  selected: Signal<boolean>;
20
+ shouldLoad: Signal<boolean>;
19
21
  };
20
22
  }
21
23
  export interface SvgNodeContext {
@@ -24,6 +26,7 @@ export interface SvgNodeContext {
24
26
  selected: Signal<boolean>;
25
27
  width: Signal<number>;
26
28
  height: Signal<number>;
29
+ shouldLoad: Signal<boolean>;
27
30
  };
28
31
  }
29
32
  export interface GroupNodeContext {
@@ -32,6 +35,7 @@ export interface GroupNodeContext {
32
35
  selected: Signal<boolean>;
33
36
  width: Signal<number>;
34
37
  height: Signal<number>;
38
+ shouldLoad: Signal<boolean>;
35
39
  };
36
40
  }
37
41
  export interface ConnectionContext {
@@ -17,6 +17,7 @@ export declare class EdgeModel implements FlowEntity, Contextable<EdgeContext> {
17
17
  floating: boolean;
18
18
  selected: import("@angular/core").WritableSignal<boolean>;
19
19
  selected$: import("rxjs").Observable<boolean>;
20
+ shouldLoad: import("@angular/core").Signal<boolean>;
20
21
  renderOrder: import("@angular/core").WritableSignal<number>;
21
22
  detached: import("@angular/core").Signal<boolean>;
22
23
  detached$: import("rxjs").Observable<boolean>;
@@ -42,6 +43,7 @@ export declare class EdgeModel implements FlowEntity, Contextable<EdgeContext> {
42
43
  markerStart: import("@angular/core").Signal<string>;
43
44
  markerEnd: import("@angular/core").Signal<string>;
44
45
  selected: import("@angular/core").Signal<boolean>;
46
+ shouldLoad: import("@angular/core").Signal<boolean>;
45
47
  };
46
48
  };
47
49
  edgeLabels: {
@@ -15,6 +15,8 @@ export declare class NodeModel<T = unknown> implements FlowEntity, Contextable<N
15
15
  private static defaultHeight;
16
16
  private static defaultColor;
17
17
  private entitiesService;
18
+ private settingsService;
19
+ private nodeRenderingService;
18
20
  isVisible: import("@angular/core").WritableSignal<boolean>;
19
21
  point: import("@angular/core").WritableSignal<Point>;
20
22
  point$: Observable<Point>;
@@ -59,6 +61,8 @@ export declare class NodeModel<T = unknown> implements FlowEntity, Contextable<N
59
61
  dragHandlesCount: import("@angular/core").WritableSignal<number>;
60
62
  readonly magnetRadius = 20;
61
63
  isComponentType: boolean;
64
+ shouldLoad: import("@angular/core").Signal<boolean>;
65
+ componentInstance$: Observable<any>;
62
66
  text: import("@angular/core").WritableSignal<string>;
63
67
  componentTypeInputs: {
64
68
  node: Node<T> | DynamicNode<T>;
@@ -10,6 +10,7 @@ export declare class CustomTemplateEdgeComponent {
10
10
  markerStart: import("@angular/core").Signal<string>;
11
11
  markerEnd: import("@angular/core").Signal<string>;
12
12
  selected: import("@angular/core").Signal<boolean>;
13
+ shouldLoad: import("@angular/core").Signal<boolean>;
13
14
  };
14
15
  protected pull(): void;
15
16
  static ɵfac: i0.ɵɵFactoryDeclaration<CustomTemplateEdgeComponent, never>;
@@ -3,6 +3,7 @@ import * as i0 from "@angular/core";
3
3
  export declare class DraggableService {
4
4
  private entitiesService;
5
5
  private settingsService;
6
+ private flowStatusService;
6
7
  /**
7
8
  * Enable draggable behavior for element.
8
9
  *
@@ -4,7 +4,7 @@ export declare class EdgeRenderingService {
4
4
  private flowEntitiesService;
5
5
  private flowSettingsService;
6
6
  readonly edges: import("@angular/core").Signal<EdgeModel[]>;
7
- private viewportEdges;
7
+ readonly viewportEdges: import("@angular/core").Signal<EdgeModel[]>;
8
8
  private maxOrder;
9
9
  pull(edge: EdgeModel): void;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<EdgeRenderingService, never>;
@@ -1,5 +1,9 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class FlowRenderingService {
3
+ private readonly nodeRenderingService;
4
+ private readonly edgeRenderingService;
5
+ private readonly flowEntitiesService;
6
+ private readonly settingsService;
3
7
  flowInitialized: import("@angular/core").WritableSignal<boolean>;
4
8
  constructor();
5
9
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowRenderingService, never>;
@@ -40,7 +40,19 @@ export interface FlowStatusReconnectionEnd {
40
40
  oldEdge: EdgeModel;
41
41
  };
42
42
  }
43
- export type FlowStatus = FlowStatusIdle | FlowStatusConnectionStart | FlowStatusConnectionValidation | FlowStatusConnectionEnd | FlowStatusReconnectionStart | FlowStatusReconnectionValidation | FlowStatusReconnectionEnd;
43
+ export interface FlowStatusNodeDragStart {
44
+ state: 'node-drag-start';
45
+ payload: {
46
+ node: NodeModel;
47
+ };
48
+ }
49
+ export interface FlowStatusNodeDragEnd {
50
+ state: 'node-drag-end';
51
+ payload: {
52
+ node: NodeModel;
53
+ };
54
+ }
55
+ export type FlowStatus = FlowStatusIdle | FlowStatusConnectionStart | FlowStatusConnectionValidation | FlowStatusConnectionEnd | FlowStatusReconnectionStart | FlowStatusReconnectionValidation | FlowStatusReconnectionEnd | FlowStatusNodeDragStart | FlowStatusNodeDragEnd;
44
56
  export declare class FlowStatusService {
45
57
  readonly status: import("@angular/core").WritableSignal<FlowStatus>;
46
58
  setIdleStatus(): void;
@@ -50,6 +62,10 @@ export declare class FlowStatusService {
50
62
  setReconnectionValidationStatus(valid: boolean, source: NodeModel, target: NodeModel, sourceHandle: HandleModel, targetHandle: HandleModel, oldEdge: EdgeModel): void;
51
63
  setConnectionEndStatus(source: NodeModel, target: NodeModel, sourceHandle: HandleModel, targetHandle: HandleModel): void;
52
64
  setReconnectionEndStatus(source: NodeModel, target: NodeModel, sourceHandle: HandleModel, targetHandle: HandleModel, oldEdge: EdgeModel): void;
65
+ setNodeDragStartStatus(node: NodeModel): void;
66
+ setNodeDragEndStatus(node: NodeModel): void;
53
67
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowStatusService, never>;
54
68
  static ɵprov: i0.ɵɵInjectableDeclaration<FlowStatusService>;
55
69
  }
70
+ export declare function isNodeDragStartStatus(params: FlowStatus): params is FlowStatusNodeDragStart;
71
+ export declare function isNodeDragEndStatus(params: FlowStatus): params is FlowStatusNodeDragEnd;
@@ -0,0 +1 @@
1
+ export declare function isCallable(fn: any): boolean;
@@ -0,0 +1,4 @@
1
+ import { CustomDynamicNodeComponent } from '../public-components/custom-dynamic-node/custom-dynamic-node.component';
2
+ import { CustomNodeComponent } from '../public-components/custom-node/custom-node.component';
3
+ export declare function isCustomNodeComponent(type: any): type is CustomNodeComponent;
4
+ export declare function isCustomDynamicNodeComponent(type: any): type is CustomDynamicNodeComponent;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-vflow",
3
- "version": "1.14.0",
3
+ "version": "1.16.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://www.ngx-vflow.org/",
6
6
  "author": "Artem Mangilev",
package/public-api.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from './lib/vflow/interfaces/optimization.interface';
14
14
  export * from './lib/vflow/interfaces/intersecting-nodes-options.interface';
15
15
  export * from './lib/vflow/interfaces/curve-factory.interface';
16
16
  export * from './lib/vflow/interfaces/node-preview.interface';
17
+ export * from './lib/vflow/interfaces/alignment-helper-settings.interface';
17
18
  export * from './lib/vflow/types/node-change.type';
18
19
  export * from './lib/vflow/types/edge-change.type';
19
20
  export * from './lib/vflow/types/position.type';
@@ -43,5 +44,6 @@ export { FlowEntitiesService as ɵFlowEntitiesService } from './lib/vflow/servic
43
44
  export { NodeAccessorService as ɵNodeAccessorService } from './lib/vflow/services/node-accessor.service';
44
45
  export { ViewportService as ɵViewportService } from './lib/vflow/services/viewport.service';
45
46
  export { SelectionService as ɵSelectionService } from './lib/vflow/services/selection.service';
47
+ export { NodeRenderingService as ɵNodeRenderingService } from './lib/vflow/services/node-rendering.service';
46
48
  export { RootPointerDirective as ɵRootPointerDirective } from './lib/vflow/directives/root-pointer.directive';
47
49
  export { SpacePointContextDirective as ɵSpacePointContextDirective } from './lib/vflow/directives/space-point-context.directive';
@@ -1,5 +1,5 @@
1
1
  import { WritableSignal, OnInit } from '@angular/core';
2
- import { Node, DynamicNode, Edge, SpacePoint, Point, Background, KeyboardShortcuts, ViewportState, NodeChange, EdgeChange, FitViewOptions, VflowComponent, IntersectingNodesOptions, ɵConnectionModel as ConnectionModel } from 'ngx-vflow';
2
+ import { Node, DynamicNode, Edge, SpacePoint, Point, Background, KeyboardShortcuts, ViewportState, NodeChange, EdgeChange, FitViewOptions, VflowComponent, IntersectingNodesOptions, ɵConnectionModel as ConnectionModel, AlignmentHelperSettings } from 'ngx-vflow';
3
3
  import { ConnectionTemplateMockDirective, EdgeLabelHtmlTemplateMockDirective, EdgeTemplateMockDirective, GroupNodeTemplateMockDirective, NodeHtmlTemplateMockDirective } from '../directive-mocks/template-mock.directive';
4
4
  import { AsInterface } from '../types';
5
5
  import * as i0 from "@angular/core";
@@ -24,6 +24,7 @@ export declare class VflowMockComponent implements AsInterface<VflowComponent>,
24
24
  ];
25
25
  elevateNodesOnSelect: boolean;
26
26
  elevateEdgesOnSelect: boolean;
27
+ alignmentHelper: import("@angular/core").InputSignal<boolean | AlignmentHelperSettings>;
27
28
  readonly onComponentNodeEvent: import("@angular/core").OutputEmitterRef<any>;
28
29
  protected nodeTemplateDirective: import("@angular/core").Signal<NodeHtmlTemplateMockDirective | undefined>;
29
30
  protected groupNodeTemplateDirective: import("@angular/core").Signal<GroupNodeTemplateMockDirective | undefined>;
@@ -55,6 +56,6 @@ export declare class VflowMockComponent implements AsInterface<VflowComponent>,
55
56
  getDetachedEdges(): Edge[];
56
57
  protected createSignal<T>(value: T): WritableSignal<T>;
57
58
  static ɵfac: i0.ɵɵFactoryDeclaration<VflowMockComponent, never>;
58
- static ɵcmp: i0.ɵɵComponentDeclaration<VflowMockComponent, "vflow", never, { "nodes": { "alias": "nodes"; "required": true; }; "edges": { "alias": "edges"; "required": false; }; "view": { "alias": "view"; "required": false; }; "minZoom": { "alias": "minZoom"; "required": false; }; "maxZoom": { "alias": "maxZoom"; "required": false; }; "background": { "alias": "background"; "required": false; }; "optimization": { "alias": "optimization"; "required": false; }; "entitiesSelectable": { "alias": "entitiesSelectable"; "required": false; }; "keyboardShortcuts": { "alias": "keyboardShortcuts"; "required": false; }; "connection": { "alias": "connection"; "required": false; }; "snapGrid": { "alias": "snapGrid"; "required": false; }; "elevateNodesOnSelect": { "alias": "elevateNodesOnSelect"; "required": false; }; "elevateEdgesOnSelect": { "alias": "elevateEdgesOnSelect"; "required": false; }; }, { "onComponentNodeEvent": "onComponentNodeEvent"; }, ["nodeTemplateDirective", "groupNodeTemplateDirective", "edgeTemplateDirective", "edgeLabelHtmlDirective", "connectionTemplateDirective"], ["*"], true, never>;
59
+ static ɵcmp: i0.ɵɵComponentDeclaration<VflowMockComponent, "vflow", never, { "nodes": { "alias": "nodes"; "required": true; }; "edges": { "alias": "edges"; "required": false; }; "view": { "alias": "view"; "required": false; }; "minZoom": { "alias": "minZoom"; "required": false; }; "maxZoom": { "alias": "maxZoom"; "required": false; }; "background": { "alias": "background"; "required": false; }; "optimization": { "alias": "optimization"; "required": false; }; "entitiesSelectable": { "alias": "entitiesSelectable"; "required": false; }; "keyboardShortcuts": { "alias": "keyboardShortcuts"; "required": false; }; "connection": { "alias": "connection"; "required": false; }; "snapGrid": { "alias": "snapGrid"; "required": false; }; "elevateNodesOnSelect": { "alias": "elevateNodesOnSelect"; "required": false; }; "elevateEdgesOnSelect": { "alias": "elevateEdgesOnSelect"; "required": false; }; "alignmentHelper": { "alias": "alignmentHelper"; "required": false; "isSignal": true; }; }, { "onComponentNodeEvent": "onComponentNodeEvent"; }, ["nodeTemplateDirective", "groupNodeTemplateDirective", "edgeTemplateDirective", "edgeLabelHtmlDirective", "connectionTemplateDirective"], ["*"], true, never>;
59
60
  static ngAcceptInputType_connection: i1.ConnectionSettings;
60
61
  }