ngx-vflow 0.15.0 → 1.0.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/README.md +8 -1
- package/esm2022/lib/vflow/components/background/background.component.mjs +75 -8
- package/esm2022/lib/vflow/components/connection/connection.component.mjs +67 -49
- package/esm2022/lib/vflow/components/custom-node-base/custom-node-base.component.mjs +32 -25
- package/esm2022/lib/vflow/components/default-node/default-node.component.mjs +9 -11
- package/esm2022/lib/vflow/components/defs/defs.component.mjs +9 -12
- package/esm2022/lib/vflow/components/edge/edge.component.mjs +21 -24
- package/esm2022/lib/vflow/components/edge-label/edge-label.component.mjs +26 -31
- package/esm2022/lib/vflow/components/node/node.component.mjs +54 -50
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +95 -90
- package/esm2022/lib/vflow/decorators/run-in-injection-context.decorator.mjs +1 -1
- package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +41 -125
- package/esm2022/lib/vflow/directives/connection-controller.directive.mjs +16 -16
- package/esm2022/lib/vflow/directives/drag-handle.directive.mjs +7 -6
- package/esm2022/lib/vflow/directives/flow-size-controller.directive.mjs +7 -6
- package/esm2022/lib/vflow/directives/handle-size-controller.directive.mjs +15 -12
- package/esm2022/lib/vflow/directives/map-context.directive.mjs +8 -5
- package/esm2022/lib/vflow/directives/pointer.directive.mjs +18 -19
- package/esm2022/lib/vflow/directives/reference.directive.mjs +6 -5
- package/esm2022/lib/vflow/directives/root-pointer.directive.mjs +8 -5
- package/esm2022/lib/vflow/directives/root-svg-context.directive.mjs +8 -5
- package/esm2022/lib/vflow/directives/selectable.directive.mjs +10 -7
- package/esm2022/lib/vflow/directives/space-point-context.directive.mjs +8 -5
- package/esm2022/lib/vflow/directives/template.directive.mjs +43 -25
- package/esm2022/lib/vflow/interfaces/component-node-event.interface.mjs +1 -1
- package/esm2022/lib/vflow/interfaces/edge.interface.mjs +1 -1
- package/esm2022/lib/vflow/interfaces/node.interface.mjs +1 -1
- package/esm2022/lib/vflow/interfaces/optimization.interface.mjs +1 -1
- package/esm2022/lib/vflow/math/edge-path/bezier-path.mjs +1 -1
- package/esm2022/lib/vflow/math/edge-path/smooth-step-path.mjs +170 -0
- package/esm2022/lib/vflow/models/connection.model.mjs +1 -1
- package/esm2022/lib/vflow/models/edge.model.mjs +6 -1
- package/esm2022/lib/vflow/models/handle.model.mjs +2 -2
- package/esm2022/lib/vflow/models/node.model.mjs +4 -10
- package/esm2022/lib/vflow/models/toolbar.model.mjs +1 -1
- package/esm2022/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.mjs +16 -10
- package/esm2022/lib/vflow/public-components/custom-node/custom-node.component.mjs +15 -10
- package/esm2022/lib/vflow/public-components/handle/handle.component.mjs +52 -0
- package/esm2022/lib/vflow/public-components/minimap/minimap.component.mjs +42 -45
- package/esm2022/lib/vflow/public-components/node-toolbar/node-toolbar.component.mjs +24 -27
- package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +60 -45
- package/esm2022/lib/vflow/services/component-event-bus.service.mjs +3 -3
- package/esm2022/lib/vflow/services/draggable.service.mjs +4 -4
- package/esm2022/lib/vflow/services/edge-changes.service.mjs +3 -3
- package/esm2022/lib/vflow/services/flow-entities.service.mjs +4 -4
- package/esm2022/lib/vflow/services/flow-settings.service.mjs +4 -10
- package/esm2022/lib/vflow/services/flow-status.service.mjs +4 -4
- package/esm2022/lib/vflow/services/handle.service.mjs +4 -4
- package/esm2022/lib/vflow/services/keyboard.service.mjs +5 -5
- package/esm2022/lib/vflow/services/node-accessor.service.mjs +3 -3
- package/esm2022/lib/vflow/services/node-changes.service.mjs +3 -3
- package/esm2022/lib/vflow/services/node-rendering.service.mjs +11 -4
- package/esm2022/lib/vflow/services/overlays.service.mjs +3 -3
- package/esm2022/lib/vflow/services/selection.service.mjs +4 -4
- package/esm2022/lib/vflow/services/viewport.service.mjs +3 -3
- package/esm2022/lib/vflow/types/background.type.mjs +1 -1
- package/esm2022/lib/vflow/utils/adjust-direction.mjs +1 -1
- package/esm2022/lib/vflow/utils/get-os.mjs +1 -1
- package/esm2022/lib/vflow/utils/is-group-node.mjs +4 -0
- package/esm2022/lib/vflow/utils/nodes.mjs +1 -1
- package/esm2022/lib/vflow/vflow.mjs +24 -0
- package/esm2022/public-api.mjs +4 -5
- package/fesm2022/ngx-vflow.mjs +1160 -1005
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/components/background/background.component.d.ts +14 -1
- package/lib/vflow/components/connection/connection.component.d.ts +3 -3
- package/lib/vflow/components/custom-node-base/custom-node-base.component.d.ts +4 -9
- package/lib/vflow/components/default-node/default-node.component.d.ts +2 -2
- package/lib/vflow/components/defs/defs.component.d.ts +2 -2
- package/lib/vflow/components/edge/edge.component.d.ts +7 -7
- package/lib/vflow/components/edge-label/edge-label.component.d.ts +9 -8
- package/lib/vflow/components/node/node.component.d.ts +5 -6
- package/lib/vflow/components/vflow/vflow.component.d.ts +19 -27
- package/lib/vflow/directives/changes-controller.directive.d.ts +29 -30
- package/lib/vflow/directives/connection-controller.directive.d.ts +1 -2
- package/lib/vflow/directives/drag-handle.directive.d.ts +1 -1
- package/lib/vflow/directives/flow-size-controller.directive.d.ts +1 -1
- package/lib/vflow/directives/handle-size-controller.directive.d.ts +2 -2
- package/lib/vflow/directives/map-context.directive.d.ts +1 -1
- package/lib/vflow/directives/pointer.directive.d.ts +9 -6
- package/lib/vflow/directives/reference.directive.d.ts +1 -1
- package/lib/vflow/directives/root-pointer.directive.d.ts +1 -1
- package/lib/vflow/directives/root-svg-context.directive.d.ts +1 -1
- package/lib/vflow/directives/selectable.directive.d.ts +1 -1
- package/lib/vflow/directives/space-point-context.directive.d.ts +1 -1
- package/lib/vflow/directives/template.directive.d.ts +6 -6
- package/lib/vflow/interfaces/component-node-event.interface.d.ts +3 -3
- package/lib/vflow/interfaces/edge.interface.d.ts +1 -1
- package/lib/vflow/interfaces/node.interface.d.ts +14 -14
- package/lib/vflow/interfaces/optimization.interface.d.ts +7 -1
- package/lib/vflow/math/edge-path/smooth-step-path.d.ts +5 -0
- package/lib/vflow/models/edge.model.d.ts +1 -17
- package/lib/vflow/models/handle.model.d.ts +4 -4
- package/lib/vflow/models/node.model.d.ts +2 -5
- package/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.d.ts +3 -3
- package/lib/vflow/public-components/custom-node/custom-node.component.d.ts +3 -3
- package/lib/vflow/{components → public-components}/handle/handle.component.d.ts +5 -5
- package/lib/vflow/public-components/minimap/minimap.component.d.ts +8 -10
- package/lib/vflow/public-components/node-toolbar/node-toolbar.component.d.ts +6 -5
- package/lib/vflow/public-components/resizable/resizable.component.d.ts +5 -4
- package/lib/vflow/services/flow-settings.service.d.ts +0 -7
- package/lib/vflow/services/node-rendering.service.d.ts +2 -0
- package/lib/vflow/types/background.type.d.ts +24 -1
- package/lib/vflow/utils/is-group-node.d.ts +2 -0
- package/lib/vflow/utils/reference-keeper.d.ts +1 -1
- package/lib/vflow/vflow.d.ts +9 -0
- package/package.json +3 -3
- package/public-api.d.ts +2 -3
- package/esm2022/lib/vflow/components/handle/handle.component.mjs +0 -49
- package/esm2022/lib/vflow/interfaces/handle-positions.interface.mjs +0 -2
- package/esm2022/lib/vflow/vflow.module.mjs +0 -121
- package/lib/vflow/interfaces/handle-positions.interface.d.ts +0 -5
- package/lib/vflow/vflow.module.d.ts +0 -30
|
@@ -2,8 +2,8 @@ import { Type, WritableSignal } from "@angular/core";
|
|
|
2
2
|
import { Point } from "./point.interface";
|
|
3
3
|
import { CustomNodeComponent } from "../public-components/custom-node/custom-node.component";
|
|
4
4
|
import { CustomDynamicNodeComponent } from "../public-components/custom-dynamic-node/custom-dynamic-node.component";
|
|
5
|
-
export type Node<T =
|
|
6
|
-
export type DynamicNode<T =
|
|
5
|
+
export type Node<T = any> = DefaultNode | HtmlTemplateNode<T> | ComponentNode<T> | DefaultGroupNode | TemplateGroupNode<T>;
|
|
6
|
+
export type DynamicNode<T = any> = DefaultDynamicNode | HtmlTemplateDynamicNode<T> | ComponentDynamicNode<T> | DefaultDynamicGroupNode | TemplateDynamicGroupNode<T>;
|
|
7
7
|
export interface SharedNode {
|
|
8
8
|
id: string;
|
|
9
9
|
point: Point;
|
|
@@ -28,13 +28,13 @@ export interface DefaultDynamicNode extends SharedDynamicNode {
|
|
|
28
28
|
width?: WritableSignal<number>;
|
|
29
29
|
height?: WritableSignal<number>;
|
|
30
30
|
}
|
|
31
|
-
export interface HtmlTemplateNode<T =
|
|
31
|
+
export interface HtmlTemplateNode<T = any> extends SharedNode {
|
|
32
32
|
type: 'html-template';
|
|
33
33
|
data?: T;
|
|
34
34
|
width?: number;
|
|
35
35
|
height?: number;
|
|
36
36
|
}
|
|
37
|
-
export interface HtmlTemplateDynamicNode<T =
|
|
37
|
+
export interface HtmlTemplateDynamicNode<T = any> extends SharedDynamicNode {
|
|
38
38
|
type: 'html-template';
|
|
39
39
|
data?: WritableSignal<T>;
|
|
40
40
|
width?: WritableSignal<number>;
|
|
@@ -66,27 +66,27 @@ export interface TemplateDynamicGroupNode<T> extends SharedDynamicNode {
|
|
|
66
66
|
height: WritableSignal<number>;
|
|
67
67
|
data?: WritableSignal<T>;
|
|
68
68
|
}
|
|
69
|
-
export interface ComponentNode<T =
|
|
69
|
+
export interface ComponentNode<T = any> extends SharedNode {
|
|
70
70
|
type: Type<CustomNodeComponent<T>>;
|
|
71
71
|
data?: T;
|
|
72
72
|
width?: number;
|
|
73
73
|
height?: number;
|
|
74
74
|
}
|
|
75
|
-
export interface ComponentDynamicNode<T =
|
|
75
|
+
export interface ComponentDynamicNode<T = any> extends SharedDynamicNode {
|
|
76
76
|
type: Type<CustomDynamicNodeComponent<T>>;
|
|
77
77
|
data?: WritableSignal<T>;
|
|
78
78
|
width?: WritableSignal<number>;
|
|
79
79
|
height?: WritableSignal<number>;
|
|
80
80
|
}
|
|
81
|
-
export declare function isStaticNode<T>(node: Node | DynamicNode): node is Node<T>;
|
|
82
|
-
export declare function isDynamicNode<T>(node: Node | DynamicNode): node is DynamicNode<T>;
|
|
83
|
-
export declare function isComponentStaticNode<T>(node: Node): node is ComponentNode<T>;
|
|
84
|
-
export declare function isComponentDynamicNode<T>(node: DynamicNode): node is ComponentDynamicNode<T>;
|
|
85
|
-
export declare function isTemplateStaticNode<T>(node: Node): node is HtmlTemplateNode<T>;
|
|
86
|
-
export declare function isTemplateDynamicNode<T>(node: DynamicNode): node is HtmlTemplateDynamicNode<T>;
|
|
81
|
+
export declare function isStaticNode<T>(node: Node<T> | DynamicNode<T>): node is Node<T>;
|
|
82
|
+
export declare function isDynamicNode<T>(node: Node<T> | DynamicNode<T>): node is DynamicNode<T>;
|
|
83
|
+
export declare function isComponentStaticNode<T>(node: Node<T>): node is ComponentNode<T>;
|
|
84
|
+
export declare function isComponentDynamicNode<T>(node: DynamicNode<T>): node is ComponentDynamicNode<T>;
|
|
85
|
+
export declare function isTemplateStaticNode<T>(node: Node<T>): node is HtmlTemplateNode<T>;
|
|
86
|
+
export declare function isTemplateDynamicNode<T>(node: DynamicNode<T>): node is HtmlTemplateDynamicNode<T>;
|
|
87
87
|
export declare function isDefaultStaticNode(node: Node): node is DefaultNode;
|
|
88
88
|
export declare function isDefaultDynamicNode(node: DynamicNode): node is DefaultDynamicNode;
|
|
89
89
|
export declare function isDefaultStaticGroupNode(node: Node): node is DefaultGroupNode;
|
|
90
90
|
export declare function isDefaultDynamicGroupNode(node: DynamicNode): node is DefaultDynamicGroupNode;
|
|
91
|
-
export declare function isTemplateStaticGroupNode<T>(node: Node): node is TemplateGroupNode<T>;
|
|
92
|
-
export declare function isTemplateDynamicGroupNode<T>(node: DynamicNode): node is TemplateDynamicGroupNode<T>;
|
|
91
|
+
export declare function isTemplateStaticGroupNode<T>(node: Node<T>): node is TemplateGroupNode<T>;
|
|
92
|
+
export declare function isTemplateDynamicGroupNode<T>(node: DynamicNode<T>): node is TemplateDynamicGroupNode<T>;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
export interface Optimization {
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* If true, the layer with groups will be placed behind the edges layer.
|
|
4
|
+
* This approach fixes the issue when you can't select an edge inside group.
|
|
5
|
+
*
|
|
6
|
+
* @default false
|
|
7
|
+
*/
|
|
8
|
+
detachedGroupsLayer: boolean;
|
|
3
9
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { PathData } from '../../interfaces/path-data.interface';
|
|
2
|
+
import { Point } from '../../interfaces/point.interface';
|
|
3
|
+
import { Position } from '../../types/position.type';
|
|
4
|
+
export declare function getEdgeCenter(source: Point, target: Point): [number, number, number, number];
|
|
5
|
+
export declare function smoothStepPath(source: Point, target: Point, sourcePosition: Position, targetPosition: Position, borderRadius?: number): PathData;
|
|
@@ -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
|
};
|
|
@@ -31,15 +31,15 @@ export declare class HandleModel {
|
|
|
31
31
|
width: number;
|
|
32
32
|
height: number;
|
|
33
33
|
} | {
|
|
34
|
-
width:
|
|
35
|
-
height:
|
|
34
|
+
readonly width: 0;
|
|
35
|
+
readonly height: 0;
|
|
36
36
|
}>;
|
|
37
37
|
parentPosition: import("@angular/core").Signal<{
|
|
38
38
|
x: number;
|
|
39
39
|
y: number;
|
|
40
40
|
} | {
|
|
41
|
-
x:
|
|
42
|
-
y:
|
|
41
|
+
readonly x: 0;
|
|
42
|
+
readonly y: 0;
|
|
43
43
|
}>;
|
|
44
44
|
parentReference: Element;
|
|
45
45
|
template: import("@angular/core").TemplateRef<any> | undefined;
|
|
@@ -33,8 +33,6 @@ export declare class NodeModel<T = unknown> implements FlowEntity {
|
|
|
33
33
|
y: number;
|
|
34
34
|
}>;
|
|
35
35
|
pointTransform: Signal<string>;
|
|
36
|
-
sourcePosition: Signal<import("ngx-vflow").Position>;
|
|
37
|
-
targetPosition: Signal<import("ngx-vflow").Position>;
|
|
38
36
|
handles: import("@angular/core").WritableSignal<HandleModel[]>;
|
|
39
37
|
handles$: import("rxjs").Observable<HandleModel[]>;
|
|
40
38
|
draggable: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -42,10 +40,9 @@ export declare class NodeModel<T = unknown> implements FlowEntity {
|
|
|
42
40
|
readonly magnetRadius = 20;
|
|
43
41
|
isComponentType: boolean;
|
|
44
42
|
text: Signal<string>;
|
|
45
|
-
componentTypeInputs:
|
|
43
|
+
componentTypeInputs: {
|
|
46
44
|
node: Node<T> | DynamicNode<T>;
|
|
47
|
-
|
|
48
|
-
}>;
|
|
45
|
+
};
|
|
49
46
|
parent: Signal<NodeModel<unknown> | null>;
|
|
50
47
|
children: Signal<NodeModel<unknown>[]>;
|
|
51
48
|
color: import("@angular/core").WritableSignal<string>;
|
|
@@ -2,12 +2,12 @@ import { OnInit } from "@angular/core";
|
|
|
2
2
|
import { ComponentDynamicNode } from '../../interfaces/node.interface';
|
|
3
3
|
import { CustomNodeBaseComponent } from "../../components/custom-node-base/custom-node-base.component";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare abstract class CustomDynamicNodeComponent<T =
|
|
5
|
+
export declare abstract class CustomDynamicNodeComponent<T = any> extends CustomNodeBaseComponent<T> implements OnInit {
|
|
6
6
|
/**
|
|
7
7
|
* Reference to node bound to this component
|
|
8
8
|
*/
|
|
9
|
-
node: ComponentDynamicNode<T
|
|
9
|
+
node: import("@angular/core").InputSignal<ComponentDynamicNode<T>>;
|
|
10
10
|
ngOnInit(): void;
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<CustomDynamicNodeComponent<any>, never>;
|
|
12
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<CustomDynamicNodeComponent<any>, never, never, { "node": { "alias": "node"; "required":
|
|
12
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CustomDynamicNodeComponent<any>, never, never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, false, never>;
|
|
13
13
|
}
|
|
@@ -2,12 +2,12 @@ import { OnInit } from "@angular/core";
|
|
|
2
2
|
import { ComponentNode } from '../../interfaces/node.interface';
|
|
3
3
|
import { CustomNodeBaseComponent } from "../../components/custom-node-base/custom-node-base.component";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare abstract class CustomNodeComponent<T =
|
|
5
|
+
export declare abstract class CustomNodeComponent<T = any> extends CustomNodeBaseComponent<T> implements OnInit {
|
|
6
6
|
/**
|
|
7
7
|
* Reference to node bound to this component
|
|
8
8
|
*/
|
|
9
|
-
node: ComponentNode<T
|
|
9
|
+
node: import("@angular/core").InputSignal<ComponentNode<T>>;
|
|
10
10
|
ngOnInit(): void;
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<CustomNodeComponent<any>, never>;
|
|
12
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<CustomNodeComponent<any>, never, never, { "node": { "alias": "node"; "required":
|
|
12
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CustomNodeComponent<any>, never, never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, false, never>;
|
|
13
13
|
}
|
|
@@ -11,18 +11,18 @@ export declare class HandleComponent implements OnInit, WithInjector {
|
|
|
11
11
|
/**
|
|
12
12
|
* At what side of node this component should be placed
|
|
13
13
|
*/
|
|
14
|
-
position: Position
|
|
14
|
+
position: import("@angular/core").InputSignal<Position>;
|
|
15
15
|
/**
|
|
16
16
|
* Source or target
|
|
17
17
|
*/
|
|
18
|
-
type:
|
|
18
|
+
type: import("@angular/core").InputSignal<"source" | "target">;
|
|
19
19
|
/**
|
|
20
20
|
* Should be used if node has more than one source/target
|
|
21
21
|
*/
|
|
22
|
-
id
|
|
23
|
-
template
|
|
22
|
+
id: import("@angular/core").InputSignal<string | undefined>;
|
|
23
|
+
template: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
|
|
24
24
|
model: HandleModel;
|
|
25
25
|
ngOnInit(): void;
|
|
26
26
|
static ɵfac: i0.ɵɵFactoryDeclaration<HandleComponent, never>;
|
|
27
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<HandleComponent, "handle", never, { "position": { "alias": "position"; "required": true; }; "type": { "alias": "type"; "required": true; }; "id": { "alias": "id"; "required": false; }; "template": { "alias": "template"; "required": false; }; }, {}, never, never,
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HandleComponent, "handle", never, { "position": { "alias": "position"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": true; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
28
28
|
}
|
|
@@ -10,22 +10,22 @@ export declare class MiniMapComponent implements OnInit {
|
|
|
10
10
|
protected flowSettingsService: FlowSettingsService;
|
|
11
11
|
protected viewportService: ViewportService;
|
|
12
12
|
protected injector: Injector;
|
|
13
|
-
/**
|
|
14
|
-
* The corner of the flow where to render a mini-map
|
|
15
|
-
*/
|
|
16
|
-
set position(value: MiniMapPosition);
|
|
17
13
|
/**
|
|
18
14
|
* The color outside the viewport (invisible area)
|
|
19
15
|
*/
|
|
20
|
-
maskColor: string
|
|
16
|
+
maskColor: import("@angular/core").InputSignal<string>;
|
|
21
17
|
/**
|
|
22
18
|
* The minimap stroke color
|
|
23
19
|
*/
|
|
24
|
-
strokeColor: string
|
|
20
|
+
strokeColor: import("@angular/core").InputSignal<string>;
|
|
21
|
+
/**
|
|
22
|
+
* The corner of the flow where to render a mini-map
|
|
23
|
+
*/
|
|
24
|
+
position: import("@angular/core").InputSignal<MiniMapPosition>;
|
|
25
25
|
/**
|
|
26
26
|
* Make a minimap bigger on hover
|
|
27
27
|
*/
|
|
28
|
-
|
|
28
|
+
scaleOnHover: import("@angular/core").InputSignal<boolean>;
|
|
29
29
|
private minimap;
|
|
30
30
|
private readonly minimapOffset;
|
|
31
31
|
private readonly minimapScale;
|
|
@@ -40,10 +40,8 @@ export declare class MiniMapComponent implements OnInit {
|
|
|
40
40
|
protected viewportTransform: import("@angular/core").Signal<string>;
|
|
41
41
|
protected boundsViewport: import("@angular/core").Signal<import("ngx-vflow").ViewportState>;
|
|
42
42
|
protected minimapTransform: import("@angular/core").Signal<string>;
|
|
43
|
-
private minimapPosition;
|
|
44
|
-
private scaleOnHoverSignal;
|
|
45
43
|
ngOnInit(): void;
|
|
46
44
|
protected trackNodes(idx: number, { node }: NodeModel): import("ngx-vflow").Node<unknown> | import("ngx-vflow").DynamicNode<unknown>;
|
|
47
45
|
static ɵfac: i0.ɵɵFactoryDeclaration<MiniMapComponent, never>;
|
|
48
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MiniMapComponent, "mini-map", never, { "
|
|
46
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MiniMapComponent, "mini-map", never, { "maskColor": { "alias": "maskColor"; "required": false; "isSignal": true; }; "strokeColor": { "alias": "strokeColor"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "scaleOnHover": { "alias": "scaleOnHover"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
49
47
|
}
|
|
@@ -5,18 +5,19 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
export declare class NodeToolbarComponent implements OnInit, OnDestroy {
|
|
6
6
|
private overlaysService;
|
|
7
7
|
private nodeService;
|
|
8
|
-
|
|
9
|
-
toolbarContentTemplate: TemplateRef<unknown
|
|
8
|
+
position: import("@angular/core").InputSignal<Position>;
|
|
9
|
+
toolbarContentTemplate: import("@angular/core").Signal<TemplateRef<unknown>>;
|
|
10
10
|
protected model: ToolbarModel;
|
|
11
|
+
constructor();
|
|
11
12
|
ngOnInit(): void;
|
|
12
13
|
ngOnDestroy(): void;
|
|
13
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<NodeToolbarComponent, never>;
|
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NodeToolbarComponent, "node-toolbar", never, { "position": { "alias": "position"; "required": false; }; }, {}, never, ["*"],
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NodeToolbarComponent, "node-toolbar", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
15
16
|
}
|
|
16
17
|
export declare class NodeToolbarWrapperDirective implements OnInit {
|
|
17
18
|
private element;
|
|
18
|
-
model: ToolbarModel
|
|
19
|
+
model: import("@angular/core").InputSignal<ToolbarModel>;
|
|
19
20
|
ngOnInit(): void;
|
|
20
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<NodeToolbarWrapperDirective, never>;
|
|
21
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<NodeToolbarWrapperDirective, "[nodeToolbarWrapper]", never, { "model": { "alias": "model"; "required":
|
|
22
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NodeToolbarWrapperDirective, "[nodeToolbarWrapper]", never, { "model": { "alias": "model"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
22
23
|
}
|
|
@@ -9,9 +9,9 @@ export declare class ResizableComponent implements OnInit, AfterViewInit {
|
|
|
9
9
|
private viewportService;
|
|
10
10
|
private spacePointContext;
|
|
11
11
|
private hostRef;
|
|
12
|
-
|
|
13
|
-
resizerColor: string
|
|
14
|
-
gap: number
|
|
12
|
+
resizable: import("@angular/core").InputSignal<boolean | "" | undefined>;
|
|
13
|
+
resizerColor: import("@angular/core").InputSignal<string>;
|
|
14
|
+
gap: import("@angular/core").InputSignal<number>;
|
|
15
15
|
private resizer;
|
|
16
16
|
protected get model(): NodeModel<unknown>;
|
|
17
17
|
protected lineGap: number;
|
|
@@ -22,6 +22,7 @@ export declare class ResizableComponent implements OnInit, AfterViewInit {
|
|
|
22
22
|
private minHeight;
|
|
23
23
|
protected resizeOnGlobalMouseMove: import("rxjs").Subscription;
|
|
24
24
|
protected endResizeOnGlobalMouseUp: import("rxjs").Subscription;
|
|
25
|
+
constructor();
|
|
25
26
|
ngOnInit(): void;
|
|
26
27
|
ngAfterViewInit(): void;
|
|
27
28
|
protected startResize(side: Side, event: Event): void;
|
|
@@ -29,6 +30,6 @@ export declare class ResizableComponent implements OnInit, AfterViewInit {
|
|
|
29
30
|
protected endResize(): void;
|
|
30
31
|
private isResizeConstrained;
|
|
31
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<ResizableComponent, never>;
|
|
32
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ResizableComponent, "[resizable]", never, { "resizable": { "alias": "resizable"; "required": false; }; "resizerColor": { "alias": "resizerColor"; "required": false; }; "gap": { "alias": "gap"; "required": false; }; }, {}, never, ["*"],
|
|
33
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ResizableComponent, "[resizable]", never, { "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "resizerColor": { "alias": "resizerColor"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
33
34
|
}
|
|
34
35
|
export {};
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import { WritableSignal } from '@angular/core';
|
|
2
|
-
import { HandlePositions } from '../interfaces/handle-positions.interface';
|
|
3
2
|
import { Background } from '../types/background.type';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export declare class FlowSettingsService {
|
|
6
5
|
entitiesSelectable: WritableSignal<boolean>;
|
|
7
|
-
/**
|
|
8
|
-
* Global setting with handle positions. Nodes derive this value
|
|
9
|
-
*
|
|
10
|
-
* @deprecated
|
|
11
|
-
*/
|
|
12
|
-
handlePositions: WritableSignal<HandlePositions>;
|
|
13
6
|
/**
|
|
14
7
|
* @see {VflowComponent.view}
|
|
15
8
|
*/
|
|
@@ -3,6 +3,8 @@ 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
|
+
readonly groups: import("@angular/core").Signal<NodeModel<unknown>[]>;
|
|
7
|
+
readonly nonGroups: import("@angular/core").Signal<NodeModel<unknown>[]>;
|
|
6
8
|
private maxOrder;
|
|
7
9
|
pullNode(node: NodeModel): void;
|
|
8
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<NodeRenderingService, never>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type Background = ColorBackground | DotsBackground;
|
|
1
|
+
export type Background = ColorBackground | DotsBackground | ImageBackground;
|
|
2
2
|
export interface ColorBackground {
|
|
3
3
|
type: 'solid';
|
|
4
4
|
color: string;
|
|
@@ -22,3 +22,26 @@ export interface DotsBackground {
|
|
|
22
22
|
*/
|
|
23
23
|
backgroundColor?: string;
|
|
24
24
|
}
|
|
25
|
+
export interface ImageBackground {
|
|
26
|
+
type: 'image';
|
|
27
|
+
/**
|
|
28
|
+
* Path to image. Passes as a href to this element:
|
|
29
|
+
*
|
|
30
|
+
* https://developer.mozilla.org/en-US/docs/Web/SVG/Element/image
|
|
31
|
+
*/
|
|
32
|
+
src: string;
|
|
33
|
+
/**
|
|
34
|
+
* If true, image will be fixed on the background (not moving with the flow, zoom also doesn't affect it)
|
|
35
|
+
*/
|
|
36
|
+
fixed?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* If true, image will be repeated
|
|
39
|
+
*/
|
|
40
|
+
repeat?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Scale relative to natural image size.
|
|
43
|
+
*
|
|
44
|
+
* For example, if image is 100x100 and scale is 0.5, it will be rendered as 50x50
|
|
45
|
+
*/
|
|
46
|
+
scale?: number;
|
|
47
|
+
}
|
|
@@ -6,7 +6,7 @@ export declare class ReferenceKeeper {
|
|
|
6
6
|
/**
|
|
7
7
|
* Create new models for new node references and keep old models for old node references
|
|
8
8
|
*/
|
|
9
|
-
static nodes(newNodes: Node[] | DynamicNode[], oldNodeModels: NodeModel[]): NodeModel<unknown>[];
|
|
9
|
+
static nodes(newNodes: Node[] | DynamicNode[], oldNodeModels: NodeModel[]): (NodeModel<unknown> | NodeModel<any>)[];
|
|
10
10
|
/**
|
|
11
11
|
* Create new models for new edge references and keep old models for old edge references
|
|
12
12
|
*/
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { VflowComponent } from "./components/vflow/vflow.component";
|
|
2
|
+
import { DragHandleDirective } from "./directives/drag-handle.directive";
|
|
3
|
+
import { SelectableDirective } from "./directives/selectable.directive";
|
|
4
|
+
import { ConnectionTemplateDirective } from "./directives/template.directive";
|
|
5
|
+
import { MiniMapComponent } from "./public-components/minimap/minimap.component";
|
|
6
|
+
import { NodeToolbarComponent } from "./public-components/node-toolbar/node-toolbar.component";
|
|
7
|
+
import { ResizableComponent } from "./public-components/resizable/resizable.component";
|
|
8
|
+
import { HandleComponent } from "./public-components/handle/handle.component";
|
|
9
|
+
export declare const Vflow: (typeof ConnectionTemplateDirective | typeof ResizableComponent | typeof HandleComponent | typeof VflowComponent | typeof DragHandleDirective | typeof SelectableDirective | typeof MiniMapComponent | typeof NodeToolbarComponent)[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-vflow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://www.ngx-vflow.org/",
|
|
6
6
|
"author": "Artem Mangilev",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"type": "git"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@angular/common": "^
|
|
20
|
-
"@angular/core": "^
|
|
19
|
+
"@angular/common": "^17.3.12 || 18.x || 19.x",
|
|
20
|
+
"@angular/core": "^17.3.12 || 18.x || 19.x",
|
|
21
21
|
"d3-drag": "^3.0.0",
|
|
22
22
|
"d3-selection": "^3.0.0",
|
|
23
23
|
"d3-zoom": "^3.0.0",
|
package/public-api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './lib/vflow/vflow
|
|
1
|
+
export * from './lib/vflow/vflow';
|
|
2
2
|
export * from './lib/vflow/interfaces/node.interface';
|
|
3
3
|
export * from './lib/vflow/interfaces/point.interface';
|
|
4
4
|
export * from './lib/vflow/interfaces/edge.interface';
|
|
@@ -6,7 +6,6 @@ export * from './lib/vflow/interfaces/edge-label.interface';
|
|
|
6
6
|
export * from './lib/vflow/interfaces/connection.interface';
|
|
7
7
|
export * from './lib/vflow/interfaces/connection.interface';
|
|
8
8
|
export * from './lib/vflow/interfaces/connection-settings.interface';
|
|
9
|
-
export * from './lib/vflow/interfaces/handle-positions.interface';
|
|
10
9
|
export * from './lib/vflow/interfaces/marker.interface';
|
|
11
10
|
export { ViewportState } from './lib/vflow/interfaces/viewport.interface';
|
|
12
11
|
export * from './lib/vflow/interfaces/component-node-event.interface';
|
|
@@ -19,7 +18,7 @@ export * from './lib/vflow/types/background.type';
|
|
|
19
18
|
export * from './lib/vflow/types/connection-mode.type';
|
|
20
19
|
export * from './lib/vflow/types/keyboard-action.type';
|
|
21
20
|
export * from './lib/vflow/components/vflow/vflow.component';
|
|
22
|
-
export * from './lib/vflow/components/handle/handle.component';
|
|
21
|
+
export * from './lib/vflow/public-components/handle/handle.component';
|
|
23
22
|
export * from './lib/vflow/public-components/custom-node/custom-node.component';
|
|
24
23
|
export * from './lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component';
|
|
25
24
|
export * from './lib/vflow/public-components/resizable/resizable.component';
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, Injector, Input, inject } from '@angular/core';
|
|
3
|
-
import { HandleService } from '../../services/handle.service';
|
|
4
|
-
import { HandleModel } from '../../models/handle.model';
|
|
5
|
-
import { InjectionContext } from '../../decorators/run-in-injection-context.decorator';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class HandleComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.injector = inject(Injector);
|
|
10
|
-
this.handleService = inject(HandleService);
|
|
11
|
-
this.element = inject(ElementRef).nativeElement;
|
|
12
|
-
this.destroyRef = inject(DestroyRef);
|
|
13
|
-
}
|
|
14
|
-
ngOnInit() {
|
|
15
|
-
const node = this.handleService.node();
|
|
16
|
-
if (node) {
|
|
17
|
-
this.model = new HandleModel({
|
|
18
|
-
position: this.position,
|
|
19
|
-
type: this.type,
|
|
20
|
-
id: this.id,
|
|
21
|
-
parentReference: this.element.parentElement,
|
|
22
|
-
template: this.template
|
|
23
|
-
}, node);
|
|
24
|
-
this.handleService.createHandle(this.model);
|
|
25
|
-
requestAnimationFrame(() => this.model.updateParent());
|
|
26
|
-
this.destroyRef.onDestroy(() => this.handleService.destroyHandle(this.model));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HandleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HandleComponent, selector: "handle", inputs: { position: "position", type: "type", id: "id", template: "template" }, ngImport: i0, template: "", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31
|
-
}
|
|
32
|
-
__decorate([
|
|
33
|
-
InjectionContext
|
|
34
|
-
], HandleComponent.prototype, "ngOnInit", null);
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HandleComponent, decorators: [{
|
|
36
|
-
type: Component,
|
|
37
|
-
args: [{ selector: 'handle', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
|
|
38
|
-
}], propDecorators: { position: [{
|
|
39
|
-
type: Input,
|
|
40
|
-
args: [{ required: true }]
|
|
41
|
-
}], type: [{
|
|
42
|
-
type: Input,
|
|
43
|
-
args: [{ required: true }]
|
|
44
|
-
}], id: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], template: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}], ngOnInit: [] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9jb21wb25lbnRzL2hhbmRsZS9oYW5kbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvaGFuZGxlL2hhbmRsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWtDLE1BQU0sRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFFbkwsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWdCLE1BQU0scURBQXFELENBQUM7O0FBT3JHLE1BQU0sT0FBTyxlQUFlO0lBTDVCO1FBTVMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNyQyxZQUFPLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUE7UUFDbkUsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtLQWdEeEM7SUF0QlEsUUFBUTtRQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFdEMsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksV0FBVyxDQUMxQjtnQkFDRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYztnQkFDNUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3hCLEVBQ0QsSUFBSSxDQUNMLENBQUE7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFFM0MscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFBO1lBRXRELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1NBQzlFO0lBQ0gsQ0FBQzsrR0FuRFUsZUFBZTttR0FBZixlQUFlLDhIQ1g1QixFQUFBOztBRHlDUztJQUROLGdCQUFnQjsrQ0FzQmhCOzRGQW5EVSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFFBQVEsbUJBRUQsdUJBQXVCLENBQUMsTUFBTTs4QkFZeEMsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPbEIsSUFBSTtzQkFEVixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPbEIsRUFBRTtzQkFEUixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFNQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvcG9zaXRpb24udHlwZSc7XG5pbXBvcnQgeyBIYW5kbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IEluamVjdGlvbkNvbnRleHQsIFdpdGhJbmplY3RvciB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvcnVuLWluLWluamVjdGlvbi1jb250ZXh0LmRlY29yYXRvcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hhbmRsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9oYW5kbGUuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBIYW5kbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIFdpdGhJbmplY3RvciB7XG4gIHB1YmxpYyBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgaGFuZGxlU2VydmljZSA9IGluamVjdChIYW5kbGVTZXJ2aWNlKVxuICBwcml2YXRlIGVsZW1lbnQgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnRcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpXG5cbiAgLyoqXG4gICAqIEF0IHdoYXQgc2lkZSBvZiBub2RlIHRoaXMgY29tcG9uZW50IHNob3VsZCBiZSBwbGFjZWRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBwb3NpdGlvbiE6IFBvc2l0aW9uXG5cbiAgLyoqXG4gICAqIFNvdXJjZSBvciB0YXJnZXRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyB0eXBlITogJ3NvdXJjZScgfCAndGFyZ2V0J1xuXG4gIC8qKlxuICAgKiBTaG91bGQgYmUgdXNlZCBpZiBub2RlIGhhcyBtb3JlIHRoYW4gb25lIHNvdXJjZS90YXJnZXRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZD86IHN0cmluZ1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT5cblxuICBwdWJsaWMgbW9kZWwhOiBIYW5kbGVNb2RlbFxuXG4gIEBJbmplY3Rpb25Db250ZXh0XG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5oYW5kbGVTZXJ2aWNlLm5vZGUoKVxuXG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIHRoaXMubW9kZWwgPSBuZXcgSGFuZGxlTW9kZWwoXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgICAgcGFyZW50UmVmZXJlbmNlOiB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudCEsXG4gICAgICAgICAgdGVtcGxhdGU6IHRoaXMudGVtcGxhdGVcbiAgICAgICAgfSxcbiAgICAgICAgbm9kZVxuICAgICAgKVxuXG4gICAgICB0aGlzLmhhbmRsZVNlcnZpY2UuY3JlYXRlSGFuZGxlKHRoaXMubW9kZWwpXG5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLm1vZGVsLnVwZGF0ZVBhcmVudCgpKVxuXG4gICAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHRoaXMuaGFuZGxlU2VydmljZS5kZXN0cm95SGFuZGxlKHRoaXMubW9kZWwpKVxuICAgIH1cbiAgfVxufVxuXG4iLCIiXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLXBvc2l0aW9ucy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy9oYW5kbGUtcG9zaXRpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiLi4vdHlwZXMvcG9zaXRpb24udHlwZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhhbmRsZVBvc2l0aW9ucyB7XG4gIHNvdXJjZTogUG9zaXRpb25cbiAgdGFyZ2V0OiBQb3NpdGlvblxufVxuIl19
|