ngx-vflow 1.15.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.
- package/esm2022/lib/vflow/components/alignment-helper/alignment-helper.component.mjs +103 -0
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +8 -5
- package/esm2022/lib/vflow/interfaces/alignment-helper-settings.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/rect.mjs +10 -2
- package/esm2022/lib/vflow/services/draggable.service.mjs +7 -1
- package/esm2022/lib/vflow/services/flow-status.service.mjs +13 -1
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/testing/component-mocks/vflow-mock.component.mjs +4 -3
- package/fesm2022/ngx-vflow-testing.mjs +3 -2
- package/fesm2022/ngx-vflow-testing.mjs.map +1 -1
- package/fesm2022/ngx-vflow.mjs +160 -38
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/components/alignment-helper/alignment-helper.component.d.ts +21 -0
- package/lib/vflow/components/vflow/vflow.component.d.ts +3 -1
- package/lib/vflow/interfaces/alignment-helper-settings.interface.d.ts +4 -0
- package/lib/vflow/interfaces/rect.d.ts +7 -0
- package/lib/vflow/services/draggable.service.d.ts +1 -0
- package/lib/vflow/services/flow-status.service.d.ts +17 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- 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
|
}
|
|
@@ -40,7 +40,19 @@ export interface FlowStatusReconnectionEnd {
|
|
|
40
40
|
oldEdge: EdgeModel;
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
-
export
|
|
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;
|
package/package.json
CHANGED
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';
|
|
@@ -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
|
}
|