ngx-vflow 1.0.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/esm2022/lib/vflow/components/node/node.component.mjs +24 -54
  2. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +5 -11
  3. package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +55 -1
  4. package/esm2022/lib/vflow/directives/connection-controller.directive.mjs +37 -47
  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/flow-status.service.mjs +1 -15
  14. package/esm2022/lib/vflow/services/handle.service.mjs +1 -1
  15. package/esm2022/lib/vflow/testing-utils/component-mocks/handle-mock.component.mjs +22 -0
  16. package/esm2022/lib/vflow/testing-utils/component-mocks/minimap-mock.component.mjs +22 -0
  17. package/esm2022/lib/vflow/testing-utils/component-mocks/node-toolbar-mock.component.mjs +19 -0
  18. package/esm2022/lib/vflow/testing-utils/component-mocks/resizable-mock.component.mjs +21 -0
  19. package/esm2022/lib/vflow/testing-utils/component-mocks/vflow-mock.component.mjs +251 -0
  20. package/esm2022/lib/vflow/testing-utils/directive-mocks/connection-controller-mock.directive.mjs +15 -0
  21. package/esm2022/lib/vflow/testing-utils/directive-mocks/drag-handle-mock.directive.mjs +11 -0
  22. package/esm2022/lib/vflow/testing-utils/directive-mocks/selectable-mock.directive.mjs +14 -0
  23. package/esm2022/lib/vflow/testing-utils/directive-mocks/template-mock.directive.mjs +87 -0
  24. package/esm2022/lib/vflow/testing-utils/provide-custom-node-mocks.mjs +9 -8
  25. package/esm2022/lib/vflow/testing-utils/vflow-mocks.mjs +26 -0
  26. package/esm2022/lib/vflow/vflow.mjs +3 -1
  27. package/esm2022/public-api.mjs +11 -1
  28. package/fesm2022/ngx-vflow.mjs +857 -378
  29. package/fesm2022/ngx-vflow.mjs.map +1 -1
  30. package/lib/vflow/components/node/node.component.d.ts +6 -12
  31. package/lib/vflow/components/vflow/vflow.component.d.ts +4 -5
  32. package/lib/vflow/directives/changes-controller.directive.d.ts +54 -0
  33. package/lib/vflow/directives/connection-controller.directive.d.ts +4 -5
  34. package/lib/vflow/directives/node-handles-controller.directive.d.ts +11 -0
  35. package/lib/vflow/directives/node-resize-controller.directive.d.ts +11 -0
  36. package/lib/vflow/models/handle.model.d.ts +8 -23
  37. package/lib/vflow/models/node.model.d.ts +17 -13
  38. package/lib/vflow/services/flow-status.service.d.ts +0 -6
  39. package/lib/vflow/services/handle.service.d.ts +1 -1
  40. package/lib/vflow/testing-utils/component-mocks/handle-mock.component.d.ts +11 -0
  41. package/lib/vflow/testing-utils/component-mocks/minimap-mock.component.d.ts +10 -0
  42. package/lib/vflow/testing-utils/component-mocks/node-toolbar-mock.component.d.ts +7 -0
  43. package/lib/vflow/testing-utils/component-mocks/resizable-mock.component.d.ts +8 -0
  44. package/lib/vflow/testing-utils/component-mocks/vflow-mock.component.d.ts +48 -0
  45. package/lib/vflow/testing-utils/directive-mocks/connection-controller-mock.directive.d.ts +7 -0
  46. package/lib/vflow/testing-utils/directive-mocks/drag-handle-mock.directive.d.ts +5 -0
  47. package/lib/vflow/testing-utils/directive-mocks/selectable-mock.directive.d.ts +5 -0
  48. package/lib/vflow/testing-utils/directive-mocks/template-mock.directive.d.ts +32 -0
  49. package/lib/vflow/testing-utils/vflow-mocks.d.ts +10 -0
  50. package/lib/vflow/vflow.d.ts +2 -1
  51. package/package.json +1 -1
  52. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlcy1jb250cm9sbGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2NoYW5nZXMtY29udHJvbGxlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFjLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFRL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBTWxFLE1BQU0sT0FBTywwQkFBMEI7SUFKdkM7UUFLWSx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRCx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUxRDs7V0FFRztRQUNhLGtCQUFhLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZFLDBCQUFxQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvRixLQUFLLEVBQUUsd0JBQXdCO1NBQ2hDLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2EsZ0NBQTJCLEdBQUcsb0JBQW9CLENBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQ3JELEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLENBQzNDLENBQUM7UUFFRjs7V0FFRztRQUNhLDhCQUF5QixHQUFHLG9CQUFvQixDQUM5RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUNwRCxFQUFFLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxDQUN6QyxDQUFDO1FBRWMsc0JBQWlCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZGLEtBQUssRUFBRSxvQkFBb0I7U0FDNUIsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSw0QkFBdUIsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO1lBQ2hILEtBQUssRUFBRSwyQkFBMkI7U0FDbkMsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSwwQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO1lBQzdHLEtBQUssRUFBRSx5QkFBeUI7U0FDakMsQ0FBQyxDQUFDO1FBRWEscUJBQWdCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JGLEtBQUssRUFBRSxtQkFBbUI7U0FDM0IsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSwyQkFBc0IsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzlHLEtBQUssRUFBRSwwQkFBMEI7U0FDbEMsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSx5QkFBb0IsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzNHLEtBQUssRUFBRSx3QkFBd0I7U0FDaEMsQ0FBQyxDQUFDO1FBRWEsd0JBQW1CLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzNGLEtBQUssRUFBRSxzQkFBc0I7U0FDOUIsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSw4QkFBeUIsR0FBRyxvQkFBb0IsQ0FDOUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDbkQsRUFBRSxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsQ0FDekMsQ0FBQztRQUVGOztXQUVHO1FBQ2EsNEJBQXVCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRTtZQUNqSCxLQUFLLEVBQUUsMkJBQTJCO1NBQ25DLENBQUMsQ0FBQztRQUVhLHdCQUFtQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzRixLQUFLLEVBQUUsc0JBQXNCO1NBQzlCLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2EsOEJBQXlCLEdBQUcsb0JBQW9CLENBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ25ELEVBQUUsS0FBSyxFQUFFLDZCQUE2QixFQUFFLENBQ3pDLENBQUM7UUFFRjs7V0FFRztRQUNhLDRCQUF1QixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7WUFDakgsS0FBSyxFQUFFLDJCQUEyQjtTQUNuQyxDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNhLGtCQUFhLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZFLDBCQUFxQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvRixLQUFLLEVBQUUsd0JBQXdCO1NBQ2hDLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2EsZ0NBQTJCLEdBQUcsb0JBQW9CLENBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQ3JELEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLENBQzNDLENBQUM7UUFFRjs7V0FFRztRQUNhLDhCQUF5QixHQUFHLG9CQUFvQixDQUM5RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUNwRCxFQUFFLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxDQUN6QyxDQUFDO1FBRWMscUJBQWdCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JGLEtBQUssRUFBRSxtQkFBbUI7U0FDM0IsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSwwQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzdHLEtBQUssRUFBRSwwQkFBMEI7U0FDbEMsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSx3QkFBbUIsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzFHLEtBQUssRUFBRSx3QkFBd0I7U0FDaEMsQ0FBQyxDQUFDO1FBRWEsdUJBQWtCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFGLEtBQUssRUFBRSxzQkFBc0I7U0FDOUIsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSw2QkFBd0IsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFO1lBQ25ILEtBQUssRUFBRSw2QkFBNkI7U0FDckMsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSwyQkFBc0IsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFO1lBQ2hILEtBQUssRUFBRSwyQkFBMkI7U0FDbkMsQ0FBQyxDQUFDO1FBRWEsdUJBQWtCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFGLEtBQUssRUFBRSxzQkFBc0I7U0FDOUIsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSw2QkFBd0IsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFO1lBQ25ILEtBQUssRUFBRSw2QkFBNkI7U0FDckMsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSwyQkFBc0IsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFO1lBQ2hILEtBQUssRUFBRSwyQkFBMkI7U0FDbkMsQ0FBQyxDQUFDO0tBMEJKO0lBeEJTLGlCQUFpQixDQUErQixJQUFPO1FBQzdELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsRUFDL0UsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVPLGlCQUFpQixDQUErQixJQUFPO1FBQzdELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsRUFDL0UsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBSSxRQUF5QjtRQUMvQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQ2xCLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFDekMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQ3hCLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFJLFFBQXlCO1FBQzlDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDOytHQTdNVSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTm9kZUFkZENoYW5nZSxcbiAgTm9kZUNoYW5nZSxcbiAgTm9kZVBvc2l0aW9uQ2hhbmdlLFxuICBOb2RlUmVtb3ZlQ2hhbmdlLFxuICBOb2RlU2VsZWN0ZWRDaGFuZ2UsXG4gIE5vZGVTaXplQ2hhbmdlLFxufSBmcm9tICcuLi90eXBlcy9ub2RlLWNoYW5nZS50eXBlJztcbmltcG9ydCB7IEVkZ2VDaGFuZ2VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VkZ2UtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vZGUtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBFZGdlQWRkQ2hhbmdlLFxuICBFZGdlQ2hhbmdlLFxuICBFZGdlRGV0YWNoZWRDaGFuZ2UsXG4gIEVkZ2VSZW1vdmVDaGFuZ2UsXG4gIEVkZ2VTZWxlY3RDaGFuZ2UsXG59IGZyb20gJy4uL3R5cGVzL2VkZ2UtY2hhbmdlLnR5cGUnO1xuaW1wb3J0IHsgb3V0cHV0RnJvbU9ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjaGFuZ2VzQ29udHJvbGxlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFuZ2VzQ29udHJvbGxlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBub2Rlc0NoYW5nZVNlcnZpY2UgPSBpbmplY3QoTm9kZXNDaGFuZ2VTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGVkZ2VzQ2hhbmdlU2VydmljZSA9IGluamVjdChFZGdlQ2hhbmdlc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBXYXRjaCBub2RlcyBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5ub2Rlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlUG9zaXRpb24gPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdwb3NpdGlvbicpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgb25Ob2Rlc0NoYW5nZS5wb3NpdGlvbmAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VQb3NpdGlvblNpZ25sZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3Bvc2l0aW9uJykpLFxuICAgIHsgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uLnNpbmdsZScgfSxcbiAgKTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVBvc2l0aW9uTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMubWFueUNoYW5nZXModGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgncG9zaXRpb24nKSksXG4gICAgeyBhbGlhczogJ29uTm9kZXNDaGFuZ2UucG9zaXRpb24ubWFueScgfSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNpemUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdzaXplJyksIHtcbiAgICBhbGlhczogJ29uTm9kZXNDaGFuZ2Uuc2l6ZScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uTm9kZXNDaGFuZ2Uuc2l6ZWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VTaXplU2luZ2xlID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5zaW5nbGVDaGFuZ2UodGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnc2l6ZScpKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5zaXplLnNpbmdsZScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uTm9kZXNDaGFuZ2Uuc2l6ZWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VTaXplTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubWFueUNoYW5nZXModGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnc2l6ZScpKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5zaXplLm1hbnknLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZUFkZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ2FkZCcpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLmFkZCcsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uTm9kZXNDaGFuZ2UuYWRkYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZUFkZFNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ2FkZCcpKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5hZGQuc2luZ2xlJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgb25Ob2Rlc0NoYW5nZS5hZGRgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlQWRkTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubWFueUNoYW5nZXModGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnYWRkJykpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLmFkZC5tYW55JyxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VSZW1vdmUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5yZW1vdmUnLFxuICB9KTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbk5vZGVzQ2hhbmdlLnJlbW92ZWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VSZW1vdmVTaW5nbGUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZShcbiAgICB0aGlzLnNpbmdsZUNoYW5nZSh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSksXG4gICAgeyBhbGlhczogJ29uTm9kZXNDaGFuZ2UucmVtb3ZlLnNpbmdsZScgfSxcbiAgKTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbk5vZGVzQ2hhbmdlLnJlbW92ZWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VSZW1vdmVNYW55ID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5tYW55Q2hhbmdlcyh0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSksIHtcbiAgICBhbGlhczogJ29uTm9kZXNDaGFuZ2UucmVtb3ZlLm1hbnknLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNlbGVjdCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3NlbGVjdCcpLCB7XG4gICAgYWxpYXM6ICdvbk5vZGVzQ2hhbmdlLnNlbGVjdCcsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uTm9kZXNDaGFuZ2Uuc2VsZWN0YCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNlbGVjdFNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3NlbGVjdCcpKSxcbiAgICB7IGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5zZWxlY3Quc2luZ2xlJyB9LFxuICApO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uTm9kZXNDaGFuZ2Uuc2VsZWN0YCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZVNlbGVjdE1hbnkgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm1hbnlDaGFuZ2VzKHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3NlbGVjdCcpKSwge1xuICAgIGFsaWFzOiAnb25Ob2Rlc0NoYW5nZS5zZWxlY3QubWFueScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBXYXRjaCBlZGdlcyBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VzQ2hhbmdlID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5lZGdlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbk5vZGVzQ2hhbmdlRGV0YWNoZWQgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdkZXRhY2hlZCcpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLmRldGFjaGVkJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgb25FZGdlc0NoYW5nZS5kZXRhY2hlZGAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uTm9kZXNDaGFuZ2VEZXRhY2hlZFNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ2RldGFjaGVkJykpLFxuICAgIHsgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLmRldGFjaGVkLnNpbmdsZScgfSxcbiAgKTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbkVkZ2VzQ2hhbmdlLmRldGFjaGVkYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Ob2Rlc0NoYW5nZURldGFjaGVkTWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRoaXMubWFueUNoYW5nZXModGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnZGV0YWNoZWQnKSksXG4gICAgeyBhbGlhczogJ29uRWRnZXNDaGFuZ2UuZGV0YWNoZWQubWFueScgfSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25FZGdlc0NoYW5nZUFkZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ2FkZCcpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLmFkZCcsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uRWRnZXNDaGFuZ2UuYWRkYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25FZGdlQ2hhbmdlQWRkU2luZ2xlID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5zaW5nbGVDaGFuZ2UodGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnYWRkJykpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLmFkZC5zaW5nbGUnLFxuICB9KTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbkVkZ2VzQ2hhbmdlLmFkZGAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uRWRnZUNoYW5nZUFkZE1hbnkgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLm1hbnlDaGFuZ2VzKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ2FkZCcpKSwge1xuICAgIGFsaWFzOiAnb25FZGdlc0NoYW5nZS5hZGQubWFueScsXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VDaGFuZ2VSZW1vdmUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSwge1xuICAgIGFsaWFzOiAnb25FZGdlc0NoYW5nZS5yZW1vdmUnLFxuICB9KTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBvbkVkZ2VzQ2hhbmdlLnJlbW92ZWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uRWRnZUNoYW5nZVJlbW92ZVNpbmdsZSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMuc2luZ2xlQ2hhbmdlKHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ3JlbW92ZScpKSwge1xuICAgIGFsaWFzOiAnb25FZGdlc0NoYW5nZS5yZW1vdmUuc2luZ2xlJyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgb25FZGdlc0NoYW5nZS5yZW1vdmVgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VDaGFuZ2VSZW1vdmVNYW55ID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5tYW55Q2hhbmdlcyh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKSksIHtcbiAgICBhbGlhczogJ29uRWRnZXNDaGFuZ2UucmVtb3ZlLm1hbnknLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25FZGdlQ2hhbmdlU2VsZWN0ID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnc2VsZWN0JyksIHtcbiAgICBhbGlhczogJ29uRWRnZXNDaGFuZ2Uuc2VsZWN0JyxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgb25FZGdlc0NoYW5nZS5zZWxlY3RgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbkVkZ2VDaGFuZ2VTZWxlY3RTaW5nbGUgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLnNpbmdsZUNoYW5nZSh0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdzZWxlY3QnKSksIHtcbiAgICBhbGlhczogJ29uRWRnZXNDaGFuZ2Uuc2VsZWN0LnNpbmdsZScsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG9uRWRnZXNDaGFuZ2Uuc2VsZWN0YCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25FZGdlQ2hhbmdlU2VsZWN0TWFueSA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMubWFueUNoYW5nZXModGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnc2VsZWN0JykpLCB7XG4gICAgYWxpYXM6ICdvbkVkZ2VzQ2hhbmdlLnNlbGVjdC5tYW55JyxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBub2RlQ2hhbmdlc09mVHlwZTxUIGV4dGVuZHMgTm9kZUNoYW5nZVsndHlwZSddPih0eXBlOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkLnBpcGUoXG4gICAgICBtYXAoKGNoYW5nZXMpID0+IGNoYW5nZXMuZmlsdGVyKChjKTogYyBpcyBOb2RlQ2hhbmdlTWFwW1RdID0+IGMudHlwZSA9PT0gdHlwZSkpLFxuICAgICAgZmlsdGVyKChjaGFuZ2VzKSA9PiAhIWNoYW5nZXMubGVuZ3RoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlZGdlQ2hhbmdlc09mVHlwZTxUIGV4dGVuZHMgRWRnZUNoYW5nZVsndHlwZSddPih0eXBlOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRnZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkLnBpcGUoXG4gICAgICBtYXAoKGNoYW5nZXMpID0+IGNoYW5nZXMuZmlsdGVyKChjKTogYyBpcyBFZGdlQ2hhbmdlTWFwW1RdID0+IGMudHlwZSA9PT0gdHlwZSkpLFxuICAgICAgZmlsdGVyKChjaGFuZ2VzKSA9PiAhIWNoYW5nZXMubGVuZ3RoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzaW5nbGVDaGFuZ2U8VD4oY2hhbmdlcyQ6IE9ic2VydmFibGU8VFtdPikge1xuICAgIHJldHVybiBjaGFuZ2VzJC5waXBlKFxuICAgICAgZmlsdGVyKChjaGFuZ2VzKSA9PiBjaGFuZ2VzLmxlbmd0aCA9PT0gMSksXG4gICAgICBtYXAoKFtmaXJzdF0pID0+IGZpcnN0KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYW55Q2hhbmdlczxUPihjaGFuZ2VzJDogT2JzZXJ2YWJsZTxUW10+KSB7XG4gICAgcmV0dXJuIGNoYW5nZXMkLnBpcGUoZmlsdGVyKChjaGFuZ2VzKSA9PiBjaGFuZ2VzLmxlbmd0aCA+IDEpKTtcbiAgfVxufVxuXG4vLyBUT0RPOiBkbyBub3Qgd3JpdGUgdGhpcyB0eXBlcyBtYW51YWxseVxudHlwZSBOb2RlQ2hhbmdlTWFwID0ge1xuICBwb3NpdGlvbjogTm9kZVBvc2l0aW9uQ2hhbmdlO1xuICBzaXplOiBOb2RlU2l6ZUNoYW5nZTtcbiAgYWRkOiBOb2RlQWRkQ2hhbmdlO1xuICByZW1vdmU6IE5vZGVSZW1vdmVDaGFuZ2U7XG4gIHNlbGVjdDogTm9kZVNlbGVjdGVkQ2hhbmdlO1xufTtcblxudHlwZSBFZGdlQ2hhbmdlTWFwID0ge1xuICBkZXRhY2hlZDogRWRnZURldGFjaGVkQ2hhbmdlO1xuICBhZGQ6IEVkZ2VBZGRDaGFuZ2U7XG4gIHJlbW92ZTogRWRnZVJlbW92ZUNoYW5nZTtcbiAgc2VsZWN0OiBFZGdlU2VsZWN0Q2hhbmdlO1xufTtcbiJdfQ==
@@ -1,10 +1,14 @@
1
- import { Directive, computed, effect, inject, output } from '@angular/core';
2
- import { FlowStatusService, batchStatusChanges } from '../services/flow-status.service';
1
+ import { Directive, computed, inject } from '@angular/core';
2
+ import { FlowStatusService } from '../services/flow-status.service';
3
3
  import { FlowEntitiesService } from '../services/flow-entities.service';
4
4
  import { adjustDirection } from '../utils/adjust-direction';
5
+ import { outputFromObservable, toObservable } from '@angular/core/rxjs-interop';
6
+ import { filter, map, tap } from 'rxjs';
5
7
  import * as i0 from "@angular/core";
6
8
  export class ConnectionControllerDirective {
7
9
  constructor() {
10
+ this.statusService = inject(FlowStatusService);
11
+ this.flowEntitiesService = inject(FlowEntitiesService);
8
12
  /**
9
13
  * This event fires when user tries to create new Edge.
10
14
  *
@@ -16,44 +20,34 @@ export class ConnectionControllerDirective {
16
20
  * @todo add connect event and deprecate onConnect
17
21
  */
18
22
  // eslint-disable-next-line @angular-eslint/no-output-on-prefix
19
- this.onConnect = output();
20
- this.statusService = inject(FlowStatusService);
21
- this.flowEntitiesService = inject(FlowEntitiesService);
22
- this.connectEffect = effect(() => {
23
- const status = this.statusService.status();
24
- if (status.state === 'connection-end') {
25
- let source = status.payload.source;
26
- let target = status.payload.target;
27
- let sourceHandle = status.payload.sourceHandle;
28
- let targetHandle = status.payload.targetHandle;
29
- if (this.isStrictMode()) {
30
- const adjusted = adjustDirection({
31
- source: status.payload.source,
32
- sourceHandle: status.payload.sourceHandle,
33
- target: status.payload.target,
34
- targetHandle: status.payload.targetHandle,
35
- });
36
- source = adjusted.source;
37
- target = adjusted.target;
38
- sourceHandle = adjusted.sourceHandle;
39
- targetHandle = adjusted.targetHandle;
40
- }
41
- const sourceId = source.node.id;
42
- const targetId = target.node.id;
43
- const sourceHandleId = sourceHandle.rawHandle.id;
44
- const targetHandleId = targetHandle.rawHandle.id;
45
- const connectionModel = this.flowEntitiesService.connection();
46
- const connection = {
47
- source: sourceId,
48
- target: targetId,
49
- sourceHandle: sourceHandleId,
50
- targetHandle: targetHandleId,
51
- };
52
- if (connectionModel.validator(connection)) {
53
- this.onConnect.emit(connection);
54
- }
23
+ this.onConnect = outputFromObservable(toObservable(this.statusService.status).pipe(filter((status) => status.state === 'connection-end'), map((status) => {
24
+ let source = status.payload.source;
25
+ let target = status.payload.target;
26
+ let sourceHandle = status.payload.sourceHandle;
27
+ let targetHandle = status.payload.targetHandle;
28
+ if (this.isStrictMode()) {
29
+ const adjusted = adjustDirection({
30
+ source: status.payload.source,
31
+ sourceHandle: status.payload.sourceHandle,
32
+ target: status.payload.target,
33
+ targetHandle: status.payload.targetHandle,
34
+ });
35
+ source = adjusted.source;
36
+ target = adjusted.target;
37
+ sourceHandle = adjusted.sourceHandle;
38
+ targetHandle = adjusted.targetHandle;
55
39
  }
56
- }, { allowSignalWrites: true });
40
+ const sourceId = source.node.id;
41
+ const targetId = target.node.id;
42
+ const sourceHandleId = sourceHandle.rawHandle.id;
43
+ const targetHandleId = targetHandle.rawHandle.id;
44
+ return {
45
+ source: sourceId,
46
+ target: targetId,
47
+ sourceHandle: sourceHandleId,
48
+ targetHandle: targetHandleId,
49
+ };
50
+ }), tap(() => this.statusService.setIdleStatus()), filter((connection) => this.flowEntitiesService.connection().validator(connection))));
57
51
  this.isStrictMode = computed(() => this.flowEntitiesService.connection().mode === 'strict');
58
52
  }
59
53
  startConnection(handle) {
@@ -108,21 +102,17 @@ export class ConnectionControllerDirective {
108
102
  const sourceHandle = status.payload.sourceHandle;
109
103
  const target = status.payload.target;
110
104
  const targetHandle = status.payload.targetHandle;
111
- batchStatusChanges(
112
- // call to create connection
113
- () => this.statusService.setConnectionEndStatus(source, target, sourceHandle, targetHandle),
114
- // when connection created, we need go back to idle status
115
- () => this.statusService.setIdleStatus());
105
+ this.statusService.setConnectionEndStatus(source, target, sourceHandle, targetHandle);
116
106
  }
117
107
  }
118
108
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConnectionControllerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
119
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ConnectionControllerDirective, isStandalone: true, selector: "[connectionController]", outputs: { onConnect: "onConnect" }, ngImport: i0 }); }
109
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ConnectionControllerDirective, isStandalone: true, selector: "[onConnect]", outputs: { onConnect: "onConnect" }, ngImport: i0 }); }
120
110
  }
121
111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConnectionControllerDirective, decorators: [{
122
112
  type: Directive,
123
113
  args: [{
124
- selector: '[connectionController]',
114
+ selector: '[onConnect]',
125
115
  standalone: true,
126
116
  }]
127
117
  }] });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi1jb250cm9sbGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2Nvbm5lY3Rpb24tY29udHJvbGxlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFeEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQU01RCxNQUFNLE9BQU8sNkJBQTZCO0lBSjFDO1FBS0U7Ozs7Ozs7OztXQVNHO1FBQ0gsK0RBQStEO1FBQy9DLGNBQVMsR0FBRyxNQUFNLEVBQWMsQ0FBQztRQUV6QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWhELGtCQUFhLEdBQUcsTUFBTSxDQUM5QixHQUFHLEVBQUU7WUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRTNDLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDbkMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ25DLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENB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dUJBQXVCLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEcsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFM0MsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLHVCQUF1QixFQUFFLENBQUM7WUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDckMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDckMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFFakQsa0JBQWtCO1lBQ2hCLDRCQUE0QjtZQUM1QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLE1BQU8sRUFBRSxNQUFPLEVBQUUsWUFBYSxFQUFFLFlBQWEsQ0FBQztZQUMvRiwwREFBMEQ7WUFDMUQsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FDekMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOytHQTlJVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFKekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25uZWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGbG93U3RhdHVzU2VydmljZSwgYmF0Y2hTdGF0dXNDaGFuZ2VzIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1zdGF0dXMuc2VydmljZSc7XG5cbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IGFkanVzdERpcmVjdGlvbiB9IGZyb20gJy4uL3V0aWxzL2FkanVzdC1kaXJlY3Rpb24nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY29ubmVjdGlvbkNvbnRyb2xsZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvbkNvbnRyb2xsZXJEaXJlY3RpdmUge1xuICAvKipcbiAgICogVGhpcyBldmVudCBmaXJlcyB3aGVuIHVzZXIgdHJpZXMgdG8gY3JlYXRlIG5ldyBFZGdlLlxuICAgKlxuICAgKiBgQ29ubmVjdGlvbmAgaXMgYW4gZW50aXR5IHRoYXQgY29udGFpbnMgZGF0YSBhYm91dCBzb3VyY2UgYW5kIHRhcmdldCBub2Rlcy5cbiAgICpcbiAgICogQWxzbyBpdCdzIGltcG9ydGFudCB0byBub3RlLCB0aGF0IHRoaXMgZXZlbnQgb25seSBmaXJlcyB3aGVuIGNvbm5lY3Rpb24gaXMgdmFsaWQgYnkgdmFsaWRhdG9yIGZ1bmN0aW9uIGluIGBDb25uZWN0aW9uU2V0dGluZ3NgLFxuICAgKiBieSBkZWZhdWx0IHdpdGhvdXQgcGFzc2luZyB0aGUgdmFsaWRhdG9yIGV2ZXJ5IGNvbm5lY3Rpb24gY29uY2lkZXJlZCB2YWxpZC5cbiAgICpcbiAgICogQHRvZG8gYWRkIGNvbm5lY3QgZXZlbnQgYW5kIGRlcHJlY2F0ZSBvbkNvbm5lY3RcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICBwdWJsaWMgcmVhZG9ubHkgb25Db25uZWN0ID0gb3V0cHV0PENvbm5lY3Rpb24+KCk7XG5cbiAgcHJpdmF0ZSBzdGF0dXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dTdGF0dXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmbG93RW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBjb25uZWN0RWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuc3RhdHVzU2VydmljZS5zdGF0dXMoKTtcblxuICAgICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tZW5kJykge1xuICAgICAgICBsZXQgc291cmNlID0gc3RhdHVzLnBheWxvYWQuc291cmNlO1xuICAgICAgICBsZXQgdGFyZ2V0ID0gc3RhdHVzLnBheWxvYWQudGFyZ2V0O1xuICAgICAgICBsZXQgc291cmNlSGFuZGxlID0gc3RhdHVzLnBheWxvYWQuc291cmNlSGFuZGxlO1xuICAgICAgICBsZXQgdGFyZ2V0SGFuZGxlID0gc3RhdHVzLnBheWxvYWQudGFyZ2V0SGFuZGxlO1xuXG4gICAgICAgIGlmICh0aGlzLmlzU3RyaWN0TW9kZSgpKSB7XG4gICAgICAgICAgY29uc3QgYWRqdXN0ZWQgPSBhZGp1c3REaXJlY3Rpb24oe1xuICAgICAgICAgICAgc291cmNlOiBzdGF0dXMucGF5bG9hZC5zb3VyY2UsXG4gICAgICAgICAgICBzb3VyY2VIYW5kbGU6IHN0YXR1cy5wYXlsb2FkLnNvdXJjZUhhbmRsZSxcbiAgICAgICAgICAgIHRhcmdldDogc3RhdHVzLnBheWxvYWQudGFyZ2V0LFxuICAgICAgICAgICAgdGFyZ2V0SGFuZGxlOiBzdGF0dXMucGF5bG9hZC50YXJnZXRIYW5kbGUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBzb3VyY2UgPSBhZGp1c3RlZC5zb3VyY2U7XG4gICAgICAgICAgdGFyZ2V0ID0gYWRqdXN0ZWQudGFyZ2V0O1xuICAgICAgICAgIHNvdXJjZUhhbmRsZSA9IGFkanVzdGVkLnNvdXJjZUhhbmRsZTtcbiAgICAgICAgICB0YXJnZXRIYW5kbGUgPSBhZGp1c3RlZC50YXJnZXRIYW5kbGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzb3VyY2VJZCA9IHNvdXJjZS5ub2RlLmlkO1xuICAgICAgICBjb25zdCB0YXJnZXRJZCA9IHRhcmdldC5ub2RlLmlkO1xuXG4gICAgICAgIGNvbnN0IHNvdXJjZUhhbmRsZUlkID0gc291cmNlSGFuZGxlLnJhd0hhbmRsZS5pZDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SGFuZGxlSWQgPSB0YXJnZXRIYW5kbGUucmF3SGFuZGxlLmlkO1xuXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25Nb2RlbCA9IHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5jb25uZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2VJZCxcbiAgICAgICAgICB0YXJnZXQ6IHRhcmdldElkLFxuICAgICAgICAgIHNvdXJjZUhhbmRsZTogc291cmNlSGFuZGxlSWQsXG4gICAgICAgICAgdGFyZ2V0SGFuZGxlOiB0YXJnZXRIYW5kbGVJZCxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoY29ubmVjdGlvbk1vZGVsLnZhbGlkYXRvcihjb25uZWN0aW9uKSkge1xuICAgICAgICAgIHRoaXMub25Db25uZWN0LmVtaXQoY29ubmVjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgaXNTdHJpY3RNb2RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmNvbm5lY3Rpb24oKS5tb2RlID09PSAnc3RyaWN0Jyk7XG5cbiAgcHVibGljIHN0YXJ0Q29ubmVjdGlvbihoYW5kbGU6IEhhbmRsZU1vZGVsKSB7XG4gICAgdGhpcy5zdGF0dXNTZXJ2aWNlLnNldENvbm5lY3Rpb25TdGFydFN0YXR1cyhoYW5kbGUucGFyZW50Tm9kZSwgaGFuZGxlKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZUNvbm5lY3Rpb24oaGFuZGxlOiBIYW5kbGVNb2RlbCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuc3RhdHVzU2VydmljZS5zdGF0dXMoKTtcblxuICAgIGlmIChzdGF0dXMuc3RhdGUgPT09ICdjb25uZWN0aW9uLXN0YXJ0Jykge1xuICAgICAgbGV0IHNvdXJjZSA9IHN0YXR1cy5wYXlsb2FkLnNvdXJjZTtcbiAgICAgIGxldCB0YXJnZXQgPSBoYW5kbGUucGFyZW50Tm9kZTtcbiAgICAgIGxldCBzb3VyY2VIYW5kbGUgPSBzdGF0dXMucGF5bG9hZC5zb3VyY2VIYW5kbGU7XG4gICAgICBsZXQgdGFyZ2V0SGFuZGxlID0gaGFuZGxlO1xuXG4gICAgICBpZiAodGhpcy5pc1N0cmljdE1vZGUoKSkge1xuICAgICAgICAvLyBzd2FwIGRpcmVjdGlvbiAoaWYgbmVlZGVkKSBhY2NvcmRpbmcgdG8gYWN0dWFsIHNvdXJjZSBhbmQgdGFyZ2V0IG9mIHN0cmljdCBtb2RlXG4gICAgICAgIGNvbnN0IGFkanVzdGVkID0gYWRqdXN0RGlyZWN0aW9uKHtcbiAgICAgICAgICBzb3VyY2U6IHN0YXR1cy5wYXlsb2FkLnNvdXJjZSxcbiAgICAgICAgICBzb3VyY2VIYW5kbGU6IHN0YXR1cy5wYXlsb2FkLnNvdXJjZUhhbmRsZSxcbiAgICAgICAgICB0YXJnZXQ6IGhhbmRsZS5wYXJlbnROb2RlLFxuICAgICAgICAgIHRhcmdldEhhbmRsZTogaGFuZGxlLFxuICAgICAgICB9KTtcblxuICAgICAgICBzb3VyY2UgPSBhZGp1c3RlZC5zb3VyY2U7XG4gICAgICAgIHRhcmdldCA9IGFkanVzdGVkLnRhcmdldDtcbiAgICAgICAgc291cmNlSGFuZGxlID0gYWRqdXN0ZWQuc291cmNlSGFuZGxlO1xuICAgICAgICB0YXJnZXRIYW5kbGUgPSBhZGp1c3RlZC50YXJnZXRIYW5kbGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbGlkID0gdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmNvbm5lY3Rpb24oKS52YWxpZGF0b3Ioe1xuICAgICAgICBzb3VyY2U6IHNvdXJjZS5ub2RlLmlkLFxuICAgICAgICB0YXJnZXQ6IHRhcmdldC5ub2RlLmlkLFxuICAgICAgICBzb3VyY2VIYW5kbGU6IHNvdXJjZUhhbmRsZS5yYXdIYW5kbGUuaWQsXG4gICAgICAgIHRhcmdldEhhbmRsZTogdGFyZ2V0SGFuZGxlLnJhd0hhbmRsZS5pZCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUT0RPOiBjaGVjayBob3cgcmVhY3QgZmxvdyBoYW5kbGVzIGhpZ2hsaWdodCBvZiBoYW5kbGVcbiAgICAgIC8vIGlmIGRpcmVjdGlvbiBjaGFuZ2VzXG4gICAgICBoYW5kbGUuc3RhdGUuc2V0KHZhbGlkID8gJ3ZhbGlkJyA6ICdpbnZhbGlkJyk7XG5cbiAgICAgIC8vIHN0YXR1cyBpcyBhYm91dCBob3cgd2UgZHJhdyBjb25uZWN0aW9uLCBzbyB3ZSBkb24ndCBuZWVkXG4gICAgICAvLyBzd2FwcGVkIGRpcmV0aW9uIGhlcmVcbiAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5zZXRDb25uZWN0aW9uVmFsaWRhdGlvblN0YXR1cyhcbiAgICAgICAgdmFsaWQsXG4gICAgICAgIHN0YXR1cy5wYXlsb2FkLnNvdXJjZSxcbiAgICAgICAgaGFuZGxlLnBhcmVudE5vZGUsXG4gICAgICAgIHN0YXR1cy5wYXlsb2FkLnNvdXJjZUhhbmRsZSxcbiAgICAgICAgaGFuZGxlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXRWYWxpZGF0ZUNvbm5lY3Rpb24odGFyZ2V0SGFuZGxlOiBIYW5kbGVNb2RlbCkge1xuICAgIHRhcmdldEhhbmRsZS5zdGF0ZS5zZXQoJ2lkbGUnKTtcblxuICAgIC8vIGRyb3AgYmFjayB0byBzdGFydCBzdGF0dXNcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnN0YXR1c1NlcnZpY2Uuc3RhdHVzKCk7XG4gICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tdmFsaWRhdGlvbicpIHtcbiAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5zZXRDb25uZWN0aW9uU3RhcnRTdGF0dXMoc3RhdHVzLnBheWxvYWQuc291cmNlLCBzdGF0dXMucGF5bG9hZC5zb3VyY2VIYW5kbGUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbmRDb25uZWN0aW9uKCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuc3RhdHVzU2VydmljZS5zdGF0dXMoKTtcblxuICAgIGlmIChzdGF0dXMuc3RhdGUgPT09ICdjb25uZWN0aW9uLXZhbGlkYXRpb24nKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBzdGF0dXMucGF5bG9hZC5zb3VyY2U7XG4gICAgICBjb25zdCBzb3VyY2VIYW5kbGUgPSBzdGF0dXMucGF5bG9hZC5zb3VyY2VIYW5kbGU7XG4gICAgICBjb25zdCB0YXJnZXQgPSBzdGF0dXMucGF5bG9hZC50YXJnZXQ7XG4gICAgICBjb25zdCB0YXJnZXRIYW5kbGUgPSBzdGF0dXMucGF5bG9hZC50YXJnZXRIYW5kbGU7XG5cbiAgICAgIGJhdGNoU3RhdHVzQ2hhbmdlcyhcbiAgICAgICAgLy8gY2FsbCB0byBjcmVhdGUgY29ubmVjdGlvblxuICAgICAgICAoKSA9PiB0aGlzLnN0YXR1c1NlcnZpY2Uuc2V0Q29ubmVjdGlvbkVuZFN0YXR1cyhzb3VyY2UhLCB0YXJnZXQhLCBzb3VyY2VIYW5kbGUhLCB0YXJnZXRIYW5kbGUhKSxcbiAgICAgICAgLy8gd2hlbiBjb25uZWN0aW9uIGNyZWF0ZWQsIHdlIG5lZWQgZ28gYmFjayB0byBpZGxlIHN0YXR1c1xuICAgICAgICAoKSA9PiB0aGlzLnN0YXR1c1NlcnZpY2Uuc2V0SWRsZVN0YXR1cygpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi1jb250cm9sbGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2Nvbm5lY3Rpb24tY29udHJvbGxlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBMkIsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNeEMsTUFBTSxPQUFPLDZCQUE2QjtJQUoxQztRQUtVLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFMUQ7Ozs7Ozs7OztXQVNHO1FBQ0gsK0RBQStEO1FBQy9DLGNBQVMsR0FBRyxvQkFBb0IsQ0FDOUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMxQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQXFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLEVBQ3hGLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2IsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxN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QUFFLENBQUM7UUFDM0MsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLHVCQUF1QixFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xHLENBQUM7SUFDSCxDQUFDO0lBRU0sYUFBYTtRQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRTNDLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyx1QkFBdUIsRUFBRSxDQUFDO1lBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3JDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ2pELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3JDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBRWpELElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEYsQ0FBQztJQUNILENBQUM7K0dBbElVLDZCQUE2QjttR0FBN0IsNkJBQTZCOzs0RkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Nvbm5lY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsb3dTdGF0dXNDb25uZWN0aW9uRW5kLCBGbG93U3RhdHVzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zsb3ctc3RhdHVzLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IEhhbmRsZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2hhbmRsZS5tb2RlbCc7XG5pbXBvcnQgeyBhZGp1c3REaXJlY3Rpb24gfSBmcm9tICcuLi91dGlscy9hZGp1c3QtZGlyZWN0aW9uJztcbmltcG9ydCB7IG91dHB1dEZyb21PYnNlcnZhYmxlLCB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tvbkNvbm5lY3RdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvbkNvbnRyb2xsZXJEaXJlY3RpdmUge1xuICBwcml2YXRlIHN0YXR1c1NlcnZpY2UgPSBpbmplY3QoRmxvd1N0YXR1c1NlcnZpY2UpO1xuICBwcml2YXRlIGZsb3dFbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZmlyZXMgd2hlbiB1c2VyIHRyaWVzIHRvIGNyZWF0ZSBuZXcgRWRnZS5cbiAgICpcbiAgICogYENvbm5lY3Rpb25gIGlzIGFuIGVudGl0eSB0aGF0IGNvbnRhaW5zIGRhdGEgYWJvdXQgc291cmNlIGFuZCB0YXJnZXQgbm9kZXMuXG4gICAqXG4gICAqIEFsc28gaXQncyBpbXBvcnRhbnQgdG8gbm90ZSwgdGhhdCB0aGlzIGV2ZW50IG9ubHkgZmlyZXMgd2hlbiBjb25uZWN0aW9uIGlzIHZhbGlkIGJ5IHZhbGlkYXRvciBmdW5jdGlvbiBpbiBgQ29ubmVjdGlvblNldHRpbmdzYCxcbiAgICogYnkgZGVmYXVsdCB3aXRob3V0IHBhc3NpbmcgdGhlIHZhbGlkYXRvciBldmVyeSBjb25uZWN0aW9uIGNvbmNpZGVyZWQgdmFsaWQuXG4gICAqXG4gICAqIEB0b2RvIGFkZCBjb25uZWN0IGV2ZW50IGFuZCBkZXByZWNhdGUgb25Db25uZWN0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgcHVibGljIHJlYWRvbmx5IG9uQ29ubmVjdCA9IG91dHB1dEZyb21PYnNlcnZhYmxlPENvbm5lY3Rpb24+KFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLnN0YXR1c1NlcnZpY2Uuc3RhdHVzKS5waXBlKFxuICAgICAgZmlsdGVyKChzdGF0dXMpOiBzdGF0dXMgaXMgRmxvd1N0YXR1c0Nvbm5lY3Rpb25FbmQgPT4gc3RhdHVzLnN0YXRlID09PSAnY29ubmVjdGlvbi1lbmQnKSxcbiAgICAgIG1hcCgoc3RhdHVzKSA9PiB7XG4gICAgICAgIGxldCBzb3VyY2UgPSBzdGF0dXMucGF5bG9hZC5zb3VyY2U7XG4gICAgICAgIGxldCB0YXJnZXQgPSBzdGF0dXMucGF5bG9hZC50YXJnZXQ7XG4gICAgICAgIGxldCBzb3VyY2VIYW5kbGUgPSBzdGF0dXMucGF5bG9hZC5zb3VyY2VIYW5kbGU7XG4gICAgICAgIGxldCB0YXJnZXRIYW5kbGUgPSBzdGF0dXMucGF5bG9hZC50YXJnZXRIYW5kbGU7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTdHJpY3RNb2RlKCkpIHtcbiAgICAgICAgICBjb25zdCBhZGp1c3RlZCA9IGFkanVzdERpcmVjdGlvbih7XG4gICAgICAgICAgICBzb3VyY2U6IHN0YXR1cy5wYXlsb2FkLnNvdXJjZSxcbiAgICAgICAgICAgIHNvdXJjZUhhbmRsZTogc3RhdHVzLnBheWxvYWQuc291cmNlSGFuZGxlLFxuICAgICAgICAgICAgdGFyZ2V0OiBzdGF0dXMucGF5bG9hZC50YXJnZXQsXG4gICAgICAgICAgICB0YXJnZXRIYW5kbGU6IHN0YXR1cy5wYXlsb2FkLnRhcmdldEhhbmRsZSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHNvdXJjZSA9IGFkanVzdGVkLnNvdXJjZTtcbiAgICAgICAgICB0YXJnZXQgPSBhZGp1c3RlZC50YXJnZXQ7XG4gICAgICAgICAgc291cmNlSGFuZGxlID0gYWRqdXN0ZWQuc291cmNlSGFuZGxlO1xuICAgICAgICAgIHRhcmdldEhhbmRsZSA9IGFkanVzdGVkLnRhcmdldEhhbmRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNvdXJjZUlkID0gc291cmNlLm5vZGUuaWQ7XG4gICAgICAgIGNvbnN0IHRhcmdldElkID0gdGFyZ2V0Lm5vZGUuaWQ7XG5cbiAgICAgICAgY29uc3Qgc291cmNlSGFuZGxlSWQgPSBzb3VyY2VIYW5kbGUucmF3SGFuZGxlLmlkO1xuICAgICAgICBjb25zdCB0YXJnZXRIYW5kbGVJZCA9IHRhcmdldEhhbmRsZS5yYXdIYW5kbGUuaWQ7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZUlkLFxuICAgICAgICAgIHRhcmdldDogdGFyZ2V0SWQsXG4gICAgICAgICAgc291cmNlSGFuZGxlOiBzb3VyY2VIYW5kbGVJZCxcbiAgICAgICAgICB0YXJnZXRIYW5kbGU6IHRhcmdldEhhbmRsZUlkLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zdGF0dXNTZXJ2aWNlLnNldElkbGVTdGF0dXMoKSksXG4gICAgICBmaWx0ZXIoKGNvbm5lY3Rpb24pID0+IHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5jb25uZWN0aW9uKCkudmFsaWRhdG9yKGNvbm5lY3Rpb24pKSxcbiAgICApLFxuICApO1xuXG4gIHByb3RlY3RlZCBpc1N0cmljdE1vZGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuY29ubmVjdGlvbigpLm1vZGUgPT09ICdzdHJpY3QnKTtcblxuICBwdWJsaWMgc3RhcnRDb25uZWN0aW9uKGhhbmRsZTogSGFuZGxlTW9kZWwpIHtcbiAgICB0aGlzLnN0YXR1c1NlcnZpY2Uuc2V0Q29ubmVjdGlvblN0YXJ0U3RhdHVzKGhhbmRsZS5wYXJlbnROb2RlLCBoYW5kbGUpO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlQ29ubmVjdGlvbihoYW5kbGU6IEhhbmRsZU1vZGVsKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5zdGF0dXNTZXJ2aWNlLnN0YXR1cygpO1xuXG4gICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tc3RhcnQnKSB7XG4gICAgICBsZXQgc291cmNlID0gc3RhdHVzLnBheWxvYWQuc291cmNlO1xuICAgICAgbGV0IHRhcmdldCA9IGhhbmRsZS5wYXJlbnROb2RlO1xuICAgICAgbGV0IHNvdXJjZUhhbmRsZSA9IHN0YXR1cy5wYXlsb2FkLnNvdXJjZUhhbmRsZTtcbiAgICAgIGxldCB0YXJnZXRIYW5kbGUgPSBoYW5kbGU7XG5cbiAgICAgIGlmICh0aGlzLmlzU3RyaWN0TW9kZSgpKSB7XG4gICAgICAgIC8vIHN3YXAgZGlyZWN0aW9uIChpZiBuZWVkZWQpIGFjY29yZGluZyB0byBhY3R1YWwgc291cmNlIGFuZCB0YXJnZXQgb2Ygc3RyaWN0IG1vZGVcbiAgICAgICAgY29uc3QgYWRqdXN0ZWQgPSBhZGp1c3REaXJlY3Rpb24oe1xuICAgICAgICAgIHNvdXJjZTogc3RhdHVzLnBheWxvYWQuc291cmNlLFxuICAgICAgICAgIHNvdXJjZUhhbmRsZTogc3RhdHVzLnBheWxvYWQuc291cmNlSGFuZGxlLFxuICAgICAgICAgIHRhcmdldDogaGFuZGxlLnBhcmVudE5vZGUsXG4gICAgICAgICAgdGFyZ2V0SGFuZGxlOiBoYW5kbGUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNvdXJjZSA9IGFkanVzdGVkLnNvdXJjZTtcbiAgICAgICAgdGFyZ2V0ID0gYWRqdXN0ZWQudGFyZ2V0O1xuICAgICAgICBzb3VyY2VIYW5kbGUgPSBhZGp1c3RlZC5zb3VyY2VIYW5kbGU7XG4gICAgICAgIHRhcmdldEhhbmRsZSA9IGFkanVzdGVkLnRhcmdldEhhbmRsZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsaWQgPSB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuY29ubmVjdGlvbigpLnZhbGlkYXRvcih7XG4gICAgICAgIHNvdXJjZTogc291cmNlLm5vZGUuaWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Lm5vZGUuaWQsXG4gICAgICAgIHNvdXJjZUhhbmRsZTogc291cmNlSGFuZGxlLnJhd0hhbmRsZS5pZCxcbiAgICAgICAgdGFyZ2V0SGFuZGxlOiB0YXJnZXRIYW5kbGUucmF3SGFuZGxlLmlkLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRPRE86IGNoZWNrIGhvdyByZWFjdCBmbG93IGhhbmRsZXMgaGlnaGxpZ2h0IG9mIGhhbmRsZVxuICAgICAgLy8gaWYgZGlyZWN0aW9uIGNoYW5nZXNcbiAgICAgIGhhbmRsZS5zdGF0ZS5zZXQodmFsaWQgPyAndmFsaWQnIDogJ2ludmFsaWQnKTtcblxuICAgICAgLy8gc3RhdHVzIGlzIGFib3V0IGhvdyB3ZSBkcmF3IGNvbm5lY3Rpb24sIHNvIHdlIGRvbid0IG5lZWRcbiAgICAgIC8vIHN3YXBwZWQgZGlyZXRpb24gaGVyZVxuICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLnNldENvbm5lY3Rpb25WYWxpZGF0aW9uU3RhdHVzKFxuICAgICAgICB2YWxpZCxcbiAgICAgICAgc3RhdHVzLnBheWxvYWQuc291cmNlLFxuICAgICAgICBoYW5kbGUucGFyZW50Tm9kZSxcbiAgICAgICAgc3RhdHVzLnBheWxvYWQuc291cmNlSGFuZGxlLFxuICAgICAgICBoYW5kbGUsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldFZhbGlkYXRlQ29ubmVjdGlvbih0YXJnZXRIYW5kbGU6IEhhbmRsZU1vZGVsKSB7XG4gICAgdGFyZ2V0SGFuZGxlLnN0YXRlLnNldCgnaWRsZScpO1xuXG4gICAgLy8gZHJvcCBiYWNrIHRvIHN0YXJ0IHN0YXR1c1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuc3RhdHVzU2VydmljZS5zdGF0dXMoKTtcbiAgICBpZiAoc3RhdHVzLnN0YXRlID09PSAnY29ubmVjdGlvbi12YWxpZGF0aW9uJykge1xuICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLnNldENvbm5lY3Rpb25TdGFydFN0YXR1cyhzdGF0dXMucGF5bG9hZC5zb3VyY2UsIHN0YXR1cy5wYXlsb2FkLnNvdXJjZUhhbmRsZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVuZENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5zdGF0dXNTZXJ2aWNlLnN0YXR1cygpO1xuXG4gICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tdmFsaWRhdGlvbicpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHN0YXR1cy5wYXlsb2FkLnNvdXJjZTtcbiAgICAgIGNvbnN0IHNvdXJjZUhhbmRsZSA9IHN0YXR1cy5wYXlsb2FkLnNvdXJjZUhhbmRsZTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHN0YXR1cy5wYXlsb2FkLnRhcmdldDtcbiAgICAgIGNvbnN0IHRhcmdldEhhbmRsZSA9IHN0YXR1cy5wYXlsb2FkLnRhcmdldEhhbmRsZTtcblxuICAgICAgdGhpcy5zdGF0dXNTZXJ2aWNlLnNldENvbm5lY3Rpb25FbmRTdGF0dXMoc291cmNlLCB0YXJnZXQsIHNvdXJjZUhhbmRsZSwgdGFyZ2V0SGFuZGxlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -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=