ngx-vflow 0.14.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/vflow/components/defs/defs.component.mjs +1 -1
- package/esm2022/lib/vflow/components/node/node.component.mjs +1 -1
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +1 -1
- package/esm2022/lib/vflow/math/edge-path/bezier-path.mjs +14 -17
- package/esm2022/lib/vflow/math/edge-path/straigh-path.mjs +2 -6
- package/esm2022/lib/vflow/models/handle.model.mjs +3 -2
- package/esm2022/lib/vflow/public-components/minimap/minimap.component.mjs +1 -1
- package/esm2022/lib/vflow/vflow.module.mjs +5 -5
- package/fesm2022/ngx-vflow.mjs +24 -29
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/models/handle.model.d.ts +1 -0
- package/lib/vflow/vflow.module.d.ts +1 -1
- package/package.json +1 -3
|
@@ -7,7 +7,7 @@ export class DefsComponent {
|
|
|
7
7
|
this.defaultColor = 'rgb(177, 177, 183)';
|
|
8
8
|
}
|
|
9
9
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DefsComponent, selector: "defs[flowDefs]", inputs: { markers: "markers" }, ngImport: i0, template: "<svg:marker\n *ngFor=\"let marker of markers | keyvalue\"\n [attr.id]=\"marker.key\"\n [attr.markerWidth]=\"marker.value.width ?? 16.5\"\n [attr.markerHeight]=\"marker.value.height ?? 16.5\"\n [attr.orient]=\"marker.value.orient ?? 'auto-start-reverse'\"\n viewBox=\"-10 -10 20 20\"\n [attr.markerUnits]=\"marker.value.markerUnits ?? 'userSpaceOnUse'\"\n refX=\"0\"\n refY=\"0\"\n>\n <polyline\n *ngIf=\"marker.value.type === 'arrow-closed' || !marker.value.type\"\n class=\"marker__arrow_closed\"\n [style.stroke]=\"marker.value.color ?? defaultColor\"\n [style.stroke-width]=\"marker.value.strokeWidth ?? 2\"\n [style.fill]=\"marker.value.color ?? defaultColor\"\n points=\"-5,-4 1,0 -5,4 -5,-4\"\n />\n\n <polyline\n *ngIf=\"marker.value.type === 'arrow'\"\n class=\"marker__arrow_default\"\n [style.stroke]=\"marker.value.color ?? defaultColor\"\n [style.stroke-width]=\"marker.value.strokeWidth ?? 2\"\n points=\"-5,-4 0,0 -5,4\"\n />\n</svg:marker>\n", styles: [".marker__arrow_default{stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;fill:none}.marker__arrow_closed{stroke-linecap:round;stroke-linejoin:round}\n"], dependencies: [{ kind: "directive", type: i1.
|
|
10
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DefsComponent, selector: "defs[flowDefs]", inputs: { markers: "markers" }, ngImport: i0, template: "<svg:marker\n *ngFor=\"let marker of markers | keyvalue\"\n [attr.id]=\"marker.key\"\n [attr.markerWidth]=\"marker.value.width ?? 16.5\"\n [attr.markerHeight]=\"marker.value.height ?? 16.5\"\n [attr.orient]=\"marker.value.orient ?? 'auto-start-reverse'\"\n viewBox=\"-10 -10 20 20\"\n [attr.markerUnits]=\"marker.value.markerUnits ?? 'userSpaceOnUse'\"\n refX=\"0\"\n refY=\"0\"\n>\n <polyline\n *ngIf=\"marker.value.type === 'arrow-closed' || !marker.value.type\"\n class=\"marker__arrow_closed\"\n [style.stroke]=\"marker.value.color ?? defaultColor\"\n [style.stroke-width]=\"marker.value.strokeWidth ?? 2\"\n [style.fill]=\"marker.value.color ?? defaultColor\"\n points=\"-5,-4 1,0 -5,4 -5,-4\"\n />\n\n <polyline\n *ngIf=\"marker.value.type === 'arrow'\"\n class=\"marker__arrow_default\"\n [style.stroke]=\"marker.value.color ?? defaultColor\"\n [style.stroke-width]=\"marker.value.strokeWidth ?? 2\"\n points=\"-5,-4 0,0 -5,4\"\n />\n</svg:marker>\n", styles: [".marker__arrow_default{stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;fill:none}.marker__arrow_closed{stroke-linecap:round;stroke-linejoin:round}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11
11
|
}
|
|
12
12
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefsComponent, decorators: [{
|
|
13
13
|
type: Component,
|
|
@@ -93,7 +93,7 @@ export class NodeComponent {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeComponent, selector: "g[node]", inputs: { nodeModel: "nodeModel", nodeTemplate: "nodeTemplate", groupNodeTemplate: "groupNodeTemplate" }, providers: [HandleService, NodeAccessorService], viewQueries: [{ propertyName: "nodeContentRef", first: true, predicate: ["nodeContent"], descendants: true }, { propertyName: "htmlWrapperRef", first: true, predicate: ["htmlWrapper"], descendants: true }], ngImport: i0, template: "<!-- Default node -->\n<svg:foreignObject\n *ngIf=\"nodeModel.node.type === 'default'\"\n class=\"selectable\"\n #nodeContent\n [attr.width]=\"nodeModel.size().width\"\n [attr.height]=\"nodeModel.size().height\"\n (pointerStart)=\"pullNode(); selectNode()\"\n>\n <default-node\n #htmlWrapper\n [selected]=\"nodeModel.selected()\"\n [style.width]=\"styleWidth()\"\n [style.height]=\"styleHeight()\"\n [style.max-width]=\"styleWidth()\"\n [style.max-height]=\"styleHeight()\"\n >\n <div [outerHTML]=\"nodeModel.text()\"></div>\n\n <handle type=\"source\" [position]=\"nodeModel.sourcePosition()\" />\n <handle type=\"target\" [position]=\"nodeModel.targetPosition()\" />\n </default-node>\n</svg:foreignObject>\n\n<!-- Template node -->\n<svg:foreignObject\n *ngIf=\"nodeModel.node.type === 'html-template' && nodeTemplate\"\n class=\"selectable\"\n [attr.width]=\"nodeModel.size().width\"\n [attr.height]=\"nodeModel.size().height\"\n (pointerStart)=\"pullNode()\"\n>\n <div\n #htmlWrapper\n class=\"wrapper\"\n [style.width]=\"styleWidth()\"\n [style.height]=\"styleHeight()\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { node: nodeModel.node, selected: nodeModel.selected } }\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n </div>\n</svg:foreignObject>\n\n<!-- Component node -->\n<svg:foreignObject\n *ngIf=\"nodeModel.isComponentType\"\n class=\"selectable\"\n [attr.width]=\"nodeModel.size().width\"\n [attr.height]=\"nodeModel.size().height\"\n (pointerStart)=\"pullNode()\"\n>\n <div\n #htmlWrapper\n class=\"wrapper\"\n [style.width]=\"styleWidth()\"\n [style.height]=\"styleHeight()\"\n >\n <ng-container\n [ngComponentOutlet]=\"$any(nodeModel.node.type)\"\n [ngComponentOutletInputs]=\"nodeModel.componentTypeInputs()\"\n [ngComponentOutletInjector]=\"injector\"\n />\n </div>\n</svg:foreignObject>\n\n<!-- Default group node -->\n<svg:rect\n *ngIf=\"nodeModel.node.type === 'default-group'\"\n [resizable]=\"nodeModel.resizable()\"\n [gap]=\"3\"\n [resizerColor]=\"nodeModel.color()\"\n class=\"default-group-node\"\n rx=\"5\"\n ry=\"5\"\n [class.default-group-node_selected]=\"nodeModel.selected()\"\n [attr.width]=\"nodeModel.size().width\"\n [attr.height]=\"nodeModel.size().height\"\n [style.stroke]=\"nodeModel.color()\"\n [style.fill]=\"nodeModel.color()\"\n (pointerStart)=\"pullNode(); selectNode()\"\n/>\n\n<!-- Template group node -->\n<svg:g\n *ngIf=\"nodeModel.node.type === 'template-group' && groupNodeTemplate\"\n class=\"selectable\"\n (pointerStart)=\"pullNode()\"\n>\n <ng-container\n [ngTemplateOutlet]=\"groupNodeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { node: nodeModel.node, selected: nodeModel.selected, width: nodeModel.width, height: nodeModel.height } }\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n</svg:g>\n\n<!-- Resizer -->\n<ng-container *ngIf=\"nodeModel.resizerTemplate() as template\">\n <ng-container *ngIf=\"nodeModel.resizable()\">\n <ng-template [ngTemplateOutlet]=\"template\" />\n </ng-container>\n</ng-container>\n\n<!-- Handles -->\n<ng-container *ngFor=\"let handle of nodeModel.handles()\">\n <svg:circle\n *ngIf=\"!handle.template\"\n class=\"default-handle\"\n [attr.cx]=\"handle.offset().x\"\n [attr.cy]=\"handle.offset().y\"\n [attr.stroke-width]=\"handle.strokeWidth\"\n r=\"5\"\n (pointerStart)=\"startConnection($event, handle)\"\n (pointerEnd)=\"endConnection(handle)\"\n />\n\n <svg:g\n *ngIf=\"handle.template\"\n [handleSizeController]=\"handle\"\n (pointerStart)=\"startConnection($event, handle)\"\n (pointerEnd)=\"endConnection(handle)\"\n >\n <ng-container *ngTemplateOutlet=\"handle.template; context: handle.templateContext\" />\n </svg:g>\n\n <svg:circle\n *ngIf=\"showMagnet()\"\n class=\"magnet\"\n [attr.r]=\"nodeModel.magnetRadius\"\n [attr.cx]=\"handle.offset().x\"\n [attr.cy]=\"handle.offset().y\"\n (pointerEnd)=\"endConnection(handle); resetValidateConnection(handle)\"\n (pointerOver)=\"validateConnection(handle)\"\n (pointerOut)=\"resetValidateConnection(handle)\"\n />\n</ng-container>\n", styles: [".magnet{opacity:0}.wrapper{display:table-cell}.default-group-node{stroke-width:1.5px;fill-opacity:.05}.default-group-node_selected{stroke-width:2px}.default-handle{stroke:#fff;fill:#1b262c}\n"], dependencies: [{ kind: "directive", type: i1.
|
|
96
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeComponent, selector: "g[node]", inputs: { nodeModel: "nodeModel", nodeTemplate: "nodeTemplate", groupNodeTemplate: "groupNodeTemplate" }, providers: [HandleService, NodeAccessorService], viewQueries: [{ propertyName: "nodeContentRef", first: true, predicate: ["nodeContent"], descendants: true }, { propertyName: "htmlWrapperRef", first: true, predicate: ["htmlWrapper"], descendants: true }], ngImport: i0, template: "<!-- Default node -->\n<svg:foreignObject\n *ngIf=\"nodeModel.node.type === 'default'\"\n class=\"selectable\"\n #nodeContent\n [attr.width]=\"nodeModel.size().width\"\n [attr.height]=\"nodeModel.size().height\"\n (pointerStart)=\"pullNode(); selectNode()\"\n>\n <default-node\n #htmlWrapper\n [selected]=\"nodeModel.selected()\"\n [style.width]=\"styleWidth()\"\n [style.height]=\"styleHeight()\"\n [style.max-width]=\"styleWidth()\"\n [style.max-height]=\"styleHeight()\"\n >\n <div [outerHTML]=\"nodeModel.text()\"></div>\n\n <handle type=\"source\" [position]=\"nodeModel.sourcePosition()\" />\n <handle type=\"target\" [position]=\"nodeModel.targetPosition()\" />\n </default-node>\n</svg:foreignObject>\n\n<!-- Template node -->\n<svg:foreignObject\n *ngIf=\"nodeModel.node.type === 'html-template' && nodeTemplate\"\n class=\"selectable\"\n [attr.width]=\"nodeModel.size().width\"\n [attr.height]=\"nodeModel.size().height\"\n (pointerStart)=\"pullNode()\"\n>\n <div\n #htmlWrapper\n class=\"wrapper\"\n [style.width]=\"styleWidth()\"\n [style.height]=\"styleHeight()\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { node: nodeModel.node, selected: nodeModel.selected } }\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n </div>\n</svg:foreignObject>\n\n<!-- Component node -->\n<svg:foreignObject\n *ngIf=\"nodeModel.isComponentType\"\n class=\"selectable\"\n [attr.width]=\"nodeModel.size().width\"\n [attr.height]=\"nodeModel.size().height\"\n (pointerStart)=\"pullNode()\"\n>\n <div\n #htmlWrapper\n class=\"wrapper\"\n [style.width]=\"styleWidth()\"\n [style.height]=\"styleHeight()\"\n >\n <ng-container\n [ngComponentOutlet]=\"$any(nodeModel.node.type)\"\n [ngComponentOutletInputs]=\"nodeModel.componentTypeInputs()\"\n [ngComponentOutletInjector]=\"injector\"\n />\n </div>\n</svg:foreignObject>\n\n<!-- Default group node -->\n<svg:rect\n *ngIf=\"nodeModel.node.type === 'default-group'\"\n [resizable]=\"nodeModel.resizable()\"\n [gap]=\"3\"\n [resizerColor]=\"nodeModel.color()\"\n class=\"default-group-node\"\n rx=\"5\"\n ry=\"5\"\n [class.default-group-node_selected]=\"nodeModel.selected()\"\n [attr.width]=\"nodeModel.size().width\"\n [attr.height]=\"nodeModel.size().height\"\n [style.stroke]=\"nodeModel.color()\"\n [style.fill]=\"nodeModel.color()\"\n (pointerStart)=\"pullNode(); selectNode()\"\n/>\n\n<!-- Template group node -->\n<svg:g\n *ngIf=\"nodeModel.node.type === 'template-group' && groupNodeTemplate\"\n class=\"selectable\"\n (pointerStart)=\"pullNode()\"\n>\n <ng-container\n [ngTemplateOutlet]=\"groupNodeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { node: nodeModel.node, selected: nodeModel.selected, width: nodeModel.width, height: nodeModel.height } }\"\n [ngTemplateOutletInjector]=\"injector\"\n />\n</svg:g>\n\n<!-- Resizer -->\n<ng-container *ngIf=\"nodeModel.resizerTemplate() as template\">\n <ng-container *ngIf=\"nodeModel.resizable()\">\n <ng-template [ngTemplateOutlet]=\"template\" />\n </ng-container>\n</ng-container>\n\n<!-- Handles -->\n<ng-container *ngFor=\"let handle of nodeModel.handles()\">\n <svg:circle\n *ngIf=\"!handle.template\"\n class=\"default-handle\"\n [attr.cx]=\"handle.offset().x\"\n [attr.cy]=\"handle.offset().y\"\n [attr.stroke-width]=\"handle.strokeWidth\"\n r=\"5\"\n (pointerStart)=\"startConnection($event, handle)\"\n (pointerEnd)=\"endConnection(handle)\"\n />\n\n <svg:g\n *ngIf=\"handle.template\"\n [handleSizeController]=\"handle\"\n (pointerStart)=\"startConnection($event, handle)\"\n (pointerEnd)=\"endConnection(handle)\"\n >\n <ng-container *ngTemplateOutlet=\"handle.template; context: handle.templateContext\" />\n </svg:g>\n\n <svg:circle\n *ngIf=\"showMagnet()\"\n class=\"magnet\"\n [attr.r]=\"nodeModel.magnetRadius\"\n [attr.cx]=\"handle.offset().x\"\n [attr.cy]=\"handle.offset().y\"\n (pointerEnd)=\"endConnection(handle); resetValidateConnection(handle)\"\n (pointerOver)=\"validateConnection(handle)\"\n (pointerOut)=\"resetValidateConnection(handle)\"\n />\n</ng-container>\n", styles: [".magnet{opacity:0}.wrapper{display:table-cell}.default-group-node{stroke-width:1.5px;fill-opacity:.05}.default-group-node_selected{stroke-width:2px}.default-handle{stroke:#fff;fill:#1b262c}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: i2.DefaultNodeComponent, selector: "default-node", inputs: ["selected"] }, { kind: "component", type: i3.HandleComponent, selector: "handle", inputs: ["position", "type", "id", "template"] }, { kind: "component", type: i4.ResizableComponent, selector: "[resizable]", inputs: ["resizable", "resizerColor", "gap"] }, { kind: "directive", type: i5.HandleSizeControllerDirective, selector: "[handleSizeController]", inputs: ["handleSizeController"] }, { kind: "directive", type: i6.PointerDirective, selector: "[pointerStart], [pointerEnd], [pointerOver], [pointerOut]", outputs: ["pointerOver", "pointerOut", "pointerStart", "pointerEnd"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
97
97
|
}
|
|
98
98
|
__decorate([
|
|
99
99
|
InjectionContext
|
|
@@ -292,7 +292,7 @@ export class VflowComponent {
|
|
|
292
292
|
FlowSettingsService,
|
|
293
293
|
ComponentEventBusService,
|
|
294
294
|
KeyboardService
|
|
295
|
-
], queries: [{ propertyName: "nodeTemplateDirective", first: true, predicate: NodeHtmlTemplateDirective, descendants: true }, { propertyName: "groupNodeTemplateDirective", first: true, predicate: GroupNodeTemplateDirective, 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 }], viewQueries: [{ propertyName: "mapContext", first: true, predicate: MapContextDirective, descendants: true }, { propertyName: "spacePointContext", first: true, predicate: SpacePointContextDirective, descendants: true }], hostDirectives: [{ directive: i1.ConnectionControllerDirective, outputs: ["onConnect", "onConnect"] }, { directive: i2.ChangesControllerDirective, outputs: ["onNodesChange", "onNodesChange", "onNodesChange.position", "onNodesChange.position", "onNodesChange.position.single", "onNodesChange.position.single", "onNodesChange.position.many", "onNodesChange.position.many", "onNodesChange.size", "onNodesChange.size", "onNodesChange.size.single", "onNodesChange.size.single", "onNodesChange.size.many", "onNodesChange.size.many", "onNodesChange.add", "onNodesChange.add", "onNodesChange.add.single", "onNodesChange.add.single", "onNodesChange.add.many", "onNodesChange.add.many", "onNodesChange.remove", "onNodesChange.remove", "onNodesChange.remove.single", "onNodesChange.remove.single", "onNodesChange.remove.many", "onNodesChange.remove.many", "onNodesChange.select", "onNodesChange.select", "onNodesChange.select.single", "onNodesChange.select.single", "onNodesChange.select.many", "onNodesChange.select.many", "onEdgesChange", "onEdgesChange", "onEdgesChange.detached", "onEdgesChange.detached", "onEdgesChange.detached.single", "onEdgesChange.detached.single", "onEdgesChange.detached.many", "onEdgesChange.detached.many", "onEdgesChange.add", "onEdgesChange.add", "onEdgesChange.add.single", "onEdgesChange.add.single", "onEdgesChange.add.many", "onEdgesChange.add.many", "onEdgesChange.remove", "onEdgesChange.remove", "onEdgesChange.remove.single", "onEdgesChange.remove.single", "onEdgesChange.remove.many", "onEdgesChange.remove.many", "onEdgesChange.select", "onEdgesChange.select", "onEdgesChange.select.single", "onEdgesChange.select.single", "onEdgesChange.select.many", "onEdgesChange.select.many"] }], ngImport: i0, template: "<svg:svg\n rootSvgRef\n rootSvgContext\n rootPointer\n flowSizeController\n class=\"root-svg\"\n #flow\n>\n <defs [markers]=\"markers()\" flowDefs />\n\n <g background />\n\n <svg:g\n mapContext\n spacePointContext\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 [nodeTemplate]=\"nodeTemplateDirective?.templateRef\"\n [groupNodeTemplate]=\"groupNodeTemplateDirective?.templateRef\"\n [attr.transform]=\"model.pointTransform()\"\n />\n </svg:g>\n\n <!-- Minimap -->\n <ng-container *ngIf=\"minimap() as minimap\">\n <ng-container [ngTemplateOutlet]=\"minimap.template()\" />\n </ng-container>\n</svg:svg>\n", styles: [":host{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}:host ::ng-deep *{box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i3.
|
|
295
|
+
], queries: [{ propertyName: "nodeTemplateDirective", first: true, predicate: NodeHtmlTemplateDirective, descendants: true }, { propertyName: "groupNodeTemplateDirective", first: true, predicate: GroupNodeTemplateDirective, 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 }], viewQueries: [{ propertyName: "mapContext", first: true, predicate: MapContextDirective, descendants: true }, { propertyName: "spacePointContext", first: true, predicate: SpacePointContextDirective, descendants: true }], hostDirectives: [{ directive: i1.ConnectionControllerDirective, outputs: ["onConnect", "onConnect"] }, { directive: i2.ChangesControllerDirective, outputs: ["onNodesChange", "onNodesChange", "onNodesChange.position", "onNodesChange.position", "onNodesChange.position.single", "onNodesChange.position.single", "onNodesChange.position.many", "onNodesChange.position.many", "onNodesChange.size", "onNodesChange.size", "onNodesChange.size.single", "onNodesChange.size.single", "onNodesChange.size.many", "onNodesChange.size.many", "onNodesChange.add", "onNodesChange.add", "onNodesChange.add.single", "onNodesChange.add.single", "onNodesChange.add.many", "onNodesChange.add.many", "onNodesChange.remove", "onNodesChange.remove", "onNodesChange.remove.single", "onNodesChange.remove.single", "onNodesChange.remove.many", "onNodesChange.remove.many", "onNodesChange.select", "onNodesChange.select", "onNodesChange.select.single", "onNodesChange.select.single", "onNodesChange.select.many", "onNodesChange.select.many", "onEdgesChange", "onEdgesChange", "onEdgesChange.detached", "onEdgesChange.detached", "onEdgesChange.detached.single", "onEdgesChange.detached.single", "onEdgesChange.detached.many", "onEdgesChange.detached.many", "onEdgesChange.add", "onEdgesChange.add", "onEdgesChange.add.single", "onEdgesChange.add.single", "onEdgesChange.add.many", "onEdgesChange.add.many", "onEdgesChange.remove", "onEdgesChange.remove", "onEdgesChange.remove.single", "onEdgesChange.remove.single", "onEdgesChange.remove.many", "onEdgesChange.remove.many", "onEdgesChange.select", "onEdgesChange.select", "onEdgesChange.select.single", "onEdgesChange.select.single", "onEdgesChange.select.many", "onEdgesChange.select.many"] }], ngImport: i0, template: "<svg:svg\n rootSvgRef\n rootSvgContext\n rootPointer\n flowSizeController\n class=\"root-svg\"\n #flow\n>\n <defs [markers]=\"markers()\" flowDefs />\n\n <g background />\n\n <svg:g\n mapContext\n spacePointContext\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 [nodeTemplate]=\"nodeTemplateDirective?.templateRef\"\n [groupNodeTemplate]=\"groupNodeTemplateDirective?.templateRef\"\n [attr.transform]=\"model.pointTransform()\"\n />\n </svg:g>\n\n <!-- Minimap -->\n <ng-container *ngIf=\"minimap() as minimap\">\n <ng-container [ngTemplateOutlet]=\"minimap.template()\" />\n </ng-container>\n</svg:svg>\n", styles: [":host{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}:host ::ng-deep *{box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.NodeComponent, selector: "g[node]", inputs: ["nodeModel", "nodeTemplate", "groupNodeTemplate"] }, { 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: "component", type: i8.BackgroundComponent, selector: "g[background]" }, { kind: "directive", type: i9.SpacePointContextDirective, selector: "g[spacePointContext]" }, { kind: "directive", type: i10.MapContextDirective, selector: "g[mapContext]" }, { kind: "directive", type: i11.RootSvgReferenceDirective, selector: "svg[rootSvgRef]" }, { kind: "directive", type: i12.RootSvgContextDirective, selector: "svg[rootSvgContext]" }, { kind: "directive", type: i13.RootPointerDirective, selector: "svg[rootPointer]" }, { kind: "directive", type: i14.FlowSizeControllerDirective, selector: "svg[flowSizeController]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
296
296
|
}
|
|
297
297
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VflowComponent, decorators: [{
|
|
298
298
|
type: Component,
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { path as d3Path } from 'd3-path';
|
|
2
1
|
import { getPointOnLineByRatio } from '../point-on-line-by-ratio';
|
|
3
2
|
export function bezierPath(source, target, sourcePosition, targetPosition, usingPoints = [false, false, false]) {
|
|
4
|
-
const path = d3Path();
|
|
5
|
-
path.moveTo(source.x, source.y);
|
|
6
3
|
const distanceVector = { x: source.x - target.x, y: source.y - target.y };
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
path.
|
|
10
|
-
return getPathData(path, source, target,
|
|
4
|
+
const sourceControl = calcControlPoint(source, sourcePosition, distanceVector);
|
|
5
|
+
const targetControl = calcControlPoint(target, targetPosition, distanceVector);
|
|
6
|
+
const path = `M${source.x},${source.y} C${sourceControl.x},${sourceControl.y} ${targetControl.x},${targetControl.y} ${target.x},${target.y}`;
|
|
7
|
+
return getPathData(path, source, target, sourceControl, targetControl, usingPoints);
|
|
11
8
|
}
|
|
12
9
|
/**
|
|
13
10
|
* Calculate control point based on provided point
|
|
@@ -47,20 +44,20 @@ function calcControlPoint(point, pointPosition, distanceVector) {
|
|
|
47
44
|
y: point.y - factorPoint.y * controlOffset,
|
|
48
45
|
};
|
|
49
46
|
}
|
|
50
|
-
function getPathData(path, source, target,
|
|
47
|
+
function getPathData(path, source, target, sourceControl, targetControl, usingPoints) {
|
|
51
48
|
const [start, center, end] = usingPoints;
|
|
52
49
|
const nullPoint = { x: 0, y: 0 };
|
|
53
50
|
return {
|
|
54
|
-
path
|
|
51
|
+
path,
|
|
55
52
|
points: {
|
|
56
53
|
start: start
|
|
57
|
-
? getPointOnBezier(source, target,
|
|
54
|
+
? getPointOnBezier(source, target, sourceControl, targetControl, 0.1)
|
|
58
55
|
: nullPoint,
|
|
59
56
|
center: center
|
|
60
|
-
? getPointOnBezier(source, target,
|
|
57
|
+
? getPointOnBezier(source, target, sourceControl, targetControl, 0.5)
|
|
61
58
|
: nullPoint,
|
|
62
59
|
end: end
|
|
63
|
-
? getPointOnBezier(source, target,
|
|
60
|
+
? getPointOnBezier(source, target, sourceControl, targetControl, 0.9)
|
|
64
61
|
: nullPoint,
|
|
65
62
|
},
|
|
66
63
|
};
|
|
@@ -68,10 +65,10 @@ function getPathData(path, source, target, firstControl, secondControl, usingPoi
|
|
|
68
65
|
/**
|
|
69
66
|
* Get point on bezier curve by ratio
|
|
70
67
|
*/
|
|
71
|
-
function getPointOnBezier(sourcePoint, targetPoint,
|
|
72
|
-
const fromSourceToFirstControl = getPointOnLineByRatio(sourcePoint,
|
|
73
|
-
const fromFirstControlToSecond = getPointOnLineByRatio(
|
|
74
|
-
const fromSecondControlToTarget = getPointOnLineByRatio(
|
|
68
|
+
function getPointOnBezier(sourcePoint, targetPoint, sourceControl, targetControl, ratio) {
|
|
69
|
+
const fromSourceToFirstControl = getPointOnLineByRatio(sourcePoint, sourceControl, ratio);
|
|
70
|
+
const fromFirstControlToSecond = getPointOnLineByRatio(sourceControl, targetControl, ratio);
|
|
71
|
+
const fromSecondControlToTarget = getPointOnLineByRatio(targetControl, targetPoint, ratio);
|
|
75
72
|
return getPointOnLineByRatio(getPointOnLineByRatio(fromSourceToFirstControl, fromFirstControlToSecond, ratio), getPointOnLineByRatio(fromFirstControlToSecond, fromSecondControlToTarget, ratio), ratio);
|
|
76
73
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV6aWVyLXBhdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvbWF0aC9lZGdlLXBhdGgvYmV6aWVyLXBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEUsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsTUFBYSxFQUNiLE1BQWEsRUFDYixjQUF3QixFQUN4QixjQUF3QixFQUN4QixjQUEyQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBRWhELE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFMUUsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMvRSxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRS9FLE1BQU0sSUFBSSxHQUNSLElBQUksTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFFakksT0FBTyxXQUFXLENBQ2hCLElBQUksRUFDSixNQUFNLEVBQ04sTUFBTSxFQUNOLGFBQWEsRUFDYixhQUFhLEVBQ2IsV0FBVyxDQUNaLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztH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QUFhLEVBQ2IsS0FBSyxDQUNOLENBQUM7SUFDRixNQUFNLHlCQUF5QixHQUFVLHFCQUFxQixDQUM1RCxhQUFhLEVBQ2IsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFDO0lBRUYsT0FBTyxxQkFBcUIsQ0FDMUIscUJBQXFCLENBQUMsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLEVBQ2hGLHFCQUFxQixDQUFDLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxFQUNqRixLQUFLLENBQ04sQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGF0aC1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFVzaW5nUG9pbnRzIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXNpbmctcG9pbnRzLnR5cGUnO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuLi8uLi90eXBlcy9wb3NpdGlvbi50eXBlJztcbmltcG9ydCB7IGdldFBvaW50T25MaW5lQnlSYXRpbyB9IGZyb20gJy4uL3BvaW50LW9uLWxpbmUtYnktcmF0aW8nO1xuXG5leHBvcnQgZnVuY3Rpb24gYmV6aWVyUGF0aChcbiAgc291cmNlOiBQb2ludCxcbiAgdGFyZ2V0OiBQb2ludCxcbiAgc291cmNlUG9zaXRpb246IFBvc2l0aW9uLFxuICB0YXJnZXRQb3NpdGlvbjogUG9zaXRpb24sXG4gIHVzaW5nUG9pbnRzOiBVc2luZ1BvaW50cyA9IFtmYWxzZSwgZmFsc2UsIGZhbHNlXVxuKTogUGF0aERhdGEge1xuICBjb25zdCBkaXN0YW5jZVZlY3RvciA9IHsgeDogc291cmNlLnggLSB0YXJnZXQueCwgeTogc291cmNlLnkgLSB0YXJnZXQueSB9O1xuXG4gIGNvbnN0IHNvdXJjZUNvbnRyb2wgPSBjYWxjQ29udHJvbFBvaW50KHNvdXJjZSwgc291cmNlUG9zaXRpb24sIGRpc3RhbmNlVmVjdG9yKTtcbiAgY29uc3QgdGFyZ2V0Q29udHJvbCA9IGNhbGNDb250cm9sUG9pbnQodGFyZ2V0LCB0YXJnZXRQb3NpdGlvbiwgZGlzdGFuY2VWZWN0b3IpO1xuXG4gIGNvbnN0IHBhdGggPVxuICAgIGBNJHtzb3VyY2UueH0sJHtzb3VyY2UueX0gQyR7c291cmNlQ29udHJvbC54fSwke3NvdXJjZUNvbnRyb2wueX0gJHt0YXJnZXRDb250cm9sLnh9LCR7dGFyZ2V0Q29udHJvbC55fSAke3RhcmdldC54fSwke3RhcmdldC55fWBcblxuICByZXR1cm4gZ2V0UGF0aERhdGEoXG4gICAgcGF0aCxcbiAgICBzb3VyY2UsXG4gICAgdGFyZ2V0LFxuICAgIHNvdXJjZUNvbnRyb2wsXG4gICAgdGFyZ2V0Q29udHJvbCxcbiAgICB1c2luZ1BvaW50c1xuICApO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBjb250cm9sIHBvaW50IGJhc2VkIG9uIHByb3ZpZGVkIHBvaW50XG4gKlxuICogQHBhcmFtIHBvaW50IHJlbGF0aXZlIHRoaXMgcG9pbnQgY29udHJvbCBwb2ludCBpcyBnb25uYSBiZSBjb21wdXRlZCAodGhlIHNvdXJjZSBvciB0aGUgdGFyZ2V0KVxuICogQHBhcmFtIHBvaW50UG9zaXRpb24gcG9zaXRpb24gb2Yge3BvaW50fSBvbiBibG9ja1xuICogQHBhcmFtIGRpc3RhbmNlVmVjdG9yIHRyYW5zbWl0cyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgc291cmNlIGFuZCB0aGUgdGFyZ2V0IGFzIHggYW5kIHkgY29vcmRpbmF0ZXNcbiAqL1xuXG5mdW5jdGlvbiBjYWxjQ29udHJvbFBvaW50KFxuICBwb2ludDogUG9pbnQsXG4gIHBvaW50UG9zaXRpb246IFBvc2l0aW9uLFxuICBkaXN0YW5jZVZlY3RvcjogUG9pbnRcbikge1xuICBjb25zdCBmYWN0b3JQb2ludCA9IHsgeDogMCwgeTogMCB9O1xuXG4gIHN3aXRjaCAocG9pbnRQb3NpdGlvbikge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBmYWN0b3JQb2ludC55ID0gMTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBmYWN0b3JQb2ludC55ID0gLTE7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBmYWN0b3JQb2ludC54ID0gMTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgZmFjdG9yUG9pbnQueCA9IC0xO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICAvLyBUT0RPOiBleHBsYWluIG5hbWVcbiAgY29uc3QgZnVsbERpc3RhbmNlVmVjdG9yID0ge1xuICAgIHg6IGRpc3RhbmNlVmVjdG9yLnggKiBNYXRoLmFicyhmYWN0b3JQb2ludC54KSxcbiAgICB5OiBkaXN0YW5jZVZlY3Rvci55ICogTWF0aC5hYnMoZmFjdG9yUG9pbnQueSksXG4gIH07XG5cbiAgLy8gVE9ETzogcHJvYmFibHkgbmVlZCB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlXG4gIGNvbnN0IGN1cnZhdHVyZSA9IDAuMjU7XG4gIC8vIHRoYW5rcyBjb2xsZWFndWVzIGZyb20gcmVhY3Qvc3ZlbHRlIHdvcmxkXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS94eWZsb3cveHlmbG93L2Jsb2IvZjAxMTc5MzliYWU5MzQ0NDdmYTdmMjMyMDgxZjkzNzE2OWVlMjNiNS9wYWNrYWdlcy9zeXN0ZW0vc3JjL3V0aWxzL2VkZ2VzL2Jlemllci1lZGdlLnRzI0w1NlxuICBjb25zdCBjb250cm9sT2Zmc2V0ID1cbiAgICBjdXJ2YXR1cmUgKiAyNSAqIE1hdGguc3FydChNYXRoLmFicyhmdWxsRGlzdGFuY2VWZWN0b3IueCArIGZ1bGxEaXN0YW5jZVZlY3Rvci55KSk7XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBwb2ludC54ICsgZmFjdG9yUG9pbnQueCAqIGNvbnRyb2xPZmZzZXQsXG4gICAgeTogcG9pbnQueSAtIGZhY3RvclBvaW50LnkgKiBjb250cm9sT2Zmc2V0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRQYXRoRGF0YShcbiAgcGF0aDogc3RyaW5nLFxuICBzb3VyY2U6IFBvaW50LFxuICB0YXJnZXQ6IFBvaW50LFxuICBzb3VyY2VDb250cm9sOiBQb2ludCxcbiAgdGFyZ2V0Q29udHJvbDogUG9pbnQsXG4gIHVzaW5nUG9pbnRzOiBVc2luZ1BvaW50c1xuKTogUGF0aERhdGEge1xuICBjb25zdCBbc3RhcnQsIGNlbnRlciwgZW5kXSA9IHVzaW5nUG9pbnRzO1xuXG4gIGNvbnN0IG51bGxQb2ludCA9IHsgeDogMCwgeTogMCB9O1xuXG4gIHJldHVybiB7XG4gICAgcGF0aCxcbiAgICBwb2ludHM6IHtcbiAgICAgIHN0YXJ0OiBzdGFydFxuICAgICAgICA/IGdldFBvaW50T25CZXppZXIoc291cmNlLCB0YXJnZXQsIHNvdXJjZUNvbnRyb2wsIHRhcmdldENvbnRyb2wsIDAuMSlcbiAgICAgICAgOiBudWxsUG9pbnQsXG4gICAgICBjZW50ZXI6IGNlbnRlclxuICAgICAgICA/IGdldFBvaW50T25CZXppZXIoc291cmNlLCB0YXJnZXQsIHNvdXJjZUNvbnRyb2wsIHRhcmdldENvbnRyb2wsIDAuNSlcbiAgICAgICAgOiBudWxsUG9pbnQsXG4gICAgICBlbmQ6IGVuZFxuICAgICAgICA/IGdldFBvaW50T25CZXppZXIoc291cmNlLCB0YXJnZXQsIHNvdXJjZUNvbnRyb2wsIHRhcmdldENvbnRyb2wsIDAuOSlcbiAgICAgICAgOiBudWxsUG9pbnQsXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXQgcG9pbnQgb24gYmV6aWVyIGN1cnZlIGJ5IHJhdGlvXG4gKi9cbmZ1bmN0aW9uIGdldFBvaW50T25CZXppZXIoXG4gIHNvdXJjZVBvaW50OiBQb2ludCxcbiAgdGFyZ2V0UG9pbnQ6IFBvaW50LFxuICBzb3VyY2VDb250cm9sOiBQb2ludCxcbiAgdGFyZ2V0Q29udHJvbDogUG9pbnQsXG4gIHJhdGlvOiBudW1iZXJcbik6IFBvaW50IHtcbiAgY29uc3QgZnJvbVNvdXJjZVRvRmlyc3RDb250cm9sOiBQb2ludCA9IGdldFBvaW50T25MaW5lQnlSYXRpbyhcbiAgICBzb3VyY2VQb2ludCxcbiAgICBzb3VyY2VDb250cm9sLFxuICAgIHJhdGlvXG4gICk7XG4gIGNvbnN0IGZyb21GaXJzdENvbnRyb2xUb1NlY29uZDogUG9pbnQgPSBnZXRQb2ludE9uTGluZUJ5UmF0aW8oXG4gICAgc291cmNlQ29udHJvbCxcbiAgICB0YXJnZXRDb250cm9sLFxuICAgIHJhdGlvXG4gICk7XG4gIGNvbnN0IGZyb21TZWNvbmRDb250cm9sVG9UYXJnZXQ6IFBvaW50ID0gZ2V0UG9pbnRPbkxpbmVCeVJhdGlvKFxuICAgIHRhcmdldENvbnRyb2wsXG4gICAgdGFyZ2V0UG9pbnQsXG4gICAgcmF0aW9cbiAgKTtcblxuICByZXR1cm4gZ2V0UG9pbnRPbkxpbmVCeVJhdGlvKFxuICAgIGdldFBvaW50T25MaW5lQnlSYXRpbyhmcm9tU291cmNlVG9GaXJzdENvbnRyb2wsIGZyb21GaXJzdENvbnRyb2xUb1NlY29uZCwgcmF0aW8pLFxuICAgIGdldFBvaW50T25MaW5lQnlSYXRpbyhmcm9tRmlyc3RDb250cm9sVG9TZWNvbmQsIGZyb21TZWNvbmRDb250cm9sVG9UYXJnZXQsIHJhdGlvKSxcbiAgICByYXRpb1xuICApO1xufVxuIl19
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { path as d3Path } from 'd3-path';
|
|
2
1
|
import { getPointOnLineByRatio } from "../point-on-line-by-ratio";
|
|
3
2
|
export function straightPath(source, target, usingPoints = [false, false, false]) {
|
|
4
3
|
const [start, center, end] = usingPoints;
|
|
5
4
|
const nullPoint = { x: 0, y: 0 };
|
|
6
|
-
const path = d3Path();
|
|
7
|
-
path.moveTo(source.x, source.y);
|
|
8
|
-
path.lineTo(target.x, target.y);
|
|
9
5
|
return {
|
|
10
|
-
path:
|
|
6
|
+
path: `M ${source.x},${source.y}L ${target.x},${target.y}`,
|
|
11
7
|
points: {
|
|
12
8
|
start: start ? getPointOnLineByRatio(source, target, .15) : nullPoint,
|
|
13
9
|
center: center ? getPointOnLineByRatio(source, target, .50) : nullPoint,
|
|
@@ -15,4 +11,4 @@ export function straightPath(source, target, usingPoints = [false, false, false]
|
|
|
15
11
|
}
|
|
16
12
|
};
|
|
17
13
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYWlnaC1wYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L21hdGgvZWRnZS1wYXRoL3N0cmFpZ2gtcGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLFVBQVUsWUFBWSxDQUMxQixNQUFhLEVBQ2IsTUFBYSxFQUNiLGNBQTJCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7SUFFaEQsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFBO0lBQ3hDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUE7SUFFaEMsT0FBTztRQUNMLElBQUksRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUU7UUFDMUQsTUFBTSxFQUFFO1lBQ04sS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNyRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3ZFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDbEU7S0FDRixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGhEYXRhIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvcGF0aC1kYXRhLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFVzaW5nUG9pbnRzIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3VzaW5nLXBvaW50cy50eXBlXCI7XG5pbXBvcnQgeyBnZXRQb2ludE9uTGluZUJ5UmF0aW8gfSBmcm9tIFwiLi4vcG9pbnQtb24tbGluZS1ieS1yYXRpb1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyYWlnaHRQYXRoKFxuICBzb3VyY2U6IFBvaW50LFxuICB0YXJnZXQ6IFBvaW50LFxuICB1c2luZ1BvaW50czogVXNpbmdQb2ludHMgPSBbZmFsc2UsIGZhbHNlLCBmYWxzZV1cbik6IFBhdGhEYXRhIHtcbiAgY29uc3QgW3N0YXJ0LCBjZW50ZXIsIGVuZF0gPSB1c2luZ1BvaW50c1xuICBjb25zdCBudWxsUG9pbnQgPSB7IHg6IDAsIHk6IDAgfVxuXG4gIHJldHVybiB7XG4gICAgcGF0aDogYE0gJHtzb3VyY2UueH0sJHtzb3VyY2UueX1MICR7dGFyZ2V0Lnh9LCR7dGFyZ2V0Lnl9YCxcbiAgICBwb2ludHM6IHtcbiAgICAgIHN0YXJ0OiBzdGFydCA/IGdldFBvaW50T25MaW5lQnlSYXRpbyhzb3VyY2UsIHRhcmdldCwgLjE1KSA6IG51bGxQb2ludCxcbiAgICAgIGNlbnRlcjogY2VudGVyID8gZ2V0UG9pbnRPbkxpbmVCeVJhdGlvKHNvdXJjZSwgdGFyZ2V0LCAuNTApIDogbnVsbFBvaW50LFxuICAgICAgZW5kOiBlbmQgPyBnZXRQb2ludE9uTGluZUJ5UmF0aW8oc291cmNlLCB0YXJnZXQsIC44NSkgOiBudWxsUG9pbnQsXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -68,7 +68,8 @@ export class HandleModel {
|
|
|
68
68
|
this.templateContext = {
|
|
69
69
|
$implicit: {
|
|
70
70
|
point: this.offset,
|
|
71
|
-
state: this.state
|
|
71
|
+
state: this.state,
|
|
72
|
+
node: this.parentNode.node
|
|
72
73
|
}
|
|
73
74
|
};
|
|
74
75
|
}
|
|
@@ -88,4 +89,4 @@ export class HandleModel {
|
|
|
88
89
|
return { width: 0, height: 0 };
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L21vZGVscy9oYW5kbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXRELE1BQU0sT0FBTyxXQUFXO0lBMEZ0QixZQUNTLFNBQXFCLEVBQ3JCLFVBQXFCO1FBRHJCLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQTNGZCxnQkFBVyxHQUFHLENBQUMsQ0FBQTtRQUUvQjs7O1dBR0c7UUFDSSxTQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNsQyxNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDcEMsQ0FBQyxDQUFBO1FBRUssV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDL0IsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPO29CQUNsQixDQUFDLEVBQUUsQ0FBQztvQkFDSixDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUM1RCxDQUFBO2dCQUNELEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTztvQkFDbkIs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SUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUN0QztRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5vZGVIYW5kbGUgfSBmcm9tIFwiLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2VcIjtcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gXCIuL25vZGUubW9kZWxcIjtcbmltcG9ydCB7IFN1YmplY3QsIG1hcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuXG5leHBvcnQgdHlwZSBIYW5kbGVTdGF0ZSA9ICd2YWxpZCcgfCAnaW52YWxpZCcgfCAnaWRsZSdcblxuZXhwb3J0IGNsYXNzIEhhbmRsZU1vZGVsIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0cm9rZVdpZHRoID0gMlxuXG4gIC8qKlxuICAgKiBQcmUtY29tcHV0ZWQgc2l6ZSBmb3IgZGVmYXVsdCBoYW5kbGUsIGNoYW5nZWQgZHluYW1pY2FsbHlcbiAgICogZm9yIGN1c3RvbSBoYW5kbGVzXG4gICAqL1xuICBwdWJsaWMgc2l6ZSA9IHNpZ25hbCh7XG4gICAgd2lkdGg6IDEwICsgKDIgKiB0aGlzLnN0cm9rZVdpZHRoKSxcbiAgICBoZWlnaHQ6IDEwICsgKDIgKiB0aGlzLnN0cm9rZVdpZHRoKVxuICB9KVxuXG4gIHB1YmxpYyBvZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLnJhd0hhbmRsZS5wb3NpdGlvbikge1xuICAgICAgY2FzZSAnbGVmdCc6IHJldHVybiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IHRoaXMucGFyZW50UG9zaXRpb24oKS55ICsgKHRoaXMucGFyZW50U2l6ZSgpLmhlaWdodCAvIDIpXG4gICAgICB9XG4gICAgICBjYXNlICdyaWdodCc6IHJldHVybiB7XG4gICAgICAgIHg6IHRoaXMucGFyZW50Tm9kZS5zaXplKCkud2lkdGgsXG4gICAgICAgIHk6IHRoaXMucGFyZW50UG9zaXRpb24oKS55ICsgKHRoaXMucGFyZW50U2l6ZSgpLmhlaWdodCAvIDIpXG4gICAgICB9XG4gICAgICBjYXNlICd0b3AnOiByZXR1cm4ge1xuICAgICAgICB4OiB0aGlzLnBhcmVudFBvc2l0aW9uKCkueCArICh0aGlzLnBhcmVudFNpemUoKS53aWR0aCAvIDIpLFxuICAgICAgICB5OiAwXG4gICAgICB9XG4gICAgICBjYXNlICdib3R0b20nOiByZXR1cm4ge1xuICAgICAgICB4OiB0aGlzLnBhcmVudFBvc2l0aW9uKCkueCArIHRoaXMucGFyZW50U2l6ZSgpLndpZHRoIC8gMixcbiAgICAgICAgeTogdGhpcy5wYXJlbnROb2RlLnNpemUoKS5oZWlnaHRcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcHVibGljIHNpemVPZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLnJhd0hhbmRsZS5wb3NpdGlvbikge1xuICAgICAgY2FzZSAnbGVmdCc6IHJldHVybiB7IHg6IC0odGhpcy5zaXplKCkud2lkdGggLyAyKSwgeTogMCB9XG4gICAgICBjYXNlICdyaWdodCc6IHJldHVybiB7IHg6IHRoaXMuc2l6ZSgpLndpZHRoIC8gMiwgeTogMCB9XG4gICAgICBjYXNlICd0b3AnOiByZXR1cm4geyB4OiAwLCB5OiAtKHRoaXMuc2l6ZSgpLmhlaWdodCAvIDIpIH1cbiAgICAgIGNhc2UgJ2JvdHRvbSc6IHJldHVybiB7IHg6IDAsIHk6IHRoaXMuc2l6ZSgpLmhlaWdodCAvIDIgfVxuICAgIH1cbiAgfSlcblxuICBwdWJsaWMgcG9pbnRBYnNvbHV0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy5wYXJlbnROb2RlLmdsb2JhbFBvaW50KCkueCArIHRoaXMub2Zmc2V0KCkueCArIHRoaXMuc2l6ZU9mZnNldCgpLngsXG4gICAgICB5OiB0aGlzLnBhcmVudE5vZGUuZ2xvYmFsUG9pbnQoKS55ICsgdGhpcy5vZmZzZXQoKS55ICsgdGhpcy5zaXplT2Zmc2V0KCkueSxcbiAgICB9XG4gIH0pXG5cbiAgcHVibGljIHN0YXRlID0gc2lnbmFsPEhhbmRsZVN0YXRlPignaWRsZScpXG5cbiAgcHJpdmF0ZSB1cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIHB1YmxpYyBwYXJlbnRTaXplID0gdG9TaWduYWwoXG4gICAgdGhpcy51cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5nZXRQYXJlbnRTaXplKCkpXG4gICAgKSxcbiAgICB7XG4gICAgICBpbml0aWFsVmFsdWU6IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9XG4gICAgfVxuICApXG5cbiAgcHVibGljIHBhcmVudFBvc2l0aW9uID0gdG9TaWduYWwoXG4gICAgdGhpcy51cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gKHtcbiAgICAgICAgeDogdGhpcy5wYXJlbnRSZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudFxuICAgICAgICAgID8gdGhpcy5wYXJlbnRSZWZlcmVuY2Uub2Zmc2V0TGVmdFxuICAgICAgICAgIDogMCwgLy8gZm9yIG5vdyBqdXN0IDAgZm9yIGdyb3VwIG5vZGVzXG4gICAgICAgIHk6IHRoaXMucGFyZW50UmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnRcbiAgICAgICAgICA/IHRoaXMucGFyZW50UmVmZXJlbmNlLm9mZnNldFRvcFxuICAgICAgICAgIDogMCAvLyBmb3Igbm93IGp1c3QgMCBmb3IgZ3JvdXAgbm9kZXNcbiAgICAgIH0pKVxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiB7IHg6IDAsIHk6IDAgfVxuICAgIH1cbiAgKVxuXG4gIHB1YmxpYyBwYXJlbnRSZWZlcmVuY2UgPSB0aGlzLnJhd0hhbmRsZS5wYXJlbnRSZWZlcmVuY2UhXG5cbiAgcHVibGljIHRlbXBsYXRlID0gdGhpcy5yYXdIYW5kbGUudGVtcGxhdGVcblxuICBwdWJsaWMgdGVtcGxhdGVDb250ZXh0ID0ge1xuICAgICRpbXBsaWNpdDoge1xuICAgICAgcG9pbnQ6IHRoaXMub2Zmc2V0LFxuICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICBub2RlOiB0aGlzLnBhcmVudE5vZGUubm9kZVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByYXdIYW5kbGU6IE5vZGVIYW5kbGUsXG4gICAgcHVibGljIHBhcmVudE5vZGU6IE5vZGVNb2RlbFxuICApIHsgfVxuXG4gIHB1YmxpYyB1cGRhdGVQYXJlbnQoKSB7XG4gICAgdGhpcy51cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kLm5leHQoKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJlbnRTaXplKCk6IHsgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgaWYgKHRoaXMucGFyZW50UmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiB0aGlzLnBhcmVudFJlZmVyZW5jZS5vZmZzZXRXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLnBhcmVudFJlZmVyZW5jZS5vZmZzZXRIZWlnaHRcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucGFyZW50UmVmZXJlbmNlIGluc3RhbmNlb2YgU1ZHR3JhcGhpY3NFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnRSZWZlcmVuY2UuZ2V0QkJveCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgd2lkdGg6IDAsIGhlaWdodDogMCB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -99,7 +99,7 @@ export class MiniMapComponent {
|
|
|
99
99
|
return node;
|
|
100
100
|
}
|
|
101
101
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MiniMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
102
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MiniMapComponent, selector: "mini-map", inputs: { position: "position", maskColor: "maskColor", strokeColor: "strokeColor", scaleOnHover: "scaleOnHover" }, viewQueries: [{ propertyName: "minimap", first: true, predicate: ["minimap"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #minimap>\n <svg:rect\n [attr.x]=\"minimapPoint().x\"\n [attr.y]=\"minimapPoint().y\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n [attr.stroke]=\"strokeColor\"\n fill=\"none\"\n />\n\n <svg:svg\n [attr.x]=\"minimapPoint().x\"\n [attr.y]=\"minimapPoint().y\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n (mouseover)=\"hovered.set(true)\"\n (mouseleave)=\"hovered.set(false)\"\n >\n <svg:rect\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n [attr.fill]=\"maskColor\"\n />\n\n <svg:g [attr.transform]=\"minimapTransform()\">\n <svg:rect\n [attr.fill]=\"viewportColor()\"\n [attr.transform]=\"viewportTransform()\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n />\n\n <ng-container\n *ngFor=\"let model of entitiesService.nodes(); trackBy: trackNodes\"\n >\n <svg:foreignObject\n *ngIf=\"model.node.type === 'default' || model.node.type === 'html-template' || model.isComponentType\"\n [attr.transform]=\"model.pointTransform()\"\n [attr.width]=\"model.size().width\"\n [attr.height]=\"model.size().height\"\n >\n <default-node\n [selected]=\"model.selected()\"\n [style.width.px]=\"model.size().width\"\n [style.height.px]=\"model.size().height\"\n [style.max-width.px]=\"model.size().width\"\n [style.max-height.px]=\"model.size().height\"\n >\n <div [outerHTML]=\"model.text()\"></div>\n </default-node>\n </svg:foreignObject>\n\n <svg:rect\n *ngIf=\"model.node.type === 'default-group' || model.node.type === 'template-group'\"\n class=\"default-group-node\"\n rx=\"5\"\n ry=\"5\"\n [attr.transform]=\"model.pointTransform()\"\n [class.default-group-node_selected]=\"model.selected()\"\n [attr.width]=\"model.size().width\"\n [attr.height]=\"model.size().height\"\n [style.stroke]=\"model.color()\"\n [style.fill]=\"model.color()\"\n />\n\n </ng-container>\n </svg:g>\n </svg:svg>\n</ng-template>\n", styles: [".default-group-node{stroke-width:1.5px;fill-opacity:.05}.default-group-node_selected{stroke-width:2px}\n"], dependencies: [{ kind: "directive", type: i1.
|
|
102
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MiniMapComponent, selector: "mini-map", inputs: { position: "position", maskColor: "maskColor", strokeColor: "strokeColor", scaleOnHover: "scaleOnHover" }, viewQueries: [{ propertyName: "minimap", first: true, predicate: ["minimap"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #minimap>\n <svg:rect\n [attr.x]=\"minimapPoint().x\"\n [attr.y]=\"minimapPoint().y\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n [attr.stroke]=\"strokeColor\"\n fill=\"none\"\n />\n\n <svg:svg\n [attr.x]=\"minimapPoint().x\"\n [attr.y]=\"minimapPoint().y\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n (mouseover)=\"hovered.set(true)\"\n (mouseleave)=\"hovered.set(false)\"\n >\n <svg:rect\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n [attr.fill]=\"maskColor\"\n />\n\n <svg:g [attr.transform]=\"minimapTransform()\">\n <svg:rect\n [attr.fill]=\"viewportColor()\"\n [attr.transform]=\"viewportTransform()\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n />\n\n <ng-container\n *ngFor=\"let model of entitiesService.nodes(); trackBy: trackNodes\"\n >\n <svg:foreignObject\n *ngIf=\"model.node.type === 'default' || model.node.type === 'html-template' || model.isComponentType\"\n [attr.transform]=\"model.pointTransform()\"\n [attr.width]=\"model.size().width\"\n [attr.height]=\"model.size().height\"\n >\n <default-node\n [selected]=\"model.selected()\"\n [style.width.px]=\"model.size().width\"\n [style.height.px]=\"model.size().height\"\n [style.max-width.px]=\"model.size().width\"\n [style.max-height.px]=\"model.size().height\"\n >\n <div [outerHTML]=\"model.text()\"></div>\n </default-node>\n </svg:foreignObject>\n\n <svg:rect\n *ngIf=\"model.node.type === 'default-group' || model.node.type === 'template-group'\"\n class=\"default-group-node\"\n rx=\"5\"\n ry=\"5\"\n [attr.transform]=\"model.pointTransform()\"\n [class.default-group-node_selected]=\"model.selected()\"\n [attr.width]=\"model.size().width\"\n [attr.height]=\"model.size().height\"\n [style.stroke]=\"model.color()\"\n [style.fill]=\"model.color()\"\n />\n\n </ng-container>\n </svg:g>\n </svg:svg>\n</ng-template>\n", styles: [".default-group-node{stroke-width:1.5px;fill-opacity:.05}.default-group-node_selected{stroke-width:2px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.DefaultNodeComponent, selector: "default-node", inputs: ["selected"] }] }); }
|
|
103
103
|
}
|
|
104
104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MiniMapComponent, decorators: [{
|
|
105
105
|
type: Component,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { KeyValuePipe, NgComponentOutlet, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
3
|
import { VflowComponent } from './components/vflow/vflow.component';
|
|
4
4
|
import { NodeComponent } from './components/node/node.component';
|
|
@@ -79,7 +79,7 @@ export class VflowModule {
|
|
|
79
79
|
EdgeLabelHtmlTemplateDirective,
|
|
80
80
|
EdgeTemplateDirective,
|
|
81
81
|
ConnectionTemplateDirective,
|
|
82
|
-
HandleTemplateDirective], imports: [
|
|
82
|
+
HandleTemplateDirective], imports: [NgIf, NgFor, NgTemplateOutlet, NgComponentOutlet, KeyValuePipe], exports: [VflowComponent,
|
|
83
83
|
HandleComponent,
|
|
84
84
|
ResizableComponent,
|
|
85
85
|
SelectableDirective,
|
|
@@ -89,12 +89,12 @@ export class VflowModule {
|
|
|
89
89
|
EdgeTemplateDirective,
|
|
90
90
|
ConnectionTemplateDirective,
|
|
91
91
|
HandleTemplateDirective] }); }
|
|
92
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VflowModule
|
|
92
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VflowModule }); }
|
|
93
93
|
}
|
|
94
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VflowModule, decorators: [{
|
|
95
95
|
type: NgModule,
|
|
96
96
|
args: [{
|
|
97
|
-
imports: [
|
|
97
|
+
imports: [NgIf, NgFor, NgTemplateOutlet, NgComponentOutlet, KeyValuePipe],
|
|
98
98
|
exports: [
|
|
99
99
|
VflowComponent,
|
|
100
100
|
HandleComponent,
|
|
@@ -106,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
106
106
|
declarations: [...components, ...directives, ...templateDirectives],
|
|
107
107
|
}]
|
|
108
108
|
}] });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3ZmbG93Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSw4QkFBOEIsRUFBRSxxQkFBcUIsRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JOLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7O0FBRXhGLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLGNBQWM7SUFDZCxhQUFhO0lBQ2Isb0JBQW9CO0lBQ3BCLGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGVBQWU7SUFDZixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixnQkFBZ0I7Q0FDakIsQ0FBQTtBQUVELE1BQU0sVUFBVSxHQUFHO0lBQ2pCLDBCQUEwQjtJQUMxQixtQkFBbUI7SUFDbkIseUJBQXlCO0lBQ3pCLHVCQUF1QjtJQUN2Qiw2QkFBNkI7SUFDN0IsbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQixvQkFBb0I7SUFDcEIsMkJBQTJCO0NBQzVCLENBQUE7QUFFRCxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLHlCQUF5QjtJQUN6QiwwQkFBMEI7SUFDMUIsOEJBQThCO0lBQzlCLHFCQUFxQjtJQUNyQiwyQkFBMkI7SUFDM0IsdUJBQXVCO0NBQ3hCLENBQUE7QUFjRCxNQUFNLE9BQU8sV0FBVzsrR0FBWCxXQUFXO2dIQUFYLFdBQVcsaUJBOUN0QixjQUFjO1lBQ2QsYUFBYTtZQUNiLG9CQUFvQjtZQUNwQixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsZ0JBQWdCLEVBSWhCLDBCQUEwQjtZQUMxQixtQkFBbUI7WUFDbkIseUJBQXlCO1lBQ3pCLHVCQUF1QjtZQUN2Qiw2QkFBNkI7WUFDN0IsbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsMkJBQTJCLEVBSTNCLHlCQUF5QjtZQUN6QiwwQkFBMEI7WUFDMUIsOEJBQThCO1lBQzlCLHFCQUFxQjtZQUNyQiwyQkFBMkI7WUFDM0IsdUJBQXVCLGFBSWIsSUFBSSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLGFBRXRFLGNBQWM7WUFDZCxlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixnQkFBZ0IsRUFmbEIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiw4QkFBOEI7WUFDOUIscUJBQXFCO1lBQ3JCLDJCQUEyQjtZQUMzQix1QkFBdUI7Z0hBZVosV0FBVzs7NEZBQVgsV0FBVztrQkFadkIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQztvQkFDekUsT0FBTyxFQUFFO3dCQUNQLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixHQUFHLGtCQUFrQjtxQkFDdEI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQztpQkFDcEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlWYWx1ZVBpcGUsIE5nQ29tcG9uZW50T3V0bGV0LCBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmZsb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbm9kZS9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXBDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL21hcC1jb250ZXh0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VkZ2UvZWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWRnZUxhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VkZ2UtbGFiZWwvZWRnZS1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlLCBFZGdlTGFiZWxIdG1sVGVtcGxhdGVEaXJlY3RpdmUsIEVkZ2VUZW1wbGF0ZURpcmVjdGl2ZSwgR3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUsIEhhbmRsZVRlbXBsYXRlRGlyZWN0aXZlLCBOb2RlSHRtbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Nvbm5lY3Rpb24vY29ubmVjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc3BhY2UtcG9pbnQtY29udGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9yZWZlcmVuY2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJvb3RTdmdDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Jvb3Qtc3ZnLWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IERlZnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGVmcy9kZWZzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIYW5kbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaGFuZGxlL2hhbmRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGFuZGxlU2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvaGFuZGxlLXNpemUtY29udHJvbGxlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2VsZWN0YWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZWxlY3RhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb2ludGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3BvaW50ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJvb3RQb2ludGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Jvb3QtcG9pbnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFja2dyb3VuZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9iYWNrZ3JvdW5kL2JhY2tncm91bmQuY29tcG9uZW50JztcbmltcG9ydCB7IEZsb3dTaXplQ29udHJvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9mbG93LXNpemUtY29udHJvbGxlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmVzaXphYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNaW5pTWFwQ29tcG9uZW50IH0gZnJvbSAnLi9wdWJsaWMtY29tcG9uZW50cy9taW5pbWFwL21pbmltYXAuY29tcG9uZW50JztcbmltcG9ydCB7IERlZmF1bHROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RlZmF1bHQtbm9kZS9kZWZhdWx0LW5vZGUuY29tcG9uZW50JztcblxuY29uc3QgY29tcG9uZW50cyA9IFtcbiAgVmZsb3dDb21wb25lbnQsXG4gIE5vZGVDb21wb25lbnQsXG4gIERlZmF1bHROb2RlQ29tcG9uZW50LFxuICBFZGdlQ29tcG9uZW50LFxuICBFZGdlTGFiZWxDb21wb25lbnQsXG4gIENvbm5lY3Rpb25Db21wb25lbnQsXG4gIEhhbmRsZUNvbXBvbmVudCxcbiAgRGVmc0NvbXBvbmVudCxcbiAgQmFja2dyb3VuZENvbXBvbmVudCxcbiAgUmVzaXphYmxlQ29tcG9uZW50LFxuICBNaW5pTWFwQ29tcG9uZW50XG5dXG5cbmNvbnN0IGRpcmVjdGl2ZXMgPSBbXG4gIFNwYWNlUG9pbnRDb250ZXh0RGlyZWN0aXZlLFxuICBNYXBDb250ZXh0RGlyZWN0aXZlLFxuICBSb290U3ZnUmVmZXJlbmNlRGlyZWN0aXZlLFxuICBSb290U3ZnQ29udGV4dERpcmVjdGl2ZSxcbiAgSGFuZGxlU2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUsXG4gIFNlbGVjdGFibGVEaXJlY3RpdmUsXG4gIFBvaW50ZXJEaXJlY3RpdmUsXG4gIFJvb3RQb2ludGVyRGlyZWN0aXZlLFxuICBGbG93U2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUsXG5dXG5cbmNvbnN0IHRlbXBsYXRlRGlyZWN0aXZlcyA9IFtcbiAgTm9kZUh0bWxUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgR3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEVkZ2VMYWJlbEh0bWxUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgRWRnZVRlbXBsYXRlRGlyZWN0aXZlLFxuICBDb25uZWN0aW9uVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEhhbmRsZVRlbXBsYXRlRGlyZWN0aXZlXG5dXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtOZ0lmLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCwgTmdDb21wb25lbnRPdXRsZXQsIEtleVZhbHVlUGlwZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBWZmxvd0NvbXBvbmVudCxcbiAgICBIYW5kbGVDb21wb25lbnQsXG4gICAgUmVzaXphYmxlQ29tcG9uZW50LFxuICAgIFNlbGVjdGFibGVEaXJlY3RpdmUsXG4gICAgTWluaU1hcENvbXBvbmVudCxcbiAgICAuLi50ZW1wbGF0ZURpcmVjdGl2ZXNcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbLi4uY29tcG9uZW50cywgLi4uZGlyZWN0aXZlcywgLi4udGVtcGxhdGVEaXJlY3RpdmVzXSxcbn0pXG5leHBvcnQgY2xhc3MgVmZsb3dNb2R1bGUgeyB9XG4iXX0=
|