ngx-vflow 0.14.1 → 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 (29) hide show
  1. package/esm2022/lib/vflow/components/custom-node-base/custom-node-base.component.mjs +5 -7
  2. package/esm2022/lib/vflow/components/handle/handle.component.mjs +16 -14
  3. package/esm2022/lib/vflow/components/node/node.component.mjs +8 -3
  4. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +8 -5
  5. package/esm2022/lib/vflow/directives/drag-handle.directive.mjs +27 -0
  6. package/esm2022/lib/vflow/directives/map-context.directive.mjs +24 -17
  7. package/esm2022/lib/vflow/models/node.model.mjs +2 -1
  8. package/esm2022/lib/vflow/models/toolbar.model.mjs +36 -0
  9. package/esm2022/lib/vflow/public-components/node-toolbar/node-toolbar.component.mjs +66 -0
  10. package/esm2022/lib/vflow/services/draggable.service.mjs +13 -15
  11. package/esm2022/lib/vflow/services/overlays.service.mjs +34 -0
  12. package/esm2022/lib/vflow/testing-utils/provide-custom-node-mocks.mjs +67 -0
  13. package/esm2022/lib/vflow/vflow.module.mjs +17 -5
  14. package/esm2022/public-api.mjs +5 -1
  15. package/fesm2022/ngx-vflow.mjs +286 -60
  16. package/fesm2022/ngx-vflow.mjs.map +1 -1
  17. package/lib/vflow/components/handle/handle.component.d.ts +3 -3
  18. package/lib/vflow/components/node/node.component.d.ts +2 -0
  19. package/lib/vflow/directives/drag-handle.directive.d.ts +8 -0
  20. package/lib/vflow/directives/map-context.directive.d.ts +3 -2
  21. package/lib/vflow/models/node.model.d.ts +1 -0
  22. package/lib/vflow/models/toolbar.model.d.ts +19 -0
  23. package/lib/vflow/public-components/node-toolbar/node-toolbar.component.d.ts +22 -0
  24. package/lib/vflow/services/draggable.service.d.ts +0 -5
  25. package/lib/vflow/services/overlays.service.d.ts +11 -0
  26. package/lib/vflow/testing-utils/provide-custom-node-mocks.d.ts +2 -0
  27. package/lib/vflow/vflow.module.d.ts +14 -12
  28. package/package.json +1 -1
  29. 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
@@ -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==
@@ -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
@@ -15,8 +15,8 @@ export class DraggableService {
15
15
  * @param model model with data for this element
16
16
  */
17
17
  enable(element, model) {
18
- const d3Element = select(element);
19
- d3Element.call(this.getDragBehavior(model));
18
+ select(element)
19
+ .call(this.getDragBehavior(model));
20
20
  }
21
21
  /**
22
22
  * Disable draggable behavior for element.
@@ -25,8 +25,8 @@ export class DraggableService {
25
25
  * @param model model with data for this element
26
26
  */
27
27
  disable(element) {
28
- const d3Element = select(element);
29
- d3Element.call(this.getIgnoreDragBehavior());
28
+ select(element)
29
+ .call(drag().on('drag', null));
30
30
  }
31
31
  /**
32
32
  * TODO: not shure if this work, need to check
@@ -45,7 +45,15 @@ export class DraggableService {
45
45
  getDragBehavior(model) {
46
46
  let dragNodes = [];
47
47
  let initialPositions = [];
48
+ const filterCondition = (event) => {
49
+ // if there is at least one drag handle, we should check if we are dragging it
50
+ if (model.dragHandlesCount()) {
51
+ return !!event.target.closest('.vflow-drag-handle');
52
+ }
53
+ return true;
54
+ };
48
55
  return drag()
56
+ .filter(filterCondition)
49
57
  .on('start', (event) => {
50
58
  dragNodes = this.getDragNodes(model);
51
59
  initialPositions = dragNodes.map(node => ({
@@ -63,16 +71,6 @@ export class DraggableService {
63
71
  });
64
72
  });
65
73
  }
66
- /**
67
- * Specify ignoring drag behavior. It's responsible for not moving the map when user tries to drag node
68
- * with disabled drag behavior
69
- */
70
- getIgnoreDragBehavior() {
71
- return drag()
72
- .on('drag', (event) => {
73
- event.sourceEvent.stopPropagation();
74
- });
75
- }
76
74
  getDragNodes(model) {
77
75
  return model.selected()
78
76
  ? this.entitiesService
@@ -99,4 +97,4 @@ function moveNode(model, point) {
99
97
  }
100
98
  model.setPoint(point, true);
101
99
  }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQWUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFNOUQsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVVLG9CQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0F1RnZEO0lBckZDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE9BQWdCLEVBQUUsS0FBZ0I7UUFDOUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWpDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE9BQU8sQ0FBQyxPQUFnQjtRQUM3QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFakMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxDQUFDLE9BQWdCO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFB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LENBQUMsQ0FBQyxDQUFBO1FBQ3ZFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQy9CO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzZWxlY3QgfSBmcm9tICdkMy1zZWxlY3Rpb24nO1xuaW1wb3J0IHsgRDNEcmFnRXZlbnQsIGRyYWcgfSBmcm9tICdkMy1kcmFnJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSAnLi4vdXRpbHMvcm91bmQnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnO1xuXG50eXBlIERyYWdFdmVudCA9IEQzRHJhZ0V2ZW50PEVsZW1lbnQsIHVua25vd24sIHVua25vd24+XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEcmFnZ2FibGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBkcmFnZ2FibGUgYmVoYXZpb3IgZm9yIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IHRhcmdldCBlbGVtZW50IGZvciB0b2dnbGluZyBkcmFnZ2FibGVcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHdpdGggZGF0YSBmb3IgdGhpcyBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZW5hYmxlKGVsZW1lbnQ6IEVsZW1lbnQsIG1vZGVsOiBOb2RlTW9kZWwpIHtcbiAgICBjb25zdCBkM0VsZW1lbnQgPSBzZWxlY3QoZWxlbWVudClcblxuICAgIGQzRWxlbWVudC5jYWxsKHRoaXMuZ2V0RHJhZ0JlaGF2aW9yKG1vZGVsKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGRyYWdnYWJsZSBiZWhhdmlvciBmb3IgZWxlbWVudC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgdGFyZ2V0IGVsZW1lbnQgZm9yIHRvZ2dsaW5nIGRyYWdnYWJsZVxuICAgKiBAcGFyYW0gbW9kZWwgbW9kZWwgd2l0aCBkYXRhIGZvciB0aGlzIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBkaXNhYmxlKGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBjb25zdCBkM0VsZW1lbnQgPSBzZWxlY3QoZWxlbWVudClcblxuICAgIGQzRWxlbWVudC5jYWxsKHRoaXMuZ2V0SWdub3JlRHJhZ0JlaGF2aW9yKCkpXG4gIH1cblxuICAvKipcbiAgICogVE9ETzogbm90IHNodXJlIGlmIHRoaXMgd29yaywgbmVlZCB0byBjaGVja1xuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koZWxlbWVudDogRWxlbWVudCkge1xuICAgIHNlbGVjdChlbGVtZW50KS5vbignLmRyYWcnLCBudWxsKVxuICB9XG5cbiAgLyoqXG4gICAqIE5vZGUgZHJhZyBiZWhhdmlvci4gVXBkYXRlZCBub2RlJ3MgY29vcmRpbmF0ZSBhY2NvcmRpbmcgdG8gZHJhZ2dpbmdcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIGdldERyYWdCZWhhdmlvcihtb2RlbDogTm9kZU1vZGVsKSB7XG4gICAgbGV0IGRyYWdOb2RlczogTm9kZU1vZGVsW10gPSBbXVxuICAgIGxldCBpbml0aWFsUG9zaXRpb25zOiBQb2ludFtdID0gW11cblxuICAgIHJldHVybiBkcmFnKClcbiAgICAgIC5vbignc3RhcnQnLCAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICBkcmFnTm9kZXMgPSB0aGlzLmdldERyYWdOb2Rlcyhtb2RlbClcblxuICAgICAgICBpbml0aWFsUG9zaXRpb25zID0gZHJhZ05vZGVzLm1hcChub2RlID0+ICh7XG4gICAgICAgICAgeDogbm9kZS5wb2ludCgpLnggLSBldmVudC54LFxuICAgICAgICAgIHk6IG5vZGUucG9pbnQoKS55IC0gZXZlbnQueVxuICAgICAgICB9KSlcbiAgICAgIH0pXG5cbiAgICAgIC5vbignZHJhZycsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgIGRyYWdOb2Rlcy5mb3JFYWNoKChtb2RlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsZXQgcG9pbnQgPSB7XG4gICAgICAgICAgICB4OiByb3VuZChldmVudC54ICsgaW5pdGlhbFBvc2l0aW9uc1tpbmRleF0ueCksXG4gICAgICAgICAgICB5OiByb3VuZChldmVudC55ICsgaW5pdGlhbFBvc2l0aW9uc1tpbmRleF0ueSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtb3ZlTm9kZShtb2RlbCwgcG9pbnQpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgaWdub3JpbmcgZHJhZyBiZWhhdmlvci4gSXQncyByZXNwb25zaWJsZSBmb3Igbm90IG1vdmluZyB0aGUgbWFwIHdoZW4gdXNlciB0cmllcyB0byBkcmFnIG5vZGVcbiAgICogd2l0aCBkaXNhYmxlZCBkcmFnIGJlaGF2aW9yXG4gICAqL1xuICBwcml2YXRlIGdldElnbm9yZURyYWdCZWhhdmlvcigpIHtcbiAgICByZXR1cm4gZHJhZygpXG4gICAgICAub24oJ2RyYWcnLCAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICAoZXZlbnQuc291cmNlRXZlbnQgYXMgRXZlbnQpLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREcmFnTm9kZXMobW9kZWw6IE5vZGVNb2RlbCkge1xuICAgIHJldHVybiBtb2RlbC5zZWxlY3RlZCgpXG4gICAgICA/IHRoaXMuZW50aXRpZXNTZXJ2aWNlXG4gICAgICAgIC5ub2RlcygpXG4gICAgICAgIC8vIHNlbGVjdGVkIGRyYWdnYWJsZSBub2RlcyAod2l0aCBjdXJyZW50IG5vZGUpXG4gICAgICAgIC5maWx0ZXIobm9kZSA9PiBub2RlLnNlbGVjdGVkKCkgJiYgbm9kZS5kcmFnZ2FibGUoKSlcbiAgICAgIC8vIHdlIG9ubHkgY2FuIG1vdmUgY3VycmVudCBub2RlIGlmIGl0J3Mgbm90IHNlbGVjdGVkXG4gICAgICA6IFttb2RlbF1cbiAgfVxufVxuXG5mdW5jdGlvbiBtb3ZlTm9kZShtb2RlbDogTm9kZU1vZGVsLCBwb2ludDogUG9pbnQpIHtcbiAgY29uc3QgcGFyZW50ID0gbW9kZWwucGFyZW50KClcbiAgLy8ga2VlcCBub2RlIGluIGJvdW5kcyBvZiBwYXJlbnRcbiAgaWYgKHBhcmVudCkge1xuICAgIHBvaW50LnggPSBNYXRoLm1pbihwYXJlbnQuc2l6ZSgpLndpZHRoIC0gbW9kZWwuc2l6ZSgpLndpZHRoLCBwb2ludC54KVxuICAgIHBvaW50LnggPSBNYXRoLm1heCgwLCBwb2ludC54KVxuXG4gICAgcG9pbnQueSA9IE1hdGgubWluKHBhcmVudC5zaXplKCkuaGVpZ2h0IC0gbW9kZWwuc2l6ZSgpLmhlaWdodCwgcG9pbnQueSlcbiAgICBwb2ludC55ID0gTWF0aC5tYXgoMCwgcG9pbnQueSlcbiAgfVxuXG4gIG1vZGVsLnNldFBvaW50KHBvaW50LCB0cnVlKVxufVxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQWUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFNOUQsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVVLG9CQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FzRnZEO0lBcEZDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE9BQWdCLEVBQUUsS0FBZ0I7UUFDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTyxDQUFDLE9BQWdCO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDWixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxDQUFDLE9BQWdCO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGVBQWUsQ0FB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LENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN2RSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUMvQjtJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCB7IEQzRHJhZ0V2ZW50LCBkcmFnIH0gZnJvbSAnZDMtZHJhZyc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gJy4uL3V0aWxzL3JvdW5kJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctZW50aXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcblxudHlwZSBEcmFnRXZlbnQgPSBEM0RyYWdFdmVudDxFbGVtZW50LCB1bmtub3duLCB1bmtub3duPlxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJhZ2dhYmxlU2VydmljZSB7XG4gIHByaXZhdGUgZW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgZHJhZ2dhYmxlIGJlaGF2aW9yIGZvciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCB0YXJnZXQgZWxlbWVudCBmb3IgdG9nZ2xpbmcgZHJhZ2dhYmxlXG4gICAqIEBwYXJhbSBtb2RlbCBtb2RlbCB3aXRoIGRhdGEgZm9yIHRoaXMgZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGVuYWJsZShlbGVtZW50OiBFbGVtZW50LCBtb2RlbDogTm9kZU1vZGVsKSB7XG4gICAgc2VsZWN0KGVsZW1lbnQpXG4gICAgICAuY2FsbCh0aGlzLmdldERyYWdCZWhhdmlvcihtb2RlbCkpXG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZSBkcmFnZ2FibGUgYmVoYXZpb3IgZm9yIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IHRhcmdldCBlbGVtZW50IGZvciB0b2dnbGluZyBkcmFnZ2FibGVcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHdpdGggZGF0YSBmb3IgdGhpcyBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZGlzYWJsZShlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgc2VsZWN0KGVsZW1lbnQpXG4gICAgICAuY2FsbChkcmFnKCkub24oJ2RyYWcnLCBudWxsKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPOiBub3Qgc2h1cmUgaWYgdGhpcyB3b3JrLCBuZWVkIHRvIGNoZWNrXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZGVzdHJveShlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgc2VsZWN0KGVsZW1lbnQpLm9uKCcuZHJhZycsIG51bGwpXG4gIH1cblxuICAvKipcbiAgICogTm9kZSBkcmFnIGJlaGF2aW9yLiBVcGRhdGVkIG5vZGUncyBjb29yZGluYXRlIGFjY29yZGluZyB0byBkcmFnZ2luZ1xuICAgKlxuICAgKiBAcGFyYW0gbW9kZWxcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByaXZhdGUgZ2V0RHJhZ0JlaGF2aW9yKG1vZGVsOiBOb2RlTW9kZWwpIHtcbiAgICBsZXQgZHJhZ05vZGVzOiBOb2RlTW9kZWxbXSA9IFtdXG4gICAgbGV0IGluaXRpYWxQb3NpdGlvbnM6IFBvaW50W10gPSBbXVxuXG4gICAgY29uc3QgZmlsdGVyQ29uZGl0aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgLy8gaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGRyYWcgaGFuZGxlLCB3ZSBzaG91bGQgY2hlY2sgaWYgd2UgYXJlIGRyYWdnaW5nIGl0XG4gICAgICBpZiAobW9kZWwuZHJhZ0hhbmRsZXNDb3VudCgpKSB7XG4gICAgICAgIHJldHVybiAhIShldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnLnZmbG93LWRyYWctaGFuZGxlJylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZHJhZygpXG4gICAgICAuZmlsdGVyKGZpbHRlckNvbmRpdGlvbilcbiAgICAgIC5vbignc3RhcnQnLCAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICBkcmFnTm9kZXMgPSB0aGlzLmdldERyYWdOb2Rlcyhtb2RlbClcblxuICAgICAgICBpbml0aWFsUG9zaXRpb25zID0gZHJhZ05vZGVzLm1hcChub2RlID0+ICh7XG4gICAgICAgICAgeDogbm9kZS5wb2ludCgpLnggLSBldmVudC54LFxuICAgICAgICAgIHk6IG5vZGUucG9pbnQoKS55IC0gZXZlbnQueVxuICAgICAgICB9KSlcbiAgICAgIH0pXG5cbiAgICAgIC5vbignZHJhZycsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgIGRyYWdOb2Rlcy5mb3JFYWNoKChtb2RlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBsZXQgcG9pbnQgPSB7XG4gICAgICAgICAgICB4OiByb3VuZChldmVudC54ICsgaW5pdGlhbFBvc2l0aW9uc1tpbmRleF0ueCksXG4gICAgICAgICAgICB5OiByb3VuZChldmVudC55ICsgaW5pdGlhbFBvc2l0aW9uc1tpbmRleF0ueSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtb3ZlTm9kZShtb2RlbCwgcG9pbnQpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREcmFnTm9kZXMobW9kZWw6IE5vZGVNb2RlbCkge1xuICAgIHJldHVybiBtb2RlbC5zZWxlY3RlZCgpXG4gICAgICA/IHRoaXMuZW50aXRpZXNTZXJ2aWNlXG4gICAgICAgIC5ub2RlcygpXG4gICAgICAgIC8vIHNlbGVjdGVkIGRyYWdnYWJsZSBub2RlcyAod2l0aCBjdXJyZW50IG5vZGUpXG4gICAgICAgIC5maWx0ZXIobm9kZSA9PiBub2RlLnNlbGVjdGVkKCkgJiYgbm9kZS5kcmFnZ2FibGUoKSlcbiAgICAgIC8vIHdlIG9ubHkgY2FuIG1vdmUgY3VycmVudCBub2RlIGlmIGl0J3Mgbm90IHNlbGVjdGVkXG4gICAgICA6IFttb2RlbF1cbiAgfVxuXG5cbn1cblxuZnVuY3Rpb24gbW92ZU5vZGUobW9kZWw6IE5vZGVNb2RlbCwgcG9pbnQ6IFBvaW50KSB7XG4gIGNvbnN0IHBhcmVudCA9IG1vZGVsLnBhcmVudCgpXG4gIC8vIGtlZXAgbm9kZSBpbiBib3VuZHMgb2YgcGFyZW50XG4gIGlmIChwYXJlbnQpIHtcbiAgICBwb2ludC54ID0gTWF0aC5taW4ocGFyZW50LnNpemUoKS53aWR0aCAtIG1vZGVsLnNpemUoKS53aWR0aCwgcG9pbnQueClcbiAgICBwb2ludC54ID0gTWF0aC5tYXgoMCwgcG9pbnQueClcblxuICAgIHBvaW50LnkgPSBNYXRoLm1pbihwYXJlbnQuc2l6ZSgpLmhlaWdodCAtIG1vZGVsLnNpemUoKS5oZWlnaHQsIHBvaW50LnkpXG4gICAgcG9pbnQueSA9IE1hdGgubWF4KDAsIHBvaW50LnkpXG4gIH1cblxuICBtb2RlbC5zZXRQb2ludChwb2ludCwgdHJ1ZSlcbn1cbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { __decorate } from "tslib";
2
+ import { computed, Injectable, signal } from '@angular/core';
3
+ import { Microtask } from '../decorators/microtask.decorator';
4
+ import * as i0 from "@angular/core";
5
+ export class OverlaysService {
6
+ constructor() {
7
+ this.toolbars = signal([]);
8
+ this.nodeToolbars = computed(() => {
9
+ const map = new Map();
10
+ this.toolbars().forEach((toolbar) => {
11
+ map.set(toolbar.node, toolbar);
12
+ });
13
+ return map;
14
+ });
15
+ }
16
+ addToolbar(toolbar) {
17
+ this.toolbars.update((toolbars) => [...toolbars, toolbar]);
18
+ }
19
+ removeToolbar(toolbar) {
20
+ this.toolbars.update((toolbars) => toolbars.filter(t => t !== toolbar));
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverlaysService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
23
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverlaysService }); }
24
+ }
25
+ __decorate([
26
+ Microtask
27
+ ], OverlaysService.prototype, "addToolbar", null);
28
+ __decorate([
29
+ Microtask
30
+ ], OverlaysService.prototype, "removeToolbar", null);
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverlaysService, decorators: [{
32
+ type: Injectable
33
+ }], propDecorators: { addToolbar: [], removeToolbar: [] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9vdmVybGF5cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUc5RCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVVLGFBQVEsR0FBRyxNQUFNLENBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBRXZDLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQTtZQUU5QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2xDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNoQyxDQUFDLENBQUMsQ0FBQTtZQUVGLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQyxDQUFDLENBQUE7S0FXSDtJQVJRLFVBQVUsQ0FBQyxPQUFxQjtRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFHTSxhQUFhLENBQUMsT0FBcUI7UUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDOytHQXJCVSxlQUFlO21IQUFmLGVBQWU7O0FBY25CO0lBRE4sU0FBUztpREFHVDtBQUdNO0lBRE4sU0FBUztvREFHVDs0RkFyQlUsZUFBZTtrQkFEM0IsVUFBVTs4QkFlRixVQUFVLE1BS1YsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2xiYXJNb2RlbCB9IGZyb20gJy4uL21vZGVscy90b29sYmFyLm1vZGVsJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IE1pY3JvdGFzayB9IGZyb20gJy4uL2RlY29yYXRvcnMvbWljcm90YXNrLmRlY29yYXRvcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPdmVybGF5c1NlcnZpY2Uge1xuICBwcml2YXRlIHRvb2xiYXJzID0gc2lnbmFsPFRvb2xiYXJNb2RlbFtdPihbXSk7XG5cbiAgcHVibGljIG5vZGVUb29sYmFycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPE5vZGVNb2RlbCwgVG9vbGJhck1vZGVsPigpXG5cbiAgICB0aGlzLnRvb2xiYXJzKCkuZm9yRWFjaCgodG9vbGJhcikgPT4ge1xuICAgICAgbWFwLnNldCh0b29sYmFyLm5vZGUsIHRvb2xiYXIpXG4gICAgfSlcblxuICAgIHJldHVybiBtYXBcbiAgfSlcblxuICBATWljcm90YXNrXG4gIHB1YmxpYyBhZGRUb29sYmFyKHRvb2xiYXI6IFRvb2xiYXJNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhcnMudXBkYXRlKCh0b29sYmFycykgPT4gWy4uLnRvb2xiYXJzLCB0b29sYmFyXSk7XG4gIH1cblxuICBATWljcm90YXNrXG4gIHB1YmxpYyByZW1vdmVUb29sYmFyKHRvb2xiYXI6IFRvb2xiYXJNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhcnMudXBkYXRlKCh0b29sYmFycykgPT4gdG9vbGJhcnMuZmlsdGVyKHQgPT4gdCAhPT0gdG9vbGJhcikpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,67 @@
1
+ import { signal } from "@angular/core";
2
+ import { ComponentEventBusService } from "../services/component-event-bus.service";
3
+ import { HandleService } from "../services/handle.service";
4
+ import { NodeModel } from "../models/node.model";
5
+ import { FlowSettingsService } from "../services/flow-settings.service";
6
+ import { FlowEntitiesService } from "../services/flow-entities.service";
7
+ import { NodeAccessorService } from "../services/node-accessor.service";
8
+ import { RootPointerDirective } from "../directives/root-pointer.directive";
9
+ import { of } from "rxjs";
10
+ import { ViewportService } from "../services/viewport.service";
11
+ import { SpacePointContextDirective } from "../directives/space-point-context.directive";
12
+ import { SelectionService } from "../services/selection.service";
13
+ const mockModel = () => new NodeModel({ id: 'mock', type: 'default', point: { x: 0, y: 0 } });
14
+ export function provideCustomNodeMocks() {
15
+ return [
16
+ {
17
+ provide: ComponentEventBusService,
18
+ useValue: {
19
+ pushEvent: () => { }
20
+ }
21
+ },
22
+ {
23
+ provide: HandleService,
24
+ useFactory: () => ({
25
+ node: signal(mockModel()),
26
+ createHandle: () => { },
27
+ destroyHandle: () => { },
28
+ })
29
+ },
30
+ {
31
+ provide: RootPointerDirective,
32
+ useValue: {
33
+ pointerMovement$: of({
34
+ x: 0,
35
+ y: 0,
36
+ movementX: 0,
37
+ movementY: 0,
38
+ target: null,
39
+ originalEvent: null
40
+ }),
41
+ documentPointerEnd$: of(null)
42
+ }
43
+ },
44
+ {
45
+ provide: SpacePointContextDirective,
46
+ useValue: {
47
+ documentPointToFlowPoint: (point) => point
48
+ }
49
+ },
50
+ {
51
+ provide: NodeAccessorService,
52
+ useFactory: () => ({
53
+ model: signal(mockModel())
54
+ })
55
+ },
56
+ {
57
+ provide: SelectionService,
58
+ useValue: {
59
+ select: () => { },
60
+ }
61
+ },
62
+ FlowSettingsService,
63
+ FlowEntitiesService,
64
+ ViewportService
65
+ ];
66
+ }
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1jdXN0b20tbm9kZS1tb2Nrcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90ZXN0aW5nLXV0aWxzL3Byb3ZpZGUtY3VzdG9tLW5vZGUtbW9ja3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUU3RixNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSx3QkFBd0I7WUFDakMsUUFBUSxFQUFFO2dCQUNSLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQ3JCO1NBQ0Y7UUFDRDtZQUNFLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztnQkFDdkIsYUFBYSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7YUFDekIsQ0FBQztTQUNIO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsb0JBQW9CO1lBQzdCLFFBQVEsRUFBRTtnQkFDUixnQkFBZ0IsRUFBRSxFQUFFLENBQUM7b0JBQ25CLENBQUMsRUFBRSxDQUFDO29CQUNKLENBQUMsRUFBRSxDQUFDO29CQUNKLFNBQVMsRUFBRSxDQUFDO29CQUNaLFNBQVMsRUFBRSxDQUFDO29CQUNaLE1BQU0sRUFBRSxJQUFJO29CQUNaLGFBQWEsRUFBRSxJQUFJO2lCQUNwQixDQUFDO2dCQUNGLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7YUFDOUI7U0FDRjtRQUNEO1lBQ0UsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxRQUFRLEVBQUU7Z0JBQ1Isd0JBQXdCLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLEtBQUs7YUFDbEQ7U0FDRjtRQUNEO1lBQ0UsT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUMzQixDQUFDO1NBQ0g7UUFDRDtZQUNFLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsUUFBUSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQ2xCO1NBQ0Y7UUFDRCxtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGVBQWU7S0FDaEIsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbXBvbmVudEV2ZW50QnVzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9jb21wb25lbnQtZXZlbnQtYnVzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEhhbmRsZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2VcIjtcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvbm9kZS5tb2RlbFwiO1xuaW1wb3J0IHsgRmxvd1NldHRpbmdzU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9mbG93LXNldHRpbmdzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZmxvdy1lbnRpdGllcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBOb2RlQWNjZXNzb3JTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL25vZGUtYWNjZXNzb3Iuc2VydmljZVwiO1xuaW1wb3J0IHsgUm9vdFBvaW50ZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy9yb290LXBvaW50ZXIuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBvZiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZVwiO1xuaW1wb3J0IHsgU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUgfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy9zcGFjZS1wb2ludC1jb250ZXh0LmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2VcIjtcblxuY29uc3QgbW9ja01vZGVsID0gKCkgPT4gbmV3IE5vZGVNb2RlbCh7IGlkOiAnbW9jaycsIHR5cGU6ICdkZWZhdWx0JywgcG9pbnQ6IHsgeDogMCwgeTogMCB9IH0pXG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ3VzdG9tTm9kZU1vY2tzKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENvbXBvbmVudEV2ZW50QnVzU2VydmljZSxcbiAgICAgIHVzZVZhbHVlOiB7XG4gICAgICAgIHB1c2hFdmVudDogKCkgPT4geyB9XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBIYW5kbGVTZXJ2aWNlLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gKHtcbiAgICAgICAgbm9kZTogc2lnbmFsKG1vY2tNb2RlbCgpKSxcbiAgICAgICAgY3JlYXRlSGFuZGxlOiAoKSA9PiB7IH0sXG4gICAgICAgIGRlc3Ryb3lIYW5kbGU6ICgpID0+IHsgfSxcbiAgICAgIH0pXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBSb290UG9pbnRlckRpcmVjdGl2ZSxcbiAgICAgIHVzZVZhbHVlOiB7XG4gICAgICAgIHBvaW50ZXJNb3ZlbWVudCQ6IG9mKHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgbW92ZW1lbnRYOiAwLFxuICAgICAgICAgIG1vdmVtZW50WTogMCxcbiAgICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogbnVsbFxuICAgICAgICB9KSxcbiAgICAgICAgZG9jdW1lbnRQb2ludGVyRW5kJDogb2YobnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNwYWNlUG9pbnRDb250ZXh0RGlyZWN0aXZlLFxuICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgZG9jdW1lbnRQb2ludFRvRmxvd1BvaW50OiAocG9pbnQ6IFBvaW50KSA9PiBwb2ludFxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTm9kZUFjY2Vzc29yU2VydmljZSxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+ICh7XG4gICAgICAgIG1vZGVsOiBzaWduYWwobW9ja01vZGVsKCkpXG4gICAgICB9KVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogU2VsZWN0aW9uU2VydmljZSxcbiAgICAgIHVzZVZhbHVlOiB7XG4gICAgICAgIHNlbGVjdDogKCkgPT4geyB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgRmxvd1NldHRpbmdzU2VydmljZSxcbiAgICBGbG93RW50aXRpZXNTZXJ2aWNlLFxuICAgIFZpZXdwb3J0U2VydmljZVxuICBdXG59XG4iXX0=