ngx-vflow 0.14.0 → 0.15.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.
Files changed (35) hide show
  1. package/esm2022/lib/vflow/components/custom-node-base/custom-node-base.component.mjs +5 -7
  2. package/esm2022/lib/vflow/components/defs/defs.component.mjs +1 -1
  3. package/esm2022/lib/vflow/components/handle/handle.component.mjs +16 -14
  4. package/esm2022/lib/vflow/components/node/node.component.mjs +8 -3
  5. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +8 -5
  6. package/esm2022/lib/vflow/directives/drag-handle.directive.mjs +27 -0
  7. package/esm2022/lib/vflow/directives/map-context.directive.mjs +24 -17
  8. package/esm2022/lib/vflow/math/edge-path/bezier-path.mjs +14 -17
  9. package/esm2022/lib/vflow/math/edge-path/straigh-path.mjs +2 -6
  10. package/esm2022/lib/vflow/models/handle.model.mjs +3 -2
  11. package/esm2022/lib/vflow/models/node.model.mjs +2 -1
  12. package/esm2022/lib/vflow/models/toolbar.model.mjs +36 -0
  13. package/esm2022/lib/vflow/public-components/minimap/minimap.component.mjs +1 -1
  14. package/esm2022/lib/vflow/public-components/node-toolbar/node-toolbar.component.mjs +66 -0
  15. package/esm2022/lib/vflow/services/draggable.service.mjs +13 -15
  16. package/esm2022/lib/vflow/services/overlays.service.mjs +34 -0
  17. package/esm2022/lib/vflow/testing-utils/provide-custom-node-mocks.mjs +67 -0
  18. package/esm2022/lib/vflow/vflow.module.mjs +21 -9
  19. package/esm2022/public-api.mjs +5 -1
  20. package/fesm2022/ngx-vflow.mjs +308 -87
  21. package/fesm2022/ngx-vflow.mjs.map +1 -1
  22. package/lib/vflow/components/handle/handle.component.d.ts +3 -3
  23. package/lib/vflow/components/node/node.component.d.ts +2 -0
  24. package/lib/vflow/directives/drag-handle.directive.d.ts +8 -0
  25. package/lib/vflow/directives/map-context.directive.d.ts +3 -2
  26. package/lib/vflow/models/handle.model.d.ts +1 -0
  27. package/lib/vflow/models/node.model.d.ts +1 -0
  28. package/lib/vflow/models/toolbar.model.d.ts +19 -0
  29. package/lib/vflow/public-components/node-toolbar/node-toolbar.component.d.ts +22 -0
  30. package/lib/vflow/services/draggable.service.d.ts +0 -5
  31. package/lib/vflow/services/overlays.service.d.ts +11 -0
  32. package/lib/vflow/testing-utils/provide-custom-node-mocks.d.ts +2 -0
  33. package/lib/vflow/vflow.module.d.ts +14 -12
  34. package/package.json +1 -3
  35. package/public-api.d.ts +3 -0
@@ -53,30 +53,37 @@ export class MapContextDirective {
53
53
  this.viewportService.readableViewport.set(mapTransformToViewportState(transform));
54
54
  this.zoomableSelection.attr('transform', transform.toString());
55
55
  };
56
+ this.handleZoomStart = ({ transform }) => {
57
+ this.viewportForSelection = {
58
+ start: mapTransformToViewportState(transform)
59
+ };
60
+ };
61
+ this.handleZoomEnd = ({ transform, sourceEvent }) => {
62
+ this.viewportForSelection = {
63
+ ...this.viewportForSelection,
64
+ end: mapTransformToViewportState(transform),
65
+ target: evTarget(sourceEvent)
66
+ };
67
+ this.selectionService.setViewport(this.viewportForSelection);
68
+ };
69
+ this.filterCondition = (event) => {
70
+ if (event.type === 'mousedown' || event.type === 'touchstart') {
71
+ return event.target.closest('.vflow-node') === null;
72
+ }
73
+ return true;
74
+ };
56
75
  }
57
76
  ngOnInit() {
58
77
  this.zoomBehavior = zoom()
59
78
  .scaleExtent([this.flowSettingsService.minZoom(), this.flowSettingsService.maxZoom()])
60
- .on('start', (event) => this.onD3zoomStart(event))
61
- .on('zoom', (event) => this.handleZoom(event))
62
- .on('end', (event) => this.onD3zoomEnd(event));
79
+ .filter(this.filterCondition)
80
+ .on('start', this.handleZoomStart)
81
+ .on('zoom', this.handleZoom)
82
+ .on('end', this.handleZoomEnd);
63
83
  this.rootSvgSelection
64
84
  .call(this.zoomBehavior)
65
85
  .on('dblclick.zoom', null);
66
86
  }
67
- onD3zoomStart({ transform }) {
68
- this.viewportForSelection = {
69
- start: mapTransformToViewportState(transform)
70
- };
71
- }
72
- onD3zoomEnd({ transform, sourceEvent }) {
73
- this.viewportForSelection = {
74
- ...this.viewportForSelection,
75
- end: mapTransformToViewportState(transform),
76
- target: evTarget(sourceEvent)
77
- };
78
- this.selectionService.setViewport(this.viewportForSelection);
79
- }
80
87
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
81
88
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: MapContextDirective, selector: "g[mapContext]", ngImport: i0 }); }
82
89
  }
@@ -91,4 +98,4 @@ const evTarget = (anyEvent) => {
91
98
  }
92
99
  return undefined;
93
100
  };
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFpQixNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBNEMsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBd0IsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVZLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbkQsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFBO1FBQ2hFLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzNDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQ3pDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWxELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFD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bUJBQUMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFOztBQW1HeEMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLFNBQXdCLEVBQWlCLEVBQUUsQ0FDOUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUV6RCxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQWEsRUFBdUIsRUFBRTtJQUN0RCxJQUFJLFFBQVEsWUFBWSxLQUFLLElBQUksUUFBUSxDQUFDLE1BQU0sWUFBWSxPQUFPLEVBQUU7UUFDbkUsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFBO0tBQ3ZCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBlZmZlY3QsIGluamVjdCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzZWxlY3QgfSBmcm9tICdkMy1zZWxlY3Rpb24nO1xuaW1wb3J0IHsgRDNab29tRXZlbnQsIFpvb21CZWhhdmlvciwgWm9vbVRyYW5zZm9ybSwgem9vbSwgem9vbUlkZW50aXR5IH0gZnJvbSAnZDMtem9vbSc7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJy4uL3V0aWxzL2lzLWRlZmluZWQnO1xuaW1wb3J0IHsgUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSB9IGZyb20gJy4vcmVmZXJlbmNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWaWV3cG9ydFN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSwgVmlld3BvcnRGb3JTZWxlY3Rpb24gfSBmcm9tICcuLi9zZXJ2aWNlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZ1ttYXBDb250ZXh0XScgfSlcbmV4cG9ydCBjbGFzcyBNYXBDb250ZXh0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIHJvb3RTdmcgPSBpbmplY3QoUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSkuZWxlbWVudFxuICBwcm90ZWN0ZWQgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPFNWR0dFbGVtZW50Pj4oRWxlbWVudFJlZikubmF0aXZlRWxlbWVudFxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uU2VydmljZSA9IGluamVjdChTZWxlY3Rpb25TZXJ2aWNlKVxuICBwcm90ZWN0ZWQgdmlld3BvcnRTZXJ2aWNlID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSlcbiAgcHJvdGVjdGVkIGZsb3dTZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoRmxvd1NldHRpbmdzU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHJvb3RTdmdTZWxlY3Rpb24gPSBzZWxlY3QodGhpcy5yb290U3ZnKVxuICBwcm90ZWN0ZWQgem9vbWFibGVTZWxlY3Rpb24gPSBzZWxlY3QodGhpcy5ob3N0KVxuXG4gIHByb3RlY3RlZCB2aWV3cG9ydEZvclNlbGVjdGlvbjogUGFydGlhbDxWaWV3cG9ydEZvclNlbGVjdGlvbj4gPSB7fVxuXG4gIC8vIHVuZGVyIHRoZSBob29kIHRoaXMgZWZmZWN0IHRyaWdnZXJzIGhhbmRsZVpvb20sIHNvIGVycm9yIHRocm93cyB3aXRob3V0IHRoaXMgZmxhZ1xuICBwcm90ZWN0ZWQgbWFudWFsVmlld3BvcnRDaGFuZ2VFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydFNlcnZpY2Uud3JpdGFibGVWaWV3cG9ydCgpXG4gICAgY29uc3Qgc3RhdGUgPSB2aWV3cG9ydC5zdGF0ZVxuXG4gICAgaWYgKHZpZXdwb3J0LmNoYW5nZVR5cGUgPT09ICdpbml0aWFsJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgb25seSB6b29tIHByb3ZpZGVkXG4gICAgaWYgKGlzRGVmaW5lZChzdGF0ZS56b29tKSAmJiAoIWlzRGVmaW5lZChzdGF0ZS54KSAmJiAhaXNEZWZpbmVkKHN0YXRlLnkpKSkge1xuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAgIC50cmFuc2l0aW9uKCkuZHVyYXRpb24odmlld3BvcnQuZHVyYXRpb24pXG4gICAgICAgIC5jYWxsKHRoaXMuem9vbUJlaGF2aW9yLnNjYWxlVG8sIHN0YXRlLnpvb20pXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIG9ubHkgcGFuIHByb3ZpZGVkXG4gICAgaWYgKChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpKSAmJiAhaXNEZWZpbmVkKHN0YXRlLnpvb20pKSB7XG4gICAgICAvLyByZW1haW4gc2FtZSB6b29tIHZhbHVlXG4gICAgICBjb25zdCB6b29tID0gdW50cmFja2VkKHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQpLnpvb21cblxuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAgIC50cmFuc2l0aW9uKCkuZHVyYXRpb24odmlld3BvcnQuZHVyYXRpb24pXG4gICAgICAgIC5jYWxsKFxuICAgICAgICAgIHRoaXMuem9vbUJlaGF2aW9yLnRyYW5zZm9ybSxcbiAgICAgICAgICB6b29tSWRlbnRpdHkudHJhbnNsYXRlKHN0YXRlLngsIHN0YXRlLnkpLnNjYWxlKHpvb20pXG4gICAgICAgIClcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgd2hvbGUgdmlld29ydCBzdGF0ZSBwcm92aWRlZFxuICAgIGlmIChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpICYmIGlzRGVmaW5lZChzdGF0ZS56b29tKSkge1xuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAgIC50cmFuc2l0aW9uKCkuZHVyYXRpb24odmlld3BvcnQuZHVyYXRpb24pXG4gICAgICAgIC5jYWxsKFxuICAgICAgICAgIHRoaXMuem9vbUJlaGF2aW9yLnRyYW5zZm9ybSxcbiAgICAgICAgICB6b29tSWRlbnRpdHkudHJhbnNsYXRlKHN0YXRlLngsIHN0YXRlLnkpLnNjYWxlKHN0YXRlLnpvb20pLFxuICAgICAgICApXG5cbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxuXG4gIHByb3RlY3RlZCB6b29tQmVoYXZpb3IhOiBab29tQmVoYXZpb3I8U1ZHU1ZHRWxlbWVudCwgdW5rbm93bj47XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbUJlaGF2aW9yID0gem9vbTxTVkdTVkdFbGVtZW50LCB1bmtub3duPigpXG4gICAgICAuc2NhbGVFeHRlbnQoW3RoaXMuZmxvd1NldHRpbmdzU2VydmljZS5taW5ab29tKCksIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5tYXhab29tKCldKVxuICAgICAgLm9uKCdzdGFydCcsIChldmVudDogWm9vbUV2ZW50KSA9PiB0aGlzLm9uRDN6b29tU3RhcnQoZXZlbnQpKVxuICAgICAgLm9uKCd6b29tJywgKGV2ZW50OiBab29tRXZlbnQpID0+IHRoaXMuaGFuZGxlWm9vbShldmVudCkpXG4gICAgICAub24oJ2VuZCcsIChldmVudDogWm9vbUV2ZW50KSA9PiB0aGlzLm9uRDN6b29tRW5kKGV2ZW50KSlcblxuICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvblxuICAgICAgLmNhbGwodGhpcy56b29tQmVoYXZpb3IpXG4gICAgICAub24oJ2RibGNsaWNrLnpvb20nLCBudWxsKVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVab29tID0gKHsgdHJhbnNmb3JtIH06IFpvb21FdmVudCkgPT4ge1xuICAgIC8vIHVwZGF0ZSBwdWJsaWMgc2lnbmFsIGZvciB1c2VyIHRvIHJlYWRcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS5yZWFkYWJsZVZpZXdwb3J0LnNldChtYXBUcmFuc2Zvcm1Ub1ZpZXdwb3J0U3RhdGUodHJhbnNmb3JtKSlcblxuICAgIHRoaXMuem9vbWFibGVTZWxlY3Rpb24uYXR0cigndHJhbnNmb3JtJywgdHJhbnNmb3JtLnRvU3RyaW5nKCkpXG4gIH1cblxuICBwcml2YXRlIG9uRDN6b29tU3RhcnQoeyB0cmFuc2Zvcm0gfTogWm9vbUV2ZW50KSB7XG4gICAgdGhpcy52aWV3cG9ydEZvclNlbGVjdGlvbiA9IHtcbiAgICAgIHN0YXJ0OiBtYXBUcmFuc2Zvcm1Ub1ZpZXdwb3J0U3RhdGUodHJhbnNmb3JtKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25EM3pvb21FbmQoeyB0cmFuc2Zvcm0sIHNvdXJjZUV2ZW50IH06IFpvb21FdmVudCkge1xuICAgIHRoaXMudmlld3BvcnRGb3JTZWxlY3Rpb24gPSB7XG4gICAgICAuLi50aGlzLnZpZXdwb3J0Rm9yU2VsZWN0aW9uLFxuICAgICAgZW5kOiBtYXBUcmFuc2Zvcm1Ub1ZpZXdwb3J0U3RhdGUodHJhbnNmb3JtKSxcbiAgICAgIHRhcmdldDogZXZUYXJnZXQoc291cmNlRXZlbnQpXG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLnNldFZpZXdwb3J0KFxuICAgICAgdGhpcy52aWV3cG9ydEZvclNlbGVjdGlvbiBhcyBWaWV3cG9ydEZvclNlbGVjdGlvblxuICAgIClcbiAgfVxufVxuXG5jb25zdCBtYXBUcmFuc2Zvcm1Ub1ZpZXdwb3J0U3RhdGUgPSAodHJhbnNmb3JtOiBab29tVHJhbnNmb3JtKTogVmlld3BvcnRTdGF0ZSA9PlxuICAoeyB6b29tOiB0cmFuc2Zvcm0uaywgeDogdHJhbnNmb3JtLngsIHk6IHRyYW5zZm9ybS55IH0pXG5cbmNvbnN0IGV2VGFyZ2V0ID0gKGFueUV2ZW50OiBhbnkpOiBFbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGFueUV2ZW50IGluc3RhbmNlb2YgRXZlbnQgJiYgYW55RXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgIHJldHVybiBhbnlFdmVudC50YXJnZXRcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdkMy1zZWxlY3Rpb24nIHtcbiAgaW50ZXJmYWNlIFNlbGVjdGlvbjxHRWxlbWVudCBleHRlbmRzIEJhc2VUeXBlLCBEYXR1bSwgUEVsZW1lbnQgZXh0ZW5kcyBCYXNlVHlwZSwgUERhdHVtPiB7XG4gICAgdHJhbnNpdGlvbigpOiBTZWxlY3Rpb248R0VsZW1lbnQsIERhdHVtLCBQRWxlbWVudCwgUERhdHVtPlxuICAgIGR1cmF0aW9uKGR1cmF0aW9uOiBudW1iZXIpOiBTZWxlY3Rpb248R0VsZW1lbnQsIERhdHVtLCBQRWxlbWVudCwgUERhdHVtPlxuICB9XG59XG5cbnR5cGUgWm9vbUV2ZW50ID0gRDNab29tRXZlbnQ8U1ZHU1ZHRWxlbWVudCwgdW5rbm93bj5cbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFpQixNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBNEMsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBd0IsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVZLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbkQsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFBO1FBQ2hFLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzNDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQ3pDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWxELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFD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QUMsQ0FBQTtRQUVoQyxJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ3ZCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDOUIsQ0FBQzsrR0F2RVUsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFOztBQTRHeEMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLFNBQXdCLEVBQWlCLEVBQUUsQ0FDOUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUV6RCxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQWEsRUFBdUIsRUFBRTtJQUN0RCxJQUFJLFFBQVEsWUFBWSxLQUFLLElBQUksUUFBUSxDQUFDLE1BQU0sWUFBWSxPQUFPLEVBQUU7UUFDbkUsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFBO0tBQ3ZCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBlZmZlY3QsIGluamVjdCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzZWxlY3QgfSBmcm9tICdkMy1zZWxlY3Rpb24nO1xuaW1wb3J0IHsgRDNab29tRXZlbnQsIFpvb21CZWhhdmlvciwgWm9vbVRyYW5zZm9ybSwgem9vbSwgem9vbUlkZW50aXR5IH0gZnJvbSAnZDMtem9vbSc7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJy4uL3V0aWxzL2lzLWRlZmluZWQnO1xuaW1wb3J0IHsgUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSB9IGZyb20gJy4vcmVmZXJlbmNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWaWV3cG9ydFN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSwgVmlld3BvcnRGb3JTZWxlY3Rpb24gfSBmcm9tICcuLi9zZXJ2aWNlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZ1ttYXBDb250ZXh0XScgfSlcbmV4cG9ydCBjbGFzcyBNYXBDb250ZXh0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIHJvb3RTdmcgPSBpbmplY3QoUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSkuZWxlbWVudFxuICBwcm90ZWN0ZWQgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPFNWR0dFbGVtZW50Pj4oRWxlbWVudFJlZikubmF0aXZlRWxlbWVudFxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uU2VydmljZSA9IGluamVjdChTZWxlY3Rpb25TZXJ2aWNlKVxuICBwcm90ZWN0ZWQgdmlld3BvcnRTZXJ2aWNlID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSlcbiAgcHJvdGVjdGVkIGZsb3dTZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoRmxvd1NldHRpbmdzU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHJvb3RTdmdTZWxlY3Rpb24gPSBzZWxlY3QodGhpcy5yb290U3ZnKVxuICBwcm90ZWN0ZWQgem9vbWFibGVTZWxlY3Rpb24gPSBzZWxlY3QodGhpcy5ob3N0KVxuXG4gIHByb3RlY3RlZCB2aWV3cG9ydEZvclNlbGVjdGlvbjogUGFydGlhbDxWaWV3cG9ydEZvclNlbGVjdGlvbj4gPSB7fVxuXG4gIC8vIHVuZGVyIHRoZSBob29kIHRoaXMgZWZmZWN0IHRyaWdnZXJzIGhhbmRsZVpvb20sIHNvIGVycm9yIHRocm93cyB3aXRob3V0IHRoaXMgZmxhZ1xuICBwcm90ZWN0ZWQgbWFudWFsVmlld3BvcnRDaGFuZ2VFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydFNlcnZpY2Uud3JpdGFibGVWaWV3cG9ydCgpXG4gICAgY29uc3Qgc3RhdGUgPSB2aWV3cG9ydC5zdGF0ZVxuXG4gICAgaWYgKHZpZXdwb3J0LmNoYW5nZVR5cGUgPT09ICdpbml0aWFsJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgb25seSB6b29tIHByb3ZpZGVkXG4gICAgaWYgKGlzRGVmaW5lZChzdGF0ZS56b29tKSAmJiAoIWlzRGVmaW5lZChzdGF0ZS54KSAmJiAhaXNEZWZpbmVkKHN0YXRlLnkpKSkge1xuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAgIC50cmFuc2l0aW9uKCkuZHVyYXRpb24odmlld3BvcnQuZHVyYXRpb24pXG4gICAgICAgIC5jYWxsKHRoaXMuem9vbUJlaGF2aW9yLnNjYWxlVG8sIHN0YXRlLnpvb20pXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIG9ubHkgcGFuIHByb3ZpZGVkXG4gICAgaWYgKChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpKSAmJiAhaXNEZWZpbmVkKHN0YXRlLnpvb20pKSB7XG4gICAgICAvLyByZW1haW4gc2FtZSB6b29tIHZhbHVlXG4gICAgICBjb25zdCB6b29tID0gdW50cmFja2VkKHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQpLnpvb21cblxuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAgIC50cmFuc2l0aW9uKCkuZHVyYXRpb24odmlld3BvcnQuZHVyYXRpb24pXG4gICAgICAgIC5jYWxsKFxuICAgICAgICAgIHRoaXMuem9vbUJlaGF2aW9yLnRyYW5zZm9ybSxcbiAgICAgICAgICB6b29tSWRlbnRpdHkudHJhbnNsYXRlKHN0YXRlLngsIHN0YXRlLnkpLnNjYWxlKHpvb20pXG4gICAgICAgIClcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgd2hvbGUgdmlld29ydCBzdGF0ZSBwcm92aWRlZFxuICAgIGlmIChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpICYmIGlzRGVmaW5lZChzdGF0ZS56b29tKSkge1xuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAgIC50cmFuc2l0aW9uKCkuZHVyYXRpb24odmlld3BvcnQuZHVyYXRpb24pXG4gICAgICAgIC5jYWxsKFxuICAgICAgICAgIHRoaXMuem9vbUJlaGF2aW9yLnRyYW5zZm9ybSxcbiAgICAgICAgICB6b29tSWRlbnRpdHkudHJhbnNsYXRlKHN0YXRlLngsIHN0YXRlLnkpLnNjYWxlKHN0YXRlLnpvb20pLFxuICAgICAgICApXG5cbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxuXG4gIHByb3RlY3RlZCB6b29tQmVoYXZpb3IhOiBab29tQmVoYXZpb3I8U1ZHU1ZHRWxlbWVudCwgdW5rbm93bj47XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbUJlaGF2aW9yID0gem9vbTxTVkdTVkdFbGVtZW50LCB1bmtub3duPigpXG4gICAgICAuc2NhbGVFeHRlbnQoW3RoaXMuZmxvd1NldHRpbmdzU2VydmljZS5taW5ab29tKCksIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5tYXhab29tKCldKVxuICAgICAgLmZpbHRlcih0aGlzLmZpbHRlckNvbmRpdGlvbilcbiAgICAgIC5vbignc3RhcnQnLCB0aGlzLmhhbmRsZVpvb21TdGFydClcbiAgICAgIC5vbignem9vbScsIHRoaXMuaGFuZGxlWm9vbSlcbiAgICAgIC5vbignZW5kJywgdGhpcy5oYW5kbGVab29tRW5kKVxuXG4gICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAuY2FsbCh0aGlzLnpvb21CZWhhdmlvcilcbiAgICAgIC5vbignZGJsY2xpY2suem9vbScsIG51bGwpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVpvb20gPSAoeyB0cmFuc2Zvcm0gfTogWm9vbUV2ZW50KSA9PiB7XG4gICAgLy8gdXBkYXRlIHB1YmxpYyBzaWduYWwgZm9yIHVzZXIgdG8gcmVhZFxuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQuc2V0KG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pKVxuXG4gICAgdGhpcy56b29tYWJsZVNlbGVjdGlvbi5hdHRyKCd0cmFuc2Zvcm0nLCB0cmFuc2Zvcm0udG9TdHJpbmcoKSlcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlWm9vbVN0YXJ0ID0gKHsgdHJhbnNmb3JtIH06IFpvb21FdmVudCkgPT4ge1xuICAgIHRoaXMudmlld3BvcnRGb3JTZWxlY3Rpb24gPSB7XG4gICAgICBzdGFydDogbWFwVHJhbnNmb3JtVG9WaWV3cG9ydFN0YXRlKHRyYW5zZm9ybSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVpvb21FbmQgPSAoeyB0cmFuc2Zvcm0sIHNvdXJjZUV2ZW50IH06IFpvb21FdmVudCkgPT4ge1xuICAgIHRoaXMudmlld3BvcnRGb3JTZWxlY3Rpb24gPSB7XG4gICAgICAuLi50aGlzLnZpZXdwb3J0Rm9yU2VsZWN0aW9uLFxuICAgICAgZW5kOiBtYXBUcmFuc2Zvcm1Ub1ZpZXdwb3J0U3RhdGUodHJhbnNmb3JtKSxcbiAgICAgIHRhcmdldDogZXZUYXJnZXQoc291cmNlRXZlbnQpXG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLnNldFZpZXdwb3J0KFxuICAgICAgdGhpcy52aWV3cG9ydEZvclNlbGVjdGlvbiBhcyBWaWV3cG9ydEZvclNlbGVjdGlvblxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQ29uZGl0aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2Vkb3duJyB8fCBldmVudC50eXBlID09PSAndG91Y2hzdGFydCcpIHtcbiAgICAgIHJldHVybiAoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmNsb3Nlc3QoJy52Zmxvdy1ub2RlJykgPT09IG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbmNvbnN0IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSA9ICh0cmFuc2Zvcm06IFpvb21UcmFuc2Zvcm0pOiBWaWV3cG9ydFN0YXRlID0+XG4gICh7IHpvb206IHRyYW5zZm9ybS5rLCB4OiB0cmFuc2Zvcm0ueCwgeTogdHJhbnNmb3JtLnkgfSlcblxuY29uc3QgZXZUYXJnZXQgPSAoYW55RXZlbnQ6IGFueSk6IEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoYW55RXZlbnQgaW5zdGFuY2VvZiBFdmVudCAmJiBhbnlFdmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgcmV0dXJuIGFueUV2ZW50LnRhcmdldFxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ2QzLXNlbGVjdGlvbicge1xuICBpbnRlcmZhY2UgU2VsZWN0aW9uPEdFbGVtZW50IGV4dGVuZHMgQmFzZVR5cGUsIERhdHVtLCBQRWxlbWVudCBleHRlbmRzIEJhc2VUeXBlLCBQRGF0dW0+IHtcbiAgICB0cmFuc2l0aW9uKCk6IFNlbGVjdGlvbjxHRWxlbWVudCwgRGF0dW0sIFBFbGVtZW50LCBQRGF0dW0+XG4gICAgZHVyYXRpb24oZHVyYXRpb246IG51bWJlcik6IFNlbGVjdGlvbjxHRWxlbWVudCwgRGF0dW0sIFBFbGVtZW50LCBQRGF0dW0+XG4gIH1cbn1cblxudHlwZSBab29tRXZlbnQgPSBEM1pvb21FdmVudDxTVkdTVkdFbGVtZW50LCB1bmtub3duPlxuIl19
@@ -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 firstControl = calcControlPoint(source, sourcePosition, distanceVector);
8
- const secondControl = calcControlPoint(target, targetPosition, distanceVector);
9
- path.bezierCurveTo(firstControl.x, firstControl.y, secondControl.x, secondControl.y, target.x, target.y);
10
- return getPathData(path, source, target, firstControl, secondControl, usingPoints);
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, firstControl, secondControl, usingPoints) {
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: path.toString(),
51
+ path,
55
52
  points: {
56
53
  start: start
57
- ? getPointOnBezier(source, target, firstControl, secondControl, 0.1)
54
+ ? getPointOnBezier(source, target, sourceControl, targetControl, 0.1)
58
55
  : nullPoint,
59
56
  center: center
60
- ? getPointOnBezier(source, target, firstControl, secondControl, 0.5)
57
+ ? getPointOnBezier(source, target, sourceControl, targetControl, 0.5)
61
58
  : nullPoint,
62
59
  end: end
63
- ? getPointOnBezier(source, target, firstControl, secondControl, 0.9)
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, controlPoint1, controlPoint2, ratio) {
72
- const fromSourceToFirstControl = getPointOnLineByRatio(sourcePoint, controlPoint1, ratio);
73
- const fromFirstControlToSecond = getPointOnLineByRatio(controlPoint1, controlPoint2, ratio);
74
- const fromSecondControlToTarget = getPointOnLineByRatio(controlPoint2, targetPoint, ratio);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV6aWVyLXBhdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvbWF0aC9lZGdlLXBhdGgvYmV6aWVyLXBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFRLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEUsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsTUFBYSxFQUNiLE1BQWEsRUFDYixjQUF3QixFQUN4QixjQUF3QixFQUN4QixjQUEyQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBRWhELE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBRXRCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFaEMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUUxRSxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzlFLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFL0UsSUFBSSxDQUFDLGFBQWEsQ0FDaEIsWUFBWSxDQUFDLENBQUMsRUFDZCxZQUFZLENBQUMsQ0FBQyxFQUNkLGFBQWEsQ0FBQyxDQUFDLEVBQ2YsYUFBYSxDQUFDLENBQUMsRUFDZixNQUFNLENBQUMsQ0FBQyxFQUNSLE1BQU0sQ0FBQyxDQUFD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QUFvQixFQUNwQixhQUFvQixFQUNwQixLQUFhO0lBRWIsTUFBTSx3QkFBd0IsR0FBVSxxQkFBcUIsQ0FDM0QsV0FBVyxFQUNYLGFBQWEsRUFDYixLQUFLLENBQ04sQ0FBQztJQUNGLE1BQU0sd0JBQXdCLEdBQVUscUJBQXFCLENBQzNELGFBQWEsRUFDYixhQUFhLEVBQ2IsS0FBSyxDQUNOLENBQUM7SUFDRixNQUFNLHlCQUF5QixHQUFVLHFCQUFxQixDQUM1RCxhQUFhLEVBQ2IsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFDO0lBRUYsT0FBTyxxQkFBcUIsQ0FDMUIscUJBQXFCLENBQUMsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLEVBQ2hGLHFCQUFxQixDQUFDLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxFQUNqRixLQUFLLENBQ04sQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGF0aC1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBhdGgsIHBhdGggYXMgZDNQYXRoIH0gZnJvbSAnZDMtcGF0aCc7XG5pbXBvcnQgeyBVc2luZ1BvaW50cyB9IGZyb20gJy4uLy4uL3R5cGVzL3VzaW5nLXBvaW50cy50eXBlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvcG9zaXRpb24udHlwZSc7XG5pbXBvcnQgeyBnZXRQb2ludE9uTGluZUJ5UmF0aW8gfSBmcm9tICcuLi9wb2ludC1vbi1saW5lLWJ5LXJhdGlvJztcblxuZXhwb3J0IGZ1bmN0aW9uIGJlemllclBhdGgoXG4gIHNvdXJjZTogUG9pbnQsXG4gIHRhcmdldDogUG9pbnQsXG4gIHNvdXJjZVBvc2l0aW9uOiBQb3NpdGlvbixcbiAgdGFyZ2V0UG9zaXRpb246IFBvc2l0aW9uLFxuICB1c2luZ1BvaW50czogVXNpbmdQb2ludHMgPSBbZmFsc2UsIGZhbHNlLCBmYWxzZV1cbik6IFBhdGhEYXRhIHtcbiAgY29uc3QgcGF0aCA9IGQzUGF0aCgpO1xuXG4gIHBhdGgubW92ZVRvKHNvdXJjZS54LCBzb3VyY2UueSk7XG5cbiAgY29uc3QgZGlzdGFuY2VWZWN0b3IgPSB7IHg6IHNvdXJjZS54IC0gdGFyZ2V0LngsIHk6IHNvdXJjZS55IC0gdGFyZ2V0LnkgfTtcblxuICBjb25zdCBmaXJzdENvbnRyb2wgPSBjYWxjQ29udHJvbFBvaW50KHNvdXJjZSwgc291cmNlUG9zaXRpb24sIGRpc3RhbmNlVmVjdG9yKTtcbiAgY29uc3Qgc2Vjb25kQ29udHJvbCA9IGNhbGNDb250cm9sUG9pbnQodGFyZ2V0LCB0YXJnZXRQb3NpdGlvbiwgZGlzdGFuY2VWZWN0b3IpO1xuXG4gIHBhdGguYmV6aWVyQ3VydmVUbyhcbiAgICBmaXJzdENvbnRyb2wueCxcbiAgICBmaXJzdENvbnRyb2wueSxcbiAgICBzZWNvbmRDb250cm9sLngsXG4gICAgc2Vjb25kQ29udHJvbC55LFxuICAgIHRhcmdldC54LFxuICAgIHRhcmdldC55XG4gICk7XG5cbiAgcmV0dXJuIGdldFBhdGhEYXRhKFxuICAgIHBhdGgsXG4gICAgc291cmNlLFxuICAgIHRhcmdldCxcbiAgICBmaXJzdENvbnRyb2wsXG4gICAgc2Vjb25kQ29udHJvbCxcbiAgICB1c2luZ1BvaW50c1xuICApO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBjb250cm9sIHBvaW50IGJhc2VkIG9uIHByb3ZpZGVkIHBvaW50XG4gKlxuICogQHBhcmFtIHBvaW50IHJlbGF0aXZlIHRoaXMgcG9pbnQgY29udHJvbCBwb2ludCBpcyBnb25uYSBiZSBjb21wdXRlZCAodGhlIHNvdXJjZSBvciB0aGUgdGFyZ2V0KVxuICogQHBhcmFtIHBvaW50UG9zaXRpb24gcG9zaXRpb24gb2Yge3BvaW50fSBvbiBibG9ja1xuICogQHBhcmFtIGRpc3RhbmNlVmVjdG9yIHRyYW5zbWl0cyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgc291cmNlIGFuZCB0aGUgdGFyZ2V0IGFzIHggYW5kIHkgY29vcmRpbmF0ZXNcbiAqL1xuXG5mdW5jdGlvbiBjYWxjQ29udHJvbFBvaW50KFxuICBwb2ludDogUG9pbnQsXG4gIHBvaW50UG9zaXRpb246IFBvc2l0aW9uLFxuICBkaXN0YW5jZVZlY3RvcjogUG9pbnRcbikge1xuICBjb25zdCBmYWN0b3JQb2ludCA9IHsgeDogMCwgeTogMCB9O1xuXG4gIHN3aXRjaCAocG9pbnRQb3NpdGlvbikge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBmYWN0b3JQb2ludC55ID0gMTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBmYWN0b3JQb2ludC55ID0gLTE7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBmYWN0b3JQb2ludC54ID0gMTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgZmFjdG9yUG9pbnQueCA9IC0xO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICAvLyBUT0RPOiBleHBsYWluIG5hbWVcbiAgY29uc3QgZnVsbERpc3RhbmNlVmVjdG9yID0ge1xuICAgIHg6IGRpc3RhbmNlVmVjdG9yLnggKiBNYXRoLmFicyhmYWN0b3JQb2ludC54KSxcbiAgICB5OiBkaXN0YW5jZVZlY3Rvci55ICogTWF0aC5hYnMoZmFjdG9yUG9pbnQueSksXG4gIH07XG5cbiAgLy8gVE9ETzogcHJvYmFibHkgbmVlZCB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlXG4gIGNvbnN0IGN1cnZhdHVyZSA9IDAuMjU7XG4gIC8vIHRoYW5rcyBjb2xsZWFndWVzIGZyb20gcmVhY3Qvc3ZlbHRlIHdvcmxkXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS94eWZsb3cveHlmbG93L2Jsb2IvZjAxMTc5MzliYWU5MzQ0NDdmYTdmMjMyMDgxZjkzNzE2OWVlMjNiNS9wYWNrYWdlcy9zeXN0ZW0vc3JjL3V0aWxzL2VkZ2VzL2Jlemllci1lZGdlLnRzI0w1NlxuICBjb25zdCBjb250cm9sT2Zmc2V0ID1cbiAgICBjdXJ2YXR1cmUgKiAyNSAqIE1hdGguc3FydChNYXRoLmFicyhmdWxsRGlzdGFuY2VWZWN0b3IueCArIGZ1bGxEaXN0YW5jZVZlY3Rvci55KSk7XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBwb2ludC54ICsgZmFjdG9yUG9pbnQueCAqIGNvbnRyb2xPZmZzZXQsXG4gICAgeTogcG9pbnQueSAtIGZhY3RvclBvaW50LnkgKiBjb250cm9sT2Zmc2V0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRQYXRoRGF0YShcbiAgcGF0aDogUGF0aCxcbiAgc291cmNlOiBQb2ludCxcbiAgdGFyZ2V0OiBQb2ludCxcbiAgZmlyc3RDb250cm9sOiBQb2ludCxcbiAgc2Vjb25kQ29udHJvbDogUG9pbnQsXG4gIHVzaW5nUG9pbnRzOiBVc2luZ1BvaW50c1xuKTogUGF0aERhdGEge1xuICBjb25zdCBbc3RhcnQsIGNlbnRlciwgZW5kXSA9IHVzaW5nUG9pbnRzO1xuXG4gIGNvbnN0IG51bGxQb2ludCA9IHsgeDogMCwgeTogMCB9O1xuXG4gIHJldHVybiB7XG4gICAgcGF0aDogcGF0aC50b1N0cmluZygpLFxuICAgIHBvaW50czoge1xuICAgICAgc3RhcnQ6IHN0YXJ0XG4gICAgICAgID8gZ2V0UG9pbnRPbkJlemllcihzb3VyY2UsIHRhcmdldCwgZmlyc3RDb250cm9sLCBzZWNvbmRDb250cm9sLCAwLjEpXG4gICAgICAgIDogbnVsbFBvaW50LFxuICAgICAgY2VudGVyOiBjZW50ZXJcbiAgICAgICAgPyBnZXRQb2ludE9uQmV6aWVyKHNvdXJjZSwgdGFyZ2V0LCBmaXJzdENvbnRyb2wsIHNlY29uZENvbnRyb2wsIDAuNSlcbiAgICAgICAgOiBudWxsUG9pbnQsXG4gICAgICBlbmQ6IGVuZFxuICAgICAgICA/IGdldFBvaW50T25CZXppZXIoc291cmNlLCB0YXJnZXQsIGZpcnN0Q29udHJvbCwgc2Vjb25kQ29udHJvbCwgMC45KVxuICAgICAgICA6IG51bGxQb2ludCxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEdldCBwb2ludCBvbiBiZXppZXIgY3VydmUgYnkgcmF0aW9cbiAqL1xuZnVuY3Rpb24gZ2V0UG9pbnRPbkJlemllcihcbiAgc291cmNlUG9pbnQ6IFBvaW50LFxuICB0YXJnZXRQb2ludDogUG9pbnQsXG4gIGNvbnRyb2xQb2ludDE6IFBvaW50LFxuICBjb250cm9sUG9pbnQyOiBQb2ludCxcbiAgcmF0aW86IG51bWJlclxuKTogUG9pbnQge1xuICBjb25zdCBmcm9tU291cmNlVG9GaXJzdENvbnRyb2w6IFBvaW50ID0gZ2V0UG9pbnRPbkxpbmVCeVJhdGlvKFxuICAgIHNvdXJjZVBvaW50LFxuICAgIGNvbnRyb2xQb2ludDEsXG4gICAgcmF0aW9cbiAgKTtcbiAgY29uc3QgZnJvbUZpcnN0Q29udHJvbFRvU2Vjb25kOiBQb2ludCA9IGdldFBvaW50T25MaW5lQnlSYXRpbyhcbiAgICBjb250cm9sUG9pbnQxLFxuICAgIGNvbnRyb2xQb2ludDIsXG4gICAgcmF0aW9cbiAgKTtcbiAgY29uc3QgZnJvbVNlY29uZENvbnRyb2xUb1RhcmdldDogUG9pbnQgPSBnZXRQb2ludE9uTGluZUJ5UmF0aW8oXG4gICAgY29udHJvbFBvaW50MixcbiAgICB0YXJnZXRQb2ludCxcbiAgICByYXRpb1xuICApO1xuXG4gIHJldHVybiBnZXRQb2ludE9uTGluZUJ5UmF0aW8oXG4gICAgZ2V0UG9pbnRPbkxpbmVCeVJhdGlvKGZyb21Tb3VyY2VUb0ZpcnN0Q29udHJvbCwgZnJvbUZpcnN0Q29udHJvbFRvU2Vjb25kLCByYXRpbyksXG4gICAgZ2V0UG9pbnRPbkxpbmVCeVJhdGlvKGZyb21GaXJzdENvbnRyb2xUb1NlY29uZCwgZnJvbVNlY29uZENvbnRyb2xUb1RhcmdldCwgcmF0aW8pLFxuICAgIHJhdGlvXG4gICk7XG59XG4iXX0=
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: path.toString(),
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYWlnaC1wYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L21hdGgvZWRnZS1wYXRoL3N0cmFpZ2gtcGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUV4QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLFVBQVUsWUFBWSxDQUMxQixNQUFhLEVBQ2IsTUFBYSxFQUNiLGNBQTJCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7SUFFaEQsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFBO0lBQ3hDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUE7SUFFaEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUE7SUFFckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRS9CLE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNyQixNQUFNLEVBQUU7WUFDTixLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3JFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdkUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNsRTtLQUNGLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aERhdGEgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9wYXRoLWRhdGEuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgcGF0aCBhcyBkM1BhdGggfSBmcm9tICdkMy1wYXRoJ1xuaW1wb3J0IHsgVXNpbmdQb2ludHMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdXNpbmctcG9pbnRzLnR5cGVcIjtcbmltcG9ydCB7IGdldFBvaW50T25MaW5lQnlSYXRpbyB9IGZyb20gXCIuLi9wb2ludC1vbi1saW5lLWJ5LXJhdGlvXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJhaWdodFBhdGgoXG4gIHNvdXJjZTogUG9pbnQsXG4gIHRhcmdldDogUG9pbnQsXG4gIHVzaW5nUG9pbnRzOiBVc2luZ1BvaW50cyA9IFtmYWxzZSwgZmFsc2UsIGZhbHNlXVxuKTogUGF0aERhdGEge1xuICBjb25zdCBbc3RhcnQsIGNlbnRlciwgZW5kXSA9IHVzaW5nUG9pbnRzXG4gIGNvbnN0IG51bGxQb2ludCA9IHsgeDogMCwgeTogMCB9XG5cbiAgY29uc3QgcGF0aCA9IGQzUGF0aCgpXG5cbiAgcGF0aC5tb3ZlVG8oc291cmNlLngsIHNvdXJjZS55KVxuICBwYXRoLmxpbmVUbyh0YXJnZXQueCwgdGFyZ2V0LnkpXG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBwYXRoLnRvU3RyaW5nKCksXG4gICAgcG9pbnRzOiB7XG4gICAgICBzdGFydDogc3RhcnQgPyBnZXRQb2ludE9uTGluZUJ5UmF0aW8oc291cmNlLCB0YXJnZXQsIC4xNSkgOiBudWxsUG9pbnQsXG4gICAgICBjZW50ZXI6IGNlbnRlciA/IGdldFBvaW50T25MaW5lQnlSYXRpbyhzb3VyY2UsIHRhcmdldCwgLjUwKSA6IG51bGxQb2ludCxcbiAgICAgIGVuZDogZW5kID8gZ2V0UG9pbnRPbkxpbmVCeVJhdGlvKHNvdXJjZSwgdGFyZ2V0LCAuODUpIDogbnVsbFBvaW50LFxuICAgIH1cbiAgfVxufVxuIl19
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L21vZGVscy9oYW5kbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXRELE1BQU0sT0FBTyxXQUFXO0lBeUZ0QixZQUNTLFNBQXFCLEVBQ3JCLFVBQXFCO1FBRHJCLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQTFGZCxnQkFBVyxHQUFHLENBQUMsQ0FBQTtRQUUvQjs7O1dBR0c7UUFDSSxTQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNsQyxNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDcEMsQ0FBQyxDQUFBO1FBRUssV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDL0IsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPO29CQUNsQixDQUFDLEVBQUUsQ0FBQztvQkFDSixDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUM1RCxDQUFBO2dCQUNELEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTztvQkFDbkIs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QUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5vZGVIYW5kbGUgfSBmcm9tIFwiLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2VcIjtcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gXCIuL25vZGUubW9kZWxcIjtcbmltcG9ydCB7IFN1YmplY3QsIG1hcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuXG5leHBvcnQgdHlwZSBIYW5kbGVTdGF0ZSA9ICd2YWxpZCcgfCAnaW52YWxpZCcgfCAnaWRsZSdcblxuZXhwb3J0IGNsYXNzIEhhbmRsZU1vZGVsIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0cm9rZVdpZHRoID0gMlxuXG4gIC8qKlxuICAgKiBQcmUtY29tcHV0ZWQgc2l6ZSBmb3IgZGVmYXVsdCBoYW5kbGUsIGNoYW5nZWQgZHluYW1pY2FsbHlcbiAgICogZm9yIGN1c3RvbSBoYW5kbGVzXG4gICAqL1xuICBwdWJsaWMgc2l6ZSA9IHNpZ25hbCh7XG4gICAgd2lkdGg6IDEwICsgKDIgKiB0aGlzLnN0cm9rZVdpZHRoKSxcbiAgICBoZWlnaHQ6IDEwICsgKDIgKiB0aGlzLnN0cm9rZVdpZHRoKVxuICB9KVxuXG4gIHB1YmxpYyBvZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLnJhd0hhbmRsZS5wb3NpdGlvbikge1xuICAgICAgY2FzZSAnbGVmdCc6IHJldHVybiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IHRoaXMucGFyZW50UG9zaXRpb24oKS55ICsgKHRoaXMucGFyZW50U2l6ZSgpLmhlaWdodCAvIDIpXG4gICAgICB9XG4gICAgICBjYXNlICdyaWdodCc6IHJldHVybiB7XG4gICAgICAgIHg6IHRoaXMucGFyZW50Tm9kZS5zaXplKCkud2lkdGgsXG4gICAgICAgIHk6IHRoaXMucGFyZW50UG9zaXRpb24oKS55ICsgKHRoaXMucGFyZW50U2l6ZSgpLmhlaWdodCAvIDIpXG4gICAgICB9XG4gICAgICBjYXNlICd0b3AnOiByZXR1cm4ge1xuICAgICAgICB4OiB0aGlzLnBhcmVudFBvc2l0aW9uKCkueCArICh0aGlzLnBhcmVudFNpemUoKS53aWR0aCAvIDIpLFxuICAgICAgICB5OiAwXG4gICAgICB9XG4gICAgICBjYXNlICdib3R0b20nOiByZXR1cm4ge1xuICAgICAgICB4OiB0aGlzLnBhcmVudFBvc2l0aW9uKCkueCArIHRoaXMucGFyZW50U2l6ZSgpLndpZHRoIC8gMixcbiAgICAgICAgeTogdGhpcy5wYXJlbnROb2RlLnNpemUoKS5oZWlnaHRcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcHVibGljIHNpemVPZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLnJhd0hhbmRsZS5wb3NpdGlvbikge1xuICAgICAgY2FzZSAnbGVmdCc6IHJldHVybiB7IHg6IC0odGhpcy5zaXplKCkud2lkdGggLyAyKSwgeTogMCB9XG4gICAgICBjYXNlICdyaWdodCc6IHJldHVybiB7IHg6IHRoaXMuc2l6ZSgpLndpZHRoIC8gMiwgeTogMCB9XG4gICAgICBjYXNlICd0b3AnOiByZXR1cm4geyB4OiAwLCB5OiAtKHRoaXMuc2l6ZSgpLmhlaWdodCAvIDIpIH1cbiAgICAgIGNhc2UgJ2JvdHRvbSc6IHJldHVybiB7IHg6IDAsIHk6IHRoaXMuc2l6ZSgpLmhlaWdodCAvIDIgfVxuICAgIH1cbiAgfSlcblxuICBwdWJsaWMgcG9pbnRBYnNvbHV0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy5wYXJlbnROb2RlLmdsb2JhbFBvaW50KCkueCArIHRoaXMub2Zmc2V0KCkueCArIHRoaXMuc2l6ZU9mZnNldCgpLngsXG4gICAgICB5OiB0aGlzLnBhcmVudE5vZGUuZ2xvYmFsUG9pbnQoKS55ICsgdGhpcy5vZmZzZXQoKS55ICsgdGhpcy5zaXplT2Zmc2V0KCkueSxcbiAgICB9XG4gIH0pXG5cbiAgcHVibGljIHN0YXRlID0gc2lnbmFsPEhhbmRsZVN0YXRlPignaWRsZScpXG5cbiAgcHJpdmF0ZSB1cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIHB1YmxpYyBwYXJlbnRTaXplID0gdG9TaWduYWwoXG4gICAgdGhpcy51cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5nZXRQYXJlbnRTaXplKCkpXG4gICAgKSxcbiAgICB7XG4gICAgICBpbml0aWFsVmFsdWU6IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9XG4gICAgfVxuICApXG5cbiAgcHVibGljIHBhcmVudFBvc2l0aW9uID0gdG9TaWduYWwoXG4gICAgdGhpcy51cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gKHtcbiAgICAgICAgeDogdGhpcy5wYXJlbnRSZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudFxuICAgICAgICAgID8gdGhpcy5wYXJlbnRSZWZlcmVuY2Uub2Zmc2V0TGVmdFxuICAgICAgICAgIDogMCwgLy8gZm9yIG5vdyBqdXN0IDAgZm9yIGdyb3VwIG5vZGVzXG4gICAgICAgIHk6IHRoaXMucGFyZW50UmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnRcbiAgICAgICAgICA/IHRoaXMucGFyZW50UmVmZXJlbmNlLm9mZnNldFRvcFxuICAgICAgICAgIDogMCAvLyBmb3Igbm93IGp1c3QgMCBmb3IgZ3JvdXAgbm9kZXNcbiAgICAgIH0pKVxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiB7IHg6IDAsIHk6IDAgfVxuICAgIH1cbiAgKVxuXG4gIHB1YmxpYyBwYXJlbnRSZWZlcmVuY2UgPSB0aGlzLnJhd0hhbmRsZS5wYXJlbnRSZWZlcmVuY2UhXG5cbiAgcHVibGljIHRlbXBsYXRlID0gdGhpcy5yYXdIYW5kbGUudGVtcGxhdGVcblxuICBwdWJsaWMgdGVtcGxhdGVDb250ZXh0ID0ge1xuICAgICRpbXBsaWNpdDoge1xuICAgICAgcG9pbnQ6IHRoaXMub2Zmc2V0LFxuICAgICAgc3RhdGU6IHRoaXMuc3RhdGVcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmF3SGFuZGxlOiBOb2RlSGFuZGxlLFxuICAgIHB1YmxpYyBwYXJlbnROb2RlOiBOb2RlTW9kZWxcbiAgKSB7IH1cblxuICBwdWJsaWMgdXBkYXRlUGFyZW50KCkge1xuICAgIHRoaXMudXBkYXRlUGFyZW50U2l6ZUFuZFBvc2l0aW9uJC5uZXh0KClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50U2l6ZSgpOiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0ge1xuICAgIGlmICh0aGlzLnBhcmVudFJlZmVyZW5jZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogdGhpcy5wYXJlbnRSZWZlcmVuY2Uub2Zmc2V0V2lkdGgsXG4gICAgICAgIGhlaWdodDogdGhpcy5wYXJlbnRSZWZlcmVuY2Uub2Zmc2V0SGVpZ2h0XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnBhcmVudFJlZmVyZW5jZSBpbnN0YW5jZW9mIFNWR0dyYXBoaWNzRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50UmVmZXJlbmNlLmdldEJCb3goKVxuICAgIH1cblxuICAgIHJldHVybiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfVxuICB9XG59XG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L21vZGVscy9oYW5kbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXRELE1BQU0sT0FBTyxXQUFXO0lBMEZ0QixZQUNTLFNBQXFCLEVBQ3JCLFVBQXFCO1FBRHJCLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQTNGZCxnQkFBVyxHQUFHLENBQUMsQ0FBQTtRQUUvQjs7O1dBR0c7UUFDSSxTQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNsQyxNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDcEMsQ0FBQyxDQUFBO1FBRUssV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDL0IsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPO29CQUNsQixDQUFDLEVBQUUsQ0FBQztvQkFDSixDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUM1RCxDQUFBO2dCQUNELEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTztvQkFDbkIs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SUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUN0QztRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5vZGVIYW5kbGUgfSBmcm9tIFwiLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2VcIjtcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gXCIuL25vZGUubW9kZWxcIjtcbmltcG9ydCB7IFN1YmplY3QsIG1hcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuXG5leHBvcnQgdHlwZSBIYW5kbGVTdGF0ZSA9ICd2YWxpZCcgfCAnaW52YWxpZCcgfCAnaWRsZSdcblxuZXhwb3J0IGNsYXNzIEhhbmRsZU1vZGVsIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0cm9rZVdpZHRoID0gMlxuXG4gIC8qKlxuICAgKiBQcmUtY29tcHV0ZWQgc2l6ZSBmb3IgZGVmYXVsdCBoYW5kbGUsIGNoYW5nZWQgZHluYW1pY2FsbHlcbiAgICogZm9yIGN1c3RvbSBoYW5kbGVzXG4gICAqL1xuICBwdWJsaWMgc2l6ZSA9IHNpZ25hbCh7XG4gICAgd2lkdGg6IDEwICsgKDIgKiB0aGlzLnN0cm9rZVdpZHRoKSxcbiAgICBoZWlnaHQ6IDEwICsgKDIgKiB0aGlzLnN0cm9rZVdpZHRoKVxuICB9KVxuXG4gIHB1YmxpYyBvZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLnJhd0hhbmRsZS5wb3NpdGlvbikge1xuICAgICAgY2FzZSAnbGVmdCc6IHJldHVybiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IHRoaXMucGFyZW50UG9zaXRpb24oKS55ICsgKHRoaXMucGFyZW50U2l6ZSgpLmhlaWdodCAvIDIpXG4gICAgICB9XG4gICAgICBjYXNlICdyaWdodCc6IHJldHVybiB7XG4gICAgICAgIHg6IHRoaXMucGFyZW50Tm9kZS5zaXplKCkud2lkdGgsXG4gICAgICAgIHk6IHRoaXMucGFyZW50UG9zaXRpb24oKS55ICsgKHRoaXMucGFyZW50U2l6ZSgpLmhlaWdodCAvIDIpXG4gICAgICB9XG4gICAgICBjYXNlICd0b3AnOiByZXR1cm4ge1xuICAgICAgICB4OiB0aGlzLnBhcmVudFBvc2l0aW9uKCkueCArICh0aGlzLnBhcmVudFNpemUoKS53aWR0aCAvIDIpLFxuICAgICAgICB5OiAwXG4gICAgICB9XG4gICAgICBjYXNlICdib3R0b20nOiByZXR1cm4ge1xuICAgICAgICB4OiB0aGlzLnBhcmVudFBvc2l0aW9uKCkueCArIHRoaXMucGFyZW50U2l6ZSgpLndpZHRoIC8gMixcbiAgICAgICAgeTogdGhpcy5wYXJlbnROb2RlLnNpemUoKS5oZWlnaHRcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcHVibGljIHNpemVPZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLnJhd0hhbmRsZS5wb3NpdGlvbikge1xuICAgICAgY2FzZSAnbGVmdCc6IHJldHVybiB7IHg6IC0odGhpcy5zaXplKCkud2lkdGggLyAyKSwgeTogMCB9XG4gICAgICBjYXNlICdyaWdodCc6IHJldHVybiB7IHg6IHRoaXMuc2l6ZSgpLndpZHRoIC8gMiwgeTogMCB9XG4gICAgICBjYXNlICd0b3AnOiByZXR1cm4geyB4OiAwLCB5OiAtKHRoaXMuc2l6ZSgpLmhlaWdodCAvIDIpIH1cbiAgICAgIGNhc2UgJ2JvdHRvbSc6IHJldHVybiB7IHg6IDAsIHk6IHRoaXMuc2l6ZSgpLmhlaWdodCAvIDIgfVxuICAgIH1cbiAgfSlcblxuICBwdWJsaWMgcG9pbnRBYnNvbHV0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy5wYXJlbnROb2RlLmdsb2JhbFBvaW50KCkueCArIHRoaXMub2Zmc2V0KCkueCArIHRoaXMuc2l6ZU9mZnNldCgpLngsXG4gICAgICB5OiB0aGlzLnBhcmVudE5vZGUuZ2xvYmFsUG9pbnQoKS55ICsgdGhpcy5vZmZzZXQoKS55ICsgdGhpcy5zaXplT2Zmc2V0KCkueSxcbiAgICB9XG4gIH0pXG5cbiAgcHVibGljIHN0YXRlID0gc2lnbmFsPEhhbmRsZVN0YXRlPignaWRsZScpXG5cbiAgcHJpdmF0ZSB1cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIHB1YmxpYyBwYXJlbnRTaXplID0gdG9TaWduYWwoXG4gICAgdGhpcy51cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5nZXRQYXJlbnRTaXplKCkpXG4gICAgKSxcbiAgICB7XG4gICAgICBpbml0aWFsVmFsdWU6IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9XG4gICAgfVxuICApXG5cbiAgcHVibGljIHBhcmVudFBvc2l0aW9uID0gdG9TaWduYWwoXG4gICAgdGhpcy51cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gKHtcbiAgICAgICAgeDogdGhpcy5wYXJlbnRSZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudFxuICAgICAgICAgID8gdGhpcy5wYXJlbnRSZWZlcmVuY2Uub2Zmc2V0TGVmdFxuICAgICAgICAgIDogMCwgLy8gZm9yIG5vdyBqdXN0IDAgZm9yIGdyb3VwIG5vZGVzXG4gICAgICAgIHk6IHRoaXMucGFyZW50UmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnRcbiAgICAgICAgICA/IHRoaXMucGFyZW50UmVmZXJlbmNlLm9mZnNldFRvcFxuICAgICAgICAgIDogMCAvLyBmb3Igbm93IGp1c3QgMCBmb3IgZ3JvdXAgbm9kZXNcbiAgICAgIH0pKVxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiB7IHg6IDAsIHk6IDAgfVxuICAgIH1cbiAgKVxuXG4gIHB1YmxpYyBwYXJlbnRSZWZlcmVuY2UgPSB0aGlzLnJhd0hhbmRsZS5wYXJlbnRSZWZlcmVuY2UhXG5cbiAgcHVibGljIHRlbXBsYXRlID0gdGhpcy5yYXdIYW5kbGUudGVtcGxhdGVcblxuICBwdWJsaWMgdGVtcGxhdGVDb250ZXh0ID0ge1xuICAgICRpbXBsaWNpdDoge1xuICAgICAgcG9pbnQ6IHRoaXMub2Zmc2V0LFxuICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICBub2RlOiB0aGlzLnBhcmVudE5vZGUubm9kZVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByYXdIYW5kbGU6IE5vZGVIYW5kbGUsXG4gICAgcHVibGljIHBhcmVudE5vZGU6IE5vZGVNb2RlbFxuICApIHsgfVxuXG4gIHB1YmxpYyB1cGRhdGVQYXJlbnQoKSB7XG4gICAgdGhpcy51cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kLm5leHQoKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJlbnRTaXplKCk6IHsgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgaWYgKHRoaXMucGFyZW50UmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiB0aGlzLnBhcmVudFJlZmVyZW5jZS5vZmZzZXRXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLnBhcmVudFJlZmVyZW5jZS5vZmZzZXRIZWlnaHRcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucGFyZW50UmVmZXJlbmNlIGluc3RhbmNlb2YgU1ZHR3JhcGhpY3NFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnRSZWZlcmVuY2UuZ2V0QkJveCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgd2lkdGg6IDAsIGhlaWdodDogMCB9XG4gIH1cbn1cbiJdfQ==
@@ -48,6 +48,7 @@ export class NodeModel {
48
48
  this.handles = signal([]);
49
49
  this.handles$ = toObservable(this.handles);
50
50
  this.draggable = signal(true);
51
+ this.dragHandlesCount = signal(0);
51
52
  // disabled for configuration for now
52
53
  this.magnetRadius = 20;
53
54
  // TODO: not sure if we need to statically store it
@@ -171,4 +172,4 @@ export class NodeModel {
171
172
  : signal({ x: this.node.point.x, y: this.node.point.y });
172
173
  }
173
174
  }
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvbm9kZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNyRixPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBR25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQTtBQUUxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQTtBQUM1RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQTtBQUNuSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUV2RSxnQ0FBZ0M7QUFDaEMsTUFBTSxPQUFPLFNBQVM7YUFDTCxpQkFBWSxHQUFHLEdBQUcsQUFBTixDQUFNO2FBQ2xCLGtCQUFhLEdBQUcsRUFBRSxBQUFMLENBQUs7YUFDbEIsaUJBQVksR0FBRyxTQUFTLEFBQVosQ0FBWTtJQWlHdkMsWUFDUyxJQUE4QjtRQUE5QixTQUFJLEdBQUosSUFBSSxDQUEwQjtRQWhHL0Isd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDakQsb0JBQWUsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUU5Qyxr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QUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIFRlbXBsYXRlUmVmLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBEeW5hbWljTm9kZSwgTm9kZSwgaXNEeW5hbWljTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICcuLi91dGlscy9pcy1kZWZpbmVkJ1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJ1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuL2hhbmRsZS5tb2RlbCdcbmltcG9ydCB7IEZsb3dFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zsb3ctZW50aXR5LmludGVyZmFjZSdcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LXNldHRpbmdzLnNlcnZpY2UnXG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgbWVyZ2UsIG9ic2VydmVPbiwgU3ViamVjdCwgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSdcbmltcG9ydCB7IEN1c3RvbU5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9wdWJsaWMtY29tcG9uZW50cy9jdXN0b20tbm9kZS9jdXN0b20tbm9kZS5jb21wb25lbnQnXG5pbXBvcnQgeyBDdXN0b21EeW5hbWljTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL3B1YmxpYy1jb21wb25lbnRzL2N1c3RvbS1keW5hbWljLW5vZGUvY3VzdG9tLWR5bmFtaWMtbm9kZS5jb21wb25lbnQnXG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1lbnRpdGllcy5zZXJ2aWNlJ1xuXG4vLyBUT0RPIGJhZCBuYW1pbmcgYXJvdW5kIHBvaW50c1xuZXhwb3J0IGNsYXNzIE5vZGVNb2RlbDxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBGbG93RW50aXR5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgZGVmYXVsdFdpZHRoID0gMTAwXG4gIHByaXZhdGUgc3RhdGljIGRlZmF1bHRIZWlnaHQgPSA1MFxuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0Q29sb3IgPSAnIzFiMjYyYydcblxuICBwcml2YXRlIGZsb3dTZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoRmxvd1NldHRpbmdzU2VydmljZSlcbiAgcHJpdmF0ZSBlbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBpbnRlcm5hbFBvaW50ID0gdGhpcy5jcmVhdGVJbnRlcm5hbFBvaW50U2lnbmFsKClcblxuICBwcml2YXRlIHRocm90dGxlZFBvaW50JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmludGVybmFsUG9pbnQpLnBpcGUoXG4gICAgb2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKVxuICApXG5cbiAgcHJpdmF0ZSBub3RUaHJvdHRsZWRQb2ludCQgPSBuZXcgU3ViamVjdDxQb2ludD4oKVxuXG4gIHB1YmxpYyBwb2ludCA9IHRvU2lnbmFsKFxuICAgIG1lcmdlKHRoaXMudGhyb3R0bGVkUG9pbnQkLCB0aGlzLm5vdFRocm90dGxlZFBvaW50JCksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiB0aGlzLmludGVybmFsUG9pbnQoKVxuICAgIH1cbiAgKVxuXG4gIHB1YmxpYyBwb2ludCQgPSB0aGlzLnRocm90dGxlZFBvaW50JDtcblxuICBwdWJsaWMgc2l6ZSA9IHNpZ25hbCh7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSlcbiAgcHVibGljIHNpemUkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2l6ZSlcblxuICBwdWJsaWMgd2lkdGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNpemUoKS53aWR0aClcbiAgcHVibGljIGhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2l6ZSgpLmhlaWdodClcblxuICBwdWJsaWMgcmVuZGVyT3JkZXIgPSBzaWduYWwoMClcblxuICBwdWJsaWMgc2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpXG4gIHB1YmxpYyBzZWxlY3RlZCQgPSB0b09ic2VydmFibGUodGhpcy5zZWxlY3RlZClcblxuICBwdWJsaWMgZ2xvYmFsUG9pbnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMucGFyZW50KClcbiAgICBsZXQgeCA9IHRoaXMucG9pbnQoKS54XG4gICAgbGV0IHkgPSB0aGlzLnBvaW50KCkueVxuXG4gICAgd2hpbGUgKHBhcmVudCAhPT0gbnVsbCkge1xuICAgICAgeCArPSBwYXJlbnQucG9pbnQoKS54XG4gICAgICB5ICs9IHBhcmVudC5wb2ludCgpLnlcblxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgeCwgeSB9XG4gIH0pXG5cbiAgcHVibGljIHBvaW50VHJhbnNmb3JtID0gY29tcHV0ZWQoKCkgPT5cbiAgICBgdHJhbnNsYXRlKCR7dGhpcy5nbG9iYWxQb2ludCgpLnh9LCAke3RoaXMuZ2xvYmFsUG9pbnQoKS55fSlgXG4gIClcblxuICAvLyBOb3cgc291cmNlIGFuZCBoYW5kbGUgcG9zaXRpb25zIGRlcml2ZWQgZnJvbSBwYXJlbnQgZmxvd1xuICBwdWJsaWMgc291cmNlUG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuaGFuZGxlUG9zaXRpb25zKCkuc291cmNlKVxuICBwdWJsaWMgdGFyZ2V0UG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuaGFuZGxlUG9zaXRpb25zKCkudGFyZ2V0KVxuXG4gIHB1YmxpYyBoYW5kbGVzID0gc2lnbmFsPEhhbmRsZU1vZGVsW10+KFtdKVxuXG4gIHB1YmxpYyBoYW5kbGVzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmhhbmRsZXMpXG5cbiAgcHVibGljIGRyYWdnYWJsZSA9IHNpZ25hbCh0cnVlKVxuXG4gIC8vIGRpc2FibGVkIGZvciBjb25maWd1cmF0aW9uIGZvciBub3dcbiAgcHVibGljIHJlYWRvbmx5IG1hZ25ldFJhZGl1cyA9IDIwXG5cbiAgLy8gVE9ETzogbm90IHN1cmUgaWYgd2UgbmVlZCB0byBzdGF0aWNhbGx5IHN0b3JlIGl0XG4gIHB1YmxpYyBpc0NvbXBvbmVudFR5cGUgPVxuICAgIEN1c3RvbU5vZGVDb21wb25lbnQuaXNQcm90b3R5cGVPZih0aGlzLm5vZGUudHlwZSkgfHxcbiAgICBDdXN0b21EeW5hbWljTm9kZUNvbXBvbmVudC5pc1Byb3RvdHlwZU9mKHRoaXMubm9kZS50eXBlKVxuXG4gIC8vIERlZmF1bHQgbm9kZSBzcGVjaWZpYyB0aGluZ1xuICBwdWJsaWMgdGV4dCA9IHRoaXMuY3JlYXRlVGV4dFNpZ25hbCgpXG5cbiAgLy8gQ29tcG9uZW50IG5vZGUgc3BlY2lmaWMgdGhpbmdcbiAgcHVibGljIGNvbXBvbmVudFR5cGVJbnB1dHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGU6IHRoaXMubm9kZSxcbiAgICAgIF9zZWxlY3RlZDogdGhpcy5zZWxlY3RlZCgpXG4gICAgfVxuICB9KVxuXG4gIHB1YmxpYyBwYXJlbnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKCkuZmluZChuID0+IG4ubm9kZS5pZCA9PT0gdGhpcy5wYXJlbnRJZCgpKSA/PyBudWxsXG4gIClcblxuICBwdWJsaWMgY2hpbGRyZW4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKCkuZmlsdGVyKG4gPT4gbi5wYXJlbnRJZCgpID09PSB0aGlzLm5vZGUuaWQpXG4gIClcblxuICBwdWJsaWMgY29sb3IgPSBzaWduYWwoTm9kZU1vZGVsLmRlZmF1bHRDb2xvcilcblxuICBwdWJsaWMgcmVzaXphYmxlID0gc2lnbmFsKGZhbHNlKVxuICBwdWJsaWMgcmVzaXppbmcgPSBzaWduYWwoZmFsc2UpXG4gIHB1YmxpYyByZXNpemVyVGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsPihudWxsKVxuXG4gIHByaXZhdGUgcGFyZW50SWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbm9kZTogTm9kZTxUPiB8IER5bmFtaWNOb2RlPFQ+XG4gICkge1xuICAgIGlmIChpc0RlZmluZWQobm9kZS5kcmFnZ2FibGUpKSB7XG4gICAgICBpZiAoaXNEeW5hbWljTm9kZShub2RlKSkge1xuICAgICAgICB0aGlzLmRyYWdnYWJsZSA9IG5vZGUuZHJhZ2dhYmxlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRyYWdnYWJsZS5zZXQobm9kZS5kcmFnZ2FibGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzRGVmaW5lZChub2RlLnBhcmVudElkKSkge1xuICAgICAgaWYgKGlzRHluYW1pY05vZGUobm9kZSkpIHtcbiAgICAgICAgdGhpcy5wYXJlbnRJZCA9IG5vZGUucGFyZW50SWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFyZW50SWQuc2V0KG5vZGUucGFyZW50SWQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlZmF1bHQtZ3JvdXAnICYmIG5vZGUuY29sb3IpIHtcbiAgICAgIGlmIChpc0R5bmFtaWNOb2RlKG5vZGUpKSB7XG4gICAgICAgIHRoaXMuY29sb3IgPSBub2RlLmNvbG9yXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbG9yLnNldChub2RlLmNvbG9yKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdkZWZhdWx0LWdyb3VwJyAmJiBub2RlLnJlc2l6YWJsZSkge1xuICAgICAgaWYgKGlzRHluYW1pY05vZGUobm9kZSkpIHtcbiAgICAgICAgdGhpcy5yZXNpemFibGUgPSBub2RlLnJlc2l6YWJsZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNpemFibGUuc2V0KG5vZGUucmVzaXphYmxlKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRQb2ludChwb2ludDogUG9pbnQsIHRocm90dGxlOiBib29sZWFuKSB7XG4gICAgaWYgKHRocm90dGxlKSB7XG4gICAgICB0aGlzLmludGVybmFsUG9pbnQuc2V0KHBvaW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RUaHJvdHRsZWRQb2ludCQubmV4dChwb2ludClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVE9ETyBmaW5kIHRoZSB3YXkgdG8gaW1wbGVtZW50IHRoaXMgYmV0dGVyXG4gICAqL1xuICBwdWJsaWMgbGlua0RlZmF1bHROb2RlU2l6ZVdpdGhNb2RlbFNpemUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZVxuXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgY2FzZSAnZGVmYXVsdC1ncm91cCc6XG4gICAgICBjYXNlICd0ZW1wbGF0ZS1ncm91cCc6IHtcbiAgICAgICAgaWYgKGlzRHluYW1pY05vZGUobm9kZSkpIHtcbiAgICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaXplLnNldCh7XG4gICAgICAgICAgICAgIHdpZHRoOiBub2RlLndpZHRoPy4oKSA/PyBOb2RlTW9kZWwuZGVmYXVsdFdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IG5vZGUuaGVpZ2h0Py4oKSA/PyBOb2RlTW9kZWwuZGVmYXVsdEhlaWdodCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2l6ZS5zZXQoe1xuICAgICAgICAgICAgd2lkdGg6IG5vZGUud2lkdGggPz8gTm9kZU1vZGVsLmRlZmF1bHRXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogbm9kZS5oZWlnaHQgPz8gTm9kZU1vZGVsLmRlZmF1bHRIZWlnaHRcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2h0bWwtdGVtcGxhdGUnIHx8IHRoaXMuaXNDb21wb25lbnRUeXBlKSB7XG4gICAgICBpZiAoaXNEeW5hbWljTm9kZShub2RlKSkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgIGlmIChub2RlLndpZHRoICYmIG5vZGUuaGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLnNpemUuc2V0KHtcbiAgICAgICAgICAgICAgd2lkdGg6IG5vZGUud2lkdGgoKSxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBub2RlLmhlaWdodCgpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChub2RlLndpZHRoICYmIG5vZGUuaGVpZ2h0KSB7XG4gICAgICAgICAgdGhpcy5zaXplLnNldCh7IHdpZHRoOiBub2RlLndpZHRoLCBoZWlnaHQ6IG5vZGUuaGVpZ2h0IH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRleHRTaWduYWwoKTogU2lnbmFsPHN0cmluZz4ge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGVcblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgaWYgKGlzRHluYW1pY05vZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUudGV4dCA/PyBzaWduYWwoJycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc2lnbmFsKG5vZGUudGV4dCA/PyAnJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmFsKCcnKVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbnRlcm5hbFBvaW50U2lnbmFsKCkge1xuICAgIHJldHVybiBpc0R5bmFtaWNOb2RlKHRoaXMubm9kZSlcbiAgICAgID8gdGhpcy5ub2RlLnBvaW50XG4gICAgICA6IHNpZ25hbCh7IHg6IHRoaXMubm9kZS5wb2ludC54LCB5OiB0aGlzLm5vZGUucG9pbnQueSB9KVxuICB9XG59XG4iXX0=
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvbm9kZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNyRixPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBR25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQTtBQUUxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQTtBQUM1RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQTtBQUNuSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUV2RSxnQ0FBZ0M7QUFDaEMsTUFBTSxPQUFPLFNBQVM7YUFDTCxpQkFBWSxHQUFHLEdBQUcsQUFBTixDQUFNO2FBQ2xCLGtCQUFhLEdBQUcsRUFBRSxBQUFMLENBQUs7YUFDbEIsaUJBQVksR0FBRyxTQUFTLEFBQVosQ0FBWTtJQW1HdkMsWUFDUyxJQUE4QjtRQUE5QixTQUFJLEdBQUosSUFBSSxDQUEwQjtRQWxHL0Isd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDakQsb0JBQWUsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUU5Qyxr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QyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBUZW1wbGF0ZVJlZiwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRHluYW1pY05vZGUsIE5vZGUsIGlzRHluYW1pY05vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vZGUuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvaXMtZGVmaW5lZCdcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCdcbmltcG9ydCB7IEhhbmRsZU1vZGVsIH0gZnJvbSAnLi9oYW5kbGUubW9kZWwnXG5pbXBvcnQgeyBGbG93RW50aXR5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mbG93LWVudGl0eS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJ1xuaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIG1lcmdlLCBvYnNlcnZlT24sIFN1YmplY3QsIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnXG5pbXBvcnQgeyBDdXN0b21Ob2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vcHVibGljLWNvbXBvbmVudHMvY3VzdG9tLW5vZGUvY3VzdG9tLW5vZGUuY29tcG9uZW50J1xuaW1wb3J0IHsgQ3VzdG9tRHluYW1pY05vZGVDb21wb25lbnQgfSBmcm9tICcuLi9wdWJsaWMtY29tcG9uZW50cy9jdXN0b20tZHluYW1pYy1ub2RlL2N1c3RvbS1keW5hbWljLW5vZGUuY29tcG9uZW50J1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zsb3ctZW50aXRpZXMuc2VydmljZSdcblxuLy8gVE9ETyBiYWQgbmFtaW5nIGFyb3VuZCBwb2ludHNcbmV4cG9ydCBjbGFzcyBOb2RlTW9kZWw8VCA9IHVua25vd24+IGltcGxlbWVudHMgRmxvd0VudGl0eSB7XG4gIHByaXZhdGUgc3RhdGljIGRlZmF1bHRXaWR0aCA9IDEwMFxuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0SGVpZ2h0ID0gNTBcbiAgcHJpdmF0ZSBzdGF0aWMgZGVmYXVsdENvbG9yID0gJyMxYjI2MmMnXG5cbiAgcHJpdmF0ZSBmbG93U2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpXG4gIHByaXZhdGUgZW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpO1xuXG4gIHByaXZhdGUgaW50ZXJuYWxQb2ludCA9IHRoaXMuY3JlYXRlSW50ZXJuYWxQb2ludFNpZ25hbCgpXG5cbiAgcHJpdmF0ZSB0aHJvdHRsZWRQb2ludCQgPSB0b09ic2VydmFibGUodGhpcy5pbnRlcm5hbFBvaW50KS5waXBlKFxuICAgIG9ic2VydmVPbihhbmltYXRpb25GcmFtZVNjaGVkdWxlcilcbiAgKVxuXG4gIHByaXZhdGUgbm90VGhyb3R0bGVkUG9pbnQkID0gbmV3IFN1YmplY3Q8UG9pbnQ+KClcblxuICBwdWJsaWMgcG9pbnQgPSB0b1NpZ25hbChcbiAgICBtZXJnZSh0aGlzLnRocm90dGxlZFBvaW50JCwgdGhpcy5ub3RUaHJvdHRsZWRQb2ludCQpLFxuICAgIHtcbiAgICAgIGluaXRpYWxWYWx1ZTogdGhpcy5pbnRlcm5hbFBvaW50KClcbiAgICB9XG4gIClcblxuICBwdWJsaWMgcG9pbnQkID0gdGhpcy50aHJvdHRsZWRQb2ludCQ7XG5cbiAgcHVibGljIHNpemUgPSBzaWduYWwoeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0pXG4gIHB1YmxpYyBzaXplJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNpemUpXG5cbiAgcHVibGljIHdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zaXplKCkud2lkdGgpXG4gIHB1YmxpYyBoZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNpemUoKS5oZWlnaHQpXG5cbiAgcHVibGljIHJlbmRlck9yZGVyID0gc2lnbmFsKDApXG5cbiAgcHVibGljIHNlbGVjdGVkID0gc2lnbmFsKGZhbHNlKVxuICBwdWJsaWMgc2VsZWN0ZWQkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2VsZWN0ZWQpXG5cbiAgcHVibGljIGdsb2JhbFBvaW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLnBhcmVudCgpXG4gICAgbGV0IHggPSB0aGlzLnBvaW50KCkueFxuICAgIGxldCB5ID0gdGhpcy5wb2ludCgpLnlcblxuICAgIHdoaWxlIChwYXJlbnQgIT09IG51bGwpIHtcbiAgICAgIHggKz0gcGFyZW50LnBvaW50KCkueFxuICAgICAgeSArPSBwYXJlbnQucG9pbnQoKS55XG5cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQoKVxuICAgIH1cblxuICAgIHJldHVybiB7IHgsIHkgfVxuICB9KVxuXG4gIHB1YmxpYyBwb2ludFRyYW5zZm9ybSA9IGNvbXB1dGVkKCgpID0+XG4gICAgYHRyYW5zbGF0ZSgke3RoaXMuZ2xvYmFsUG9pbnQoKS54fSwgJHt0aGlzLmdsb2JhbFBvaW50KCkueX0pYFxuICApXG5cbiAgLy8gTm93IHNvdXJjZSBhbmQgaGFuZGxlIHBvc2l0aW9ucyBkZXJpdmVkIGZyb20gcGFyZW50IGZsb3dcbiAgcHVibGljIHNvdXJjZVBvc2l0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmhhbmRsZVBvc2l0aW9ucygpLnNvdXJjZSlcbiAgcHVibGljIHRhcmdldFBvc2l0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmhhbmRsZVBvc2l0aW9ucygpLnRhcmdldClcblxuICBwdWJsaWMgaGFuZGxlcyA9IHNpZ25hbDxIYW5kbGVNb2RlbFtdPihbXSlcblxuICBwdWJsaWMgaGFuZGxlcyQgPSB0b09ic2VydmFibGUodGhpcy5oYW5kbGVzKVxuXG4gIHB1YmxpYyBkcmFnZ2FibGUgPSBzaWduYWwodHJ1ZSlcblxuICBwdWJsaWMgZHJhZ0hhbmRsZXNDb3VudCA9IHNpZ25hbCgwKVxuXG4gIC8vIGRpc2FibGVkIGZvciBjb25maWd1cmF0aW9uIGZvciBub3dcbiAgcHVibGljIHJlYWRvbmx5IG1hZ25ldFJhZGl1cyA9IDIwXG5cbiAgLy8gVE9ETzogbm90IHN1cmUgaWYgd2UgbmVlZCB0byBzdGF0aWNhbGx5IHN0b3JlIGl0XG4gIHB1YmxpYyBpc0NvbXBvbmVudFR5cGUgPVxuICAgIEN1c3RvbU5vZGVDb21wb25lbnQuaXNQcm90b3R5cGVPZih0aGlzLm5vZGUudHlwZSkgfHxcbiAgICBDdXN0b21EeW5hbWljTm9kZUNvbXBvbmVudC5pc1Byb3RvdHlwZU9mKHRoaXMubm9kZS50eXBlKVxuXG4gIC8vIERlZmF1bHQgbm9kZSBzcGVjaWZpYyB0aGluZ1xuICBwdWJsaWMgdGV4dCA9IHRoaXMuY3JlYXRlVGV4dFNpZ25hbCgpXG5cbiAgLy8gQ29tcG9uZW50IG5vZGUgc3BlY2lmaWMgdGhpbmdcbiAgcHVibGljIGNvbXBvbmVudFR5cGVJbnB1dHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGU6IHRoaXMubm9kZSxcbiAgICAgIF9zZWxlY3RlZDogdGhpcy5zZWxlY3RlZCgpXG4gICAgfVxuICB9KVxuXG4gIHB1YmxpYyBwYXJlbnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKCkuZmluZChuID0+IG4ubm9kZS5pZCA9PT0gdGhpcy5wYXJlbnRJZCgpKSA/PyBudWxsXG4gIClcblxuICBwdWJsaWMgY2hpbGRyZW4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKCkuZmlsdGVyKG4gPT4gbi5wYXJlbnRJZCgpID09PSB0aGlzLm5vZGUuaWQpXG4gIClcblxuICBwdWJsaWMgY29sb3IgPSBzaWduYWwoTm9kZU1vZGVsLmRlZmF1bHRDb2xvcilcblxuICBwdWJsaWMgcmVzaXphYmxlID0gc2lnbmFsKGZhbHNlKVxuICBwdWJsaWMgcmVzaXppbmcgPSBzaWduYWwoZmFsc2UpXG4gIHB1YmxpYyByZXNpemVyVGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsPihudWxsKVxuXG4gIHByaXZhdGUgcGFyZW50SWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbm9kZTogTm9kZTxUPiB8IER5bmFtaWNOb2RlPFQ+XG4gICkge1xuICAgIGlmIChpc0RlZmluZWQobm9kZS5kcmFnZ2FibGUpKSB7XG4gICAgICBpZiAoaXNEeW5hbWljTm9kZShub2RlKSkge1xuICAgICAgICB0aGlzLmRyYWdnYWJsZSA9IG5vZGUuZHJhZ2dhYmxlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRyYWdnYWJsZS5zZXQobm9kZS5kcmFnZ2FibGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzRGVmaW5lZChub2RlLnBhcmVudElkKSkge1xuICAgICAgaWYgKGlzRHluYW1pY05vZGUobm9kZSkpIHtcbiAgICAgICAgdGhpcy5wYXJlbnRJZCA9IG5vZGUucGFyZW50SWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFyZW50SWQuc2V0KG5vZGUucGFyZW50SWQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlZmF1bHQtZ3JvdXAnICYmIG5vZGUuY29sb3IpIHtcbiAgICAgIGlmIChpc0R5bmFtaWNOb2RlKG5vZGUpKSB7XG4gICAgICAgIHRoaXMuY29sb3IgPSBub2RlLmNvbG9yXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbG9yLnNldChub2RlLmNvbG9yKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdkZWZhdWx0LWdyb3VwJyAmJiBub2RlLnJlc2l6YWJsZSkge1xuICAgICAgaWYgKGlzRHluYW1pY05vZGUobm9kZSkpIHtcbiAgICAgICAgdGhpcy5yZXNpemFibGUgPSBub2RlLnJlc2l6YWJsZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNpemFibGUuc2V0KG5vZGUucmVzaXphYmxlKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRQb2ludChwb2ludDogUG9pbnQsIHRocm90dGxlOiBib29sZWFuKSB7XG4gICAgaWYgKHRocm90dGxlKSB7XG4gICAgICB0aGlzLmludGVybmFsUG9pbnQuc2V0KHBvaW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RUaHJvdHRsZWRQb2ludCQubmV4dChwb2ludClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVE9ETyBmaW5kIHRoZSB3YXkgdG8gaW1wbGVtZW50IHRoaXMgYmV0dGVyXG4gICAqL1xuICBwdWJsaWMgbGlua0RlZmF1bHROb2RlU2l6ZVdpdGhNb2RlbFNpemUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZVxuXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgY2FzZSAnZGVmYXVsdC1ncm91cCc6XG4gICAgICBjYXNlICd0ZW1wbGF0ZS1ncm91cCc6IHtcbiAgICAgICAgaWYgKGlzRHluYW1pY05vZGUobm9kZSkpIHtcbiAgICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaXplLnNldCh7XG4gICAgICAgICAgICAgIHdpZHRoOiBub2RlLndpZHRoPy4oKSA/PyBOb2RlTW9kZWwuZGVmYXVsdFdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IG5vZGUuaGVpZ2h0Py4oKSA/PyBOb2RlTW9kZWwuZGVmYXVsdEhlaWdodCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2l6ZS5zZXQoe1xuICAgICAgICAgICAgd2lkdGg6IG5vZGUud2lkdGggPz8gTm9kZU1vZGVsLmRlZmF1bHRXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogbm9kZS5oZWlnaHQgPz8gTm9kZU1vZGVsLmRlZmF1bHRIZWlnaHRcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2h0bWwtdGVtcGxhdGUnIHx8IHRoaXMuaXNDb21wb25lbnRUeXBlKSB7XG4gICAgICBpZiAoaXNEeW5hbWljTm9kZShub2RlKSkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgIGlmIChub2RlLndpZHRoICYmIG5vZGUuaGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLnNpemUuc2V0KHtcbiAgICAgICAgICAgICAgd2lkdGg6IG5vZGUud2lkdGgoKSxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBub2RlLmhlaWdodCgpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChub2RlLndpZHRoICYmIG5vZGUuaGVpZ2h0KSB7XG4gICAgICAgICAgdGhpcy5zaXplLnNldCh7IHdpZHRoOiBub2RlLndpZHRoLCBoZWlnaHQ6IG5vZGUuaGVpZ2h0IH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRleHRTaWduYWwoKTogU2lnbmFsPHN0cmluZz4ge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGVcblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgaWYgKGlzRHluYW1pY05vZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUudGV4dCA/PyBzaWduYWwoJycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc2lnbmFsKG5vZGUudGV4dCA/PyAnJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmFsKCcnKVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbnRlcm5hbFBvaW50U2lnbmFsKCkge1xuICAgIHJldHVybiBpc0R5bmFtaWNOb2RlKHRoaXMubm9kZSlcbiAgICAgID8gdGhpcy5ub2RlLnBvaW50XG4gICAgICA6IHNpZ25hbCh7IHg6IHRoaXMubm9kZS5wb2ludC54LCB5OiB0aGlzLm5vZGUucG9pbnQueSB9KVxuICB9XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { computed, signal } from "@angular/core";
2
+ export class ToolbarModel {
3
+ constructor(node) {
4
+ this.node = node;
5
+ this.position = signal('top');
6
+ this.template = signal(null);
7
+ this.offset = signal(10);
8
+ this.point = computed(() => {
9
+ switch (this.position()) {
10
+ case 'top':
11
+ return {
12
+ x: this.node.size().width / 2 - this.size().width / 2,
13
+ y: -this.size().height - this.offset()
14
+ };
15
+ case 'bottom':
16
+ return {
17
+ x: this.node.size().width / 2 - this.size().width / 2,
18
+ y: this.node.size().height + this.offset()
19
+ };
20
+ case 'left':
21
+ return {
22
+ x: -this.size().width - this.offset(),
23
+ y: this.node.size().height / 2 - this.size().height / 2
24
+ };
25
+ case 'right':
26
+ return {
27
+ x: this.node.size().width + this.offset(),
28
+ y: this.node.size().height / 2 - this.size().height / 2
29
+ };
30
+ }
31
+ });
32
+ this.transform = computed(() => `translate(${this.point().x}, ${this.point().y})`);
33
+ this.size = signal({ width: 0, height: 0 });
34
+ }
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvdG9vbGJhci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUt0RSxNQUFNLE9BQU8sWUFBWTtJQW1DdkIsWUFBbUIsSUFBZTtRQUFmLFNBQUksR0FBSixJQUFJLENBQVc7UUFsQzNCLGFBQVEsR0FBRyxNQUFNLENBQVcsS0FBSyxDQUFDLENBQUE7UUFDbEMsYUFBUSxHQUFHLE1BQU0sQ0FBOEIsSUFBSSxDQUFDLENBQUE7UUFFcEQsV0FBTSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUVuQixVQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDdkIsS0FBSyxLQUFLO29CQUNSLE9BQU87d0JBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUM7d0JBQ3JELENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRTtxQkFDdkMsQ0FBQTtnQkFDSCxLQUFLLFFBQVE7b0JBQ1gsT0FBTzt3QkFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQzt3QkFDckQsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7cUJBQzNDLENBQUE7Z0JBQ0gsS0FBSyxNQUFNO29CQUNULE9BQU87d0JBQ0wsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFO3dCQUNyQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztxQkFDeEQsQ0FBQTtnQkFDSCxLQUFLLE9BQU87b0JBQ1YsT0FBTzt3QkFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFDekMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUM7cUJBQ3hELENBQUE7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUssY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFN0UsU0FBSSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFUCxDQUFDO0NBQ3hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gXCIuLi90eXBlcy9wb3NpdGlvbi50eXBlXCI7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tIFwiLi9ub2RlLm1vZGVsXCI7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgVG9vbGJhck1vZGVsIHtcbiAgcHVibGljIHBvc2l0aW9uID0gc2lnbmFsPFBvc2l0aW9uPigndG9wJylcbiAgcHVibGljIHRlbXBsYXRlID0gc2lnbmFsPFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbD4obnVsbClcblxuICBwdWJsaWMgb2Zmc2V0ID0gc2lnbmFsKDEwKVxuXG4gIHB1YmxpYyBwb2ludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKHRoaXMucG9zaXRpb24oKSkge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB0aGlzLm5vZGUuc2l6ZSgpLndpZHRoIC8gMiAtIHRoaXMuc2l6ZSgpLndpZHRoIC8gMixcbiAgICAgICAgICB5OiAtdGhpcy5zaXplKCkuaGVpZ2h0IC0gdGhpcy5vZmZzZXQoKVxuICAgICAgICB9XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IHRoaXMubm9kZS5zaXplKCkud2lkdGggLyAyIC0gdGhpcy5zaXplKCkud2lkdGggLyAyLFxuICAgICAgICAgIHk6IHRoaXMubm9kZS5zaXplKCkuaGVpZ2h0ICsgdGhpcy5vZmZzZXQoKVxuICAgICAgICB9XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiAtdGhpcy5zaXplKCkud2lkdGggLSB0aGlzLm9mZnNldCgpLFxuICAgICAgICAgIHk6IHRoaXMubm9kZS5zaXplKCkuaGVpZ2h0IC8gMiAtIHRoaXMuc2l6ZSgpLmhlaWdodCAvIDJcbiAgICAgICAgfVxuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IHRoaXMubm9kZS5zaXplKCkud2lkdGggKyB0aGlzLm9mZnNldCgpLFxuICAgICAgICAgIHk6IHRoaXMubm9kZS5zaXplKCkuaGVpZ2h0IC8gMiAtIHRoaXMuc2l6ZSgpLmhlaWdodCAvIDJcbiAgICAgICAgfVxuICAgIH1cbiAgfSlcblxuICBwdWJsaWMgdHJhbnNmb3JtID0gY29tcHV0ZWQoKCkgPT4gYHRyYW5zbGF0ZSgke3RoaXMucG9pbnQoKS54fSwgJHt0aGlzLnBvaW50KCkueX0pYClcblxuICBwdWJsaWMgc2l6ZSA9IHNpZ25hbCh7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSlcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbm9kZTogTm9kZU1vZGVsKSB7IH1cbn1cbiJdfQ==
@@ -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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DefaultNodeComponent, selector: "default-node", inputs: ["selected"] }] }); }
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,
@@ -0,0 +1,66 @@
1
+ import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, ViewChild } from '@angular/core';
2
+ import { Directive } from '@angular/core';
3
+ import { ToolbarModel } from '../../models/toolbar.model';
4
+ import { OverlaysService } from '../../services/overlays.service';
5
+ import { NodeAccessorService } from '../../services/node-accessor.service';
6
+ import * as i0 from "@angular/core";
7
+ export class NodeToolbarComponent {
8
+ constructor() {
9
+ this.overlaysService = inject(OverlaysService);
10
+ this.nodeService = inject(NodeAccessorService);
11
+ this.model = new ToolbarModel(this.nodeService.model());
12
+ }
13
+ set position(value) {
14
+ this.model.position.set(value);
15
+ }
16
+ ngOnInit() {
17
+ this.model.template.set(this.toolbarContentTemplate);
18
+ this.overlaysService.addToolbar(this.model);
19
+ }
20
+ ngOnDestroy() {
21
+ this.overlaysService.removeToolbar(this.model);
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NodeToolbarComponent, selector: "node-toolbar", inputs: { position: "position" }, viewQueries: [{ propertyName: "toolbarContentTemplate", first: true, predicate: ["toolbar"], descendants: true, static: true }], ngImport: i0, template: `
25
+ <ng-template #toolbar>
26
+ <div class="wrapper" nodeToolbarWrapper [model]="model">
27
+ <ng-content />
28
+ </div>
29
+ </ng-template>
30
+ `, isInline: true, styles: [".wrapper{width:max-content}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return NodeToolbarWrapperDirective; }), selector: "[nodeToolbarWrapper]", inputs: ["model"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeToolbarComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'node-toolbar', template: `
35
+ <ng-template #toolbar>
36
+ <div class="wrapper" nodeToolbarWrapper [model]="model">
37
+ <ng-content />
38
+ </div>
39
+ </ng-template>
40
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".wrapper{width:max-content}\n"] }]
41
+ }], propDecorators: { position: [{
42
+ type: Input
43
+ }], toolbarContentTemplate: [{
44
+ type: ViewChild,
45
+ args: ['toolbar', { static: true }]
46
+ }] } });
47
+ export class NodeToolbarWrapperDirective {
48
+ constructor() {
49
+ this.element = inject(ElementRef);
50
+ }
51
+ ngOnInit() {
52
+ this.model.size.set({
53
+ width: this.element.nativeElement.clientWidth,
54
+ height: this.element.nativeElement.clientHeight
55
+ });
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeToolbarWrapperDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
58
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NodeToolbarWrapperDirective, selector: "[nodeToolbarWrapper]", inputs: { model: "model" }, ngImport: i0 }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeToolbarWrapperDirective, decorators: [{
61
+ type: Directive,
62
+ args: [{ selector: '[nodeToolbarWrapper]' }]
63
+ }], propDecorators: { model: [{
64
+ type: Input
65
+ }] } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9ub2RlLXRvb2xiYXIvbm9kZS10b29sYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBa0MsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFrQjNFLE1BQU0sT0FBTyxvQkFBb0I7SUFoQmpDO1FBaUJVLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFVdkMsVUFBSyxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFHLENBQUMsQ0FBQTtLQVc5RDtJQW5CQyxJQUNXLFFBQVEsQ0FBQyxLQUFlO1FBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBT00sUUFBUTtRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUVwRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hELENBQUM7K0dBdEJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHVOQWRyQjs7Ozs7O0dBTVQsMElBa0NVLDJCQUEyQjs7NEZBMUIzQixvQkFBb0I7a0JBaEJoQyxTQUFTOytCQUNFLGNBQWMsWUFDZDs7Ozs7O0dBTVQsbUJBTWdCLHVCQUF1QixDQUFDLE1BQU07OEJBT3BDLFFBQVE7c0JBRGxCLEtBQUs7Z0JBTUMsc0JBQXNCO3NCQUQ1QixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O0FBaUJ4QyxNQUFNLE9BQU8sMkJBQTJCO0lBRHhDO1FBRVUsWUFBTyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUE7S0FXOUQ7SUFOUSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXO1lBQzdDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZO1NBQ2hELENBQUMsQ0FBQTtJQUNKLENBQUM7K0dBWFUsMkJBQTJCO21HQUEzQiwyQkFBMkI7OzRGQUEzQiwyQkFBMkI7a0JBRHZDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7OEJBS3RDLEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL3Bvc2l0aW9uLnR5cGUnO1xuaW1wb3J0IHsgVG9vbGJhck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Rvb2xiYXIubW9kZWwnO1xuaW1wb3J0IHsgT3ZlcmxheXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3ZlcmxheXMuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlQWNjZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm9kZS1hY2Nlc3Nvci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm9kZS10b29sYmFyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI3Rvb2xiYXI+XG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiIG5vZGVUb29sYmFyV3JhcHBlciBbbW9kZWxdPVwibW9kZWxcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAud3JhcHBlciB7XG4gICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgfVxuICBgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIG92ZXJsYXlzU2VydmljZSA9IGluamVjdChPdmVybGF5c1NlcnZpY2UpO1xuICBwcml2YXRlIG5vZGVTZXJ2aWNlID0gaW5qZWN0KE5vZGVBY2Nlc3NvclNlcnZpY2UpXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwb3NpdGlvbih2YWx1ZTogUG9zaXRpb24pIHtcbiAgICB0aGlzLm1vZGVsLnBvc2l0aW9uLnNldCh2YWx1ZSk7XG4gIH1cblxuICBAVmlld0NoaWxkKCd0b29sYmFyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHRvb2xiYXJDb250ZW50VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBwcm90ZWN0ZWQgbW9kZWwgPSBuZXcgVG9vbGJhck1vZGVsKHRoaXMubm9kZVNlcnZpY2UubW9kZWwoKSEpXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwudGVtcGxhdGUuc2V0KHRoaXMudG9vbGJhckNvbnRlbnRUZW1wbGF0ZSlcblxuICAgIHRoaXMub3ZlcmxheXNTZXJ2aWNlLmFkZFRvb2xiYXIodGhpcy5tb2RlbClcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm92ZXJsYXlzU2VydmljZS5yZW1vdmVUb29sYmFyKHRoaXMubW9kZWwpXG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW25vZGVUb29sYmFyV3JhcHBlcl0nIH0pXG5leHBvcnQgY2xhc3MgTm9kZVRvb2xiYXJXcmFwcGVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBlbGVtZW50ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtb2RlbCE6IFRvb2xiYXJNb2RlbFxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsLnNpemUuc2V0KHtcbiAgICAgIHdpZHRoOiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgfSlcbiAgfVxufVxuIl19