ngx-vflow 0.10.0 → 0.11.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/node/node.component.mjs +6 -4
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +29 -6
- package/esm2022/lib/vflow/directives/template.directive.mjs +12 -1
- package/esm2022/lib/vflow/interfaces/node.interface.mjs +13 -1
- package/esm2022/lib/vflow/interfaces/optimization.interface.mjs +2 -0
- package/esm2022/lib/vflow/models/handle.model.mjs +22 -9
- package/esm2022/lib/vflow/models/node.model.mjs +51 -14
- package/esm2022/lib/vflow/services/draggable.service.mjs +12 -3
- package/esm2022/lib/vflow/services/handle.service.mjs +7 -2
- package/esm2022/lib/vflow/services/node-rendering.service.mjs +12 -3
- package/esm2022/lib/vflow/vflow.module.mjs +5 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ngx-vflow.mjs +166 -45
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/components/node/node.component.d.ts +3 -2
- package/lib/vflow/components/vflow/vflow.component.d.ts +10 -5
- package/lib/vflow/directives/template.directive.d.ts +5 -0
- package/lib/vflow/interfaces/node.interface.d.ts +32 -2
- package/lib/vflow/interfaces/optimization.interface.d.ts +3 -0
- package/lib/vflow/models/handle.model.d.ts +2 -1
- package/lib/vflow/models/node.model.d.ts +9 -0
- package/lib/vflow/services/handle.service.d.ts +1 -1
- package/lib/vflow/services/node-rendering.service.d.ts +1 -0
- package/lib/vflow/vflow.module.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -15,7 +15,8 @@ export declare class NodeComponent implements OnInit, AfterViewInit, OnDestroy,
|
|
|
15
15
|
private hostRef;
|
|
16
16
|
private connectionController;
|
|
17
17
|
nodeModel: NodeModel;
|
|
18
|
-
|
|
18
|
+
nodeTemplate?: TemplateRef<any>;
|
|
19
|
+
groupNodeTemplate?: TemplateRef<any>;
|
|
19
20
|
nodeContentRef: ElementRef<SVGGraphicsElement>;
|
|
20
21
|
htmlWrapperRef: ElementRef<HTMLDivElement>;
|
|
21
22
|
protected showMagnet: import("@angular/core").Signal<boolean>;
|
|
@@ -31,5 +32,5 @@ export declare class NodeComponent implements OnInit, AfterViewInit, OnDestroy,
|
|
|
31
32
|
protected pullNode(): void;
|
|
32
33
|
protected selectNode(): void;
|
|
33
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<NodeComponent, never>;
|
|
34
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NodeComponent, "g[node]", never, { "nodeModel": { "alias": "nodeModel"; "required": false; }; "
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NodeComponent, "g[node]", never, { "nodeModel": { "alias": "nodeModel"; "required": false; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": false; }; "groupNodeTemplate": { "alias": "groupNodeTemplate"; "required": false; }; }, {}, never, never, false, never>;
|
|
35
36
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Signal } from '@angular/core';
|
|
1
|
+
import { OnInit, Signal } from '@angular/core';
|
|
2
2
|
import { DynamicNode, Node } from '../../interfaces/node.interface';
|
|
3
3
|
import { MapContextDirective } from '../../directives/map-context.directive';
|
|
4
4
|
import { NodeModel } from '../../models/node.model';
|
|
5
5
|
import { Edge } from '../../interfaces/edge.interface';
|
|
6
6
|
import { EdgeModel } from '../../models/edge.model';
|
|
7
|
-
import { ConnectionTemplateDirective, EdgeLabelHtmlTemplateDirective, EdgeTemplateDirective, NodeHtmlTemplateDirective } from '../../directives/template.directive';
|
|
7
|
+
import { ConnectionTemplateDirective, EdgeLabelHtmlTemplateDirective, EdgeTemplateDirective, GroupNodeTemplateDirective, NodeHtmlTemplateDirective } from '../../directives/template.directive';
|
|
8
8
|
import { HandlePositions } from '../../interfaces/handle-positions.interface';
|
|
9
9
|
import { Point } from '../../interfaces/point.interface';
|
|
10
10
|
import { ViewportState } from '../../interfaces/viewport.interface';
|
|
@@ -14,11 +14,12 @@ import { EdgeChange } from '../../types/edge-change.type';
|
|
|
14
14
|
import { Background } from '../../types/background.type';
|
|
15
15
|
import { SpacePointContextDirective } from '../../directives/space-point-context.directive';
|
|
16
16
|
import { FitViewOptions } from '../../interfaces/fit-view-options.interface';
|
|
17
|
+
import { Optimization } from '../../interfaces/optimization.interface';
|
|
17
18
|
import * as i0 from "@angular/core";
|
|
18
19
|
import * as i1 from "../../directives/connection-controller.directive";
|
|
19
20
|
import * as i2 from "../../directives/changes-controller.directive";
|
|
20
21
|
import * as i3 from "../../interfaces/connection-settings.interface";
|
|
21
|
-
export declare class VflowComponent {
|
|
22
|
+
export declare class VflowComponent implements OnInit {
|
|
22
23
|
private viewportService;
|
|
23
24
|
private flowEntitiesService;
|
|
24
25
|
private nodesChangeService;
|
|
@@ -59,6 +60,7 @@ export declare class VflowComponent {
|
|
|
59
60
|
* Background for flow
|
|
60
61
|
*/
|
|
61
62
|
background: Background | string;
|
|
63
|
+
optimization: Optimization;
|
|
62
64
|
/**
|
|
63
65
|
* Global rule if you can or can't select entities
|
|
64
66
|
*/
|
|
@@ -86,7 +88,8 @@ export declare class VflowComponent {
|
|
|
86
88
|
* @experimental
|
|
87
89
|
*/
|
|
88
90
|
onComponentNodeEvent: any;
|
|
89
|
-
protected
|
|
91
|
+
protected nodeTemplateDirective?: NodeHtmlTemplateDirective;
|
|
92
|
+
protected groupNodeTemplateDirective?: GroupNodeTemplateDirective;
|
|
90
93
|
protected edgeTemplateDirective?: EdgeTemplateDirective;
|
|
91
94
|
protected edgeLabelHtmlDirective?: EdgeLabelHtmlTemplateDirective;
|
|
92
95
|
protected connectionTemplateDirective?: ConnectionTemplateDirective;
|
|
@@ -117,6 +120,7 @@ export declare class VflowComponent {
|
|
|
117
120
|
*/
|
|
118
121
|
readonly edgesChange$: import("rxjs").Observable<EdgeChange[]>;
|
|
119
122
|
protected markers: Signal<Map<number, import("ngx-vflow").Marker>>;
|
|
123
|
+
ngOnInit(): void;
|
|
120
124
|
/**
|
|
121
125
|
* Change viewport to specified state
|
|
122
126
|
*
|
|
@@ -152,7 +156,8 @@ export declare class VflowComponent {
|
|
|
152
156
|
documentPointToFlowPoint(point: Point): Point;
|
|
153
157
|
protected trackNodes(idx: number, { node }: NodeModel): Node<unknown> | DynamicNode<unknown>;
|
|
154
158
|
protected trackEdges(idx: number, { edge }: EdgeModel): Edge<unknown>;
|
|
159
|
+
private setInitialNodesOrder;
|
|
155
160
|
static ɵfac: i0.ɵɵFactoryDeclaration<VflowComponent, never>;
|
|
156
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<VflowComponent, "vflow", never, { "view": { "alias": "view"; "required": false; }; "minZoom": { "alias": "minZoom"; "required": false; }; "maxZoom": { "alias": "maxZoom"; "required": false; }; "handlePositions": { "alias": "handlePositions"; "required": false; }; "background": { "alias": "background"; "required": false; }; "entitiesSelectable": { "alias": "entitiesSelectable"; "required": false; }; "connection": { "alias": "connection"; "required": false; }; "nodes": { "alias": "nodes"; "required": true; }; "edges": { "alias": "edges"; "required": false; }; }, { "onComponentNodeEvent": "onComponentNodeEvent"; }, ["
|
|
161
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<VflowComponent, "vflow", never, { "view": { "alias": "view"; "required": false; }; "minZoom": { "alias": "minZoom"; "required": false; }; "maxZoom": { "alias": "maxZoom"; "required": false; }; "handlePositions": { "alias": "handlePositions"; "required": false; }; "background": { "alias": "background"; "required": false; }; "optimization": { "alias": "optimization"; "required": false; }; "entitiesSelectable": { "alias": "entitiesSelectable"; "required": false; }; "connection": { "alias": "connection"; "required": false; }; "nodes": { "alias": "nodes"; "required": true; }; "edges": { "alias": "edges"; "required": false; }; }, { "onComponentNodeEvent": "onComponentNodeEvent"; }, ["nodeTemplateDirective", "groupNodeTemplateDirective", "edgeTemplateDirective", "edgeLabelHtmlDirective", "connectionTemplateDirective"], never, false, [{ directive: typeof i1.ConnectionControllerDirective; inputs: {}; outputs: { "onConnect": "onConnect"; }; }, { directive: typeof i2.ChangesControllerDirective; inputs: {}; outputs: { "onNodesChange": "onNodesChange"; "onNodesChange.position": "onNodesChange.position"; "onNodesChange.position.single": "onNodesChange.position.single"; "onNodesChange.position.many": "onNodesChange.position.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"; }; }]>;
|
|
157
162
|
static ngAcceptInputType_connection: i3.ConnectionSettings;
|
|
158
163
|
}
|
|
@@ -21,6 +21,11 @@ export declare class NodeHtmlTemplateDirective {
|
|
|
21
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<NodeHtmlTemplateDirective, never>;
|
|
22
22
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NodeHtmlTemplateDirective, "ng-template[nodeHtml]", never, {}, {}, never, never, false, never>;
|
|
23
23
|
}
|
|
24
|
+
export declare class GroupNodeTemplateDirective {
|
|
25
|
+
templateRef: TemplateRef<any>;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GroupNodeTemplateDirective, never>;
|
|
27
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<GroupNodeTemplateDirective, "ng-template[groupNode]", never, {}, {}, never, never, false, never>;
|
|
28
|
+
}
|
|
24
29
|
export declare class HandleTemplateDirective {
|
|
25
30
|
templateRef: TemplateRef<any>;
|
|
26
31
|
static ɵfac: i0.ɵɵFactoryDeclaration<HandleTemplateDirective, never>;
|
|
@@ -2,17 +2,19 @@ import { Type, WritableSignal } from "@angular/core";
|
|
|
2
2
|
import { Point } from "./point.interface";
|
|
3
3
|
import { CustomNodeComponent } from "../public-components/custom-node.component";
|
|
4
4
|
import { CustomDynamicNodeComponent } from "../public-components/custom-dynamic-node.component";
|
|
5
|
-
export type Node<T = unknown> = DefaultNode | HtmlTemplateNode<T> | ComponentNode<T>;
|
|
6
|
-
export type DynamicNode<T = unknown> = DefaultDynamicNode | HtmlTemplateDynamicNode<T> | ComponentDynamicNode<T>;
|
|
5
|
+
export type Node<T = unknown> = DefaultNode | HtmlTemplateNode<T> | ComponentNode<T> | DefaultGroupNode | TemplateGroupNode<T>;
|
|
6
|
+
export type DynamicNode<T = unknown> = DefaultDynamicNode | HtmlTemplateDynamicNode<T> | ComponentDynamicNode<T> | DefaultDynamicGroupNode | TemplateDynamicGroupNode<T>;
|
|
7
7
|
export interface SharedNode {
|
|
8
8
|
id: string;
|
|
9
9
|
point: Point;
|
|
10
10
|
draggable?: boolean;
|
|
11
|
+
parentId?: string | null;
|
|
11
12
|
}
|
|
12
13
|
export interface SharedDynamicNode {
|
|
13
14
|
id: string;
|
|
14
15
|
point: WritableSignal<Point>;
|
|
15
16
|
draggable?: WritableSignal<boolean>;
|
|
17
|
+
parentId?: WritableSignal<string | null>;
|
|
16
18
|
}
|
|
17
19
|
export interface DefaultNode extends SharedNode {
|
|
18
20
|
type: 'default';
|
|
@@ -34,6 +36,30 @@ export interface HtmlTemplateDynamicNode<T = unknown> extends SharedDynamicNode
|
|
|
34
36
|
type: 'html-template';
|
|
35
37
|
data?: WritableSignal<T>;
|
|
36
38
|
}
|
|
39
|
+
export interface DefaultGroupNode extends SharedNode {
|
|
40
|
+
type: 'default-group';
|
|
41
|
+
width: number;
|
|
42
|
+
height: number;
|
|
43
|
+
color?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface DefaultDynamicGroupNode extends SharedDynamicNode {
|
|
46
|
+
type: 'default-group';
|
|
47
|
+
width: WritableSignal<number>;
|
|
48
|
+
height: WritableSignal<number>;
|
|
49
|
+
color?: WritableSignal<string>;
|
|
50
|
+
}
|
|
51
|
+
export interface TemplateGroupNode<T> extends SharedNode {
|
|
52
|
+
type: 'template-group';
|
|
53
|
+
width: number;
|
|
54
|
+
height: number;
|
|
55
|
+
data?: T;
|
|
56
|
+
}
|
|
57
|
+
export interface TemplateDynamicGroupNode<T> extends SharedDynamicNode {
|
|
58
|
+
type: 'template-group';
|
|
59
|
+
width: WritableSignal<number>;
|
|
60
|
+
height: WritableSignal<number>;
|
|
61
|
+
data?: WritableSignal<T>;
|
|
62
|
+
}
|
|
37
63
|
export interface ComponentNode<T = unknown> extends SharedNode {
|
|
38
64
|
type: Type<CustomNodeComponent<T>>;
|
|
39
65
|
data?: T;
|
|
@@ -50,3 +76,7 @@ export declare function isTemplateStaticNode<T>(node: Node): node is HtmlTemplat
|
|
|
50
76
|
export declare function isTemplateDynamicNode<T>(node: DynamicNode): node is HtmlTemplateDynamicNode<T>;
|
|
51
77
|
export declare function isDefaultStaticNode(node: Node): node is DefaultNode;
|
|
52
78
|
export declare function isDefaultDynamicNode(node: DynamicNode): node is DefaultDynamicNode;
|
|
79
|
+
export declare function isDefaultStaticGroupNode(node: Node): node is DefaultGroupNode;
|
|
80
|
+
export declare function isDefaultDynamicGroupNode(node: DynamicNode): node is DefaultDynamicGroupNode;
|
|
81
|
+
export declare function isTemplateStaticGroupNode<T>(node: Node): node is TemplateGroupNode<T>;
|
|
82
|
+
export declare function isTemplateDynamicGroupNode<T>(node: DynamicNode): node is TemplateDynamicGroupNode<T>;
|
|
@@ -41,7 +41,7 @@ export declare class HandleModel {
|
|
|
41
41
|
x: number;
|
|
42
42
|
y: number;
|
|
43
43
|
}>;
|
|
44
|
-
parentReference:
|
|
44
|
+
parentReference: Element;
|
|
45
45
|
template: import("@angular/core").TemplateRef<any> | undefined;
|
|
46
46
|
templateContext: {
|
|
47
47
|
$implicit: {
|
|
@@ -54,4 +54,5 @@ export declare class HandleModel {
|
|
|
54
54
|
};
|
|
55
55
|
constructor(rawHandle: NodeHandle, parentNode: NodeModel);
|
|
56
56
|
updateParent(): void;
|
|
57
|
+
private getParentSize;
|
|
57
58
|
}
|
|
@@ -7,7 +7,9 @@ export declare class NodeModel<T = unknown> implements FlowEntity {
|
|
|
7
7
|
node: Node<T> | DynamicNode<T>;
|
|
8
8
|
private static defaultWidth;
|
|
9
9
|
private static defaultHeight;
|
|
10
|
+
private static defaultColor;
|
|
10
11
|
private flowSettingsService;
|
|
12
|
+
private entitiesService;
|
|
11
13
|
private internalPoint;
|
|
12
14
|
private throttledPoint$;
|
|
13
15
|
point: Signal<Point>;
|
|
@@ -19,6 +21,10 @@ export declare class NodeModel<T = unknown> implements FlowEntity {
|
|
|
19
21
|
renderOrder: import("@angular/core").WritableSignal<number>;
|
|
20
22
|
selected: import("@angular/core").WritableSignal<boolean>;
|
|
21
23
|
selected$: import("rxjs").Observable<boolean>;
|
|
24
|
+
globalPoint: Signal<{
|
|
25
|
+
x: number;
|
|
26
|
+
y: number;
|
|
27
|
+
}>;
|
|
22
28
|
pointTransform: Signal<string>;
|
|
23
29
|
sourcePosition: Signal<import("ngx-vflow").Position>;
|
|
24
30
|
targetPosition: Signal<import("ngx-vflow").Position>;
|
|
@@ -32,6 +38,9 @@ export declare class NodeModel<T = unknown> implements FlowEntity {
|
|
|
32
38
|
node: Node<T> | DynamicNode<T>;
|
|
33
39
|
_selected: boolean;
|
|
34
40
|
}>;
|
|
41
|
+
parent: Signal<NodeModel<unknown> | null>;
|
|
42
|
+
color: import("@angular/core").WritableSignal<string>;
|
|
43
|
+
private parentId;
|
|
35
44
|
constructor(node: Node<T> | DynamicNode<T>);
|
|
36
45
|
setPoint(point: Point): void;
|
|
37
46
|
/**
|
|
@@ -3,6 +3,7 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export declare class NodeRenderingService {
|
|
4
4
|
private flowEntitiesService;
|
|
5
5
|
readonly nodes: import("@angular/core").Signal<NodeModel<unknown>[]>;
|
|
6
|
+
private maxOrder;
|
|
6
7
|
pullNode(node: NodeModel): void;
|
|
7
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<NodeRenderingService, never>;
|
|
8
9
|
static ɵprov: i0.ɵɵInjectableDeclaration<NodeRenderingService>;
|
|
@@ -20,6 +20,6 @@ import * as i18 from "./directives/template.directive";
|
|
|
20
20
|
import * as i19 from "@angular/common";
|
|
21
21
|
export declare class VflowModule {
|
|
22
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<VflowModule, never>;
|
|
23
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<VflowModule, [typeof i1.VflowComponent, typeof i2.NodeComponent, typeof i3.EdgeComponent, typeof i4.EdgeLabelComponent, typeof i5.ConnectionComponent, typeof i6.HandleComponent, typeof i7.DefsComponent, typeof i8.BackgroundComponent, typeof i9.SpacePointContextDirective, typeof i10.MapContextDirective, typeof i11.RootSvgReferenceDirective, typeof i12.RootSvgContextDirective, typeof i13.HandleSizeControllerDirective, typeof i14.SelectableDirective, typeof i15.PointerDirective, typeof i16.RootPointerDirective, typeof i17.FlowSizeControllerDirective, typeof i18.NodeHtmlTemplateDirective, typeof i18.EdgeLabelHtmlTemplateDirective, typeof i18.EdgeTemplateDirective, typeof i18.ConnectionTemplateDirective, typeof i18.HandleTemplateDirective], [typeof i19.CommonModule], [typeof i1.VflowComponent, typeof i6.HandleComponent, typeof i14.SelectableDirective, typeof i18.NodeHtmlTemplateDirective, typeof i18.EdgeLabelHtmlTemplateDirective, typeof i18.EdgeTemplateDirective, typeof i18.ConnectionTemplateDirective, typeof i18.HandleTemplateDirective]>;
|
|
23
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<VflowModule, [typeof i1.VflowComponent, typeof i2.NodeComponent, typeof i3.EdgeComponent, typeof i4.EdgeLabelComponent, typeof i5.ConnectionComponent, typeof i6.HandleComponent, typeof i7.DefsComponent, typeof i8.BackgroundComponent, typeof i9.SpacePointContextDirective, typeof i10.MapContextDirective, typeof i11.RootSvgReferenceDirective, typeof i12.RootSvgContextDirective, typeof i13.HandleSizeControllerDirective, typeof i14.SelectableDirective, typeof i15.PointerDirective, typeof i16.RootPointerDirective, typeof i17.FlowSizeControllerDirective, typeof i18.NodeHtmlTemplateDirective, typeof i18.GroupNodeTemplateDirective, typeof i18.EdgeLabelHtmlTemplateDirective, typeof i18.EdgeTemplateDirective, typeof i18.ConnectionTemplateDirective, typeof i18.HandleTemplateDirective], [typeof i19.CommonModule], [typeof i1.VflowComponent, typeof i6.HandleComponent, typeof i14.SelectableDirective, typeof i18.NodeHtmlTemplateDirective, typeof i18.GroupNodeTemplateDirective, typeof i18.EdgeLabelHtmlTemplateDirective, typeof i18.EdgeTemplateDirective, typeof i18.ConnectionTemplateDirective, typeof i18.HandleTemplateDirective]>;
|
|
24
24
|
static ɵinj: i0.ɵɵInjectorDeclaration<VflowModule>;
|
|
25
25
|
}
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export * from './lib/vflow/interfaces/marker.interface';
|
|
|
11
11
|
export { ViewportState } from './lib/vflow/interfaces/viewport.interface';
|
|
12
12
|
export * from './lib/vflow/interfaces/component-node-event.interface';
|
|
13
13
|
export * from './lib/vflow/interfaces/fit-view-options.interface';
|
|
14
|
+
export * from './lib/vflow/interfaces/optimization.interface';
|
|
14
15
|
export * from './lib/vflow/types/node-change.type';
|
|
15
16
|
export * from './lib/vflow/types/edge-change.type';
|
|
16
17
|
export * from './lib/vflow/types/position.type';
|