ngx-vflow 0.11.0 → 0.12.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 +16 -13
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +5 -2
- package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +14 -2
- package/esm2022/lib/vflow/directives/flow-size-controller.directive.mjs +3 -3
- package/esm2022/lib/vflow/directives/root-pointer.directive.mjs +21 -4
- package/esm2022/lib/vflow/interfaces/node.interface.mjs +1 -1
- package/esm2022/lib/vflow/models/node.model.mjs +44 -5
- package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +265 -0
- package/esm2022/lib/vflow/services/draggable.service.mjs +2 -2
- package/esm2022/lib/vflow/services/node-accessor.service.mjs +16 -0
- package/esm2022/lib/vflow/services/node-changes.service.mjs +6 -2
- package/esm2022/lib/vflow/types/node-change.type.mjs +1 -1
- package/esm2022/lib/vflow/utils/resizable.mjs +3 -3
- package/esm2022/lib/vflow/vflow.module.mjs +9 -4
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ngx-vflow.mjs +409 -61
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/components/node/node.component.d.ts +2 -0
- package/lib/vflow/components/vflow/vflow.component.d.ts +1 -1
- package/lib/vflow/directives/changes-controller.directive.d.ts +5 -2
- package/lib/vflow/directives/root-pointer.directive.d.ts +24 -6
- package/lib/vflow/directives/space-point-context.directive.d.ts +5 -0
- package/lib/vflow/interfaces/node.interface.d.ts +10 -0
- package/lib/vflow/models/edge.model.d.ts +1 -17
- package/lib/vflow/models/node.model.d.ts +13 -2
- package/lib/vflow/public-components/resizable/resizable.component.d.ts +39 -0
- package/lib/vflow/services/node-accessor.service.d.ts +10 -0
- package/lib/vflow/services/node-changes.service.d.ts +8 -0
- package/lib/vflow/types/node-change.type.d.ts +8 -1
- package/lib/vflow/utils/resizable.d.ts +2 -1
- package/lib/vflow/vflow.module.d.ts +13 -12
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -14,6 +14,8 @@ export declare class NodeComponent implements OnInit, AfterViewInit, OnDestroy,
|
|
|
14
14
|
private selectionService;
|
|
15
15
|
private hostRef;
|
|
16
16
|
private connectionController;
|
|
17
|
+
private nodeAccessor;
|
|
18
|
+
private zone;
|
|
17
19
|
nodeModel: NodeModel;
|
|
18
20
|
nodeTemplate?: TemplateRef<any>;
|
|
19
21
|
groupNodeTemplate?: TemplateRef<any>;
|
|
@@ -158,6 +158,6 @@ export declare class VflowComponent implements OnInit {
|
|
|
158
158
|
protected trackEdges(idx: number, { edge }: EdgeModel): Edge<unknown>;
|
|
159
159
|
private setInitialNodesOrder;
|
|
160
160
|
static ɵfac: i0.ɵɵFactoryDeclaration<VflowComponent, never>;
|
|
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"; }; }]>;
|
|
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.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"; }; }]>;
|
|
162
162
|
static ngAcceptInputType_connection: i3.ConnectionSettings;
|
|
163
163
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NodeAddChange, NodeChange, NodePositionChange, NodeRemoveChange, NodeSelectedChange } from '../types/node-change.type';
|
|
1
|
+
import { NodeAddChange, NodeChange, NodePositionChange, NodeRemoveChange, NodeSelectedChange, NodeSizeChange } from '../types/node-change.type';
|
|
2
2
|
import { EdgeChangesService } from '../services/edge-changes.service';
|
|
3
3
|
import { NodesChangeService } from '../services/node-changes.service';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
@@ -14,6 +14,9 @@ export declare class ChangesControllerDirective {
|
|
|
14
14
|
onNodesChangePosition: Observable<NodePositionChange[]>;
|
|
15
15
|
onNodesChangePositionSignle: Observable<NodePositionChange>;
|
|
16
16
|
onNodesChangePositionMany: Observable<NodePositionChange[]>;
|
|
17
|
+
onNodesChangeSize: Observable<NodeSizeChange[]>;
|
|
18
|
+
onNodesChangeSizeSingle: Observable<NodeSizeChange>;
|
|
19
|
+
onNodesChangeSizeMany: Observable<NodeSizeChange[]>;
|
|
17
20
|
onNodesChangeAdd: Observable<NodeAddChange[]>;
|
|
18
21
|
onNodesChangeAddSingle: Observable<NodeAddChange>;
|
|
19
22
|
onNodesChangeAddMany: Observable<NodeAddChange[]>;
|
|
@@ -44,5 +47,5 @@ export declare class ChangesControllerDirective {
|
|
|
44
47
|
private singleChange;
|
|
45
48
|
private manyChanges;
|
|
46
49
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChangesControllerDirective, never>;
|
|
47
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ChangesControllerDirective, "[changesController]", never, {}, { "onNodesChange": "onNodesChange"; "onNodesChangePosition": "onNodesChange.position"; "onNodesChangePositionSignle": "onNodesChange.position.single"; "onNodesChangePositionMany": "onNodesChange.position.many"; "onNodesChangeAdd": "onNodesChange.add"; "onNodesChangeAddSingle": "onNodesChange.add.single"; "onNodesChangeAddMany": "onNodesChange.add.many"; "onNodesChangeRemove": "onNodesChange.remove"; "onNodesChangeRemoveSingle": "onNodesChange.remove.single"; "onNodesChangeRemoveMany": "onNodesChange.remove.many"; "onNodesChangeSelect": "onNodesChange.select"; "onNodesChangeSelectSingle": "onNodesChange.select.single"; "onNodesChangeSelectMany": "onNodesChange.select.many"; "onEdgesChange": "onEdgesChange"; "onNodesChangeDetached": "onEdgesChange.detached"; "onNodesChangeDetachedSingle": "onEdgesChange.detached.single"; "onNodesChangeDetachedMany": "onEdgesChange.detached.many"; "onEdgesChangeAdd": "onEdgesChange.add"; "onEdgeChangeAddSingle": "onEdgesChange.add.single"; "onEdgeChangeAddMany": "onEdgesChange.add.many"; "onEdgeChangeRemove": "onEdgesChange.remove"; "onEdgeChangeRemoveSingle": "onEdgesChange.remove.single"; "onEdgeChangeRemoveMany": "onEdgesChange.remove.many"; "onEdgeChangeSelect": "onEdgesChange.select"; "onEdgeChangeSelectSingle": "onEdgesChange.select.single"; "onEdgeChangeSelectMany": "onEdgesChange.select.many"; }, never, never, true, never>;
|
|
50
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ChangesControllerDirective, "[changesController]", never, {}, { "onNodesChange": "onNodesChange"; "onNodesChangePosition": "onNodesChange.position"; "onNodesChangePositionSignle": "onNodesChange.position.single"; "onNodesChangePositionMany": "onNodesChange.position.many"; "onNodesChangeSize": "onNodesChange.size"; "onNodesChangeSizeSingle": "onNodesChange.size.single"; "onNodesChangeSizeMany": "onNodesChange.size.many"; "onNodesChangeAdd": "onNodesChange.add"; "onNodesChangeAddSingle": "onNodesChange.add.single"; "onNodesChangeAddMany": "onNodesChange.add.many"; "onNodesChangeRemove": "onNodesChange.remove"; "onNodesChangeRemoveSingle": "onNodesChange.remove.single"; "onNodesChangeRemoveMany": "onNodesChange.remove.many"; "onNodesChangeSelect": "onNodesChange.select"; "onNodesChangeSelectSingle": "onNodesChange.select.single"; "onNodesChangeSelectMany": "onNodesChange.select.many"; "onEdgesChange": "onEdgesChange"; "onNodesChangeDetached": "onEdgesChange.detached"; "onNodesChangeDetachedSingle": "onEdgesChange.detached.single"; "onNodesChangeDetachedMany": "onEdgesChange.detached.many"; "onEdgesChangeAdd": "onEdgesChange.add"; "onEdgeChangeAddSingle": "onEdgesChange.add.single"; "onEdgeChangeAddMany": "onEdgesChange.add.many"; "onEdgeChangeRemove": "onEdgesChange.remove"; "onEdgeChangeRemoveSingle": "onEdgesChange.remove.single"; "onEdgeChangeRemoveMany": "onEdgesChange.remove.many"; "onEdgeChangeSelect": "onEdgesChange.select"; "onEdgeChangeSelectSingle": "onEdgesChange.select.single"; "onEdgeChangeSelectMany": "onEdgesChange.select.many"; }, never, never, true, never>;
|
|
48
51
|
}
|
|
@@ -3,33 +3,51 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export declare class RootPointerDirective {
|
|
4
4
|
private host;
|
|
5
5
|
private initialTouch$;
|
|
6
|
+
private prevTouchEvent;
|
|
6
7
|
mouseMovement$: Observable<{
|
|
7
8
|
x: number;
|
|
8
9
|
y: number;
|
|
10
|
+
movementX: number;
|
|
11
|
+
movementY: number;
|
|
12
|
+
target: EventTarget | null;
|
|
9
13
|
originalEvent: MouseEvent;
|
|
10
14
|
}>;
|
|
11
15
|
touchMovement$: Observable<{
|
|
12
16
|
x: number;
|
|
13
17
|
y: number;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}>;
|
|
17
|
-
touchEnd$: Observable<{
|
|
18
|
-
x: number;
|
|
19
|
-
y: number;
|
|
18
|
+
movementX: number;
|
|
19
|
+
movementY: number;
|
|
20
20
|
target: Element | null;
|
|
21
21
|
originalEvent: TouchEvent;
|
|
22
22
|
}>;
|
|
23
23
|
pointerMovement$: Observable<{
|
|
24
24
|
x: number;
|
|
25
25
|
y: number;
|
|
26
|
+
movementX: number;
|
|
27
|
+
movementY: number;
|
|
28
|
+
target: EventTarget | null;
|
|
26
29
|
originalEvent: MouseEvent;
|
|
27
30
|
} | {
|
|
31
|
+
x: number;
|
|
32
|
+
y: number;
|
|
33
|
+
movementX: number;
|
|
34
|
+
movementY: number;
|
|
35
|
+
target: Element | null;
|
|
36
|
+
originalEvent: TouchEvent;
|
|
37
|
+
}>;
|
|
38
|
+
touchEnd$: Observable<{
|
|
28
39
|
x: number;
|
|
29
40
|
y: number;
|
|
30
41
|
target: Element | null;
|
|
31
42
|
originalEvent: TouchEvent;
|
|
32
43
|
}>;
|
|
44
|
+
mouseUp$: Observable<{
|
|
45
|
+
x: number;
|
|
46
|
+
y: number;
|
|
47
|
+
target: EventTarget | null;
|
|
48
|
+
originalEvent: MouseEvent;
|
|
49
|
+
}>;
|
|
50
|
+
documentPointerEnd$: Observable<Event>;
|
|
33
51
|
/**
|
|
34
52
|
* We should know when user started a touch in order to not
|
|
35
53
|
* show old touch position when connection creation is started
|
|
@@ -12,10 +12,15 @@ export declare class SpacePointContextDirective {
|
|
|
12
12
|
pointerMovement: Signal<{
|
|
13
13
|
x: number;
|
|
14
14
|
y: number;
|
|
15
|
+
movementX: number;
|
|
16
|
+
movementY: number;
|
|
17
|
+
target: EventTarget | null;
|
|
15
18
|
originalEvent: MouseEvent;
|
|
16
19
|
} | {
|
|
17
20
|
x: number;
|
|
18
21
|
y: number;
|
|
22
|
+
movementX: number;
|
|
23
|
+
movementY: number;
|
|
19
24
|
target: Element | null;
|
|
20
25
|
originalEvent: TouchEvent;
|
|
21
26
|
} | undefined>;
|
|
@@ -31,22 +31,28 @@ export interface DefaultDynamicNode extends SharedDynamicNode {
|
|
|
31
31
|
export interface HtmlTemplateNode<T = unknown> extends SharedNode {
|
|
32
32
|
type: 'html-template';
|
|
33
33
|
data?: T;
|
|
34
|
+
width?: number;
|
|
35
|
+
height?: number;
|
|
34
36
|
}
|
|
35
37
|
export interface HtmlTemplateDynamicNode<T = unknown> extends SharedDynamicNode {
|
|
36
38
|
type: 'html-template';
|
|
37
39
|
data?: WritableSignal<T>;
|
|
40
|
+
width?: WritableSignal<number>;
|
|
41
|
+
height?: WritableSignal<number>;
|
|
38
42
|
}
|
|
39
43
|
export interface DefaultGroupNode extends SharedNode {
|
|
40
44
|
type: 'default-group';
|
|
41
45
|
width: number;
|
|
42
46
|
height: number;
|
|
43
47
|
color?: string;
|
|
48
|
+
resizable?: boolean;
|
|
44
49
|
}
|
|
45
50
|
export interface DefaultDynamicGroupNode extends SharedDynamicNode {
|
|
46
51
|
type: 'default-group';
|
|
47
52
|
width: WritableSignal<number>;
|
|
48
53
|
height: WritableSignal<number>;
|
|
49
54
|
color?: WritableSignal<string>;
|
|
55
|
+
resizable?: WritableSignal<boolean>;
|
|
50
56
|
}
|
|
51
57
|
export interface TemplateGroupNode<T> extends SharedNode {
|
|
52
58
|
type: 'template-group';
|
|
@@ -63,10 +69,14 @@ export interface TemplateDynamicGroupNode<T> extends SharedDynamicNode {
|
|
|
63
69
|
export interface ComponentNode<T = unknown> extends SharedNode {
|
|
64
70
|
type: Type<CustomNodeComponent<T>>;
|
|
65
71
|
data?: T;
|
|
72
|
+
width?: number;
|
|
73
|
+
height?: number;
|
|
66
74
|
}
|
|
67
75
|
export interface ComponentDynamicNode<T = unknown> extends SharedDynamicNode {
|
|
68
76
|
type: Type<CustomDynamicNodeComponent<T>>;
|
|
69
77
|
data?: WritableSignal<T>;
|
|
78
|
+
width?: WritableSignal<number>;
|
|
79
|
+
height?: WritableSignal<number>;
|
|
70
80
|
}
|
|
71
81
|
export declare function isStaticNode<T>(node: Node | DynamicNode): node is Node<T>;
|
|
72
82
|
export declare function isDynamicNode<T>(node: Node | DynamicNode): node is DynamicNode<T>;
|
|
@@ -14,23 +14,7 @@ export declare class EdgeModel implements FlowEntity {
|
|
|
14
14
|
selected$: import("rxjs").Observable<boolean>;
|
|
15
15
|
detached: import("@angular/core").Signal<boolean>;
|
|
16
16
|
detached$: import("rxjs").Observable<boolean>;
|
|
17
|
-
path: import("@angular/core").Signal<
|
|
18
|
-
path: string;
|
|
19
|
-
points: {
|
|
20
|
-
start: {
|
|
21
|
-
x: number;
|
|
22
|
-
y: number;
|
|
23
|
-
};
|
|
24
|
-
center: {
|
|
25
|
-
x: number;
|
|
26
|
-
y: number;
|
|
27
|
-
};
|
|
28
|
-
end: {
|
|
29
|
-
x: number;
|
|
30
|
-
y: number;
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
}>;
|
|
17
|
+
path: import("@angular/core").Signal<import("../interfaces/path-data.interface").PathData>;
|
|
34
18
|
edgeLabels: {
|
|
35
19
|
[position in EdgeLabelPosition]?: EdgeLabelModel;
|
|
36
20
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Signal } from '@angular/core';
|
|
1
|
+
import { Signal, TemplateRef } from '@angular/core';
|
|
2
2
|
import { DynamicNode, Node } from '../interfaces/node.interface';
|
|
3
3
|
import { HandleModel } from './handle.model';
|
|
4
4
|
import { FlowEntity } from '../interfaces/flow-entity.interface';
|
|
@@ -12,12 +12,19 @@ export declare class NodeModel<T = unknown> implements FlowEntity {
|
|
|
12
12
|
private entitiesService;
|
|
13
13
|
private internalPoint;
|
|
14
14
|
private throttledPoint$;
|
|
15
|
+
private notThrottledPoint$;
|
|
15
16
|
point: Signal<Point>;
|
|
16
17
|
point$: import("rxjs").Observable<Point>;
|
|
17
18
|
size: import("@angular/core").WritableSignal<{
|
|
18
19
|
width: number;
|
|
19
20
|
height: number;
|
|
20
21
|
}>;
|
|
22
|
+
size$: import("rxjs").Observable<{
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
}>;
|
|
26
|
+
width: Signal<number>;
|
|
27
|
+
height: Signal<number>;
|
|
21
28
|
renderOrder: import("@angular/core").WritableSignal<number>;
|
|
22
29
|
selected: import("@angular/core").WritableSignal<boolean>;
|
|
23
30
|
selected$: import("rxjs").Observable<boolean>;
|
|
@@ -39,10 +46,14 @@ export declare class NodeModel<T = unknown> implements FlowEntity {
|
|
|
39
46
|
_selected: boolean;
|
|
40
47
|
}>;
|
|
41
48
|
parent: Signal<NodeModel<unknown> | null>;
|
|
49
|
+
children: Signal<NodeModel<unknown>[]>;
|
|
42
50
|
color: import("@angular/core").WritableSignal<string>;
|
|
51
|
+
resizable: import("@angular/core").WritableSignal<boolean>;
|
|
52
|
+
resizing: import("@angular/core").WritableSignal<boolean>;
|
|
53
|
+
resizerTemplate: import("@angular/core").WritableSignal<TemplateRef<unknown> | null>;
|
|
43
54
|
private parentId;
|
|
44
55
|
constructor(node: Node<T> | DynamicNode<T>);
|
|
45
|
-
setPoint(point: Point): void;
|
|
56
|
+
setPoint(point: Point, throttle: boolean): void;
|
|
46
57
|
/**
|
|
47
58
|
* TODO find the way to implement this better
|
|
48
59
|
*/
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AfterViewInit, OnInit } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
type Side = 'top' | 'right' | 'bottom' | 'left' | 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
|
|
4
|
+
export declare class ResizableComponent implements OnInit, AfterViewInit {
|
|
5
|
+
private nodeAccessor;
|
|
6
|
+
private rootPointer;
|
|
7
|
+
private viewportService;
|
|
8
|
+
private hostRef;
|
|
9
|
+
set resizable(value: boolean | '');
|
|
10
|
+
resizerColor: string;
|
|
11
|
+
gap: number;
|
|
12
|
+
private resizer;
|
|
13
|
+
protected get model(): import("../../models/node.model").NodeModel<unknown>;
|
|
14
|
+
protected lineGap: number;
|
|
15
|
+
protected handleSize: number;
|
|
16
|
+
private resizeSide;
|
|
17
|
+
private zoom;
|
|
18
|
+
private minWidth;
|
|
19
|
+
private minHeight;
|
|
20
|
+
protected resizeOnGlobalMouseMove: import("rxjs").Subscription;
|
|
21
|
+
protected endResizeOnGlobalMouseUp: import("rxjs").Subscription;
|
|
22
|
+
ngOnInit(): void;
|
|
23
|
+
ngAfterViewInit(): void;
|
|
24
|
+
protected startResize(side: Side, event: Event): void;
|
|
25
|
+
protected resize({ movementX, movementY }: {
|
|
26
|
+
movementX: number;
|
|
27
|
+
movementY: number;
|
|
28
|
+
}): void;
|
|
29
|
+
protected endResize(): void;
|
|
30
|
+
private getMaxWidth;
|
|
31
|
+
private getMaxHeight;
|
|
32
|
+
private getMinX;
|
|
33
|
+
private getMinY;
|
|
34
|
+
private getMaxX;
|
|
35
|
+
private getMaxY;
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ResizableComponent, never>;
|
|
37
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ResizableComponent, "[resizable]", never, { "resizable": { "alias": "resizable"; "required": false; }; "resizerColor": { "alias": "resizerColor"; "required": false; }; "gap": { "alias": "gap"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NodeModel } from '../models/node.model';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Service to fix cyclic dependency between node and resizable component
|
|
5
|
+
*/
|
|
6
|
+
export declare class NodeAccessorService {
|
|
7
|
+
model: import("@angular/core").WritableSignal<NodeModel<unknown> | null>;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NodeAccessorService, never>;
|
|
9
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NodeAccessorService>;
|
|
10
|
+
}
|
|
@@ -9,6 +9,14 @@ export declare class NodesChangeService {
|
|
|
9
9
|
id: string;
|
|
10
10
|
point: import("ngx-vflow").Point;
|
|
11
11
|
}[]>;
|
|
12
|
+
protected nodeSizeChange$: Observable<{
|
|
13
|
+
type: "size";
|
|
14
|
+
id: string;
|
|
15
|
+
size: {
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
};
|
|
19
|
+
}[]>;
|
|
12
20
|
protected nodeAddChange$: Observable<{
|
|
13
21
|
type: "add";
|
|
14
22
|
id: string;
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { Point } from "../interfaces/point.interface";
|
|
2
|
-
export type NodeChange = NodePositionChange | NodeAddChange | NodeRemoveChange | NodeSelectedChange;
|
|
2
|
+
export type NodeChange = NodePositionChange | NodeSizeChange | NodeAddChange | NodeRemoveChange | NodeSelectedChange;
|
|
3
3
|
export interface NodePositionChange extends NodeChangeShared {
|
|
4
4
|
type: 'position';
|
|
5
5
|
point: Point;
|
|
6
6
|
}
|
|
7
|
+
export interface NodeSizeChange extends NodeChangeShared {
|
|
8
|
+
type: 'size';
|
|
9
|
+
size: {
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
7
14
|
export interface NodeAddChange extends NodeChangeShared {
|
|
8
15
|
type: 'add';
|
|
9
16
|
}
|
|
@@ -7,19 +7,20 @@ import * as i5 from "./components/connection/connection.component";
|
|
|
7
7
|
import * as i6 from "./components/handle/handle.component";
|
|
8
8
|
import * as i7 from "./components/defs/defs.component";
|
|
9
9
|
import * as i8 from "./components/background/background.component";
|
|
10
|
-
import * as i9 from "./
|
|
11
|
-
import * as i10 from "./directives/
|
|
12
|
-
import * as i11 from "./directives/
|
|
13
|
-
import * as i12 from "./directives/
|
|
14
|
-
import * as i13 from "./directives/
|
|
15
|
-
import * as i14 from "./directives/
|
|
16
|
-
import * as i15 from "./directives/
|
|
17
|
-
import * as i16 from "./directives/
|
|
18
|
-
import * as i17 from "./directives/
|
|
19
|
-
import * as i18 from "./directives/
|
|
20
|
-
import * as i19 from "
|
|
10
|
+
import * as i9 from "./public-components/resizable/resizable.component";
|
|
11
|
+
import * as i10 from "./directives/space-point-context.directive";
|
|
12
|
+
import * as i11 from "./directives/map-context.directive";
|
|
13
|
+
import * as i12 from "./directives/reference.directive";
|
|
14
|
+
import * as i13 from "./directives/root-svg-context.directive";
|
|
15
|
+
import * as i14 from "./directives/handle-size-controller.directive";
|
|
16
|
+
import * as i15 from "./directives/selectable.directive";
|
|
17
|
+
import * as i16 from "./directives/pointer.directive";
|
|
18
|
+
import * as i17 from "./directives/root-pointer.directive";
|
|
19
|
+
import * as i18 from "./directives/flow-size-controller.directive";
|
|
20
|
+
import * as i19 from "./directives/template.directive";
|
|
21
|
+
import * as i20 from "@angular/common";
|
|
21
22
|
export declare class VflowModule {
|
|
22
23
|
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.
|
|
24
|
+
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.ResizableComponent, typeof i10.SpacePointContextDirective, typeof i11.MapContextDirective, typeof i12.RootSvgReferenceDirective, typeof i13.RootSvgContextDirective, typeof i14.HandleSizeControllerDirective, typeof i15.SelectableDirective, typeof i16.PointerDirective, typeof i17.RootPointerDirective, typeof i18.FlowSizeControllerDirective, typeof i19.NodeHtmlTemplateDirective, typeof i19.GroupNodeTemplateDirective, typeof i19.EdgeLabelHtmlTemplateDirective, typeof i19.EdgeTemplateDirective, typeof i19.ConnectionTemplateDirective, typeof i19.HandleTemplateDirective], [typeof i20.CommonModule], [typeof i1.VflowComponent, typeof i6.HandleComponent, typeof i9.ResizableComponent, typeof i15.SelectableDirective, typeof i19.NodeHtmlTemplateDirective, typeof i19.GroupNodeTemplateDirective, typeof i19.EdgeLabelHtmlTemplateDirective, typeof i19.EdgeTemplateDirective, typeof i19.ConnectionTemplateDirective, typeof i19.HandleTemplateDirective]>;
|
|
24
25
|
static ɵinj: i0.ɵɵInjectorDeclaration<VflowModule>;
|
|
25
26
|
}
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export * from './lib/vflow/components/vflow/vflow.component';
|
|
|
21
21
|
export * from './lib/vflow/components/handle/handle.component';
|
|
22
22
|
export * from './lib/vflow/public-components/custom-node.component';
|
|
23
23
|
export * from './lib/vflow/public-components/custom-dynamic-node.component';
|
|
24
|
+
export * from './lib/vflow/public-components/resizable/resizable.component';
|
|
24
25
|
export * from './lib/vflow/directives/template.directive';
|
|
25
26
|
export * from './lib/vflow/directives/connection-controller.directive';
|
|
26
27
|
export * from './lib/vflow/directives/changes-controller.directive';
|