ngx-vflow 0.1.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 +24 -0
- package/esm2022/lib/vflow/components/connection/connection.component.mjs +100 -0
- package/esm2022/lib/vflow/components/defs/defs.component.mjs +19 -0
- package/esm2022/lib/vflow/components/edge/edge.component.mjs +42 -0
- package/esm2022/lib/vflow/components/edge-label/edge-label.component.mjs +58 -0
- package/esm2022/lib/vflow/components/node/node.component.mjs +146 -0
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +183 -0
- package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +34 -0
- package/esm2022/lib/vflow/directives/connection-controller.directive.mjs +36 -0
- package/esm2022/lib/vflow/directives/map-context.directive.mjs +62 -0
- package/esm2022/lib/vflow/directives/reference.directive.mjs +16 -0
- package/esm2022/lib/vflow/directives/root-svg-context.directive.mjs +26 -0
- package/esm2022/lib/vflow/directives/space-point-context.directive.mjs +29 -0
- package/esm2022/lib/vflow/directives/template.directive.mjs +58 -0
- package/esm2022/lib/vflow/interfaces/connection-settings.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/connection.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/edge-label.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/edge.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/handle-positions.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/marker.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/node.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/path-data.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/point.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/template-context.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/viewport.interface.mjs +2 -0
- package/esm2022/lib/vflow/math/edge-path/bezier-path.mjs +77 -0
- package/esm2022/lib/vflow/math/edge-path/straigh-path.mjs +18 -0
- package/esm2022/lib/vflow/math/point-on-line-by-ratio.mjs +12 -0
- package/esm2022/lib/vflow/models/connection.model.mjs +9 -0
- package/esm2022/lib/vflow/models/edge-label.model.mjs +8 -0
- package/esm2022/lib/vflow/models/edge.model.mjs +30 -0
- package/esm2022/lib/vflow/models/flow.model.mjs +16 -0
- package/esm2022/lib/vflow/models/node.model.mjs +90 -0
- package/esm2022/lib/vflow/services/draggable.service.mjs +66 -0
- package/esm2022/lib/vflow/services/edge-changes.service.mjs +38 -0
- package/esm2022/lib/vflow/services/flow-entities.service.mjs +49 -0
- package/esm2022/lib/vflow/services/flow-status.service.mjs +39 -0
- package/esm2022/lib/vflow/services/node-changes.service.mjs +32 -0
- package/esm2022/lib/vflow/services/viewport.service.mjs +32 -0
- package/esm2022/lib/vflow/types/edge-change.type.mjs +2 -0
- package/esm2022/lib/vflow/types/node-change.type.mjs +2 -0
- package/esm2022/lib/vflow/types/position.type.mjs +2 -0
- package/esm2022/lib/vflow/types/using-points.type.mjs +2 -0
- package/esm2022/lib/vflow/types/viewport-change-type.type.mjs +2 -0
- package/esm2022/lib/vflow/utils/add-nodes-to-edges.mjs +11 -0
- package/esm2022/lib/vflow/utils/hash.mjs +7 -0
- package/esm2022/lib/vflow/utils/is-defined.mjs +4 -0
- package/esm2022/lib/vflow/utils/reference-keeper.mjs +31 -0
- package/esm2022/lib/vflow/utils/round.mjs +2 -0
- package/esm2022/lib/vflow/vflow.module.mjs +68 -0
- package/esm2022/ngx-vflow.mjs +5 -0
- package/esm2022/public-api.mjs +23 -0
- package/fesm2022/ngx-vflow.mjs +1332 -0
- package/fesm2022/ngx-vflow.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/vflow/components/connection/connection.component.d.ts +20 -0
- package/lib/vflow/components/defs/defs.component.d.ts +8 -0
- package/lib/vflow/components/edge/edge.component.d.ts +16 -0
- package/lib/vflow/components/edge-label/edge-label.component.d.ts +31 -0
- package/lib/vflow/components/node/node.component.d.ts +53 -0
- package/lib/vflow/components/vflow/vflow.component.d.ts +73 -0
- package/lib/vflow/directives/changes-controller.directive.d.ts +16 -0
- package/lib/vflow/directives/connection-controller.directive.d.ts +11 -0
- package/lib/vflow/directives/map-context.directive.d.ts +19 -0
- package/lib/vflow/directives/reference.directive.d.ts +6 -0
- package/lib/vflow/directives/root-svg-context.directive.d.ts +7 -0
- package/lib/vflow/directives/space-point-context.directive.d.ts +14 -0
- package/lib/vflow/directives/template.directive.d.ts +28 -0
- package/lib/vflow/interfaces/connection-settings.interface.d.ts +10 -0
- package/lib/vflow/interfaces/connection.interface.d.ts +4 -0
- package/lib/vflow/interfaces/edge-label.interface.d.ts +6 -0
- package/lib/vflow/interfaces/edge.interface.d.ts +18 -0
- package/lib/vflow/interfaces/handle-positions.interface.d.ts +5 -0
- package/lib/vflow/interfaces/marker.interface.d.ts +9 -0
- package/lib/vflow/interfaces/node.interface.d.ts +16 -0
- package/lib/vflow/interfaces/path-data.interface.d.ts +8 -0
- package/lib/vflow/interfaces/point.interface.d.ts +4 -0
- package/lib/vflow/interfaces/template-context.interface.d.ts +10 -0
- package/lib/vflow/interfaces/viewport.interface.d.ts +9 -0
- package/lib/vflow/math/edge-path/bezier-path.d.ts +5 -0
- package/lib/vflow/math/edge-path/straigh-path.d.ts +4 -0
- package/lib/vflow/math/point-on-line-by-ratio.d.ts +7 -0
- package/lib/vflow/models/connection.model.d.ts +9 -0
- package/lib/vflow/models/edge-label.model.d.ts +9 -0
- package/lib/vflow/models/edge.model.d.ts +17 -0
- package/lib/vflow/models/flow.model.d.ts +14 -0
- package/lib/vflow/models/node.model.d.ts +70 -0
- package/lib/vflow/services/draggable.service.d.ts +32 -0
- package/lib/vflow/services/edge-changes.service.d.ts +22 -0
- package/lib/vflow/services/flow-entities.service.d.ts +15 -0
- package/lib/vflow/services/flow-status.service.d.ts +43 -0
- package/lib/vflow/services/node-changes.service.d.ts +26 -0
- package/lib/vflow/services/viewport.service.d.ts +24 -0
- package/lib/vflow/types/edge-change.type.d.ts +14 -0
- package/lib/vflow/types/node-change.type.d.ts +16 -0
- package/lib/vflow/types/position.type.d.ts +1 -0
- package/lib/vflow/types/using-points.type.d.ts +5 -0
- package/lib/vflow/types/viewport-change-type.type.d.ts +3 -0
- package/lib/vflow/utils/add-nodes-to-edges.d.ts +3 -0
- package/lib/vflow/utils/hash.d.ts +1 -0
- package/lib/vflow/utils/is-defined.d.ts +1 -0
- package/lib/vflow/utils/reference-keeper.d.ts +14 -0
- package/lib/vflow/utils/round.d.ts +1 -0
- package/lib/vflow/vflow.module.d.ts +18 -0
- package/package.json +25 -0
- package/public-api.d.ts +18 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, Injector, Input, ViewChild, inject, runInInjectionContext } from '@angular/core';
|
|
2
|
+
import { MapContextDirective } from '../../directives/map-context.directive';
|
|
3
|
+
import { DraggableService } from '../../services/draggable.service';
|
|
4
|
+
import { ViewportService } from '../../services/viewport.service';
|
|
5
|
+
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
6
|
+
import { ConnectionTemplateDirective, EdgeLabelHtmlTemplateDirective, EdgeTemplateDirective, HandleTemplateDirective, NodeHtmlTemplateDirective } from '../../directives/template.directive';
|
|
7
|
+
import { addNodesToEdges } from '../../utils/add-nodes-to-edges';
|
|
8
|
+
import { FlowModel } from '../../models/flow.model';
|
|
9
|
+
import { skip } from 'rxjs';
|
|
10
|
+
import { FlowStatusService } from '../../services/flow-status.service';
|
|
11
|
+
import { ConnectionControllerDirective } from '../../directives/connection-controller.directive';
|
|
12
|
+
import { FlowEntitiesService } from '../../services/flow-entities.service';
|
|
13
|
+
import { ConnectionModel } from '../../models/connection.model';
|
|
14
|
+
import { ReferenceKeeper } from '../../utils/reference-keeper';
|
|
15
|
+
import { NodesChangeService } from '../../services/node-changes.service';
|
|
16
|
+
import { EdgeChangesService } from '../../services/edge-changes.service';
|
|
17
|
+
import { ChangesControllerDirective } from '../../directives/changes-controller.directive';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "../../directives/connection-controller.directive";
|
|
20
|
+
import * as i2 from "../../directives/changes-controller.directive";
|
|
21
|
+
import * as i3 from "@angular/common";
|
|
22
|
+
import * as i4 from "../node/node.component";
|
|
23
|
+
import * as i5 from "../edge/edge.component";
|
|
24
|
+
import * as i6 from "../connection/connection.component";
|
|
25
|
+
import * as i7 from "../defs/defs.component";
|
|
26
|
+
import * as i8 from "../../directives/space-point-context.directive";
|
|
27
|
+
import * as i9 from "../../directives/map-context.directive";
|
|
28
|
+
import * as i10 from "../../directives/reference.directive";
|
|
29
|
+
import * as i11 from "../../directives/root-svg-context.directive";
|
|
30
|
+
const connectionControllerHostDirective = {
|
|
31
|
+
directive: ConnectionControllerDirective,
|
|
32
|
+
outputs: ['onConnect']
|
|
33
|
+
};
|
|
34
|
+
const changesControllerHostDirective = {
|
|
35
|
+
directive: ChangesControllerDirective,
|
|
36
|
+
outputs: ['onNodesChange', 'onEdgesChange']
|
|
37
|
+
};
|
|
38
|
+
export class VflowComponent {
|
|
39
|
+
constructor() {
|
|
40
|
+
// #region DI
|
|
41
|
+
this.viewportService = inject(ViewportService);
|
|
42
|
+
this.flowEntitiesService = inject(FlowEntitiesService);
|
|
43
|
+
this.nodesChangeService = inject(NodesChangeService);
|
|
44
|
+
this.edgesChangeService = inject(EdgeChangesService);
|
|
45
|
+
this.injector = inject(Injector);
|
|
46
|
+
this.minZoom = 0.5;
|
|
47
|
+
this.maxZoom = 3;
|
|
48
|
+
this.background = '#FFFFFF';
|
|
49
|
+
// #endregion
|
|
50
|
+
// #region SIGNAL_API
|
|
51
|
+
this.viewport = this.viewportService.readableViewport.asReadonly();
|
|
52
|
+
this.nodesChange = toSignal(this.nodesChangeService.changes$, { initialValue: [] });
|
|
53
|
+
this.edgesChange = toSignal(this.edgesChangeService.changes$, { initialValue: [] });
|
|
54
|
+
// #endregion
|
|
55
|
+
// #region RX_API
|
|
56
|
+
this.viewportChanges$ = toObservable(this.viewportService.readableViewport)
|
|
57
|
+
.pipe(skip(1)); // skip default value that set by signal
|
|
58
|
+
this.nodesChange$ = this.nodesChangeService.changes$;
|
|
59
|
+
this.edgesChange$ = this.edgesChangeService.changes$;
|
|
60
|
+
// #endregion
|
|
61
|
+
// TODO: probably better to make it injectable
|
|
62
|
+
this.flowModel = new FlowModel();
|
|
63
|
+
this.markers = this.flowEntitiesService.markers;
|
|
64
|
+
}
|
|
65
|
+
// #endregion
|
|
66
|
+
// #region SETTINGS
|
|
67
|
+
/**
|
|
68
|
+
* Size for flow view
|
|
69
|
+
*
|
|
70
|
+
* accepts
|
|
71
|
+
* - absolute size in format [width, height] or
|
|
72
|
+
* - 'auto' to compute size based on parent element size
|
|
73
|
+
*/
|
|
74
|
+
set view(view) {
|
|
75
|
+
this.flowModel.view.set(view);
|
|
76
|
+
}
|
|
77
|
+
set handlePositions(handlePositions) {
|
|
78
|
+
this.flowModel.handlePositions.set(handlePositions);
|
|
79
|
+
}
|
|
80
|
+
set connection(connection) { this.flowEntitiesService.connection.set(connection); }
|
|
81
|
+
get connection() { return this.flowEntitiesService.connection(); }
|
|
82
|
+
// #endregion
|
|
83
|
+
// #region MAIN_INPUTS
|
|
84
|
+
set nodes(newNodes) {
|
|
85
|
+
const newModels = runInInjectionContext(this.injector, () => ReferenceKeeper.nodes(newNodes, this.flowEntitiesService.nodes()));
|
|
86
|
+
// TODO better to solve this by DI
|
|
87
|
+
bindFlowToNodes(this.flowModel, newModels);
|
|
88
|
+
// quick and dirty binding nodes to edges
|
|
89
|
+
addNodesToEdges(newModels, this.flowEntitiesService.edges());
|
|
90
|
+
this.flowEntitiesService.nodes.set(newModels);
|
|
91
|
+
}
|
|
92
|
+
get nodeModels() { return this.flowEntitiesService.nodes(); }
|
|
93
|
+
set edges(newEdges) {
|
|
94
|
+
const newModels = ReferenceKeeper.edges(newEdges, this.flowEntitiesService.edges());
|
|
95
|
+
// quick and dirty binding nodes to edges
|
|
96
|
+
addNodesToEdges(this.nodeModels, newModels);
|
|
97
|
+
this.flowEntitiesService.edges.set(newModels);
|
|
98
|
+
}
|
|
99
|
+
get edgeModels() { return this.flowEntitiesService.validEdges(); }
|
|
100
|
+
// #region METHODS_API
|
|
101
|
+
viewportTo(viewport) {
|
|
102
|
+
this.viewportService.writableViewport.set({ changeType: 'absolute', state: viewport });
|
|
103
|
+
}
|
|
104
|
+
zoomTo(zoom) {
|
|
105
|
+
this.viewportService.writableViewport.set({ changeType: 'absolute', state: { zoom } });
|
|
106
|
+
}
|
|
107
|
+
panTo(point) {
|
|
108
|
+
this.viewportService.writableViewport.set({ changeType: 'absolute', state: point });
|
|
109
|
+
}
|
|
110
|
+
getNode(id) {
|
|
111
|
+
return this.flowEntitiesService.getNode(id)?.node;
|
|
112
|
+
}
|
|
113
|
+
// #endregion
|
|
114
|
+
trackNodes(idx, { node }) {
|
|
115
|
+
return node.id;
|
|
116
|
+
}
|
|
117
|
+
trackEdges(idx, { edge }) {
|
|
118
|
+
return edge.id;
|
|
119
|
+
}
|
|
120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VflowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: VflowComponent, selector: "vflow", inputs: { view: "view", minZoom: "minZoom", maxZoom: "maxZoom", handlePositions: "handlePositions", background: "background", connection: ["connection", "connection", (settings) => new ConnectionModel(settings)], nodes: "nodes", edges: "edges" }, providers: [
|
|
122
|
+
DraggableService,
|
|
123
|
+
ViewportService,
|
|
124
|
+
FlowStatusService,
|
|
125
|
+
FlowEntitiesService,
|
|
126
|
+
NodesChangeService,
|
|
127
|
+
EdgeChangesService
|
|
128
|
+
], queries: [{ propertyName: "nodeHtmlDirective", first: true, predicate: NodeHtmlTemplateDirective, descendants: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateDirective, descendants: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateDirective, descendants: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateDirective, descendants: true }, { propertyName: "handleTemplateDirective", first: true, predicate: HandleTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "mapContext", first: true, predicate: MapContextDirective, descendants: true }], hostDirectives: [{ directive: i1.ConnectionControllerDirective, outputs: ["onConnect", "onConnect"] }, { directive: i2.ChangesControllerDirective, outputs: ["onNodesChange", "onNodesChange", "onEdgesChange", "onEdgesChange"] }], ngImport: i0, template: "<svg:svg\n rootSvgRef\n rootSvgContext\n class=\"root-svg\"\n #flow\n [style.backgroundColor]=\"background\"\n [attr.width]=\"flowModel.flowWidth()\"\n [attr.height]=\"flowModel.flowHeight()\"\n>\n <defs [markers]=\"markers()\" flowDefs />\n\n <svg:g\n mapContext\n spacePointContext\n [minZoom]=\"minZoom\"\n [maxZoom]=\"maxZoom\"\n >\n <!-- Connection -->\n <svg:g\n connection\n [model]=\"connection\"\n [template]=\"connectionTemplateDirective?.templateRef\"\n />\n\n <!-- Edges -->\n <svg:g\n *ngFor=\"let model of edgeModels; trackBy: trackEdges\"\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective?.templateRef\"\n />\n\n <!-- Nodes -->\n <svg:g\n *ngFor=\"let model of nodeModels; trackBy: trackNodes\"\n node\n [nodeModel]=\"model\"\n [nodeHtmlTemplate]=\"nodeHtmlDirective?.templateRef\"\n [handleTemplate]=\"handleTemplateDirective?.templateRef\"\n [attr.transform]=\"model.pointTransform()\"\n />\n </svg:g>\n\n</svg:svg>\n", styles: [":host{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.NodeComponent, selector: "g[node]", inputs: ["nodeModel", "nodeHtmlTemplate", "handleTemplate"] }, { kind: "component", type: i5.EdgeComponent, selector: "g[edge]", inputs: ["model", "edgeTemplate", "edgeLabelHtmlTemplate"] }, { kind: "component", type: i6.ConnectionComponent, selector: "g[connection]", inputs: ["model", "template"] }, { kind: "component", type: i7.DefsComponent, selector: "defs[flowDefs]", inputs: ["markers"] }, { kind: "directive", type: i8.SpacePointContextDirective, selector: "g[spacePointContext]" }, { kind: "directive", type: i9.MapContextDirective, selector: "g[mapContext]", inputs: ["minZoom", "maxZoom"] }, { kind: "directive", type: i10.RootSvgReferenceDirective, selector: "svg[rootSvgRef]" }, { kind: "directive", type: i11.RootSvgContextDirective, selector: "svg[rootSvgContext]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
129
|
+
}
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VflowComponent, decorators: [{
|
|
131
|
+
type: Component,
|
|
132
|
+
args: [{ selector: 'vflow', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
133
|
+
DraggableService,
|
|
134
|
+
ViewportService,
|
|
135
|
+
FlowStatusService,
|
|
136
|
+
FlowEntitiesService,
|
|
137
|
+
NodesChangeService,
|
|
138
|
+
EdgeChangesService
|
|
139
|
+
], hostDirectives: [
|
|
140
|
+
connectionControllerHostDirective,
|
|
141
|
+
changesControllerHostDirective
|
|
142
|
+
], template: "<svg:svg\n rootSvgRef\n rootSvgContext\n class=\"root-svg\"\n #flow\n [style.backgroundColor]=\"background\"\n [attr.width]=\"flowModel.flowWidth()\"\n [attr.height]=\"flowModel.flowHeight()\"\n>\n <defs [markers]=\"markers()\" flowDefs />\n\n <svg:g\n mapContext\n spacePointContext\n [minZoom]=\"minZoom\"\n [maxZoom]=\"maxZoom\"\n >\n <!-- Connection -->\n <svg:g\n connection\n [model]=\"connection\"\n [template]=\"connectionTemplateDirective?.templateRef\"\n />\n\n <!-- Edges -->\n <svg:g\n *ngFor=\"let model of edgeModels; trackBy: trackEdges\"\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective?.templateRef\"\n />\n\n <!-- Nodes -->\n <svg:g\n *ngFor=\"let model of nodeModels; trackBy: trackNodes\"\n node\n [nodeModel]=\"model\"\n [nodeHtmlTemplate]=\"nodeHtmlDirective?.templateRef\"\n [handleTemplate]=\"handleTemplateDirective?.templateRef\"\n [attr.transform]=\"model.pointTransform()\"\n />\n </svg:g>\n\n</svg:svg>\n", styles: [":host{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}\n"] }]
|
|
143
|
+
}], propDecorators: { view: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], minZoom: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], maxZoom: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], handlePositions: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], background: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], connection: [{
|
|
154
|
+
type: Input,
|
|
155
|
+
args: [{ transform: (settings) => new ConnectionModel(settings) }]
|
|
156
|
+
}], nodes: [{
|
|
157
|
+
type: Input,
|
|
158
|
+
args: [{ required: true }]
|
|
159
|
+
}], edges: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], nodeHtmlDirective: [{
|
|
162
|
+
type: ContentChild,
|
|
163
|
+
args: [NodeHtmlTemplateDirective]
|
|
164
|
+
}], edgeTemplateDirective: [{
|
|
165
|
+
type: ContentChild,
|
|
166
|
+
args: [EdgeTemplateDirective]
|
|
167
|
+
}], edgeLabelHtmlDirective: [{
|
|
168
|
+
type: ContentChild,
|
|
169
|
+
args: [EdgeLabelHtmlTemplateDirective]
|
|
170
|
+
}], connectionTemplateDirective: [{
|
|
171
|
+
type: ContentChild,
|
|
172
|
+
args: [ConnectionTemplateDirective]
|
|
173
|
+
}], handleTemplateDirective: [{
|
|
174
|
+
type: ContentChild,
|
|
175
|
+
args: [HandleTemplateDirective]
|
|
176
|
+
}], mapContext: [{
|
|
177
|
+
type: ViewChild,
|
|
178
|
+
args: [MapContextDirective]
|
|
179
|
+
}] } });
|
|
180
|
+
function bindFlowToNodes(flow, nodes) {
|
|
181
|
+
nodes.forEach(n => n.bindFlow(flow));
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFnQixRQUFRLEVBQUUsS0FBSyxFQUE0QyxTQUFTLEVBQW9CLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4TyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdwRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsOEJBQThCLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3TCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0RBQWtELENBQUM7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ckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2lnbmFsLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXBDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9tYXAtY29udGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRHJhZ2dhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RyYWdnYWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IFZpZXdwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEVkZ2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VkZ2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVkZ2VNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9lZGdlLm1vZGVsJztcbmltcG9ydCB7IENvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSwgRWRnZUxhYmVsSHRtbFRlbXBsYXRlRGlyZWN0aXZlLCBFZGdlVGVtcGxhdGVEaXJlY3RpdmUsIEhhbmRsZVRlbXBsYXRlRGlyZWN0aXZlLCBOb2RlSHRtbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSGFuZGxlUG9zaXRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9oYW5kbGUtcG9zaXRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBhZGROb2Rlc1RvRWRnZXMgfSBmcm9tICcuLi8uLi91dGlscy9hZGQtbm9kZXMtdG8tZWRnZXMnO1xuaW1wb3J0IHsgRmxvd01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zsb3cubW9kZWwnO1xuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBWaWV3cG9ydFN0YXRlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy92aWV3cG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmxvd1N0YXR1c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LXN0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbm5lY3Rpb25Db250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb25uZWN0aW9uLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25uZWN0aW9uLXNldHRpbmdzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29ubmVjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VLZWVwZXIgfSBmcm9tICcuLi8uLi91dGlscy9yZWZlcmVuY2Uta2VlcGVyJztcbmltcG9ydCB7IE5vZGVzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGUtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEVkZ2VDaGFuZ2VzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VkZ2UtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVDaGFuZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9ub2RlLWNoYW5nZS50eXBlJztcbmltcG9ydCB7IENoYW5nZXNDb250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jaGFuZ2VzLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVkZ2VDaGFuZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9lZGdlLWNoYW5nZS50eXBlJztcblxuY29uc3QgY29ubmVjdGlvbkNvbnRyb2xsZXJIb3N0RGlyZWN0aXZlID0ge1xuICBkaXJlY3RpdmU6IENvbm5lY3Rpb25Db250cm9sbGVyRGlyZWN0aXZlLFxuICBvdXRwdXRzOiBbJ29uQ29ubmVjdCddXG59XG5cbmNvbnN0IGNoYW5nZXNDb250cm9sbGVySG9zdERpcmVjdGl2ZSA9IHtcbiAgZGlyZWN0aXZlOiBDaGFuZ2VzQ29udHJvbGxlckRpcmVjdGl2ZSxcbiAgb3V0cHV0czogWydvbk5vZGVzQ2hhbmdlJywgJ29uRWRnZXNDaGFuZ2UnXVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZmxvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi92Zmxvdy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZmbG93LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBEcmFnZ2FibGVTZXJ2aWNlLFxuICAgIFZpZXdwb3J0U2VydmljZSxcbiAgICBGbG93U3RhdHVzU2VydmljZSxcbiAgICBGbG93RW50aXRpZXNTZXJ2aWNlLFxuICAgIE5vZGVzQ2hhbmdlU2VydmljZSxcbiAgICBFZGdlQ2hhbmdlc1NlcnZpY2VcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICBjb25uZWN0aW9uQ29udHJvbGxlckhvc3REaXJlY3RpdmUsXG4gICAgY2hhbmdlc0NvbnRyb2xsZXJIb3N0RGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVmZsb3dDb21wb25lbnQge1xuICAvLyAjcmVnaW9uIERJXG4gIHByb3RlY3RlZCB2aWV3cG9ydFNlcnZpY2UgPSBpbmplY3QoVmlld3BvcnRTZXJ2aWNlKVxuICBwcm90ZWN0ZWQgZmxvd0VudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKVxuICBwcm90ZWN0ZWQgbm9kZXNDaGFuZ2VTZXJ2aWNlID0gaW5qZWN0KE5vZGVzQ2hhbmdlU2VydmljZSlcbiAgcHJvdGVjdGVkIGVkZ2VzQ2hhbmdlU2VydmljZSA9IGluamVjdChFZGdlQ2hhbmdlc1NlcnZpY2UpXG4gIHByb3RlY3RlZCBpbmplY3RvciA9IGluamVjdChJbmplY3RvcilcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gU0VUVElOR1NcblxuICAvKipcbiAgICogU2l6ZSBmb3IgZmxvdyB2aWV3XG4gICAqXG4gICAqIGFjY2VwdHNcbiAgICogLSBhYnNvbHV0ZSBzaXplIGluIGZvcm1hdCBbd2lkdGgsIGhlaWdodF0gb3JcbiAgICogLSAnYXV0bycgdG8gY29tcHV0ZSBzaXplIGJhc2VkIG9uIHBhcmVudCBlbGVtZW50IHNpemVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmlldyh2aWV3OiBbbnVtYmVyLCBudW1iZXJdIHwgJ2F1dG8nKSB7XG4gICAgdGhpcy5mbG93TW9kZWwudmlldy5zZXQodmlldylcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5ab29tID0gMC41XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1heFpvb20gPSAzXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBoYW5kbGVQb3NpdGlvbnMoaGFuZGxlUG9zaXRpb25zOiBIYW5kbGVQb3NpdGlvbnMpIHtcbiAgICB0aGlzLmZsb3dNb2RlbC5oYW5kbGVQb3NpdGlvbnMuc2V0KGhhbmRsZVBvc2l0aW9ucylcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBiYWNrZ3JvdW5kOiBzdHJpbmcgPSAnI0ZGRkZGRidcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IChzZXR0aW5nczogQ29ubmVjdGlvblNldHRpbmdzKSA9PiBuZXcgQ29ubmVjdGlvbk1vZGVsKHNldHRpbmdzKSB9KVxuICBwdWJsaWMgc2V0IGNvbm5lY3Rpb24oY29ubmVjdGlvbjogQ29ubmVjdGlvbk1vZGVsKSB7IHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5jb25uZWN0aW9uLnNldChjb25uZWN0aW9uKSB9XG4gIHB1YmxpYyBnZXQgY29ubmVjdGlvbigpIHsgcmV0dXJuIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5jb25uZWN0aW9uKCkgfVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBNQUlOX0lOUFVUU1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgc2V0IG5vZGVzKG5ld05vZGVzOiBOb2RlW10pIHtcbiAgICBjb25zdCBuZXdNb2RlbHMgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvcixcbiAgICAgICgpID0+IFJlZmVyZW5jZUtlZXBlci5ub2RlcyhuZXdOb2RlcywgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLm5vZGVzKCkpXG4gICAgKVxuXG4gICAgLy8gVE9ETyBiZXR0ZXIgdG8gc29sdmUgdGhpcyBieSBESVxuICAgIGJpbmRGbG93VG9Ob2Rlcyh0aGlzLmZsb3dNb2RlbCwgbmV3TW9kZWxzKVxuXG4gICAgLy8gcXVpY2sgYW5kIGRpcnR5IGJpbmRpbmcgbm9kZXMgdG8gZWRnZXNcbiAgICBhZGROb2Rlc1RvRWRnZXMobmV3TW9kZWxzLCB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuZWRnZXMoKSlcblxuICAgIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5ub2Rlcy5zZXQobmV3TW9kZWxzKVxuICB9XG5cbiAgcHVibGljIGdldCBub2RlTW9kZWxzKCkgeyByZXR1cm4gdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLm5vZGVzKCkgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZWRnZXMobmV3RWRnZXM6IEVkZ2VbXSkge1xuICAgIGNvbnN0IG5ld01vZGVscyA9IFJlZmVyZW5jZUtlZXBlci5lZGdlcyhuZXdFZGdlcywgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmVkZ2VzKCkpXG5cbiAgICAvLyBxdWljayBhbmQgZGlydHkgYmluZGluZyBub2RlcyB0byBlZGdlc1xuICAgIGFkZE5vZGVzVG9FZGdlcyh0aGlzLm5vZGVNb2RlbHMsIG5ld01vZGVscylcblxuICAgIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5lZGdlcy5zZXQobmV3TW9kZWxzKVxuICB9XG5cbiAgcHVibGljIGdldCBlZGdlTW9kZWxzKCkgeyByZXR1cm4gdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLnZhbGlkRWRnZXMoKSB9XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFRFTVBMQVRFU1xuICBAQ29udGVudENoaWxkKE5vZGVIdG1sVGVtcGxhdGVEaXJlY3RpdmUpXG4gIHByb3RlY3RlZCBub2RlSHRtbERpcmVjdGl2ZT86IE5vZGVIdG1sVGVtcGxhdGVEaXJlY3RpdmVcblxuICBAQ29udGVudENoaWxkKEVkZ2VUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgcHJvdGVjdGVkIGVkZ2VUZW1wbGF0ZURpcmVjdGl2ZT86IEVkZ2VUZW1wbGF0ZURpcmVjdGl2ZVxuXG4gIEBDb250ZW50Q2hpbGQoRWRnZUxhYmVsSHRtbFRlbXBsYXRlRGlyZWN0aXZlKVxuICBwcm90ZWN0ZWQgZWRnZUxhYmVsSHRtbERpcmVjdGl2ZT86IEVkZ2VMYWJlbEh0bWxUZW1wbGF0ZURpcmVjdGl2ZVxuXG4gIEBDb250ZW50Q2hpbGQoQ29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlKVxuICBwcm90ZWN0ZWQgY29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlPzogQ29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlXG5cbiAgQENvbnRlbnRDaGlsZChIYW5kbGVUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgcHJvdGVjdGVkIGhhbmRsZVRlbXBsYXRlRGlyZWN0aXZlPzogSGFuZGxlVGVtcGxhdGVEaXJlY3RpdmVcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gRElSRUNUSVZFU1xuICBAVmlld0NoaWxkKE1hcENvbnRleHREaXJlY3RpdmUpXG4gIHByb3RlY3RlZCBtYXBDb250ZXh0ITogTWFwQ29udGV4dERpcmVjdGl2ZVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBTSUdOQUxfQVBJXG4gIHB1YmxpYyByZWFkb25seSB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQuYXNSZWFkb25seSgpXG5cbiAgcHVibGljIHJlYWRvbmx5IG5vZGVzQ2hhbmdlID1cbiAgICB0b1NpZ25hbCh0aGlzLm5vZGVzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJCwgeyBpbml0aWFsVmFsdWU6IFtdIGFzIE5vZGVDaGFuZ2VbXSB9KVxuXG4gIHB1YmxpYyByZWFkb25seSBlZGdlc0NoYW5nZSA9XG4gICAgdG9TaWduYWwodGhpcy5lZGdlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQsIHsgaW5pdGlhbFZhbHVlOiBbXSBhcyBFZGdlQ2hhbmdlW10gfSlcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gUlhfQVBJXG4gIHB1YmxpYyByZWFkb25seSB2aWV3cG9ydENoYW5nZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQpXG4gICAgLnBpcGUoc2tpcCgxKSkgLy8gc2tpcCBkZWZhdWx0IHZhbHVlIHRoYXQgc2V0IGJ5IHNpZ25hbFxuXG4gIHB1YmxpYyByZWFkb25seSBub2Rlc0NoYW5nZSQgPSB0aGlzLm5vZGVzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJFxuXG4gIHB1YmxpYyByZWFkb25seSBlZGdlc0NoYW5nZSQgPSB0aGlzLmVkZ2VzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJFxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gVE9ETzogcHJvYmFibHkgYmV0dGVyIHRvIG1ha2UgaXQgaW5qZWN0YWJsZVxuICBwcm90ZWN0ZWQgZmxvd01vZGVsID0gbmV3IEZsb3dNb2RlbCgpXG5cbiAgcHJvdGVjdGVkIG1hcmtlcnMgPSB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UubWFya2Vyc1xuXG4gIC8vICNyZWdpb24gTUVUSE9EU19BUElcbiAgcHVibGljIHZpZXdwb3J0VG8odmlld3BvcnQ6IFZpZXdwb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS53cml0YWJsZVZpZXdwb3J0LnNldCh7IGNoYW5nZVR5cGU6ICdhYnNvbHV0ZScsIHN0YXRlOiB2aWV3cG9ydCB9KVxuICB9XG5cbiAgcHVibGljIHpvb21Ubyh6b29tOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS53cml0YWJsZVZpZXdwb3J0LnNldCh7IGNoYW5nZVR5cGU6ICdhYnNvbHV0ZScsIHN0YXRlOiB7IHpvb20gfSB9KVxuICB9XG5cbiAgcHVibGljIHBhblRvKHBvaW50OiBQb2ludCk6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLndyaXRhYmxlVmlld3BvcnQuc2V0KHsgY2hhbmdlVHlwZTogJ2Fic29sdXRlJywgc3RhdGU6IHBvaW50IH0pXG4gIH1cblxuICBwdWJsaWMgZ2V0Tm9kZTxUID0gdW5rbm93bj4oaWQ6IHN0cmluZyk6IE5vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuZ2V0Tm9kZTxUPihpZCk/Lm5vZGVcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgcHJvdGVjdGVkIHRyYWNrTm9kZXMoaWR4OiBudW1iZXIsIHsgbm9kZSB9OiBOb2RlTW9kZWwpIHtcbiAgICByZXR1cm4gbm9kZS5pZFxuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrRWRnZXMoaWR4OiBudW1iZXIsIHsgZWRnZSB9OiBFZGdlTW9kZWwpIHtcbiAgICByZXR1cm4gZWRnZS5pZFxuICB9XG59XG5cbmZ1bmN0aW9uIGJpbmRGbG93VG9Ob2RlcyhmbG93OiBGbG93TW9kZWwsIG5vZGVzOiBOb2RlTW9kZWxbXSkge1xuICBub2Rlcy5mb3JFYWNoKG4gPT4gbi5iaW5kRmxvdyhmbG93KSlcbn1cblxuIiwiPHN2ZzpzdmdcbiAgcm9vdFN2Z1JlZlxuICByb290U3ZnQ29udGV4dFxuICBjbGFzcz1cInJvb3Qtc3ZnXCJcbiAgI2Zsb3dcbiAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJiYWNrZ3JvdW5kXCJcbiAgW2F0dHIud2lkdGhdPVwiZmxvd01vZGVsLmZsb3dXaWR0aCgpXCJcbiAgW2F0dHIuaGVpZ2h0XT1cImZsb3dNb2RlbC5mbG93SGVpZ2h0KClcIlxuPlxuICA8ZGVmcyBbbWFya2Vyc109XCJtYXJrZXJzKClcIiBmbG93RGVmcyAvPlxuXG4gIDxzdmc6Z1xuICAgIG1hcENvbnRleHRcbiAgICBzcGFjZVBvaW50Q29udGV4dFxuICAgIFttaW5ab29tXT1cIm1pblpvb21cIlxuICAgIFttYXhab29tXT1cIm1heFpvb21cIlxuICA+XG4gICAgPCEtLSBDb25uZWN0aW9uIC0tPlxuICAgIDxzdmc6Z1xuICAgICAgY29ubmVjdGlvblxuICAgICAgW21vZGVsXT1cImNvbm5lY3Rpb25cIlxuICAgICAgW3RlbXBsYXRlXT1cImNvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZT8udGVtcGxhdGVSZWZcIlxuICAgIC8+XG5cbiAgICA8IS0tIEVkZ2VzICAtLT5cbiAgICA8c3ZnOmdcbiAgICAgICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBlZGdlTW9kZWxzOyB0cmFja0J5OiB0cmFja0VkZ2VzXCJcbiAgICAgIGVkZ2VcbiAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICBbZWRnZVRlbXBsYXRlXT1cImVkZ2VUZW1wbGF0ZURpcmVjdGl2ZT8udGVtcGxhdGVSZWZcIlxuICAgICAgW2VkZ2VMYWJlbEh0bWxUZW1wbGF0ZV09XCJlZGdlTGFiZWxIdG1sRGlyZWN0aXZlPy50ZW1wbGF0ZVJlZlwiXG4gICAgLz5cblxuICAgIDwhLS0gTm9kZXMgLS0+XG4gICAgPHN2ZzpnXG4gICAgICAqbmdGb3I9XCJsZXQgbW9kZWwgb2Ygbm9kZU1vZGVsczsgdHJhY2tCeTogdHJhY2tOb2Rlc1wiXG4gICAgICBub2RlXG4gICAgICBbbm9kZU1vZGVsXT1cIm1vZGVsXCJcbiAgICAgIFtub2RlSHRtbFRlbXBsYXRlXT1cIm5vZGVIdG1sRGlyZWN0aXZlPy50ZW1wbGF0ZVJlZlwiXG4gICAgICBbaGFuZGxlVGVtcGxhdGVdPVwiaGFuZGxlVGVtcGxhdGVEaXJlY3RpdmU/LnRlbXBsYXRlUmVmXCJcbiAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJtb2RlbC5wb2ludFRyYW5zZm9ybSgpXCJcbiAgICAvPlxuICA8L3N2ZzpnPlxuXG48L3N2Zzpzdmc+XG4iXX0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Output, inject } from '@angular/core';
|
|
2
|
+
import { EdgeChangesService } from '../services/edge-changes.service';
|
|
3
|
+
import { NodesChangeService } from '../services/node-changes.service';
|
|
4
|
+
import { tap } from 'rxjs';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class ChangesControllerDirective {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.nodesChangeService = inject(NodesChangeService);
|
|
10
|
+
this.edgesChangeService = inject(EdgeChangesService);
|
|
11
|
+
this.onNodesChange = new EventEmitter();
|
|
12
|
+
this.onEdgesChange = new EventEmitter();
|
|
13
|
+
this.nodesChangeProxySubscription = this.nodesChangeService.changes$
|
|
14
|
+
.pipe(tap((changes) => this.onNodesChange.emit(changes)), takeUntilDestroyed())
|
|
15
|
+
.subscribe();
|
|
16
|
+
this.edgesChangeProxySubscription = this.edgesChangeService.changes$
|
|
17
|
+
.pipe(tap((changes) => this.onEdgesChange.emit(changes)), takeUntilDestroyed())
|
|
18
|
+
.subscribe();
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChangesControllerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
21
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ChangesControllerDirective, isStandalone: true, selector: "[changesController]", outputs: { onNodesChange: "onNodesChange", onEdgesChange: "onEdgesChange" }, ngImport: i0 }); }
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChangesControllerDirective, decorators: [{
|
|
24
|
+
type: Directive,
|
|
25
|
+
args: [{
|
|
26
|
+
selector: '[changesController]',
|
|
27
|
+
standalone: true
|
|
28
|
+
}]
|
|
29
|
+
}], propDecorators: { onNodesChange: [{
|
|
30
|
+
type: Output
|
|
31
|
+
}], onEdgesChange: [{
|
|
32
|
+
type: Output
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlcy1jb250cm9sbGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2NoYW5nZXMtY29udHJvbGxlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU9oRSxNQUFNLE9BQU8sMEJBQTBCO0lBSnZDO1FBS1ksdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDL0MsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFHbEQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQTtRQUdoRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFBO1FBRTdDLGlDQUE0QixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRO2FBQ3RFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ2xELGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxFQUFFLENBQUE7UUFFSixpQ0FBNEIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUTthQUN0RSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUNsRCxrQkFBa0IsRUFBRSxDQUNyQjthQUNBLFNBQVMsRUFBRSxDQUFBO0tBQ2Y7K0dBdkJZLDBCQUEwQjttR0FBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUp0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFNUSxhQUFhO3NCQURuQixNQUFNO2dCQUlBLGFBQWE7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZUNoYW5nZSB9IGZyb20gJy4uL3R5cGVzL25vZGUtY2hhbmdlLnR5cGUnO1xuaW1wb3J0IHsgRWRnZUNoYW5nZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZWRnZS1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZXNDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbm9kZS1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBFZGdlQ2hhbmdlIH0gZnJvbSAnLi4vdHlwZXMvZWRnZS1jaGFuZ2UudHlwZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjaGFuZ2VzQ29udHJvbGxlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIENoYW5nZXNDb250cm9sbGVyRGlyZWN0aXZlIHtcbiAgcHJvdGVjdGVkIG5vZGVzQ2hhbmdlU2VydmljZSA9IGluamVjdChOb2Rlc0NoYW5nZVNlcnZpY2UpXG4gIHByb3RlY3RlZCBlZGdlc0NoYW5nZVNlcnZpY2UgPSBpbmplY3QoRWRnZUNoYW5nZXNTZXJ2aWNlKVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25Ob2Rlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tm9kZUNoYW5nZVtdPigpXG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkVkZ2VzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFZGdlQ2hhbmdlW10+KClcblxuICBwcm90ZWN0ZWQgbm9kZXNDaGFuZ2VQcm94eVN1YnNjcmlwdGlvbiA9IHRoaXMubm9kZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKGNoYW5nZXMpID0+IHRoaXMub25Ob2Rlc0NoYW5nZS5lbWl0KGNoYW5nZXMpKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKVxuXG4gIHByb3RlY3RlZCBlZGdlc0NoYW5nZVByb3h5U3Vic2NyaXB0aW9uID0gdGhpcy5lZGdlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyRcbiAgICAucGlwZShcbiAgICAgIHRhcCgoY2hhbmdlcykgPT4gdGhpcy5vbkVkZ2VzQ2hhbmdlLmVtaXQoY2hhbmdlcykpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICApXG4gICAgLnN1YnNjcmliZSgpXG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Directive, EventEmitter, Output, effect, inject } from '@angular/core';
|
|
2
|
+
import { FlowStatusService } from '../services/flow-status.service';
|
|
3
|
+
import { FlowEntitiesService } from '../services/flow-entities.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ConnectionControllerDirective {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.onConnect = new EventEmitter();
|
|
8
|
+
this.statusService = inject(FlowStatusService);
|
|
9
|
+
this.flowEntitiesService = inject(FlowEntitiesService);
|
|
10
|
+
this.connectEffect = effect(() => {
|
|
11
|
+
const status = this.statusService.status();
|
|
12
|
+
if (status.state === 'connection-end') {
|
|
13
|
+
const sourceModel = status.payload.sourceNode;
|
|
14
|
+
const targetModel = status.payload.targetNode;
|
|
15
|
+
const source = sourceModel.node.id;
|
|
16
|
+
const target = targetModel.node.id;
|
|
17
|
+
const connection = this.flowEntitiesService.connection();
|
|
18
|
+
if (connection.validator({ source, target })) {
|
|
19
|
+
this.onConnect.emit({ source, target });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}, { allowSignalWrites: true });
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConnectionControllerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ConnectionControllerDirective, isStandalone: true, selector: "[connectionController]", outputs: { onConnect: "onConnect" }, ngImport: i0 }); }
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConnectionControllerDirective, decorators: [{
|
|
28
|
+
type: Directive,
|
|
29
|
+
args: [{
|
|
30
|
+
selector: '[connectionController]',
|
|
31
|
+
standalone: true
|
|
32
|
+
}]
|
|
33
|
+
}], propDecorators: { onConnect: [{
|
|
34
|
+
type: Output
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi1jb250cm9sbGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2Nvbm5lY3Rpb24tY29udHJvbGxlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBTXhFLE1BQU0sT0FBTyw2QkFBNkI7SUFKMUM7UUFNUyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQTtRQUV6QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRS9DLGtCQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFBO1lBRTFDLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsRUFBRTtnQkFDckMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUE7Z0JBQzdDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFBO2dCQUU3QyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQTtnQkFDbEMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUE7Z0JBRWxDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtnQkFFeEQsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7aUJBQ3hDO2FBQ0Y7UUFDSCxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0tBQ2hDOytHQXhCWSw2QkFBNkI7bUdBQTdCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFKekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBR1EsU0FBUztzQkFEZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Nvbm5lY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsb3dTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1zdGF0dXMuc2VydmljZSc7XG5cbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY29ubmVjdGlvbkNvbnRyb2xsZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uQ29udHJvbGxlckRpcmVjdGl2ZSB7XG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25Db25uZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxDb25uZWN0aW9uPigpXG5cbiAgcHJpdmF0ZSBzdGF0dXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dTdGF0dXNTZXJ2aWNlKVxuICBwcml2YXRlIGZsb3dFbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSlcblxuICBwcm90ZWN0ZWQgY29ubmVjdEVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5zdGF0dXNTZXJ2aWNlLnN0YXR1cygpXG5cbiAgICBpZiAoc3RhdHVzLnN0YXRlID09PSAnY29ubmVjdGlvbi1lbmQnKSB7XG4gICAgICBjb25zdCBzb3VyY2VNb2RlbCA9IHN0YXR1cy5wYXlsb2FkLnNvdXJjZU5vZGVcbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsID0gc3RhdHVzLnBheWxvYWQudGFyZ2V0Tm9kZVxuXG4gICAgICBjb25zdCBzb3VyY2UgPSBzb3VyY2VNb2RlbC5ub2RlLmlkXG4gICAgICBjb25zdCB0YXJnZXQgPSB0YXJnZXRNb2RlbC5ub2RlLmlkXG5cbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuY29ubmVjdGlvbigpXG5cbiAgICAgIGlmIChjb25uZWN0aW9uLnZhbGlkYXRvcih7IHNvdXJjZSwgdGFyZ2V0IH0pKSB7XG4gICAgICAgIHRoaXMub25Db25uZWN0LmVtaXQoeyBzb3VyY2UsIHRhcmdldCB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxufVxuIl19
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input, effect, inject } from '@angular/core';
|
|
2
|
+
import { select } from 'd3-selection';
|
|
3
|
+
import { zoom, zoomIdentity } from 'd3-zoom';
|
|
4
|
+
import { ViewportService } from '../services/viewport.service';
|
|
5
|
+
import { isDefined } from '../utils/is-defined';
|
|
6
|
+
import { RootSvgReferenceDirective } from './reference.directive';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class MapContextDirective {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.rootSvg = inject(RootSvgReferenceDirective).element;
|
|
11
|
+
this.host = inject(ElementRef).nativeElement;
|
|
12
|
+
this.viewportService = inject(ViewportService);
|
|
13
|
+
this.rootSvgSelection = select(this.rootSvg);
|
|
14
|
+
this.zoomableSelection = select(this.host);
|
|
15
|
+
// under the hood this effect triggers handleZoom, so error throws without this flag
|
|
16
|
+
// TODO: hack with timer fixes wrong node scaling (handle positions not matched with content size)
|
|
17
|
+
this.manualViewportChangeEffect = effect(() => setTimeout(() => {
|
|
18
|
+
const viewport = this.viewportService.writableViewport();
|
|
19
|
+
const state = viewport.state;
|
|
20
|
+
if (viewport.changeType === 'initial') {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// If only zoom provided
|
|
24
|
+
if (isDefined(state.zoom) && (!isDefined(state.x) && !isDefined(state.y))) {
|
|
25
|
+
this.rootSvgSelection.call(this.zoomBehavior.scaleTo, state.zoom);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// If only pan provided
|
|
29
|
+
if ((isDefined(state.x) && isDefined(state.y)) && !isDefined(state.zoom)) {
|
|
30
|
+
this.rootSvgSelection.call(this.zoomBehavior.translateTo, state.x, state.y);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// If whole viewort state provided
|
|
34
|
+
if (isDefined(state.x) && isDefined(state.y) && isDefined(state.zoom)) {
|
|
35
|
+
this.rootSvgSelection.call(this.zoomBehavior.transform, zoomIdentity.translate(state.x, state.y).scale(state.zoom));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
}), { allowSignalWrites: true });
|
|
39
|
+
this.handleZoom = ({ transform }) => {
|
|
40
|
+
// update public signal for user to read
|
|
41
|
+
this.viewportService.readableViewport.set({ zoom: transform.k, x: transform.x, y: transform.y });
|
|
42
|
+
this.zoomableSelection.attr('transform', transform.toString());
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
ngOnInit() {
|
|
46
|
+
this.zoomBehavior = zoom()
|
|
47
|
+
.scaleExtent([this.minZoom, this.maxZoom])
|
|
48
|
+
.on('zoom', this.handleZoom);
|
|
49
|
+
this.rootSvgSelection.call(this.zoomBehavior);
|
|
50
|
+
}
|
|
51
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
52
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: MapContextDirective, selector: "g[mapContext]", inputs: { minZoom: "minZoom", maxZoom: "maxZoom" }, ngImport: i0 }); }
|
|
53
|
+
}
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapContextDirective, decorators: [{
|
|
55
|
+
type: Directive,
|
|
56
|
+
args: [{ selector: 'g[mapContext]' }]
|
|
57
|
+
}], propDecorators: { minZoom: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], maxZoom: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}] } });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFZLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBNkIsSUFBSSxFQUFFLFlBQVksRUFBaUIsTUFBTSxTQUFTLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFLbEUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQVFZLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbkQsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFBO1FBQ2hFLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRXpDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUUvQyxvRkFBb0Y7UUFDcEYsa0dBQWtHO1FBQ3hGLCtCQUEwQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtZQUN4RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFBO1lBRTVCLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JDLE9BQU07YUFDUDtZQUVELHdCQUF3QjtZQUN4QixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUVqRSxPQUFNO2FBQ1A7WUFFRCx1QkFBdUI7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFFM0UsT0FBTTthQUNQO1lBRUQsa0NBQWtDO1lBQ2xDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQ3BELFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FDM0QsQ0FBQTtnQkFFRCxPQUFNO2FBQ1A7UUFDSCxDQUFDLENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFZeEIsZUFBVSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQWEsRUFBRSxFQUFFO1lBQ2hELHdDQUF3QztZQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUVoRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUNoRSxDQUFDLENBQUE7S0FDRjtJQWRRLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksRUFBMEI7YUFDL0MsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDL0MsQ0FBQzsrR0F4RFUsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFOzhCQUcvQixPQUFPO3NCQURiLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCB7IEQzWm9vbUV2ZW50LCBab29tQmVoYXZpb3IsIHpvb20sIHpvb21JZGVudGl0eSwgem9vbVRyYW5zZm9ybSB9IGZyb20gJ2QzLXpvb20nO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICcuLi91dGlscy9pcy1kZWZpbmVkJztcbmltcG9ydCB7IFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUgfSBmcm9tICcuL3JlZmVyZW5jZS5kaXJlY3RpdmUnO1xuXG50eXBlIFpvb21FdmVudCA9IEQzWm9vbUV2ZW50PFNWR1NWR0VsZW1lbnQsIHVua25vd24+XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2dbbWFwQ29udGV4dF0nIH0pXG5leHBvcnQgY2xhc3MgTWFwQ29udGV4dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5ab29tITogbnVtYmVyXG5cbiAgQElucHV0KClcbiAgcHVibGljIG1heFpvb20hOiBudW1iZXJcblxuICBwcm90ZWN0ZWQgcm9vdFN2ZyA9IGluamVjdChSb290U3ZnUmVmZXJlbmNlRGlyZWN0aXZlKS5lbGVtZW50XG4gIHByb3RlY3RlZCBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHR0VsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50XG4gIHByb3RlY3RlZCB2aWV3cG9ydFNlcnZpY2UgPSBpbmplY3QoVmlld3BvcnRTZXJ2aWNlKVxuXG4gIHByb3RlY3RlZCByb290U3ZnU2VsZWN0aW9uID0gc2VsZWN0KHRoaXMucm9vdFN2ZylcbiAgcHJvdGVjdGVkIHpvb21hYmxlU2VsZWN0aW9uID0gc2VsZWN0KHRoaXMuaG9zdClcblxuICAvLyB1bmRlciB0aGUgaG9vZCB0aGlzIGVmZmVjdCB0cmlnZ2VycyBoYW5kbGVab29tLCBzbyBlcnJvciB0aHJvd3Mgd2l0aG91dCB0aGlzIGZsYWdcbiAgLy8gVE9ETzogaGFjayB3aXRoIHRpbWVyIGZpeGVzIHdyb25nIG5vZGUgc2NhbGluZyAoaGFuZGxlIHBvc2l0aW9ucyBub3QgbWF0Y2hlZCB3aXRoIGNvbnRlbnQgc2l6ZSlcbiAgcHJvdGVjdGVkIG1hbnVhbFZpZXdwb3J0Q2hhbmdlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydFNlcnZpY2Uud3JpdGFibGVWaWV3cG9ydCgpXG4gICAgY29uc3Qgc3RhdGUgPSB2aWV3cG9ydC5zdGF0ZVxuXG4gICAgaWYgKHZpZXdwb3J0LmNoYW5nZVR5cGUgPT09ICdpbml0aWFsJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgb25seSB6b29tIHByb3ZpZGVkXG4gICAgaWYgKGlzRGVmaW5lZChzdGF0ZS56b29tKSAmJiAoIWlzRGVmaW5lZChzdGF0ZS54KSAmJiAhaXNEZWZpbmVkKHN0YXRlLnkpKSkge1xuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uLmNhbGwodGhpcy56b29tQmVoYXZpb3Iuc2NhbGVUbywgc3RhdGUuem9vbSlcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgb25seSBwYW4gcHJvdmlkZWRcbiAgICBpZiAoKGlzRGVmaW5lZChzdGF0ZS54KSAmJiBpc0RlZmluZWQoc3RhdGUueSkpICYmICFpc0RlZmluZWQoc3RhdGUuem9vbSkpIHtcbiAgICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yLnRyYW5zbGF0ZVRvLCBzdGF0ZS54LCBzdGF0ZS55KVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBJZiB3aG9sZSB2aWV3b3J0IHN0YXRlIHByb3ZpZGVkXG4gICAgaWYgKGlzRGVmaW5lZChzdGF0ZS54KSAmJiBpc0RlZmluZWQoc3RhdGUueSkgJiYgaXNEZWZpbmVkKHN0YXRlLnpvb20pKSB7XG4gICAgICB0aGlzLnJvb3RTdmdTZWxlY3Rpb24uY2FsbCh0aGlzLnpvb21CZWhhdmlvci50cmFuc2Zvcm0sXG4gICAgICAgIHpvb21JZGVudGl0eS50cmFuc2xhdGUoc3RhdGUueCwgc3RhdGUueSkuc2NhbGUoc3RhdGUuem9vbSlcbiAgICAgIClcblxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9KSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxuXG4gIHByb3RlY3RlZCB6b29tQmVoYXZpb3IhOiBab29tQmVoYXZpb3I8U1ZHU1ZHRWxlbWVudCwgdW5rbm93bj47XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbUJlaGF2aW9yID0gem9vbTxTVkdTVkdFbGVtZW50LCB1bmtub3duPigpXG4gICAgICAuc2NhbGVFeHRlbnQoW3RoaXMubWluWm9vbSwgdGhpcy5tYXhab29tXSlcbiAgICAgIC5vbignem9vbScsIHRoaXMuaGFuZGxlWm9vbSlcblxuICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yKVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVab29tID0gKHsgdHJhbnNmb3JtIH06IFpvb21FdmVudCkgPT4ge1xuICAgIC8vIHVwZGF0ZSBwdWJsaWMgc2lnbmFsIGZvciB1c2VyIHRvIHJlYWRcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS5yZWFkYWJsZVZpZXdwb3J0LnNldCh7IHpvb206IHRyYW5zZm9ybS5rLCB4OiB0cmFuc2Zvcm0ueCwgeTogdHJhbnNmb3JtLnkgfSlcblxuICAgIHRoaXMuem9vbWFibGVTZWxlY3Rpb24uYXR0cigndHJhbnNmb3JtJywgdHJhbnNmb3JtLnRvU3RyaW5nKCkpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Directive, ElementRef, inject } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class RootSvgReferenceDirective {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.element = inject(ElementRef).nativeElement;
|
|
6
|
+
}
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootSvgReferenceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RootSvgReferenceDirective, selector: "svg[rootSvgRef]", ngImport: i0 }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootSvgReferenceDirective, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: 'svg[rootSvgRef]'
|
|
14
|
+
}]
|
|
15
|
+
}] });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL3JlZmVyZW5jZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUs5RCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBSWtCLFlBQU8sR0FBRyxNQUFNLENBQTRCLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQTtLQUN0RjsrR0FGWSx5QkFBeUI7bUdBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFIckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3N2Z1tyb290U3ZnUmVmXSdcbn0pXG5leHBvcnQgY2xhc3MgUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSB7XG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHU1ZHRWxlbWVudD4+KEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnRcbn1cbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Directive, HostListener, inject } from '@angular/core';
|
|
2
|
+
import { FlowStatusService } from '../services/flow-status.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
// TODO: too general purpose nane
|
|
5
|
+
export class RootSvgContextDirective {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.flowStatusService = inject(FlowStatusService);
|
|
8
|
+
}
|
|
9
|
+
// TODO: check for multiple instances on page
|
|
10
|
+
resetConnection() {
|
|
11
|
+
const status = this.flowStatusService.status();
|
|
12
|
+
if (status.state === 'connection-start') {
|
|
13
|
+
this.flowStatusService.setIdleStatus();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootSvgContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
17
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RootSvgContextDirective, selector: "svg[rootSvgContext]", host: { listeners: { "document:mouseup": "resetConnection()" } }, ngImport: i0 }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootSvgContextDirective, decorators: [{
|
|
20
|
+
type: Directive,
|
|
21
|
+
args: [{ selector: 'svg[rootSvgContext]' }]
|
|
22
|
+
}], propDecorators: { resetConnection: [{
|
|
23
|
+
type: HostListener,
|
|
24
|
+
args: ['document:mouseup']
|
|
25
|
+
}] } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1zdmctY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9yb290LXN2Zy1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRXBFLGlDQUFpQztBQUVqQyxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRVUsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FXdEQ7SUFUQyw2Q0FBNkM7SUFFbkMsZUFBZTtRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFOUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLGtCQUFrQixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtTQUN2QztJQUNILENBQUM7K0dBWFUsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7OEJBTWxDLGVBQWU7c0JBRHhCLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd1N0YXR1c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LXN0YXR1cy5zZXJ2aWNlJztcblxuLy8gVE9ETzogdG9vIGdlbmVyYWwgcHVycG9zZSBuYW5lXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdzdmdbcm9vdFN2Z0NvbnRleHRdJyB9KVxuZXhwb3J0IGNsYXNzIFJvb3RTdmdDb250ZXh0RGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBmbG93U3RhdHVzU2VydmljZSA9IGluamVjdChGbG93U3RhdHVzU2VydmljZSlcblxuICAvLyBUT0RPOiBjaGVjayBmb3IgbXVsdGlwbGUgaW5zdGFuY2VzIG9uIHBhZ2VcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcpXG4gIHByb3RlY3RlZCByZXNldENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5mbG93U3RhdHVzU2VydmljZS5zdGF0dXMoKVxuXG4gICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tc3RhcnQnKSB7XG4gICAgICB0aGlzLmZsb3dTdGF0dXNTZXJ2aWNlLnNldElkbGVTdGF0dXMoKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Directive, ElementRef, computed, inject } from '@angular/core';
|
|
2
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { fromEvent, map } from 'rxjs';
|
|
4
|
+
import { RootSvgReferenceDirective } from './reference.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class SpacePointContextDirective {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* Signal with current mouse position in svg space
|
|
10
|
+
*/
|
|
11
|
+
this.svgCurrentSpacePoint = computed(() => {
|
|
12
|
+
const movement = this.mouseMovement();
|
|
13
|
+
const point = this.rootSvg.createSVGPoint();
|
|
14
|
+
point.x = movement.x;
|
|
15
|
+
point.y = movement.y;
|
|
16
|
+
return point.matrixTransform(this.host.getScreenCTM().inverse());
|
|
17
|
+
});
|
|
18
|
+
this.rootSvg = inject(RootSvgReferenceDirective).element;
|
|
19
|
+
this.host = inject(ElementRef).nativeElement;
|
|
20
|
+
this.mouseMovement = toSignal(fromEvent(this.rootSvg, 'mousemove').pipe(map(event => ({ x: event.clientX, y: event.clientY }))), { initialValue: { x: 0, y: 0 } });
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpacePointContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
23
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SpacePointContextDirective, selector: "g[spacePointContext]", ngImport: i0 }); }
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpacePointContextDirective, decorators: [{
|
|
26
|
+
type: Directive,
|
|
27
|
+
args: [{ selector: 'g[spacePointContext]' }]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2UtcG9pbnQtY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9zcGFjZS1wb2ludC1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFJbEUsTUFBTSxPQUFPLDBCQUEwQjtJQUR2QztRQUVFOztXQUVHO1FBQ0kseUJBQW9CLEdBQWtCLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO1lBRXJDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUE7WUFDM0MsS0FBSyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBQ3BCLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQTtZQUVwQixPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ25FLENBQUMsQ0FBQyxDQUFBO1FBRU0sWUFBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUNuRCxTQUFJLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUE7UUFFaEUsa0JBQWEsR0FBRyxRQUFRLENBQzlCLFNBQVMsQ0FBYSxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDbkQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUN2RCxFQUNELEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDakMsQ0FBQTtLQUNGOytHQXZCWSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFEdEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgU2lnbmFsLCBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUgfSBmcm9tICcuL3JlZmVyZW5jZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2dbc3BhY2VQb2ludENvbnRleHRdJyB9KVxuZXhwb3J0IGNsYXNzIFNwYWNlUG9pbnRDb250ZXh0RGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIFNpZ25hbCB3aXRoIGN1cnJlbnQgbW91c2UgcG9zaXRpb24gaW4gc3ZnIHNwYWNlXG4gICAqL1xuICBwdWJsaWMgc3ZnQ3VycmVudFNwYWNlUG9pbnQ6IFNpZ25hbDxQb2ludD4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbW92ZW1lbnQgPSB0aGlzLm1vdXNlTW92ZW1lbnQoKVxuXG4gICAgY29uc3QgcG9pbnQgPSB0aGlzLnJvb3RTdmcuY3JlYXRlU1ZHUG9pbnQoKVxuICAgIHBvaW50LnggPSBtb3ZlbWVudC54XG4gICAgcG9pbnQueSA9IG1vdmVtZW50LnlcblxuICAgIHJldHVybiBwb2ludC5tYXRyaXhUcmFuc2Zvcm0odGhpcy5ob3N0LmdldFNjcmVlbkNUTSgpIS5pbnZlcnNlKCkpXG4gIH0pXG5cbiAgcHJpdmF0ZSByb290U3ZnID0gaW5qZWN0KFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUpLmVsZW1lbnRcbiAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHR0VsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50XG5cbiAgcHJpdmF0ZSBtb3VzZU1vdmVtZW50ID0gdG9TaWduYWwoXG4gICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMucm9vdFN2ZywgJ21vdXNlbW92ZScpLnBpcGUoXG4gICAgICBtYXAoZXZlbnQgPT4gKHsgeDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WSB9KSksXG4gICAgKSxcbiAgICB7IGluaXRpYWxWYWx1ZTogeyB4OiAwLCB5OiAwIH0gfVxuICApXG59XG4iXX0=
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Directive, TemplateRef, inject } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class EdgeTemplateDirective {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.templateRef = inject(TemplateRef);
|
|
6
|
+
}
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EdgeTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: EdgeTemplateDirective, selector: "ng-template[edge]", ngImport: i0 }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EdgeTemplateDirective, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{ selector: 'ng-template[edge]' }]
|
|
13
|
+
}] });
|
|
14
|
+
export class ConnectionTemplateDirective {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.templateRef = inject(TemplateRef);
|
|
17
|
+
}
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConnectionTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
19
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ConnectionTemplateDirective, selector: "ng-template[connection]", ngImport: i0 }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConnectionTemplateDirective, decorators: [{
|
|
22
|
+
type: Directive,
|
|
23
|
+
args: [{ selector: 'ng-template[connection]' }]
|
|
24
|
+
}] });
|
|
25
|
+
export class EdgeLabelHtmlTemplateDirective {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.templateRef = inject(TemplateRef);
|
|
28
|
+
}
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EdgeLabelHtmlTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
30
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: EdgeLabelHtmlTemplateDirective, selector: "ng-template[edgeLabelHtml]", ngImport: i0 }); }
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EdgeLabelHtmlTemplateDirective, decorators: [{
|
|
33
|
+
type: Directive,
|
|
34
|
+
args: [{ selector: 'ng-template[edgeLabelHtml]' }]
|
|
35
|
+
}] });
|
|
36
|
+
export class NodeHtmlTemplateDirective {
|
|
37
|
+
constructor() {
|
|
38
|
+
this.templateRef = inject(TemplateRef);
|
|
39
|
+
}
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeHtmlTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
41
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NodeHtmlTemplateDirective, selector: "ng-template[nodeHtml]", ngImport: i0 }); }
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeHtmlTemplateDirective, decorators: [{
|
|
44
|
+
type: Directive,
|
|
45
|
+
args: [{ selector: 'ng-template[nodeHtml]' }]
|
|
46
|
+
}] });
|
|
47
|
+
export class HandleTemplateDirective {
|
|
48
|
+
constructor() {
|
|
49
|
+
this.templateRef = inject(TemplateRef);
|
|
50
|
+
}
|
|
51
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HandleTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
52
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: HandleTemplateDirective, selector: "ng-template[handle]", ngImport: i0 }); }
|
|
53
|
+
}
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HandleTemplateDirective, decorators: [{
|
|
55
|
+
type: Directive,
|
|
56
|
+
args: [{ selector: 'ng-template[handle]' }]
|
|
57
|
+
}] });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvdGVtcGxhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJL0QsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVTLGdCQUFXLEdBQUcsTUFBTSxDQUEyQixXQUFXLENBQUMsQ0FBQTtLQUNuRTsrR0FGWSxxQkFBcUI7bUdBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRTs7QUFNNUMsTUFBTSxPQUFPLDJCQUEyQjtJQUR4QztRQUVTLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0tBQ3pDOytHQUZZLDJCQUEyQjttR0FBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUR2QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFOztBQU1sRCxNQUFNLE9BQU8sOEJBQThCO0lBRDNDO1FBRVMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7S0FDekM7K0dBRlksOEJBQThCO21HQUE5Qiw4QkFBOEI7OzRGQUE5Qiw4QkFBOEI7a0JBRDFDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsNEJBQTRCLEVBQUU7O0FBTXJELE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFUyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtLQUN6QzsrR0FGWSx5QkFBeUI7bUdBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFEckMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRTs7QUFNaEQsTUFBTSxPQUFPLHVCQUF1QjtJQURwQztRQUVTLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0tBQ3pDOytHQUZZLHVCQUF1QjttR0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQURuQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGdlQ29udGV4dCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGVtcGxhdGUtY29udGV4dC5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtlZGdlXScgfSlcbmV4cG9ydCBjbGFzcyBFZGdlVGVtcGxhdGVEaXJlY3RpdmUge1xuICBwdWJsaWMgdGVtcGxhdGVSZWYgPSBpbmplY3Q8VGVtcGxhdGVSZWY8RWRnZUNvbnRleHQ+PihUZW1wbGF0ZVJlZilcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbY29ubmVjdGlvbl0nIH0pXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgcHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmKVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtlZGdlTGFiZWxIdG1sXScgfSlcbmV4cG9ydCBjbGFzcyBFZGdlTGFiZWxIdG1sVGVtcGxhdGVEaXJlY3RpdmUge1xuICBwdWJsaWMgdGVtcGxhdGVSZWYgPSBpbmplY3QoVGVtcGxhdGVSZWYpXG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW25vZGVIdG1sXScgfSlcbmV4cG9ydCBjbGFzcyBOb2RlSHRtbFRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgcHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmKVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtoYW5kbGVdJyB9KVxuZXhwb3J0IGNsYXNzIEhhbmRsZVRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgcHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmKVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi1zZXR0aW5ncy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy9jb25uZWN0aW9uLXNldHRpbmdzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGlvbiB9IGZyb20gXCIuL2Nvbm5lY3Rpb24uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBDdXJ2ZSwgRWRnZVR5cGUgfSBmcm9tIFwiLi9lZGdlLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgTWFya2VyIH0gZnJvbSBcIi4vbWFya2VyLmludGVyZmFjZVwiO1xuXG5leHBvcnQgdHlwZSBDb25uZWN0aW9uVmFsaWRhdG9yRm4gPSAoY29ubmVjdGlvbjogQ29ubmVjdGlvbikgPT4gYm9vbGVhblxuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25TZXR0aW5ncyB7XG4gIGN1cnZlPzogQ3VydmVcbiAgdHlwZT86IEVkZ2VUeXBlXG4gIHZhbGlkYXRvcj86IENvbm5lY3Rpb25WYWxpZGF0b3JGblxuICBtYXJrZXI/OiBNYXJrZXJcbn1cblxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy9jb25uZWN0aW9uLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aW9uIHtcbiAgc291cmNlOiBzdHJpbmdcbiAgdGFyZ2V0OiBzdHJpbmdcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1sYWJlbC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy9lZGdlLWxhYmVsLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRWRnZUxhYmVsVHlwZSA9ICdodG1sLXRlbXBsYXRlJ1xuZXhwb3J0IHR5cGUgRWRnZUxhYmVsUG9zaXRpb24gPSAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEVkZ2VMYWJlbDxUID0gdW5rbm93bj4ge1xuICB0eXBlOiBFZGdlTGFiZWxUeXBlXG4gIGRhdGE/OiBUXG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy9lZGdlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGlvbiB9IGZyb20gXCIuL2Nvbm5lY3Rpb24uaW50ZXJmYWNlXCJcbmltcG9ydCB7IEVkZ2VMYWJlbCwgRWRnZUxhYmVsUG9zaXRpb24gfSBmcm9tIFwiLi9lZGdlLWxhYmVsLmludGVyZmFjZVwiXG5pbXBvcnQgeyBNYXJrZXIgfSBmcm9tIFwiLi9tYXJrZXIuaW50ZXJmYWNlXCJcblxuZXhwb3J0IHR5cGUgRWRnZVR5cGUgPSAnZGVmYXVsdCcgfCAndGVtcGxhdGUnXG5leHBvcnQgdHlwZSBDdXJ2ZSA9ICdzdHJhaWdodCcgfCAnYmV6aWVyJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEVkZ2U8VCA9IHVua25vd24+IGV4dGVuZHMgQ29ubmVjdGlvbiB7XG4gIGlkOiBzdHJpbmdcbiAgdHlwZT86IEVkZ2VUeXBlXG4gIGN1cnZlPzogQ3VydmVcbiAgZGF0YT86IFRcbiAgZWRnZUxhYmVscz86IHsgW3Bvc2l0aW9uIGluIEVkZ2VMYWJlbFBvc2l0aW9uXT86IEVkZ2VMYWJlbCB9XG4gIG1hcmtlcnM/OiB7XG4gICAgc3RhcnQ/OiBNYXJrZXJcbiAgICBlbmQ/OiBNYXJrZXJcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLXBvc2l0aW9ucy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy9oYW5kbGUtcG9zaXRpb25zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiLi4vdHlwZXMvcG9zaXRpb24udHlwZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhhbmRsZVBvc2l0aW9ucyB7XG4gIHNvdXJjZTogUG9zaXRpb25cbiAgdGFyZ2V0OiBQb3NpdGlvblxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9pbnRlcmZhY2VzL21hcmtlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTWFya2VyIHtcbiAgdHlwZT86ICdhcnJvdycgfCAnYXJyb3ctY2xvc2VkJ1xuICB3aWR0aD86IG51bWJlclxuICBoZWlnaHQ/OiBudW1iZXJcbiAgY29sb3I/OiBzdHJpbmdcbiAgb3JpZW50Pzogc3RyaW5nXG4gIG1hcmtlclVuaXRzPzogJ3VzZXJTcGFjZU9uVXNlJyB8ICdzdHJva2VXaWR0aCdcbiAgc3Ryb2tlV2lkdGg/OiBudW1iZXJcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQgfSBmcm9tIFwiLi9wb2ludC5pbnRlcmZhY2VcIlxuXG5leHBvcnQgdHlwZSBOb2RlPFQgPSB1bmtub3duPiA9IFNoYXJlZE5vZGUgJiAoXG4gIERlZmF1bHROb2RlIHxcbiAgSHRtbFRlbXBsYXRlTm9kZTxUPlxuKVxuaW50ZXJmYWNlIFNoYXJlZE5vZGUge1xuICBpZDogc3RyaW5nXG4gIHBvaW50OiBQb2ludFxuICBkcmFnZ2FibGU/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBEZWZhdWx0Tm9kZSB7XG4gIHR5cGU6ICdkZWZhdWx0J1xuICB0ZXh0Pzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBIdG1sVGVtcGxhdGVOb2RlPFQgPSB1bmtub3duPiB7XG4gIHR5cGU6ICdodG1sLXRlbXBsYXRlJ1xuICBkYXRhPzogVFxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC1kYXRhLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9pbnRlcmZhY2VzL3BhdGgtZGF0YS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkZ2VMYWJlbFBvc2l0aW9uIH0gZnJvbSBcIi4vZWRnZS1sYWJlbC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFBvaW50IH0gZnJvbSBcIi4vcG9pbnQuaW50ZXJmYWNlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aERhdGEge1xuICBwYXRoOiBzdHJpbmc7XG4gIHBvaW50czogeyBba2V5IGluIEVkZ2VMYWJlbFBvc2l0aW9uXTogUG9pbnQgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFBvaW50IHtcbiAgeDogbnVtYmVyXG4gIHk6IG51bWJlclxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29udGV4dC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy90ZW1wbGF0ZS1jb250ZXh0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgRWRnZSB9IGZyb20gXCIuL2VkZ2UuaW50ZXJmYWNlXCJcblxuZXhwb3J0IGludGVyZmFjZSBFZGdlQ29udGV4dCB7XG4gICRpbXBsaWNpdDoge1xuICAgIGVkZ2U6IEVkZ2VcbiAgICBwYXRoOiBTaWduYWw8c3RyaW5nPlxuICAgIG1hcmtlclN0YXJ0OiBTaWduYWw8c3RyaW5nPlxuICAgIG1hcmtlckVuZDogU2lnbmFsPHN0cmluZz5cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3cG9ydENoYW5nZVR5cGUgfSBmcm9tIFwiLi4vdHlwZXMvdmlld3BvcnQtY2hhbmdlLXR5cGUudHlwZVwiO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tIFwiLi9wb2ludC5pbnRlcmZhY2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydFN0YXRlIGV4dGVuZHMgUG9pbnQge1xuICB6b29tOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXcml0YWJsZVZpZXdwb3J0IHtcbiAgY2hhbmdlVHlwZTogVmlld3BvcnRDaGFuZ2VUeXBlXG4gIHN0YXRlOiBQYXJ0aWFsPFZpZXdwb3J0U3RhdGU+XG59XG4iXX0=
|