ngx-vflow 1.0.7 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/esm2022/lib/vflow/components/edge-label/edge-label.component.mjs +15 -11
  2. package/esm2022/lib/vflow/components/node/node.component.mjs +18 -49
  3. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +3 -3
  4. package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +55 -1
  5. package/esm2022/lib/vflow/directives/node-handles-controller.directive.mjs +33 -0
  6. package/esm2022/lib/vflow/directives/node-resize-controller.directive.mjs +35 -0
  7. package/esm2022/lib/vflow/directives/selectable.directive.mjs +2 -2
  8. package/esm2022/lib/vflow/models/handle.model.mjs +33 -33
  9. package/esm2022/lib/vflow/models/node.model.mjs +30 -67
  10. package/esm2022/lib/vflow/public-components/handle/handle.component.mjs +3 -3
  11. package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +4 -3
  12. package/esm2022/lib/vflow/services/draggable.service.mjs +2 -2
  13. package/esm2022/lib/vflow/services/handle.service.mjs +1 -1
  14. package/esm2022/lib/vflow/testing-utils/component-mocks/handle-mock.component.mjs +22 -0
  15. package/esm2022/lib/vflow/testing-utils/component-mocks/minimap-mock.component.mjs +22 -0
  16. package/esm2022/lib/vflow/testing-utils/component-mocks/node-toolbar-mock.component.mjs +19 -0
  17. package/esm2022/lib/vflow/testing-utils/component-mocks/resizable-mock.component.mjs +21 -0
  18. package/esm2022/lib/vflow/testing-utils/component-mocks/vflow-mock.component.mjs +251 -0
  19. package/esm2022/lib/vflow/testing-utils/directive-mocks/connection-controller-mock.directive.mjs +15 -0
  20. package/esm2022/lib/vflow/testing-utils/directive-mocks/drag-handle-mock.directive.mjs +11 -0
  21. package/esm2022/lib/vflow/testing-utils/directive-mocks/selectable-mock.directive.mjs +14 -0
  22. package/esm2022/lib/vflow/testing-utils/directive-mocks/template-mock.directive.mjs +87 -0
  23. package/esm2022/lib/vflow/testing-utils/provide-custom-node-mocks.mjs +9 -8
  24. package/esm2022/lib/vflow/testing-utils/vflow-mocks.mjs +26 -0
  25. package/esm2022/public-api.mjs +11 -1
  26. package/fesm2022/ngx-vflow.mjs +699 -189
  27. package/fesm2022/ngx-vflow.mjs.map +1 -1
  28. package/lib/vflow/components/edge-label/edge-label.component.d.ts +2 -0
  29. package/lib/vflow/components/node/node.component.d.ts +5 -11
  30. package/lib/vflow/directives/changes-controller.directive.d.ts +54 -0
  31. package/lib/vflow/directives/node-handles-controller.directive.d.ts +11 -0
  32. package/lib/vflow/directives/node-resize-controller.directive.d.ts +11 -0
  33. package/lib/vflow/models/handle.model.d.ts +8 -23
  34. package/lib/vflow/models/node.model.d.ts +17 -13
  35. package/lib/vflow/services/handle.service.d.ts +1 -1
  36. package/lib/vflow/testing-utils/component-mocks/handle-mock.component.d.ts +11 -0
  37. package/lib/vflow/testing-utils/component-mocks/minimap-mock.component.d.ts +10 -0
  38. package/lib/vflow/testing-utils/component-mocks/node-toolbar-mock.component.d.ts +7 -0
  39. package/lib/vflow/testing-utils/component-mocks/resizable-mock.component.d.ts +8 -0
  40. package/lib/vflow/testing-utils/component-mocks/vflow-mock.component.d.ts +48 -0
  41. package/lib/vflow/testing-utils/directive-mocks/connection-controller-mock.directive.d.ts +7 -0
  42. package/lib/vflow/testing-utils/directive-mocks/drag-handle-mock.directive.d.ts +5 -0
  43. package/lib/vflow/testing-utils/directive-mocks/selectable-mock.directive.d.ts +5 -0
  44. package/lib/vflow/testing-utils/directive-mocks/template-mock.directive.d.ts +32 -0
  45. package/lib/vflow/testing-utils/vflow-mocks.d.ts +10 -0
  46. package/package.json +1 -1
  47. package/public-api.d.ts +10 -0
@@ -15,37 +15,67 @@ export class ChangesControllerDirective {
15
15
  this.onNodesChangePosition = outputFromObservable(this.nodeChangesOfType('position'), {
16
16
  alias: 'onNodesChange.position',
17
17
  });
18
+ /**
19
+ * @deprecated use `onNodesChange.position` instead
20
+ */
18
21
  this.onNodesChangePositionSignle = outputFromObservable(this.singleChange(this.nodeChangesOfType('position')), { alias: 'onNodesChange.position.single' });
22
+ /**
23
+ * @deprecated use `onNodesChange.position` instead
24
+ */
19
25
  this.onNodesChangePositionMany = outputFromObservable(this.manyChanges(this.nodeChangesOfType('position')), { alias: 'onNodesChange.position.many' });
20
26
  this.onNodesChangeSize = outputFromObservable(this.nodeChangesOfType('size'), {
21
27
  alias: 'onNodesChange.size',
22
28
  });
29
+ /**
30
+ * @deprecated use `onNodesChange.size` instead
31
+ */
23
32
  this.onNodesChangeSizeSingle = outputFromObservable(this.singleChange(this.nodeChangesOfType('size')), {
24
33
  alias: 'onNodesChange.size.single',
25
34
  });
35
+ /**
36
+ * @deprecated use `onNodesChange.size` instead
37
+ */
26
38
  this.onNodesChangeSizeMany = outputFromObservable(this.manyChanges(this.nodeChangesOfType('size')), {
27
39
  alias: 'onNodesChange.size.many',
28
40
  });
29
41
  this.onNodesChangeAdd = outputFromObservable(this.nodeChangesOfType('add'), {
30
42
  alias: 'onNodesChange.add',
31
43
  });
44
+ /**
45
+ * @deprecated use `onNodesChange.add` instead
46
+ */
32
47
  this.onNodesChangeAddSingle = outputFromObservable(this.singleChange(this.nodeChangesOfType('add')), {
33
48
  alias: 'onNodesChange.add.single',
34
49
  });
50
+ /**
51
+ * @deprecated use `onNodesChange.add` instead
52
+ */
35
53
  this.onNodesChangeAddMany = outputFromObservable(this.manyChanges(this.nodeChangesOfType('add')), {
36
54
  alias: 'onNodesChange.add.many',
37
55
  });
38
56
  this.onNodesChangeRemove = outputFromObservable(this.nodeChangesOfType('remove'), {
39
57
  alias: 'onNodesChange.remove',
40
58
  });
59
+ /**
60
+ * @deprecated use `onNodesChange.remove` instead
61
+ */
41
62
  this.onNodesChangeRemoveSingle = outputFromObservable(this.singleChange(this.nodeChangesOfType('remove')), { alias: 'onNodesChange.remove.single' });
63
+ /**
64
+ * @deprecated use `onNodesChange.remove` instead
65
+ */
42
66
  this.onNodesChangeRemoveMany = outputFromObservable(this.manyChanges(this.nodeChangesOfType('remove')), {
43
67
  alias: 'onNodesChange.remove.many',
44
68
  });
45
69
  this.onNodesChangeSelect = outputFromObservable(this.nodeChangesOfType('select'), {
46
70
  alias: 'onNodesChange.select',
47
71
  });
72
+ /**
73
+ * @deprecated use `onNodesChange.select` instead
74
+ */
48
75
  this.onNodesChangeSelectSingle = outputFromObservable(this.singleChange(this.nodeChangesOfType('select')), { alias: 'onNodesChange.select.single' });
76
+ /**
77
+ * @deprecated use `onNodesChange.select` instead
78
+ */
49
79
  this.onNodesChangeSelectMany = outputFromObservable(this.manyChanges(this.nodeChangesOfType('select')), {
50
80
  alias: 'onNodesChange.select.many',
51
81
  });
@@ -56,32 +86,56 @@ export class ChangesControllerDirective {
56
86
  this.onNodesChangeDetached = outputFromObservable(this.edgeChangesOfType('detached'), {
57
87
  alias: 'onEdgesChange.detached',
58
88
  });
89
+ /**
90
+ * @deprecated use `onEdgesChange.detached` instead
91
+ */
59
92
  this.onNodesChangeDetachedSingle = outputFromObservable(this.singleChange(this.edgeChangesOfType('detached')), { alias: 'onEdgesChange.detached.single' });
93
+ /**
94
+ * @deprecated use `onEdgesChange.detached` instead
95
+ */
60
96
  this.onNodesChangeDetachedMany = outputFromObservable(this.manyChanges(this.edgeChangesOfType('detached')), { alias: 'onEdgesChange.detached.many' });
61
97
  this.onEdgesChangeAdd = outputFromObservable(this.edgeChangesOfType('add'), {
62
98
  alias: 'onEdgesChange.add',
63
99
  });
100
+ /**
101
+ * @deprecated use `onEdgesChange.add` instead
102
+ */
64
103
  this.onEdgeChangeAddSingle = outputFromObservable(this.singleChange(this.edgeChangesOfType('add')), {
65
104
  alias: 'onEdgesChange.add.single',
66
105
  });
106
+ /**
107
+ * @deprecated use `onEdgesChange.add` instead
108
+ */
67
109
  this.onEdgeChangeAddMany = outputFromObservable(this.manyChanges(this.edgeChangesOfType('add')), {
68
110
  alias: 'onEdgesChange.add.many',
69
111
  });
70
112
  this.onEdgeChangeRemove = outputFromObservable(this.edgeChangesOfType('remove'), {
71
113
  alias: 'onEdgesChange.remove',
72
114
  });
115
+ /**
116
+ * @deprecated use `onEdgesChange.remove` instead
117
+ */
73
118
  this.onEdgeChangeRemoveSingle = outputFromObservable(this.singleChange(this.edgeChangesOfType('remove')), {
74
119
  alias: 'onEdgesChange.remove.single',
75
120
  });
121
+ /**
122
+ * @deprecated use `onEdgesChange.remove` instead
123
+ */
76
124
  this.onEdgeChangeRemoveMany = outputFromObservable(this.manyChanges(this.edgeChangesOfType('remove')), {
77
125
  alias: 'onEdgesChange.remove.many',
78
126
  });
79
127
  this.onEdgeChangeSelect = outputFromObservable(this.edgeChangesOfType('select'), {
80
128
  alias: 'onEdgesChange.select',
81
129
  });
130
+ /**
131
+ * @deprecated use `onEdgesChange.select` instead
132
+ */
82
133
  this.onEdgeChangeSelectSingle = outputFromObservable(this.singleChange(this.edgeChangesOfType('select')), {
83
134
  alias: 'onEdgesChange.select.single',
84
135
  });
136
+ /**
137
+ * @deprecated use `onEdgesChange.select` instead
138
+ */
85
139
  this.onEdgeChangeSelectMany = outputFromObservable(this.manyChanges(this.edgeChangesOfType('select')), {
86
140
  alias: 'onEdgesChange.select.many',
87
141
  });
@@ -108,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
108
162
  standalone: true,
109
163
  }]
110
164
  }] });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlcy1jb250cm9sbGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2NoYW5nZXMtY29udHJvbGxlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFjLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFRL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBTWxFLE1BQU0sT0FBTywwQkFBMEI7SUFKdkM7UUFLWSx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRCx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUxRDs7V0FFRztRQUNhLGtCQUFhLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZFLDBCQUFxQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvRixLQUFLLEVBQUUsd0JBQXdCO1NBQ2hDLENBQUMsQ0FBQztRQUVhLGdDQUEyQixHQUFHLG9CQUFvQixDQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUNyRCxFQUFFLEtBQUssRUFBRSwrQkFBK0IsRUFBRSxDQUMzQyxDQUFDO1FBRWMsOEJBQXlCLEdBQUcsb0JBQW9CLENB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TSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBSSxRQUF5QjtRQUMvQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQ2xCLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFDekMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQ3hCLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFJLFFBQXlCO1FBQzlDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDOytHQXZKVSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTm9kZUFkZENoYW5nZSxcbiAgTm9kZUNoYW5nZSxcbiAgTm9kZVBvc2l0aW9uQ2hhbmdlLFxuICBOb2RlUmVtb3ZlQ2hhbmdlLFxuICBOb2RlU2VsZWN0ZWRDaGFuZ2UsXG4gIE5vZGVTaXplQ2hhbmdlLFxufSBmcm9tICcuLi90eXBlcy9ub2RlLWNoYW5nZS50eXBlJztcbmltcG9ydCB7IEVkZ2VDaGFuZ2VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VkZ2UtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vZGUtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBFZGdlQWRkQ2hhbmdlLFxuICBFZGdlQ2hhbmdlLFxuICBFZGdlRGV0YWNoZWRDaGFuZ2UsXG4gIEVkZ2VSZW1vdmVDaGFuZ2UsXG4gIEVkZ2VTZWxlY3RDaGFuZ2UsXG59IGZyb20gJy4uL3R5cGVzL2VkZ2UtY2hhbmdlLnR5cGUnO1xuaW1wb3J0IHsgb3V0cHV0RnJvbU9ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjaGFuZ2VzQ29udHJvbGxlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFuZ2VzQ29udHJvbGxlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBub2Rlc0NoYW5nZVNlcnZpY2UgPSBpbmplY3QoTm9kZXNDaGFuZ2VTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGVkZ2VzQ2hhbmdlU2VydmljZSA9IGluamVjdChFZGdlQ2hhbmdlc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBXYXRjaCBub2RlcyBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5ub2Rlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlUG9zaXRpb24gPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdwb3NpdGlvbicpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uJyxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VQb3NpdGlvblNpZ25sZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3Bvc2l0aW9uJykpLFxuICAgIHsgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uLnNpbmdsZScgfSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVBvc2l0aW9uTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMubWFueUNoYW5nZXModGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgncG9zaXRpb24nKSksXG4gICAgeyBhbGlhczogJ29uTm9kZXNDaGFuZ2UucG9zaXRpb24ubWFueScgfSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNpemUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdzaXplJyksIHtcbiAgICBhbGlhczogJ29uTm9kZXNDaGFuZ2Uuc2l6ZScsXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlU2l6ZVNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3NpemUnKSksIHtcbiAgICBhbGlhczogJ29uTm9kZXNDaGFuZ2Uuc2l6ZS5zaW5nbGUnLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNpemVNYW55ID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5tYW55Q2hhbmdlcyh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdzaXplJykpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnNpemUubWFueScsXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlQWRkID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnYWRkJyksIHtcbiAgICBhbGlhczogJ29uTm9kZXNDaGFuZ2UuYWRkJyxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VBZGRTaW5nbGUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLnNpbmdsZUNoYW5nZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdhZGQnKSksIHtcbiAgICBhbGlhczogJ29uTm9kZXNDaGFuZ2UuYWRkLnNpbmdsZScsXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlQWRkTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubWFueUNoYW5nZXModGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnYWRkJykpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLmFkZC5tYW55JyxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VSZW1vdmUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5yZW1vdmUnLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVJlbW92ZVNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3JlbW92ZScpKSxcbiAgICB7IGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5yZW1vdmUuc2luZ2xlJyB9LFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlUmVtb3ZlTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubWFueUNoYW5nZXModGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgncmVtb3ZlJykpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnJlbW92ZS5tYW55JyxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VTZWxlY3QgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdzZWxlY3QnKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5zZWxlY3QnLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNlbGVjdFNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3NlbGVjdCcpKSxcbiAgICB7IGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5zZWxlY3Quc2luZ2xlJyB9LFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlU2VsZWN0TWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubWFueUNoYW5nZXModGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnc2VsZWN0JykpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnNlbGVjdC5tYW55JyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFdhdGNoIGVkZ2VzIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uRWRnZXNDaGFuZ2UgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLmVkZ2VzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VEZXRhY2hlZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ2RldGFjaGVkJyksIHtcbiAgICBhbGlhczogJ29uRWRnZXNDaGFuZ2UuZGV0YWNoZWQnLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZURldGFjaGVkU2luZ2xlID0gb3V0cHV0RnJvbU9ic2VydmFibGUoXG4gICAgdGhpcy5zaW5nbGVDaGFuZ2UodGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnZGV0YWNoZWQnKSksXG4gICAgeyBhbGlhczogJ29uRWRnZXNDaGFuZ2UuZGV0YWNoZWQuc2luZ2xlJyB9LFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlRGV0YWNoZWRNYW55ID0gb3V0cHV0RnJvbU9ic2VydmFibGUoXG4gICAgdGhpcy5tYW55Q2hhbmdlcyh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdkZXRhY2hlZCcpKSxcbiAgICB7IGFsaWFzOiAnb25FZGdlc0NoYW5nZS5kZXRhY2hlZC5tYW55JyB9LFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VzQ2hhbmdlQWRkID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnYWRkJyksIHtcbiAgICBhbGlhczogJ29uRWRnZXNDaGFuZ2UuYWRkJyxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uRWRnZUNoYW5nZUFkZFNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ2FkZCcpKSwge1xuICAgIGFsaWFzOiAnb25FZGdlc0NoYW5nZS5hZGQuc2luZ2xlJyxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uRWRnZUNoYW5nZUFkZE1hbnkgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm1hbnlDaGFuZ2VzKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ2FkZCcpKSwge1xuICAgIGFsaWFzOiAnb25FZGdlc0NoYW5nZS5hZGQubWFueScsXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VDaGFuZ2VSZW1vdmUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSwge1xuICAgIGFsaWFzOiAnb25FZGdlc0NoYW5nZS5yZW1vdmUnLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25FZGdlQ2hhbmdlUmVtb3ZlU2luZ2xlID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5zaW5nbGVDaGFuZ2UodGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgncmVtb3ZlJykpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLnJlbW92ZS5zaW5nbGUnLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25FZGdlQ2hhbmdlUmVtb3ZlTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubWFueUNoYW5nZXModGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgncmVtb3ZlJykpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLnJlbW92ZS5tYW55JyxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uRWRnZUNoYW5nZVNlbGVjdCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ3NlbGVjdCcpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLnNlbGVjdCcsXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VDaGFuZ2VTZWxlY3RTaW5nbGUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLnNpbmdsZUNoYW5nZSh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdzZWxlY3QnKSksIHtcbiAgICBhbGlhczogJ29uRWRnZXNDaGFuZ2Uuc2VsZWN0LnNpbmdsZScsXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VDaGFuZ2VTZWxlY3RNYW55ID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5tYW55Q2hhbmdlcyh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdzZWxlY3QnKSksIHtcbiAgICBhbGlhczogJ29uRWRnZXNDaGFuZ2Uuc2VsZWN0Lm1hbnknLFxuICB9KTtcblxuICBwcml2YXRlIG5vZGVDaGFuZ2VzT2ZUeXBlPFQgZXh0ZW5kcyBOb2RlQ2hhbmdlWyd0eXBlJ10+KHR5cGU6IFQpIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQucGlwZShcbiAgICAgIG1hcCgoY2hhbmdlcykgPT4gY2hhbmdlcy5maWx0ZXIoKGMpOiBjIGlzIE5vZGVDaGFuZ2VNYXBbVF0gPT4gYy50eXBlID09PSB0eXBlKSksXG4gICAgICBmaWx0ZXIoKGNoYW5nZXMpID0+ICEhY2hhbmdlcy5sZW5ndGgpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGVkZ2VDaGFuZ2VzT2ZUeXBlPFQgZXh0ZW5kcyBFZGdlQ2hhbmdlWyd0eXBlJ10+KHR5cGU6IFQpIHtcbiAgICByZXR1cm4gdGhpcy5lZGdlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQucGlwZShcbiAgICAgIG1hcCgoY2hhbmdlcykgPT4gY2hhbmdlcy5maWx0ZXIoKGMpOiBjIGlzIEVkZ2VDaGFuZ2VNYXBbVF0gPT4gYy50eXBlID09PSB0eXBlKSksXG4gICAgICBmaWx0ZXIoKGNoYW5nZXMpID0+ICEhY2hhbmdlcy5sZW5ndGgpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNpbmdsZUNoYW5nZTxUPihjaGFuZ2VzJDogT2JzZXJ2YWJsZTxUW10+KSB7XG4gICAgcmV0dXJuIGNoYW5nZXMkLnBpcGUoXG4gICAgICBmaWx0ZXIoKGNoYW5nZXMpID0+IGNoYW5nZXMubGVuZ3RoID09PSAxKSxcbiAgICAgIG1hcCgoW2ZpcnN0XSkgPT4gZmlyc3QpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1hbnlDaGFuZ2VzPFQ+KGNoYW5nZXMkOiBPYnNlcnZhYmxlPFRbXT4pIHtcbiAgICByZXR1cm4gY2hhbmdlcyQucGlwZShmaWx0ZXIoKGNoYW5nZXMpID0+IGNoYW5nZXMubGVuZ3RoID4gMSkpO1xuICB9XG59XG5cbi8vIFRPRE86IGRvIG5vdCB3cml0ZSB0aGlzIHR5cGVzIG1hbnVhbGx5XG50eXBlIE5vZGVDaGFuZ2VNYXAgPSB7XG4gIHBvc2l0aW9uOiBOb2RlUG9zaXRpb25DaGFuZ2U7XG4gIHNpemU6IE5vZGVTaXplQ2hhbmdlO1xuICBhZGQ6IE5vZGVBZGRDaGFuZ2U7XG4gIHJlbW92ZTogTm9kZVJlbW92ZUNoYW5nZTtcbiAgc2VsZWN0OiBOb2RlU2VsZWN0ZWRDaGFuZ2U7XG59O1xuXG50eXBlIEVkZ2VDaGFuZ2VNYXAgPSB7XG4gIGRldGFjaGVkOiBFZGdlRGV0YWNoZWRDaGFuZ2U7XG4gIGFkZDogRWRnZUFkZENoYW5nZTtcbiAgcmVtb3ZlOiBFZGdlUmVtb3ZlQ2hhbmdlO1xuICBzZWxlY3Q6IEVkZ2VTZWxlY3RDaGFuZ2U7XG59O1xuIl19
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlcy1jb250cm9sbGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2NoYW5nZXMtY29udHJvbGxlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFjLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFRL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBTWxFLE1BQU0sT0FBTywwQkFBMEI7SUFKdkM7UUFLWSx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRCx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUxRDs7V0FFRztRQUNhLGtCQUFhLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZFLDBCQUFxQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvRixLQUFLLEVBQUUsd0JBQXdCO1NBQ2hDLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2EsZ0NBQTJCLEdBQUcsb0JBQW9CLENBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQ3JELEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLENBQzNDLENBQUM7UUFFRjs7V0FFRztRQUNh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LGlCQUFpQixDQUErQixJQUFPO1FBQzdELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsRUFDL0UsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBSSxRQUF5QjtRQUMvQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQ2xCLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFDekMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQ3hCLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFJLFFBQXlCO1FBQzlDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDOytHQTdNVSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTm9kZUFkZENoYW5nZSxcbiAgTm9kZUNoYW5nZSxcbiAgTm9kZVBvc2l0aW9uQ2hhbmdlLFxuICBOb2RlUmVtb3ZlQ2hhbmdlLFxuICBOb2RlU2VsZWN0ZWRDaGFuZ2UsXG4gIE5vZGVTaXplQ2hhbmdlLFxufSBmcm9tICcuLi90eXBlcy9ub2RlLWNoYW5nZS50eXBlJztcbmltcG9ydCB7IEVkZ2VDaGFuZ2VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VkZ2UtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vZGUtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBFZGdlQWRkQ2hhbmdlLFxuICBFZGdlQ2hhbmdlLFxuICBFZGdlRGV0YWNoZWRDaGFuZ2UsXG4gIEVkZ2VSZW1vdmVDaGFuZ2UsXG4gIEVkZ2VTZWxlY3RDaGFuZ2UsXG59IGZyb20gJy4uL3R5cGVzL2VkZ2UtY2hhbmdlLnR5cGUnO1xuaW1wb3J0IHsgb3V0cHV0RnJvbU9ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjaGFuZ2VzQ29udHJvbGxlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFuZ2VzQ29udHJvbGxlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBub2Rlc0NoYW5nZVNlcnZpY2UgPSBpbmplY3QoTm9kZXNDaGFuZ2VTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGVkZ2VzQ2hhbmdlU2VydmljZSA9IGluamVjdChFZGdlQ2hhbmdlc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBXYXRjaCBub2RlcyBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5ub2Rlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlUG9zaXRpb24gPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdwb3NpdGlvbicpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgb25Ob2Rlc0NoYW5nZS5wb3NpdGlvbmAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VQb3NpdGlvblNpZ25sZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3Bvc2l0aW9uJykpLFxuICAgIHsgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uLnNpbmdsZScgfSxcbiAgKTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVBvc2l0aW9uTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMubWFueUNoYW5nZXModGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgncG9zaXRpb24nKSksXG4gICAgeyBhbGlhczogJ29uTm9kZXNDaGFuZ2UucG9zaXRpb24ubWFueScgfSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNpemUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdzaXplJyksIHtcbiAgICBhbGlhczogJ29uTm9kZXNDaGFuZ2Uuc2l6ZScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uTm9kZXNDaGFuZ2Uuc2l6ZWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VTaXplU2luZ2xlID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5zaW5nbGVDaGFuZ2UodGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnc2l6ZScpKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5zaXplLnNpbmdsZScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uTm9kZXNDaGFuZ2Uuc2l6ZWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VTaXplTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubWFueUNoYW5nZXModGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnc2l6ZScpKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5zaXplLm1hbnknLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZUFkZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ2FkZCcpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLmFkZCcsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uTm9kZXNDaGFuZ2UuYWRkYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZUFkZFNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ2FkZCcpKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5hZGQuc2luZ2xlJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgb25Ob2Rlc0NoYW5nZS5hZGRgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlQWRkTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubWFueUNoYW5nZXModGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnYWRkJykpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLmFkZC5tYW55JyxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VSZW1vdmUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5yZW1vdmUnLFxuICB9KTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbk5vZGVzQ2hhbmdlLnJlbW92ZWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VSZW1vdmVTaW5nbGUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZShcbiAgICB0aGlzLnNpbmdsZUNoYW5nZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSksXG4gICAgeyBhbGlhczogJ29uTm9kZXNDaGFuZ2UucmVtb3ZlLnNpbmdsZScgfSxcbiAgKTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbk5vZGVzQ2hhbmdlLnJlbW92ZWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VSZW1vdmVNYW55ID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5tYW55Q2hhbmdlcyh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSksIHtcbiAgICBhbGlhczogJ29uTm9kZXNDaGFuZ2UucmVtb3ZlLm1hbnknLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNlbGVjdCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3NlbGVjdCcpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnNlbGVjdCcsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uTm9kZXNDaGFuZ2Uuc2VsZWN0YCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNlbGVjdFNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3NlbGVjdCcpKSxcbiAgICB7IGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5zZWxlY3Quc2luZ2xlJyB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uTm9kZXNDaGFuZ2Uuc2VsZWN0YCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNlbGVjdE1hbnkgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm1hbnlDaGFuZ2VzKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3NlbGVjdCcpKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5zZWxlY3QubWFueScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBXYXRjaCBlZGdlcyBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VzQ2hhbmdlID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5lZGdlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlRGV0YWNoZWQgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdkZXRhY2hlZCcpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLmRldGFjaGVkJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgb25FZGdlc0NoYW5nZS5kZXRhY2hlZGAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VEZXRhY2hlZFNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ2RldGFjaGVkJykpLFxuICAgIHsgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLmRldGFjaGVkLnNpbmdsZScgfSxcbiAgKTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbkVkZ2VzQ2hhbmdlLmRldGFjaGVkYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZURldGFjaGVkTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMubWFueUNoYW5nZXModGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnZGV0YWNoZWQnKSksXG4gICAgeyBhbGlhczogJ29uRWRnZXNDaGFuZ2UuZGV0YWNoZWQubWFueScgfSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25FZGdlc0NoYW5nZUFkZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ2FkZCcpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLmFkZCcsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uRWRnZXNDaGFuZ2UuYWRkYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25FZGdlQ2hhbmdlQWRkU2luZ2xlID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5zaW5nbGVDaGFuZ2UodGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnYWRkJykpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLmFkZC5zaW5nbGUnLFxuICB9KTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbkVkZ2VzQ2hhbmdlLmFkZGAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uRWRnZUNoYW5nZUFkZE1hbnkgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm1hbnlDaGFuZ2VzKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ2FkZCcpKSwge1xuICAgIGFsaWFzOiAnb25FZGdlc0NoYW5nZS5hZGQubWFueScsXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VDaGFuZ2VSZW1vdmUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSwge1xuICAgIGFsaWFzOiAnb25FZGdlc0NoYW5nZS5yZW1vdmUnLFxuICB9KTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbkVkZ2VzQ2hhbmdlLnJlbW92ZWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uRWRnZUNoYW5nZVJlbW92ZVNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ3JlbW92ZScpKSwge1xuICAgIGFsaWFzOiAnb25FZGdlc0NoYW5nZS5yZW1vdmUuc2luZ2xlJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgb25FZGdlc0NoYW5nZS5yZW1vdmVgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VDaGFuZ2VSZW1vdmVNYW55ID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5tYW55Q2hhbmdlcyh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSksIHtcbiAgICBhbGlhczogJ29uRWRnZXNDaGFuZ2UucmVtb3ZlLm1hbnknLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25FZGdlQ2hhbmdlU2VsZWN0ID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnc2VsZWN0JyksIHtcbiAgICBhbGlhczogJ29uRWRnZXNDaGFuZ2Uuc2VsZWN0JyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgb25FZGdlc0NoYW5nZS5zZWxlY3RgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VDaGFuZ2VTZWxlY3RTaW5nbGUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLnNpbmdsZUNoYW5nZSh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdzZWxlY3QnKSksIHtcbiAgICBhbGlhczogJ29uRWRnZXNDaGFuZ2Uuc2VsZWN0LnNpbmdsZScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uRWRnZXNDaGFuZ2Uuc2VsZWN0YCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25FZGdlQ2hhbmdlU2VsZWN0TWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubWFueUNoYW5nZXModGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnc2VsZWN0JykpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLnNlbGVjdC5tYW55JyxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBub2RlQ2hhbmdlc09mVHlwZTxUIGV4dGVuZHMgTm9kZUNoYW5nZVsndHlwZSddPih0eXBlOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkLnBpcGUoXG4gICAgICBtYXAoKGNoYW5nZXMpID0+IGNoYW5nZXMuZmlsdGVyKChjKTogYyBpcyBOb2RlQ2hhbmdlTWFwW1RdID0+IGMudHlwZSA9PT0gdHlwZSkpLFxuICAgICAgZmlsdGVyKChjaGFuZ2VzKSA9PiAhIWNoYW5nZXMubGVuZ3RoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlZGdlQ2hhbmdlc09mVHlwZTxUIGV4dGVuZHMgRWRnZUNoYW5nZVsndHlwZSddPih0eXBlOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRnZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkLnBpcGUoXG4gICAgICBtYXAoKGNoYW5nZXMpID0+IGNoYW5nZXMuZmlsdGVyKChjKTogYyBpcyBFZGdlQ2hhbmdlTWFwW1RdID0+IGMudHlwZSA9PT0gdHlwZSkpLFxuICAgICAgZmlsdGVyKChjaGFuZ2VzKSA9PiAhIWNoYW5nZXMubGVuZ3RoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzaW5nbGVDaGFuZ2U8VD4oY2hhbmdlcyQ6IE9ic2VydmFibGU8VFtdPikge1xuICAgIHJldHVybiBjaGFuZ2VzJC5waXBlKFxuICAgICAgZmlsdGVyKChjaGFuZ2VzKSA9PiBjaGFuZ2VzLmxlbmd0aCA9PT0gMSksXG4gICAgICBtYXAoKFtmaXJzdF0pID0+IGZpcnN0KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYW55Q2hhbmdlczxUPihjaGFuZ2VzJDogT2JzZXJ2YWJsZTxUW10+KSB7XG4gICAgcmV0dXJuIGNoYW5nZXMkLnBpcGUoZmlsdGVyKChjaGFuZ2VzKSA9PiBjaGFuZ2VzLmxlbmd0aCA+IDEpKTtcbiAgfVxufVxuXG4vLyBUT0RPOiBkbyBub3Qgd3JpdGUgdGhpcyB0eXBlcyBtYW51YWxseVxudHlwZSBOb2RlQ2hhbmdlTWFwID0ge1xuICBwb3NpdGlvbjogTm9kZVBvc2l0aW9uQ2hhbmdlO1xuICBzaXplOiBOb2RlU2l6ZUNoYW5nZTtcbiAgYWRkOiBOb2RlQWRkQ2hhbmdlO1xuICByZW1vdmU6IE5vZGVSZW1vdmVDaGFuZ2U7XG4gIHNlbGVjdDogTm9kZVNlbGVjdGVkQ2hhbmdlO1xufTtcblxudHlwZSBFZGdlQ2hhbmdlTWFwID0ge1xuICBkZXRhY2hlZDogRWRnZURldGFjaGVkQ2hhbmdlO1xuICBhZGQ6IEVkZ2VBZGRDaGFuZ2U7XG4gIHJlbW92ZTogRWRnZVJlbW92ZUNoYW5nZTtcbiAgc2VsZWN0OiBFZGdlU2VsZWN0Q2hhbmdlO1xufTtcbiJdfQ==
@@ -0,0 +1,33 @@
1
+ import { DestroyRef, Directive, ElementRef, inject, NgZone } from '@angular/core';
2
+ import { NodeAccessorService } from '../services/node-accessor.service';
3
+ import { map, switchMap, tap } from 'rxjs';
4
+ import { resizable } from '../utils/resizable';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
+ import * as i0 from "@angular/core";
7
+ export class NodeHandlesControllerDirective {
8
+ constructor() {
9
+ this.nodeAccessor = inject(NodeAccessorService);
10
+ this.zone = inject(NgZone);
11
+ this.destroyRef = inject(DestroyRef);
12
+ this.hostElementRef = inject(ElementRef);
13
+ }
14
+ ngOnInit() {
15
+ const model = this.nodeAccessor.model();
16
+ model.handles$
17
+ .pipe(switchMap((handles) => resizable([...handles.map((h) => h.hostReference), this.hostElementRef.nativeElement], this.zone).pipe(map(() => handles))), tap((handles) => {
18
+ // TODO (performance) inspect how to avoid calls of this when flow initially rendered
19
+ handles.forEach((h) => h.updateHost());
20
+ }), takeUntilDestroyed(this.destroyRef))
21
+ .subscribe();
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeHandlesControllerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NodeHandlesControllerDirective, isStandalone: true, selector: "[nodeHandlesController]", ngImport: i0 }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeHandlesControllerDirective, decorators: [{
27
+ type: Directive,
28
+ args: [{
29
+ selector: '[nodeHandlesController]',
30
+ standalone: true,
31
+ }]
32
+ }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1oYW5kbGVzLWNvbnRyb2xsZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvbm9kZS1oYW5kbGVzLWNvbnRyb2xsZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBTWhFLE1BQU0sT0FBTyw4QkFBOEI7SUFKM0M7UUFLVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNDLFNBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFHLE1BQU0sQ0FBc0IsVUFBVSxDQUFDLENBQUM7S0FvQmxFO0lBbEJRLFFBQVE7UUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRyxDQUFDO1FBRXpDLEtBQUssQ0FBQyxRQUFRO2FBQ1gsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ3BCLFNBQVMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWMsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDckcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUNuQixDQUNGLEVBQ0QsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDZCxxRkFBcUY7WUFDckYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUNwQzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7K0dBdkJVLDhCQUE4QjttR0FBOUIsOEJBQThCOzs0RkFBOUIsOEJBQThCO2tCQUoxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBOZ1pvbmUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZUFjY2Vzc29yU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vZGUtYWNjZXNzb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyByZXNpemFibGUgfSBmcm9tICcuLi91dGlscy9yZXNpemFibGUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbm9kZUhhbmRsZXNDb250cm9sbGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVIYW5kbGVzQ29udHJvbGxlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgbm9kZUFjY2Vzc29yID0gaW5qZWN0KE5vZGVBY2Nlc3NvclNlcnZpY2UpO1xuICBwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIGhvc3RFbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8RWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMubm9kZUFjY2Vzc29yLm1vZGVsKCkhO1xuXG4gICAgbW9kZWwuaGFuZGxlcyRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGhhbmRsZXMpID0+XG4gICAgICAgICAgcmVzaXphYmxlKFsuLi5oYW5kbGVzLm1hcCgoaCkgPT4gaC5ob3N0UmVmZXJlbmNlISksIHRoaXMuaG9zdEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudF0sIHRoaXMuem9uZSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiBoYW5kbGVzKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICB0YXAoKGhhbmRsZXMpID0+IHtcbiAgICAgICAgICAvLyBUT0RPIChwZXJmb3JtYW5jZSkgaW5zcGVjdCBob3cgdG8gYXZvaWQgY2FsbHMgb2YgdGhpcyB3aGVuIGZsb3cgaW5pdGlhbGx5IHJlbmRlcmVkXG4gICAgICAgICAgaGFuZGxlcy5mb3JFYWNoKChoKSA9PiBoLnVwZGF0ZUhvc3QoKSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,35 @@
1
+ import { DestroyRef, Directive, ElementRef, inject, NgZone } from '@angular/core';
2
+ import { resizable } from '../utils/resizable';
3
+ import { NodeAccessorService } from '../services/node-accessor.service';
4
+ import { filter, startWith, tap } from 'rxjs';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
+ import * as i0 from "@angular/core";
7
+ export class NodeResizeControllerDirective {
8
+ constructor() {
9
+ this.nodeAccessor = inject(NodeAccessorService);
10
+ this.zone = inject(NgZone);
11
+ this.destroyRef = inject(DestroyRef);
12
+ this.hostElementRef = inject(ElementRef);
13
+ }
14
+ ngOnInit() {
15
+ const model = this.nodeAccessor.model();
16
+ resizable([this.hostElementRef.nativeElement], this.zone)
17
+ .pipe(startWith(null), filter(() => !model.resizing()), tap(() => {
18
+ const width = this.hostElementRef.nativeElement.clientWidth;
19
+ const height = this.hostElementRef.nativeElement.clientHeight;
20
+ model.width.set(width);
21
+ model.height.set(height);
22
+ }), takeUntilDestroyed(this.destroyRef))
23
+ .subscribe();
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeResizeControllerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NodeResizeControllerDirective, isStandalone: true, selector: "[nodeResizeController]", ngImport: i0 }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeResizeControllerDirective, decorators: [{
29
+ type: Directive,
30
+ args: [{
31
+ selector: '[nodeResizeController]',
32
+ standalone: true,
33
+ }]
34
+ }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1yZXNpemUtY29udHJvbGxlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9ub2RlLXJlc2l6ZS1jb250cm9sbGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU1oRSxNQUFNLE9BQU8sNkJBQTZCO0lBSjFDO1FBS1UsaUJBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQyxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxNQUFNLENBQXNCLFVBQVUsQ0FBQyxDQUFDO0tBb0JsRTtJQWxCUSxRQUFRO1FBQ2IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUcsQ0FBQztRQUV6QyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDdEQsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDL0IsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUM1RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7WUFFOUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUNwQzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7K0dBdkJVLDZCQUE2QjttR0FBN0IsNkJBQTZCOzs0RkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBOZ1pvbmUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVzaXphYmxlIH0gZnJvbSAnLi4vdXRpbHMvcmVzaXphYmxlJztcbmltcG9ydCB7IE5vZGVBY2Nlc3NvclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ub2RlLWFjY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbm9kZVJlc2l6ZUNvbnRyb2xsZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTm9kZVJlc2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIG5vZGVBY2Nlc3NvciA9IGluamVjdChOb2RlQWNjZXNzb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBob3N0RWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLm5vZGVBY2Nlc3Nvci5tb2RlbCgpITtcblxuICAgIHJlc2l6YWJsZShbdGhpcy5ob3N0RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XSwgdGhpcy56b25lKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgZmlsdGVyKCgpID0+ICFtb2RlbC5yZXNpemluZygpKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuaG9zdEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmhvc3RFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgICAgbW9kZWwud2lkdGguc2V0KHdpZHRoKTtcbiAgICAgICAgICBtb2RlbC5oZWlnaHQuc2V0KGhlaWdodCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
@@ -19,7 +19,7 @@ export class SelectableDirective {
19
19
  }
20
20
  entity() {
21
21
  if (this.parentNode) {
22
- return this.parentNode.nodeModel();
22
+ return this.parentNode.model();
23
23
  }
24
24
  else if (this.parentEdge) {
25
25
  return this.parentEdge.model();
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
42
42
  type: HostListener,
43
43
  args: ['touchstart']
44
44
  }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFNeEUsTUFBTSxPQUFPLG1CQUFtQjtJQUpoQztRQUtVLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLGVBQVUsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQW9CaEU7SUFoQlcsV0FBVztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBdkJVLG1CQUFtQjttR0FBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsY0FBYztpQkFDekI7OEJBU1csV0FBVztzQkFGcEIsWUFBWTt1QkFBQyxXQUFXOztzQkFDeEIsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEVkZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2VkZ2UvZWRnZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBGbG93RW50aXR5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mbG93LWVudGl0eS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbm9kZS9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3NlbGVjdGFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZURpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZmxvd1NldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KFNlbGVjdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHBhcmVudEVkZ2UgPSBpbmplY3QoRWRnZUNvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBwYXJlbnROb2RlID0gaW5qZWN0KE5vZGVDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJylcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcpXG4gIHByb3RlY3RlZCBvbk1vdXNlZG93bigpIHtcbiAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmVudGl0eSgpO1xuICAgIGlmIChlbnRpdHkgJiYgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmVudGl0aWVzU2VsZWN0YWJsZSgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0KGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbnRpdHkoKTogRmxvd0VudGl0eSB8IG51bGwge1xuICAgIGlmICh0aGlzLnBhcmVudE5vZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudE5vZGUubm9kZU1vZGVsKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBhcmVudEVkZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudEVkZ2UubW9kZWwoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFNeEUsTUFBTSxPQUFPLG1CQUFtQjtJQUpoQztRQUtVLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLGVBQVUsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQW9CaEU7SUFoQlcsV0FBVztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBdkJVLG1CQUFtQjttR0FBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsY0FBYztpQkFDekI7OEJBU1csV0FBVztzQkFGcEIsWUFBWTt1QkFBQyxXQUFXOztzQkFDeEIsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEVkZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2VkZ2UvZWRnZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBGbG93RW50aXR5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mbG93LWVudGl0eS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbm9kZS9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3NlbGVjdGFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZURpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZmxvd1NldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KFNlbGVjdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHBhcmVudEVkZ2UgPSBpbmplY3QoRWRnZUNvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBwYXJlbnROb2RlID0gaW5qZWN0KE5vZGVDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJylcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcpXG4gIHByb3RlY3RlZCBvbk1vdXNlZG93bigpIHtcbiAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmVudGl0eSgpO1xuICAgIGlmIChlbnRpdHkgJiYgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmVudGl0aWVzU2VsZWN0YWJsZSgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0KGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbnRpdHkoKTogRmxvd0VudGl0eSB8IG51bGwge1xuICAgIGlmICh0aGlzLnBhcmVudE5vZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudE5vZGUubW9kZWwoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFyZW50RWRnZSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50RWRnZS5tb2RlbCgpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
@@ -14,26 +14,43 @@ export class HandleModel {
14
14
  width: 10 + 2 * this.strokeWidth,
15
15
  height: 10 + 2 * this.strokeWidth,
16
16
  });
17
- this.offset = computed(() => {
17
+ this.pointAbsolute = computed(() => {
18
+ return {
19
+ x: this.parentNode.globalPoint().x + this.hostOffset().x + this.sizeOffset().x,
20
+ y: this.parentNode.globalPoint().y + this.hostOffset().y + this.sizeOffset().y,
21
+ };
22
+ });
23
+ this.state = signal('idle');
24
+ this.updateHostSizeAndPosition$ = new Subject();
25
+ this.hostSize = toSignal(this.updateHostSizeAndPosition$.pipe(map(() => this.getHostSize())), {
26
+ initialValue: { width: 0, height: 0 },
27
+ });
28
+ this.hostPosition = toSignal(this.updateHostSizeAndPosition$.pipe(map(() => ({
29
+ x: this.hostReference instanceof HTMLElement ? this.hostReference.offsetLeft : 0, // for now just 0 for group nodes
30
+ y: this.hostReference instanceof HTMLElement ? this.hostReference.offsetTop : 0, // for now just 0 for group nodes
31
+ }))), {
32
+ initialValue: { x: 0, y: 0 },
33
+ });
34
+ this.hostOffset = computed(() => {
18
35
  switch (this.rawHandle.position) {
19
36
  case 'left':
20
37
  return {
21
38
  x: 0,
22
- y: this.parentPosition().y + this.parentSize().height / 2,
39
+ y: this.hostPosition().y + this.hostSize().height / 2,
23
40
  };
24
41
  case 'right':
25
42
  return {
26
43
  x: this.parentNode.size().width,
27
- y: this.parentPosition().y + this.parentSize().height / 2,
44
+ y: this.hostPosition().y + this.hostSize().height / 2,
28
45
  };
29
46
  case 'top':
30
47
  return {
31
- x: this.parentPosition().x + this.parentSize().width / 2,
48
+ x: this.hostPosition().x + this.hostSize().width / 2,
32
49
  y: 0,
33
50
  };
34
51
  case 'bottom':
35
52
  return {
36
- x: this.parentPosition().x + this.parentSize().width / 2,
53
+ x: this.hostPosition().x + this.hostSize().width / 2,
37
54
  y: this.parentNode.size().height,
38
55
  };
39
56
  }
@@ -50,47 +67,30 @@ export class HandleModel {
50
67
  return { x: 0, y: this.size().height / 2 };
51
68
  }
52
69
  });
53
- this.pointAbsolute = computed(() => {
54
- return {
55
- x: this.parentNode.globalPoint().x + this.offset().x + this.sizeOffset().x,
56
- y: this.parentNode.globalPoint().y + this.offset().y + this.sizeOffset().y,
57
- };
58
- });
59
- this.state = signal('idle');
60
- this.updateParentSizeAndPosition$ = new Subject();
61
- this.parentSize = toSignal(this.updateParentSizeAndPosition$.pipe(map(() => this.getParentSize())), {
62
- initialValue: { width: 0, height: 0 },
63
- });
64
- this.parentPosition = toSignal(this.updateParentSizeAndPosition$.pipe(map(() => ({
65
- x: this.parentReference instanceof HTMLElement ? this.parentReference.offsetLeft : 0, // for now just 0 for group nodes
66
- y: this.parentReference instanceof HTMLElement ? this.parentReference.offsetTop : 0, // for now just 0 for group nodes
67
- }))), {
68
- initialValue: { x: 0, y: 0 },
69
- });
70
- this.parentReference = this.rawHandle.parentReference;
70
+ this.hostReference = this.rawHandle.hostReference;
71
71
  this.template = this.rawHandle.template;
72
72
  this.templateContext = {
73
73
  $implicit: {
74
- point: this.offset,
74
+ point: this.hostOffset,
75
75
  state: this.state,
76
76
  node: this.parentNode.node,
77
77
  },
78
78
  };
79
79
  }
80
- updateParent() {
81
- this.updateParentSizeAndPosition$.next();
80
+ updateHost() {
81
+ this.updateHostSizeAndPosition$.next();
82
82
  }
83
- getParentSize() {
84
- if (this.parentReference instanceof HTMLElement) {
83
+ getHostSize() {
84
+ if (this.hostReference instanceof HTMLElement) {
85
85
  return {
86
- width: this.parentReference.offsetWidth,
87
- height: this.parentReference.offsetHeight,
86
+ width: this.hostReference.offsetWidth,
87
+ height: this.hostReference.offsetHeight,
88
88
  };
89
89
  }
90
- else if (this.parentReference instanceof SVGGraphicsElement) {
91
- return this.parentReference.getBBox();
90
+ else if (this.hostReference instanceof SVGGraphicsElement) {
91
+ return this.hostReference.getBBox();
92
92
  }
93
93
  return { width: 0, height: 0 };
94
94
  }
95
95
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L21vZGVscy9oYW5kbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXRELE1BQU0sT0FBTyxXQUFXO0lBeUZ0QixZQUNTLFNBQXFCLEVBQ3JCLFVBQXFCO1FBRHJCLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQTFGZCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQzs7O1dBR0c7UUFDSSxTQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ2hDLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1NBQ2xDLENBQUMsQ0FBQztRQUVJLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxNQUFNO29CQUNULE9BQU87d0JBQ0wsQ0FBQyxFQUFFLENBQUM7d0JBQ0osQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDO3FCQUMxRCxDQUFDO2dCQUNKLEtBQUssT0FBTztvQkFDVixPQUFPO3dCQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUks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RUQsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVIYW5kbGUgfSBmcm9tICcuLi9zZXJ2aWNlcy9oYW5kbGUuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgU3ViamVjdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IHR5cGUgSGFuZGxlU3RhdGUgPSAndmFsaWQnIHwgJ2ludmFsaWQnIHwgJ2lkbGUnO1xuXG5leHBvcnQgY2xhc3MgSGFuZGxlTW9kZWwge1xuICBwdWJsaWMgcmVhZG9ubHkgc3Ryb2tlV2lkdGggPSAyO1xuXG4gIC8qKlxuICAgKiBQcmUtY29tcHV0ZWQgc2l6ZSBmb3IgZGVmYXVsdCBoYW5kbGUsIGNoYW5nZWQgZHluYW1pY2FsbHlcbiAgICogZm9yIGN1c3RvbSBoYW5kbGVzXG4gICAqL1xuICBwdWJsaWMgc2l6ZSA9IHNpZ25hbCh7XG4gICAgd2lkdGg6IDEwICsgMiAqIHRoaXMuc3Ryb2tlV2lkdGgsXG4gICAgaGVpZ2h0OiAxMCArIDIgKiB0aGlzLnN0cm9rZVdpZHRoLFxuICB9KTtcblxuICBwdWJsaWMgb2Zmc2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy5yYXdIYW5kbGUucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogdGhpcy5wYXJlbnRQb3NpdGlvbigpLnkgKyB0aGlzLnBhcmVudFNpemUoKS5oZWlnaHQgLyAyLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IHRoaXMucGFyZW50Tm9kZS5zaXplKCkud2lkdGgsXG4gICAgICAgICAgeTogdGhpcy5wYXJlbnRQb3NpdGlvbigpLnkgKyB0aGlzLnBhcmVudFNpemUoKS5oZWlnaHQgLyAyLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB0aGlzLnBhcmVudFBvc2l0aW9uKCkueCArIHRoaXMucGFyZW50U2l6ZSgpLndpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB0aGlzLnBhcmVudFBvc2l0aW9uKCkueCArIHRoaXMucGFyZW50U2l6ZSgpLndpZHRoIC8gMixcbiAgICAgICAgICB5OiB0aGlzLnBhcmVudE5vZGUuc2l6ZSgpLmhlaWdodCxcbiAgICAgICAgfTtcbiAgICB9XG4gIH0pO1xuXG4gIHB1YmxpYyBzaXplT2Zmc2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy5yYXdIYW5kbGUucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4geyB4OiAtKHRoaXMuc2l6ZSgpLndpZHRoIC8gMiksIHk6IDAgfTtcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHsgeDogdGhpcy5zaXplKCkud2lkdGggLyAyLCB5OiAwIH07XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICByZXR1cm4geyB4OiAwLCB5OiAtKHRoaXMuc2l6ZSgpLmhlaWdodCAvIDIpIH07XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICByZXR1cm4geyB4OiAwLCB5OiB0aGlzLnNpemUoKS5oZWlnaHQgLyAyIH07XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgcG9pbnRBYnNvbHV0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy5wYXJlbnROb2RlLmdsb2JhbFBvaW50KCkueCArIHRoaXMub2Zmc2V0KCkueCArIHRoaXMuc2l6ZU9mZnNldCgpLngsXG4gICAgICB5OiB0aGlzLnBhcmVudE5vZGUuZ2xvYmFsUG9pbnQoKS55ICsgdGhpcy5vZmZzZXQoKS55ICsgdGhpcy5zaXplT2Zmc2V0KCkueSxcbiAgICB9O1xuICB9KTtcblxuICBwdWJsaWMgc3RhdGUgPSBzaWduYWw8SGFuZGxlU3RhdGU+KCdpZGxlJyk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgcGFyZW50U2l6ZSA9IHRvU2lnbmFsKHRoaXMudXBkYXRlUGFyZW50U2l6ZUFuZFBvc2l0aW9uJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldFBhcmVudFNpemUoKSkpLCB7XG4gICAgaW5pdGlhbFZhbHVlOiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSxcbiAgfSk7XG5cbiAgcHVibGljIHBhcmVudFBvc2l0aW9uID0gdG9TaWduYWwoXG4gICAgdGhpcy51cGRhdGVQYXJlbnRTaXplQW5kUG9zaXRpb24kLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gKHtcbiAgICAgICAgeDogdGhpcy5wYXJlbnRSZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IHRoaXMucGFyZW50UmVmZXJlbmNlLm9mZnNldExlZnQgOiAwLCAvLyBmb3Igbm93IGp1c3QgMCBmb3IgZ3JvdXAgbm9kZXNcbiAgICAgICAgeTogdGhpcy5wYXJlbnRSZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IHRoaXMucGFyZW50UmVmZXJlbmNlLm9mZnNldFRvcCA6IDAsIC8vIGZvciBub3cganVzdCAwIGZvciBncm91cCBub2Rlc1xuICAgICAgfSkpLFxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiB7IHg6IDAsIHk6IDAgfSxcbiAgICB9LFxuICApO1xuXG4gIHB1YmxpYyBwYXJlbnRSZWZlcmVuY2UgPSB0aGlzLnJhd0hhbmRsZS5wYXJlbnRSZWZlcmVuY2UhO1xuXG4gIHB1YmxpYyB0ZW1wbGF0ZSA9IHRoaXMucmF3SGFuZGxlLnRlbXBsYXRlO1xuXG4gIHB1YmxpYyB0ZW1wbGF0ZUNvbnRleHQgPSB7XG4gICAgJGltcGxpY2l0OiB7XG4gICAgICBwb2ludDogdGhpcy5vZmZzZXQsXG4gICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgIG5vZGU6IHRoaXMucGFyZW50Tm9kZS5ub2RlLFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJhd0hhbmRsZTogTm9kZUhhbmRsZSxcbiAgICBwdWJsaWMgcGFyZW50Tm9kZTogTm9kZU1vZGVsLFxuICApIHt9XG5cbiAgcHVibGljIHVwZGF0ZVBhcmVudCgpIHtcbiAgICB0aGlzLnVwZGF0ZVBhcmVudFNpemVBbmRQb3NpdGlvbiQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJlbnRTaXplKCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgaWYgKHRoaXMucGFyZW50UmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiB0aGlzLnBhcmVudFJlZmVyZW5jZS5vZmZzZXRXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLnBhcmVudFJlZmVyZW5jZS5vZmZzZXRIZWlnaHQsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy5wYXJlbnRSZWZlcmVuY2UgaW5zdGFuY2VvZiBTVkdHcmFwaGljc0VsZW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudFJlZmVyZW5jZS5nZXRCQm94KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xuICB9XG59XG4iXX0=
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L21vZGVscy9oYW5kbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXRELE1BQU0sT0FBTyxXQUFXO0lBeUZ0QixZQUNTLFNBQXFCLEVBQ3JCLFVBQXFCO1FBRHJCLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQTFGZCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQzs7O1dBR0c7UUFDSSxTQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ2hDLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1NBQ2xDLENBQUMsQ0FBQztRQUVJLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxPQUFPO2dCQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQzthQUMvRSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSSxVQUFLLEdBQUcsTUFBTSxDQUFjLE1BQU0sQ0FBQyxDQUFDO1FBRW5DLCtCQUEwQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFakQsYUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQy9GLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtTQUN0QyxDQUFDLENBQUM7UUFFSyxpQkFBWSxHQUFHLFFBQVEsQ0FDN0IsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDVCxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsWUFBWSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUNBQWlDO1lBQ25ILENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxpQ0FBaUM7U0FDbkgsQ0FBQyxDQUFDLENBQ0osRUFDRDtZQUNFLFlBQVksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtTQUM3QixDQUNGLENBQUM7UUFFSyxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNoQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssTUFBTTtvQkFDVCxPQUFPO3dCQUNMLENBQUMsRUFBRSxDQUFDO3dCQUNKLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztxQkFDdEQsQ0FBQztnQkFDSixLQUFLLE9BQU87b0JBQ1YsT0FBTzt3QkFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO3dCQUMvQixDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUM7cUJBQ3RELENBQUM7Z0JBQ0osS0FBSyxLQUFLO29CQUNSLE9BQU87d0JBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDO3dCQUNwRCxDQUFDLEVBQUUsQ0FBQztxQkFDTCxDQUFDO2dCQUNKLEtBQUssUUFBUTtvQkFDWCxPQUFPO3dCQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQzt3QkFDcEQsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTTtxQkFDakMsQ0FBQztZQUNOLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVLLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2pDLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxNQUFNO29CQUNULE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxLQUFLLE9BQU87b0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLEtBQUssS0FBSztvQkFDUixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsS0FBSyxRQUFRO29CQUNYLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVJLGtCQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFjLENBQUM7UUFFOUMsYUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBRW5DLG9CQUFlLEdBQUc7WUFDdkIsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDdEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJO2FBQzNCO1NBQ0YsQ0FBQztJQUtDLENBQUM7SUFFRyxVQUFVO1FBQ2YsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksSUFBSSxDQUFDLGFBQWEsWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUM5QyxPQUFPO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVc7Z0JBQ3JDLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVk7YUFDeEMsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLFlBQVksa0JBQWtCLEVBQUUsQ0FBQztZQUM1RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlSGFuZGxlIH0gZnJvbSAnLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi9ub2RlLm1vZGVsJztcbmltcG9ydCB7IFN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCB0eXBlIEhhbmRsZVN0YXRlID0gJ3ZhbGlkJyB8ICdpbnZhbGlkJyB8ICdpZGxlJztcblxuZXhwb3J0IGNsYXNzIEhhbmRsZU1vZGVsIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0cm9rZVdpZHRoID0gMjtcblxuICAvKipcbiAgICogUHJlLWNvbXB1dGVkIHNpemUgZm9yIGRlZmF1bHQgaGFuZGxlLCBjaGFuZ2VkIGR5bmFtaWNhbGx5XG4gICAqIGZvciBjdXN0b20gaGFuZGxlc1xuICAgKi9cbiAgcHVibGljIHNpemUgPSBzaWduYWwoe1xuICAgIHdpZHRoOiAxMCArIDIgKiB0aGlzLnN0cm9rZVdpZHRoLFxuICAgIGhlaWdodDogMTAgKyAyICogdGhpcy5zdHJva2VXaWR0aCxcbiAgfSk7XG5cbiAgcHVibGljIHBvaW50QWJzb2x1dGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHRoaXMucGFyZW50Tm9kZS5nbG9iYWxQb2ludCgpLnggKyB0aGlzLmhvc3RPZmZzZXQoKS54ICsgdGhpcy5zaXplT2Zmc2V0KCkueCxcbiAgICAgIHk6IHRoaXMucGFyZW50Tm9kZS5nbG9iYWxQb2ludCgpLnkgKyB0aGlzLmhvc3RPZmZzZXQoKS55ICsgdGhpcy5zaXplT2Zmc2V0KCkueSxcbiAgICB9O1xuICB9KTtcblxuICBwdWJsaWMgc3RhdGUgPSBzaWduYWw8SGFuZGxlU3RhdGU+KCdpZGxlJyk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVIb3N0U2l6ZUFuZFBvc2l0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBob3N0U2l6ZSA9IHRvU2lnbmFsKHRoaXMudXBkYXRlSG9zdFNpemVBbmRQb3NpdGlvbiQucGlwZShtYXAoKCkgPT4gdGhpcy5nZXRIb3N0U2l6ZSgpKSksIHtcbiAgICBpbml0aWFsVmFsdWU6IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9LFxuICB9KTtcblxuICBwcml2YXRlIGhvc3RQb3NpdGlvbiA9IHRvU2lnbmFsKFxuICAgIHRoaXMudXBkYXRlSG9zdFNpemVBbmRQb3NpdGlvbiQucGlwZShcbiAgICAgIG1hcCgoKSA9PiAoe1xuICAgICAgICB4OiB0aGlzLmhvc3RSZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IHRoaXMuaG9zdFJlZmVyZW5jZS5vZmZzZXRMZWZ0IDogMCwgLy8gZm9yIG5vdyBqdXN0IDAgZm9yIGdyb3VwIG5vZGVzXG4gICAgICAgIHk6IHRoaXMuaG9zdFJlZmVyZW5jZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gdGhpcy5ob3N0UmVmZXJlbmNlLm9mZnNldFRvcCA6IDAsIC8vIGZvciBub3cganVzdCAwIGZvciBncm91cCBub2Rlc1xuICAgICAgfSkpLFxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiB7IHg6IDAsIHk6IDAgfSxcbiAgICB9LFxuICApO1xuXG4gIHB1YmxpYyBob3N0T2Zmc2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy5yYXdIYW5kbGUucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogdGhpcy5ob3N0UG9zaXRpb24oKS55ICsgdGhpcy5ob3N0U2l6ZSgpLmhlaWdodCAvIDIsXG4gICAgICAgIH07XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogdGhpcy5wYXJlbnROb2RlLnNpemUoKS53aWR0aCxcbiAgICAgICAgICB5OiB0aGlzLmhvc3RQb3NpdGlvbigpLnkgKyB0aGlzLmhvc3RTaXplKCkuaGVpZ2h0IC8gMixcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogdGhpcy5ob3N0UG9zaXRpb24oKS54ICsgdGhpcy5ob3N0U2l6ZSgpLndpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB0aGlzLmhvc3RQb3NpdGlvbigpLnggKyB0aGlzLmhvc3RTaXplKCkud2lkdGggLyAyLFxuICAgICAgICAgIHk6IHRoaXMucGFyZW50Tm9kZS5zaXplKCkuaGVpZ2h0LFxuICAgICAgICB9O1xuICAgIH1cbiAgfSk7XG5cbiAgcHJpdmF0ZSBzaXplT2Zmc2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy5yYXdIYW5kbGUucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4geyB4OiAtKHRoaXMuc2l6ZSgpLndpZHRoIC8gMiksIHk6IDAgfTtcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHsgeDogdGhpcy5zaXplKCkud2lkdGggLyAyLCB5OiAwIH07XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICByZXR1cm4geyB4OiAwLCB5OiAtKHRoaXMuc2l6ZSgpLmhlaWdodCAvIDIpIH07XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICByZXR1cm4geyB4OiAwLCB5OiB0aGlzLnNpemUoKS5oZWlnaHQgLyAyIH07XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgaG9zdFJlZmVyZW5jZSA9IHRoaXMucmF3SGFuZGxlLmhvc3RSZWZlcmVuY2UhO1xuXG4gIHB1YmxpYyB0ZW1wbGF0ZSA9IHRoaXMucmF3SGFuZGxlLnRlbXBsYXRlO1xuXG4gIHB1YmxpYyB0ZW1wbGF0ZUNvbnRleHQgPSB7XG4gICAgJGltcGxpY2l0OiB7XG4gICAgICBwb2ludDogdGhpcy5ob3N0T2Zmc2V0LFxuICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICBub2RlOiB0aGlzLnBhcmVudE5vZGUubm9kZSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByYXdIYW5kbGU6IE5vZGVIYW5kbGUsXG4gICAgcHVibGljIHBhcmVudE5vZGU6IE5vZGVNb2RlbCxcbiAgKSB7fVxuXG4gIHB1YmxpYyB1cGRhdGVIb3N0KCkge1xuICAgIHRoaXMudXBkYXRlSG9zdFNpemVBbmRQb3NpdGlvbiQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIb3N0U2l6ZSgpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICAgIGlmICh0aGlzLmhvc3RSZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHRoaXMuaG9zdFJlZmVyZW5jZS5vZmZzZXRXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmhvc3RSZWZlcmVuY2Uub2Zmc2V0SGVpZ2h0LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaG9zdFJlZmVyZW5jZSBpbnN0YW5jZW9mIFNWR0dyYXBoaWNzRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuaG9zdFJlZmVyZW5jZS5nZXRCQm94KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xuICB9XG59XG4iXX0=