@foblex/flow 17.0.5 → 17.0.7

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 (137) hide show
  1. package/domain/f-connection/find-closest-input/find-closest-input.execution.d.ts +11 -0
  2. package/domain/f-connection/{find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.d.ts → find-closest-input/find-closest-input.request.d.ts} +2 -3
  3. package/domain/f-connection/find-closest-input/i-closest-input.d.ts +7 -0
  4. package/domain/f-connection/find-closest-input/index.d.ts +3 -0
  5. package/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.d.ts +2 -3
  6. package/domain/f-connection/index.d.ts +1 -1
  7. package/domain/f-connection/providers.d.ts +2 -2
  8. package/domain/f-draggable/providers.d.ts +1 -1
  9. package/{f-draggable/domain → domain/f-node}/get-parent-nodes/get-parent-nodes.execution.d.ts +2 -4
  10. package/domain/f-node/index.d.ts +2 -0
  11. package/domain/f-node/providers.d.ts +3 -1
  12. package/domain/get-normalized-element-rect/get-normalized-element-rect-request.d.ts +2 -1
  13. package/domain/providers.d.ts +1 -1
  14. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.mjs +1 -1
  15. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.mjs +5 -3
  16. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.mjs +19 -29
  17. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.mjs +6 -3
  18. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.execution.mjs +42 -0
  19. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.request.mjs +9 -0
  20. package/esm2022/domain/f-connection/find-closest-input/i-closest-input.mjs +2 -0
  21. package/esm2022/domain/f-connection/find-closest-input/index.mjs +4 -0
  22. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.mjs +1 -1
  23. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.mjs +7 -11
  24. package/esm2022/domain/f-connection/index.mjs +2 -2
  25. package/esm2022/domain/f-connection/providers.mjs +3 -3
  26. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +2 -2
  27. package/esm2022/domain/f-node/get-node-padding/get-node-padding.execution.mjs +34 -0
  28. package/esm2022/domain/f-node/get-node-padding/get-node-padding.request.mjs +9 -0
  29. package/esm2022/domain/f-node/get-node-padding/index.mjs +3 -0
  30. package/esm2022/domain/f-node/get-parent-nodes/get-parent-nodes.execution.mjs +34 -0
  31. package/esm2022/domain/f-node/get-parent-nodes/get-parent-nodes.request.mjs +7 -0
  32. package/esm2022/domain/f-node/get-parent-nodes/index.mjs +3 -0
  33. package/esm2022/domain/f-node/index.mjs +3 -1
  34. package/esm2022/domain/f-node/providers.mjs +5 -1
  35. package/esm2022/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.mjs +3 -3
  36. package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect-request.mjs +4 -2
  37. package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect.execution.mjs +5 -5
  38. package/esm2022/f-connection/f-connection/f-connection.component.mjs +6 -5
  39. package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +33 -19
  40. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +29 -21
  41. package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.mjs +6 -6
  42. package/esm2022/f-draggable/domain/index.mjs +1 -4
  43. package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.mjs +2 -2
  44. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +2 -2
  45. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.request.mjs +1 -1
  46. package/esm2022/f-draggable/domain/providers.mjs +1 -7
  47. package/esm2022/f-draggable/f-draggable-base.mjs +1 -1
  48. package/esm2022/f-draggable/f-draggable.directive.mjs +8 -2
  49. package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +2 -2
  50. package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +2 -2
  51. package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +2 -2
  52. package/esm2022/f-draggable/node/connection.drag-handler.mjs +2 -2
  53. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.mjs +32 -35
  54. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.mjs +12 -15
  55. package/esm2022/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.mjs +15 -8
  56. package/esm2022/f-draggable/node/node-drag-to-parent.drag-handler.mjs +32 -17
  57. package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +37 -31
  58. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.execution.mjs +41 -43
  59. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.validator.mjs +19 -23
  60. package/esm2022/f-draggable/node/node.drag-handler.mjs +25 -10
  61. package/esm2022/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.mjs +3 -2
  62. package/esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.mjs +4 -5
  63. package/esm2022/f-draggable/node-resize/node-resize.drag-handler.mjs +3 -3
  64. package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.execution.mjs +2 -2
  65. package/esm2022/f-flow.module.mjs +1 -1
  66. package/esm2022/f-line-alignment/domain/index.mjs +1 -2
  67. package/esm2022/f-line-alignment/f-line-alignment.component.mjs +17 -12
  68. package/esm2022/f-node/f-drag-handle.directive.mjs +22 -0
  69. package/esm2022/f-node/index.mjs +3 -3
  70. package/esm2022/f-node/is-node.mjs +4 -0
  71. package/esm2022/f-node/providers.mjs +2 -2
  72. package/f-backgroud/providers.d.ts +1 -1
  73. package/f-connection/f-connection/f-connection.component.d.ts +4 -2
  74. package/f-connection/providers.d.ts +1 -1
  75. package/f-connectors/providers.d.ts +1 -1
  76. package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +8 -4
  77. package/f-draggable/connections/providers.d.ts +1 -1
  78. package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +7 -4
  79. package/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.d.ts +1 -1
  80. package/f-draggable/domain/index.d.ts +0 -3
  81. package/f-draggable/domain/providers.d.ts +1 -4
  82. package/f-draggable/f-draggable-base.d.ts +2 -0
  83. package/f-draggable/f-draggable.directive.d.ts +4 -2
  84. package/f-draggable/node/connection-base-drag-handler.d.ts +1 -1
  85. package/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.d.ts +7 -9
  86. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.d.ts +3 -4
  87. package/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.d.ts +1 -1
  88. package/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.d.ts +4 -3
  89. package/f-draggable/node/node-drag-to-parent.drag-handler.d.ts +9 -4
  90. package/f-draggable/node/node-move-finalize/node-move-finalize.execution.d.ts +11 -11
  91. package/f-draggable/node/node-move-preparation/node-move-preparation.execution.d.ts +11 -14
  92. package/f-draggable/node/node-move-preparation/node-move-preparation.validator.d.ts +6 -9
  93. package/f-draggable/node/node.drag-handler.d.ts +9 -5
  94. package/f-draggable/node/providers.d.ts +1 -1
  95. package/f-draggable/providers.d.ts +1 -1
  96. package/f-flow.module.d.ts +1 -1
  97. package/f-line-alignment/domain/index.d.ts +0 -1
  98. package/f-line-alignment/f-line-alignment.component.d.ts +2 -1
  99. package/f-minimap/domain/providers.d.ts +1 -1
  100. package/f-node/{f-drag-handle/f-drag-handle.directive.d.ts → f-drag-handle.directive.d.ts} +1 -1
  101. package/f-node/index.d.ts +2 -2
  102. package/f-node/providers.d.ts +2 -2
  103. package/f-storage/providers.d.ts +1 -1
  104. package/fesm2022/foblex-flow.mjs +409 -482
  105. package/fesm2022/foblex-flow.mjs.map +1 -1
  106. package/package.json +3 -3
  107. package/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.d.ts +0 -11
  108. package/domain/f-connection/find-closest-input-using-snap-threshold/index.d.ts +0 -2
  109. package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.mjs +0 -39
  110. package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.mjs +0 -11
  111. package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/index.mjs +0 -3
  112. package/esm2022/f-draggable/domain/get-node-padding/get-node-padding.execution.mjs +0 -34
  113. package/esm2022/f-draggable/domain/get-node-padding/get-node-padding.request.mjs +0 -9
  114. package/esm2022/f-draggable/domain/get-node-padding/index.mjs +0 -3
  115. package/esm2022/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.mjs +0 -30
  116. package/esm2022/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.mjs +0 -7
  117. package/esm2022/f-draggable/domain/get-normalized-node-rect/index.mjs +0 -3
  118. package/esm2022/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.mjs +0 -37
  119. package/esm2022/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.mjs +0 -7
  120. package/esm2022/f-draggable/domain/get-parent-nodes/index.mjs +0 -3
  121. package/esm2022/f-line-alignment/domain/nearest-coordinate.mjs +0 -104
  122. package/esm2022/f-node/domain/index.mjs +0 -2
  123. package/esm2022/f-node/domain/is-node.mjs +0 -4
  124. package/esm2022/f-node/f-drag-handle/f-drag-handle.directive.mjs +0 -22
  125. package/esm2022/f-node/f-drag-handle/index.mjs +0 -2
  126. package/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.d.ts +0 -13
  127. package/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.d.ts +0 -5
  128. package/f-draggable/domain/get-normalized-node-rect/index.d.ts +0 -2
  129. package/f-line-alignment/domain/nearest-coordinate.d.ts +0 -27
  130. package/f-node/domain/index.d.ts +0 -1
  131. package/f-node/f-drag-handle/index.d.ts +0 -1
  132. /package/{f-draggable/domain → domain/f-node}/get-node-padding/get-node-padding.execution.d.ts +0 -0
  133. /package/{f-draggable/domain → domain/f-node}/get-node-padding/get-node-padding.request.d.ts +0 -0
  134. /package/{f-draggable/domain → domain/f-node}/get-node-padding/index.d.ts +0 -0
  135. /package/{f-draggable/domain → domain/f-node}/get-parent-nodes/get-parent-nodes.request.d.ts +0 -0
  136. /package/{f-draggable/domain → domain/f-node}/get-parent-nodes/index.d.ts +0 -0
  137. /package/f-node/{domain/is-node.d.ts → is-node.d.ts} +0 -0
@@ -1,50 +1,47 @@
1
1
  import { __decorate } from "tslib";
2
- import { Injectable } from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
3
  import { CreateMoveNodesDragModelFromSelectionRequest } from './create-move-nodes-drag-model-from-selection.request';
4
- import { FExecutionRegister } from '@foblex/mediator';
4
+ import { FExecutionRegister, FMediator } from '@foblex/mediator';
5
+ import { FComponentsStore } from '../../../f-storage';
6
+ import { FDraggableDataContext } from '../../f-draggable-data-context';
5
7
  import { NodeDragHandler } from '../node.drag-handler';
6
8
  import { GetNodeMoveRestrictionsRequest } from './domain/get-node-move-restrictions';
7
9
  import { PutOutputConnectionHandlersToArrayRequest } from './domain/put-output-connection-handlers-to-array';
8
10
  import { PutInputConnectionHandlersToArrayRequest } from './domain/put-input-connection-handlers-to-array';
9
11
  import { NodeResizeByChildDragHandler } from '../node-resize-by-child.drag-handler';
10
- import { GetParentNodesRequest, IsArrayHasParentNodeRequest } from '../../domain';
11
- import { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';
12
+ import { IsArrayHasParentNodeRequest } from '../../domain';
13
+ import { GetDeepChildrenNodesAndGroupsRequest, GetParentNodesRequest } from '../../../domain';
12
14
  import { flatMap } from '@foblex/utils';
13
15
  import * as i0 from "@angular/core";
14
- import * as i1 from "../../../f-storage";
15
- import * as i2 from "../../f-draggable-data-context";
16
- import * as i3 from "@foblex/mediator";
17
16
  let CreateMoveNodesDragModelFromSelectionExecution = class CreateMoveNodesDragModelFromSelectionExecution {
18
- fComponentsStore;
19
- fDraggableDataContext;
20
- fMediator;
21
- constructor(fComponentsStore, fDraggableDataContext, fMediator) {
22
- this.fComponentsStore = fComponentsStore;
23
- this.fDraggableDataContext = fDraggableDataContext;
24
- this.fMediator = fMediator;
25
- }
17
+ _fMediator = inject(FMediator);
18
+ _fComponentsStore = inject(FComponentsStore);
19
+ _fDraggableDataContext = inject(FDraggableDataContext);
26
20
  handle(request) {
27
- const itemsToDrag = this.getNodesWithRestrictions(this.getSelectedNodes(request.nodeWithDisabledSelection));
21
+ const itemsToDrag = this._getNodesWithRestrictions(this._getSelectedNodes(request.nodeWithDisabledSelection));
28
22
  return this.getDragHandlersWithConnections(this.getDragHandlersFromNodes(itemsToDrag), this.getAllOutputIds(itemsToDrag), this.getAllInputIds(itemsToDrag));
29
23
  }
30
- getSelectedNodes(nodeWithDisabledSelection) {
31
- const result = this.fDraggableDataContext.selectedItems
32
- .map((x) => this._findNode(x.hostElement))
33
- .filter((x) => !!x);
24
+ _getSelectedNodes(nodeWithDisabledSelection) {
25
+ const result = this._getNodesFromSelection();
34
26
  if (nodeWithDisabledSelection) {
35
27
  result.push(nodeWithDisabledSelection);
36
28
  }
37
29
  return result;
38
30
  }
31
+ _getNodesFromSelection() {
32
+ return this._fDraggableDataContext.selectedItems
33
+ .map((x) => this._findNode(x.hostElement))
34
+ .filter((x) => !!x);
35
+ }
39
36
  _findNode(hostElement) {
40
- return this.fComponentsStore.fNodes.find(n => n.isContains(hostElement));
37
+ return this._fComponentsStore.fNodes.find(n => n.isContains(hostElement));
41
38
  }
42
- getNodesWithRestrictions(selectedNodes) {
39
+ _getNodesWithRestrictions(nodesToDrag) {
43
40
  const result = [];
44
- selectedNodes.forEach((x) => {
45
- const hasParentNodeInSelected = this.fMediator.send(new IsArrayHasParentNodeRequest(x, selectedNodes));
46
- const restrictions = this.fMediator.send(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));
47
- const parentNodes = this.fMediator.send(new GetParentNodesRequest(x));
41
+ nodesToDrag.forEach((x) => {
42
+ const hasParentNodeInSelected = this._fMediator.send(new IsArrayHasParentNodeRequest(x, nodesToDrag));
43
+ const restrictions = this._fMediator.send(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));
44
+ const parentNodes = this._fMediator.send(new GetParentNodesRequest(x));
48
45
  result.push({ node: x, parentNodes, ...restrictions }, ...this.getChildrenItemsToDrag(x, restrictions));
49
46
  });
50
47
  return result;
@@ -53,36 +50,36 @@ let CreateMoveNodesDragModelFromSelectionExecution = class CreateMoveNodesDragMo
53
50
  return this.getChildrenNodes(node.fId).map((x) => ({ node: x, ...restrictions }));
54
51
  }
55
52
  getChildrenNodes(fId) {
56
- return this.fMediator.send(new GetDeepChildrenNodesAndGroupsRequest(fId));
53
+ return this._fMediator.send(new GetDeepChildrenNodesAndGroupsRequest(fId));
57
54
  }
58
55
  getAllOutputIds(items) {
59
56
  return flatMap(items, (item) => this.getOutputsForNode(item.node).map((x) => x.fId));
60
57
  }
61
58
  getOutputsForNode(node) {
62
- return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));
59
+ return this._fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));
63
60
  }
64
61
  getAllInputIds(items) {
65
62
  return flatMap(items, (item) => this.getInputsForNode(item.node).map((x) => x.fId));
66
63
  }
67
64
  getInputsForNode(node) {
68
- return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
65
+ return this._fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
69
66
  }
70
67
  getDragHandlersFromNodes(items) {
71
68
  let result = [];
72
69
  items.forEach((node) => {
73
- result.push(new NodeDragHandler(this.fDraggableDataContext, node.node, node.min, node.max), ...(node.parentNodes || []).map(() => new NodeResizeByChildDragHandler(this.fDraggableDataContext)));
70
+ result.push(new NodeDragHandler(this._fDraggableDataContext, this._fComponentsStore, node.node, node.min, node.max), ...(node.parentNodes || []).map(() => new NodeResizeByChildDragHandler(this._fDraggableDataContext)));
74
71
  });
75
72
  return result;
76
73
  }
77
74
  getDragHandlersWithConnections(handlers, outputIds, inputIds) {
78
75
  let result = handlers;
79
76
  handlers.filter((x) => x instanceof NodeDragHandler).forEach((dragHandler) => {
80
- this.fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler, inputIds, result));
81
- this.fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler, outputIds, result));
77
+ this._fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler, inputIds, result));
78
+ this._fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler, outputIds, result));
82
79
  });
83
80
  return result;
84
81
  }
85
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution, deps: [{ token: i1.FComponentsStore }, { token: i2.FDraggableDataContext }, { token: i3.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
82
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
86
83
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution });
87
84
  };
88
85
  CreateMoveNodesDragModelFromSelectionExecution = __decorate([
@@ -91,5 +88,5 @@ CreateMoveNodesDragModelFromSelectionExecution = __decorate([
91
88
  export { CreateMoveNodesDragModelFromSelectionExecution };
92
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution, decorators: [{
93
90
  type: Injectable
94
- }], ctorParameters: () => [{ type: i1.FComponentsStore }, { type: i2.FDraggableDataContext }, { type: i3.FMediator }] });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vdmUtbm9kZXMtZHJhZy1tb2RlbC1mcm9tLXNlbGVjdGlvbi5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL25vZGUvY3JlYXRlLW1vdmUtbm9kZXMtZHJhZy1tb2RlbC1mcm9tLXNlbGVjdGlvbi9jcmVhdGUtbW92ZS1ub2Rlcy1kcmFnLW1vZGVsLWZyb20tc2VsZWN0aW9uLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsNENBQTRDLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNySCxPQUFPLEVBQUUsa0JBQWtCLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7QUFJN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXZELE9BQU8sRUFBRSw4QkFBOEIsRUFBeUIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RyxPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RyxPQUFPLEVBQ0wsd0NBQXdDLEVBQ3pDLE1BQU0saURBQWlELENBQUM7QUFDekQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBSWpDLElBQU0sOENBQThDLEdBQXBELE1BQU0sOENBQThDO0lBSS9DO0lBQ0E7SUFDQTtJQUhWLFlBQ1UsZ0JBQWtDLEVBQ2xDLHFCQUE0QyxFQUM1QyxTQUFvQjtRQUZwQixxQkFBZ0IsR0FB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SSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUNwRyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sOEJBQThCLENBQ3BDLFFBQTBCLEVBQUUsU0FBbUIsRUFBRSxRQUFrQjtRQUVuRSxJQUFJLE1BQU0sR0FBcUIsUUFBUSxDQUFDO1FBQ3hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUMzRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLHlDQUF5QyxDQUFDLFdBQThCLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDckgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSx3Q0FBd0MsQ0FBQyxXQUE4QixFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3ZILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzt1R0EzRlUsOENBQThDOzJHQUE5Qyw4Q0FBOEM7O0FBQTlDLDhDQUE4QztJQUQxRCxrQkFBa0IsQ0FBQyw0Q0FBNEMsQ0FBQztHQUNwRCw4Q0FBOEMsQ0E0RjFEOzsyRkE1RlksOENBQThDO2tCQUYxRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3JlYXRlTW92ZU5vZGVzRHJhZ01vZGVsRnJvbVNlbGVjdGlvblJlcXVlc3QgfSBmcm9tICcuL2NyZWF0ZS1tb3ZlLW5vZGVzLWRyYWctbW9kZWwtZnJvbS1zZWxlY3Rpb24ucmVxdWVzdCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGRHJhZ2dhYmxlRGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9mLWRyYWdnYWJsZS1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHsgSURyYWdnYWJsZUl0ZW0gfSBmcm9tICcuLi8uLi9pLWRyYWdnYWJsZS1pdGVtJztcbmltcG9ydCB7IE5vZGVEcmFnSGFuZGxlciB9IGZyb20gJy4uL25vZGUuZHJhZy1oYW5kbGVyJztcbmltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uLy4uLy4uL2Ytbm9kZSc7XG5pbXBvcnQgeyBGQ29ubmVjdG9yQmFzZSB9IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBJTm9kZVdpdGhEaXN0YW5jZVJlc3RyaWN0aW9ucyB9IGZyb20gJy4vaS1ub2RlLXdpdGgtZGlzdGFuY2UtcmVzdHJpY3Rpb25zJztcbmltcG9ydCB7IEdldE5vZGVNb3ZlUmVzdHJpY3Rpb25zUmVxdWVzdCwgSU5vZGVNb3ZlUmVzdHJpY3Rpb25zIH0gZnJvbSAnLi9kb21haW4vZ2V0LW5vZGUtbW92ZS1yZXN0cmljdGlvbnMnO1xuaW1wb3J0IHsgUHV0T3V0cHV0Q29ubmVjdGlvbkhhbmRsZXJzVG9BcnJheVJlcXVlc3QgfSBmcm9tICcuL2RvbWFpbi9wdXQtb3V0cHV0LWNvbm5lY3Rpb24taGFuZGxlcnMtdG8tYXJyYXknO1xuaW1wb3J0IHtcbiAgUHV0SW5wdXRDb25uZWN0aW9uSGFuZGxlcnNUb0FycmF5UmVxdWVzdFxufSBmcm9tICcuL2RvbWFpbi9wdXQtaW5wdXQtY29ubmVjdGlvbi1oYW5kbGVycy10by1hcnJheSc7XG5pbXBvcnQgeyBOb2RlUmVzaXplQnlDaGlsZERyYWdIYW5kbGVyIH0gZnJvbSAnLi4vbm9kZS1yZXNpemUtYnktY2hpbGQuZHJhZy1oYW5kbGVyJztcbmltcG9ydCB7IEdldFBhcmVudE5vZGVzUmVxdWVzdCwgSXNBcnJheUhhc1BhcmVudE5vZGVSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEdldERlZXBDaGlsZHJlbk5vZGVzQW5kR3JvdXBzUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBmbGF0TWFwIH0gZnJvbSAnQGZvYmxleC91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoQ3JlYXRlTW92ZU5vZGVzRHJhZ01vZGVsRnJvbVNlbGVjdGlvblJlcXVlc3QpXG5leHBvcnQgY2xhc3MgQ3JlYXRlTW92ZU5vZGVzRHJhZ01vZGVsRnJvbVNlbGVjdGlvbkV4ZWN1dGlvblxuICBpbXBsZW1lbnRzIElFeGVjdXRpb248Q3JlYXRlTW92ZU5vZGVzRHJhZ01vZGVsRnJvbVNlbGVjdGlvblJlcXVlc3QsIElEcmFnZ2FibGVJdGVtW10+IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZDb21wb25lbnRzU3RvcmU6IEZDb21wb25lbnRzU3RvcmUsXG4gICAgcHJpdmF0ZSBmRHJhZ2dhYmxlRGF0YUNvbnRleHQ6IEZEcmFnZ2FibGVEYXRhQ29udGV4dCxcbiAgICBwcml2YXRlIGZNZWRpYXRvcjogRk1lZGlhdG9yXG4gICkge1xuICB9XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBDcmVhdGVNb3ZlTm9kZXNEcmFnTW9kZWxGcm9tU2VsZWN0aW9uUmVxdWVzdCk6IElEcmFnZ2FibGVJdGVtW10ge1xuICAgIGNvbnN0IGl0ZW1zVG9EcmFnID0gdGhpcy5nZXROb2Rlc1dpdGhSZXN0cmljdGlvbnModGhpcy5nZXRTZWxlY3RlZE5vZGVzKHJlcXVlc3Qubm9kZVdpdGhEaXNhYmxlZFNlbGVjdGlvbikpO1xuICAgIHJldHVybiB0aGlzLmdldERyYWdIYW5kbGVyc1dpdGhDb25uZWN0aW9ucyhcbiAgICAgIHRoaXMuZ2V0RHJhZ0hhbmRsZXJzRnJvbU5vZGVzKGl0ZW1zVG9EcmFnKSxcbiAgICAgIHRoaXMuZ2V0QWxsT3V0cHV0SWRzKGl0ZW1zVG9EcmFnKSxcbiAgICAgIHRoaXMuZ2V0QWxsSW5wdXRJZHMoaXRlbXNUb0RyYWcpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWROb2Rlcyhub2RlV2l0aERpc2FibGVkU2VsZWN0aW9uPzogRk5vZGVCYXNlKTogRk5vZGVCYXNlW10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LnNlbGVjdGVkSXRlbXNcbiAgICAgIC5tYXAoKHgpID0+IHRoaXMuX2ZpbmROb2RlKHguaG9zdEVsZW1lbnQpKVxuICAgICAgLmZpbHRlcigoeCk6IHggaXMgRk5vZGVCYXNlID0+ICEheCk7XG4gICAgaWYobm9kZVdpdGhEaXNhYmxlZFNlbGVjdGlvbikge1xuICAgICAgcmVzdWx0LnB1c2gobm9kZVdpdGhEaXNhYmxlZFNlbGVjdGlvbik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIF9maW5kTm9kZShob3N0RWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50KTogRk5vZGVCYXNlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZOb2Rlcy5maW5kKG4gPT4gbi5pc0NvbnRhaW5zKGhvc3RFbGVtZW50KSk7XG4gIH1cblxuICBwcml2YXRlIGdldE5vZGVzV2l0aFJlc3RyaWN0aW9ucyhzZWxlY3RlZE5vZGVzOiBGTm9kZUJhc2VbXSk6IElOb2RlV2l0aERpc3RhbmNlUmVzdHJpY3Rpb25zW10ge1xuICAgIGNvbnN0IHJlc3VsdDogSU5vZGVXaXRoRGlzdGFuY2VSZXN0cmljdGlvbnNbXSA9IFtdO1xuXG4gICAgc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICBjb25zdCBoYXNQYXJlbnROb2RlSW5TZWxlY3RlZCA9IHRoaXMuZk1lZGlhdG9yLnNlbmQ8Ym9vbGVhbj4obmV3IElzQXJyYXlIYXNQYXJlbnROb2RlUmVxdWVzdCh4LCBzZWxlY3RlZE5vZGVzKSk7XG4gICAgICBjb25zdCByZXN0cmljdGlvbnMgPSB0aGlzLmZNZWRpYXRvci5zZW5kPElOb2RlTW92ZVJlc3RyaWN0aW9ucz4obmV3IEdldE5vZGVNb3ZlUmVzdHJpY3Rpb25zUmVxdWVzdCh4LCBoYXNQYXJlbnROb2RlSW5TZWxlY3RlZCkpO1xuICAgICAgY29uc3QgcGFyZW50Tm9kZXMgPSB0aGlzLmZNZWRpYXRvci5zZW5kPEZOb2RlQmFzZVtdPihuZXcgR2V0UGFyZW50Tm9kZXNSZXF1ZXN0KHgpKTtcbiAgICAgIHJlc3VsdC5wdXNoKHsgbm9kZTogeCwgcGFyZW50Tm9kZXMsIC4uLnJlc3RyaWN0aW9ucyB9LCAuLi50aGlzLmdldENoaWxkcmVuSXRlbXNUb0RyYWcoeCwgcmVzdHJpY3Rpb25zKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbkl0ZW1zVG9EcmFnKG5vZGU6IEZOb2RlQmFzZSwgcmVzdHJpY3Rpb25zOiBJTm9kZU1vdmVSZXN0cmljdGlvbnMpOiBJTm9kZVdpdGhEaXN0YW5jZVJlc3RyaWN0aW9uc1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGlsZHJlbk5vZGVzKG5vZGUuZklkKS5tYXAoKHgpID0+ICh7IG5vZGU6IHgsIC4uLnJlc3RyaWN0aW9ucyB9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldENoaWxkcmVuTm9kZXMoZklkOiBzdHJpbmcpOiBGTm9kZUJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuZk1lZGlhdG9yLnNlbmQ8Rk5vZGVCYXNlW10+KG5ldyBHZXREZWVwQ2hpbGRyZW5Ob2Rlc0FuZEdyb3Vwc1JlcXVlc3QoZklkKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFsbE91dHB1dElkcyhpdGVtczogSU5vZGVXaXRoRGlzdGFuY2VSZXN0cmljdGlvbnNbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gZmxhdE1hcChpdGVtcywgKGl0ZW06IElOb2RlV2l0aERpc3RhbmNlUmVzdHJpY3Rpb25zKSA9PiB0aGlzLmdldE91dHB1dHNGb3JOb2RlKGl0ZW0ubm9kZSkubWFwKCh4KSA9PiB4LmZJZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdXRwdXRzRm9yTm9kZShub2RlOiBGTm9kZUJhc2UpOiBGQ29ubmVjdG9yQmFzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZPdXRwdXRzLmZpbHRlcigoeCkgPT4gbm9kZS5pc0NvbnRhaW5zKHguaG9zdEVsZW1lbnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsSW5wdXRJZHMoaXRlbXM6IElOb2RlV2l0aERpc3RhbmNlUmVzdHJpY3Rpb25zW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGZsYXRNYXAoaXRlbXMsIChpdGVtOiBJTm9kZVdpdGhEaXN0YW5jZVJlc3RyaWN0aW9ucykgPT4gdGhpcy5nZXRJbnB1dHNGb3JOb2RlKGl0ZW0ubm9kZSkubWFwKCh4KSA9PiB4LmZJZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnB1dHNGb3JOb2RlKG5vZGU6IEZOb2RlQmFzZSk6IEZDb25uZWN0b3JCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLmZDb21wb25lbnRzU3RvcmUuZklucHV0cy5maWx0ZXIoKHgpID0+IG5vZGUuaXNDb250YWlucyh4Lmhvc3RFbGVtZW50KSk7XG4gIH1cblxuICBwcml2YXRlIGdldERyYWdIYW5kbGVyc0Zyb21Ob2RlcyhpdGVtczogSU5vZGVXaXRoRGlzdGFuY2VSZXN0cmljdGlvbnNbXSk6IElEcmFnZ2FibGVJdGVtW10ge1xuICAgIGxldCByZXN1bHQ6IElEcmFnZ2FibGVJdGVtW10gPSBbXTtcblxuICAgIGl0ZW1zLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICBuZXcgTm9kZURyYWdIYW5kbGVyKHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LCBub2RlLm5vZGUsIG5vZGUubWluLCBub2RlLm1heCksXG4gICAgICAgIC4uLihub2RlLnBhcmVudE5vZGVzIHx8IFtdKS5tYXAoKCkgPT4gbmV3IE5vZGVSZXNpemVCeUNoaWxkRHJhZ0hhbmRsZXIodGhpcy5mRHJhZ2dhYmxlRGF0YUNvbnRleHQpKVxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREcmFnSGFuZGxlcnNXaXRoQ29ubmVjdGlvbnMoXG4gICAgaGFuZGxlcnM6IElEcmFnZ2FibGVJdGVtW10sIG91dHB1dElkczogc3RyaW5nW10sIGlucHV0SWRzOiBzdHJpbmdbXVxuICApOiBJRHJhZ2dhYmxlSXRlbVtdIHtcbiAgICBsZXQgcmVzdWx0OiBJRHJhZ2dhYmxlSXRlbVtdID0gaGFuZGxlcnM7XG4gICAgaGFuZGxlcnMuZmlsdGVyKCh4KSA9PiB4IGluc3RhbmNlb2YgTm9kZURyYWdIYW5kbGVyKS5mb3JFYWNoKChkcmFnSGFuZGxlcikgPT4ge1xuICAgICAgdGhpcy5mTWVkaWF0b3Iuc2VuZChuZXcgUHV0T3V0cHV0Q29ubmVjdGlvbkhhbmRsZXJzVG9BcnJheVJlcXVlc3QoZHJhZ0hhbmRsZXIgYXMgTm9kZURyYWdIYW5kbGVyLCBpbnB1dElkcywgcmVzdWx0KSk7XG4gICAgICB0aGlzLmZNZWRpYXRvci5zZW5kKG5ldyBQdXRJbnB1dENvbm5lY3Rpb25IYW5kbGVyc1RvQXJyYXlSZXF1ZXN0KGRyYWdIYW5kbGVyIGFzIE5vZGVEcmFnSGFuZGxlciwgb3V0cHV0SWRzLCByZXN1bHQpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
91
+ }] });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vdmUtbm9kZXMtZHJhZy1tb2RlbC1mcm9tLXNlbGVjdGlvbi5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL25vZGUvY3JlYXRlLW1vdmUtbm9kZXMtZHJhZy1tb2RlbC1mcm9tLXNlbGVjdGlvbi9jcmVhdGUtbW92ZS1ub2Rlcy1kcmFnLW1vZGVsLWZyb20tc2VsZWN0aW9uLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLDRDQUE0QyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDckgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUl2RCxPQUFPLEVBQUUsOEJBQThCLEVBQXlCLE1BQU0scUNBQXFDLENBQUM7QUFDNUcsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0csT0FBTyxFQUNMLHdDQUF3QyxFQUN6QyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3pELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUlq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amVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3JlYXRlTW92ZU5vZGVzRHJhZ01vZGVsRnJvbVNlbGVjdGlvblJlcXVlc3QgfSBmcm9tICcuL2NyZWF0ZS1tb3ZlLW5vZGVzLWRyYWctbW9kZWwtZnJvbS1zZWxlY3Rpb24ucmVxdWVzdCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGRHJhZ2dhYmxlRGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9mLWRyYWdnYWJsZS1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHsgSURyYWdnYWJsZUl0ZW0gfSBmcm9tICcuLi8uLi9pLWRyYWdnYWJsZS1pdGVtJztcbmltcG9ydCB7IE5vZGVEcmFnSGFuZGxlciB9IGZyb20gJy4uL25vZGUuZHJhZy1oYW5kbGVyJztcbmltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uLy4uLy4uL2Ytbm9kZSc7XG5pbXBvcnQgeyBGQ29ubmVjdG9yQmFzZSB9IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBJTm9kZVdpdGhEaXN0YW5jZVJlc3RyaWN0aW9ucyB9IGZyb20gJy4vaS1ub2RlLXdpdGgtZGlzdGFuY2UtcmVzdHJpY3Rpb25zJztcbmltcG9ydCB7IEdldE5vZGVNb3ZlUmVzdHJpY3Rpb25zUmVxdWVzdCwgSU5vZGVNb3ZlUmVzdHJpY3Rpb25zIH0gZnJvbSAnLi9kb21haW4vZ2V0LW5vZGUtbW92ZS1yZXN0cmljdGlvbnMnO1xuaW1wb3J0IHsgUHV0T3V0cHV0Q29ubmVjdGlvbkhhbmRsZXJzVG9BcnJheVJlcXVlc3QgfSBmcm9tICcuL2RvbWFpbi9wdXQtb3V0cHV0LWNvbm5lY3Rpb24taGFuZGxlcnMtdG8tYXJyYXknO1xuaW1wb3J0IHtcbiAgUHV0SW5wdXRDb25uZWN0aW9uSGFuZGxlcnNUb0FycmF5UmVxdWVzdFxufSBmcm9tICcuL2RvbWFpbi9wdXQtaW5wdXQtY29ubmVjdGlvbi1oYW5kbGVycy10by1hcnJheSc7XG5pbXBvcnQgeyBOb2RlUmVzaXplQnlDaGlsZERyYWdIYW5kbGVyIH0gZnJvbSAnLi4vbm9kZS1yZXNpemUtYnktY2hpbGQuZHJhZy1oYW5kbGVyJztcbmltcG9ydCB7IElzQXJyYXlIYXNQYXJlbnROb2RlUmVxdWVzdCB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBHZXREZWVwQ2hpbGRyZW5Ob2Rlc0FuZEdyb3Vwc1JlcXVlc3QsIEdldFBhcmVudE5vZGVzUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBmbGF0TWFwIH0gZnJvbSAnQGZvYmxleC91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoQ3JlYXRlTW92ZU5vZGVzRHJhZ01vZGVsRnJvbVNlbGVjdGlvblJlcXVlc3QpXG5leHBvcnQgY2xhc3MgQ3JlYXRlTW92ZU5vZGVzRHJhZ01vZGVsRnJvbVNlbGVjdGlvbkV4ZWN1dGlvblxuICBpbXBsZW1lbnRzIElFeGVjdXRpb248Q3JlYXRlTW92ZU5vZGVzRHJhZ01vZGVsRnJvbVNlbGVjdGlvblJlcXVlc3QsIElEcmFnZ2FibGVJdGVtW10+IHtcblxuICBwcml2YXRlIF9mTWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcbiAgcHJpdmF0ZSBfZkNvbXBvbmVudHNTdG9yZSA9IGluamVjdChGQ29tcG9uZW50c1N0b3JlKTtcbiAgcHJpdmF0ZSBfZkRyYWdnYWJsZURhdGFDb250ZXh0ID0gaW5qZWN0KEZEcmFnZ2FibGVEYXRhQ29udGV4dCk7XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBDcmVhdGVNb3ZlTm9kZXNEcmFnTW9kZWxGcm9tU2VsZWN0aW9uUmVxdWVzdCk6IElEcmFnZ2FibGVJdGVtW10ge1xuICAgIGNvbnN0IGl0ZW1zVG9EcmFnID0gdGhpcy5fZ2V0Tm9kZXNXaXRoUmVzdHJpY3Rpb25zKFxuICAgICAgdGhpcy5fZ2V0U2VsZWN0ZWROb2RlcyhyZXF1ZXN0Lm5vZGVXaXRoRGlzYWJsZWRTZWxlY3Rpb24pXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5nZXREcmFnSGFuZGxlcnNXaXRoQ29ubmVjdGlvbnMoXG4gICAgICB0aGlzLmdldERyYWdIYW5kbGVyc0Zyb21Ob2RlcyhpdGVtc1RvRHJhZyksXG4gICAgICB0aGlzLmdldEFsbE91dHB1dElkcyhpdGVtc1RvRHJhZyksXG4gICAgICB0aGlzLmdldEFsbElucHV0SWRzKGl0ZW1zVG9EcmFnKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRTZWxlY3RlZE5vZGVzKG5vZGVXaXRoRGlzYWJsZWRTZWxlY3Rpb24/OiBGTm9kZUJhc2UpOiBGTm9kZUJhc2VbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZ2V0Tm9kZXNGcm9tU2VsZWN0aW9uKCk7XG4gICAgaWYobm9kZVdpdGhEaXNhYmxlZFNlbGVjdGlvbikge1xuICAgICAgcmVzdWx0LnB1c2gobm9kZVdpdGhEaXNhYmxlZFNlbGVjdGlvbik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIF9nZXROb2Rlc0Zyb21TZWxlY3Rpb24oKTogRk5vZGVCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLl9mRHJhZ2dhYmxlRGF0YUNvbnRleHQuc2VsZWN0ZWRJdGVtc1xuICAgICAgLm1hcCgoeCkgPT4gdGhpcy5fZmluZE5vZGUoeC5ob3N0RWxlbWVudCkpXG4gICAgICAuZmlsdGVyKCh4KTogeCBpcyBGTm9kZUJhc2UgPT4gISF4KTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmROb2RlKGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQpOiBGTm9kZUJhc2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZOb2Rlcy5maW5kKG4gPT4gbi5pc0NvbnRhaW5zKGhvc3RFbGVtZW50KSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXROb2Rlc1dpdGhSZXN0cmljdGlvbnMobm9kZXNUb0RyYWc6IEZOb2RlQmFzZVtdKTogSU5vZGVXaXRoRGlzdGFuY2VSZXN0cmljdGlvbnNbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBJTm9kZVdpdGhEaXN0YW5jZVJlc3RyaWN0aW9uc1tdID0gW107XG5cbiAgICBub2Rlc1RvRHJhZy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICBjb25zdCBoYXNQYXJlbnROb2RlSW5TZWxlY3RlZCA9IHRoaXMuX2ZNZWRpYXRvci5zZW5kPGJvb2xlYW4+KG5ldyBJc0FycmF5SGFzUGFyZW50Tm9kZVJlcXVlc3QoeCwgbm9kZXNUb0RyYWcpKTtcbiAgICAgIGNvbnN0IHJlc3RyaWN0aW9ucyA9IHRoaXMuX2ZNZWRpYXRvci5zZW5kPElOb2RlTW92ZVJlc3RyaWN0aW9ucz4obmV3IEdldE5vZGVNb3ZlUmVzdHJpY3Rpb25zUmVxdWVzdCh4LCBoYXNQYXJlbnROb2RlSW5TZWxlY3RlZCkpO1xuICAgICAgY29uc3QgcGFyZW50Tm9kZXMgPSB0aGlzLl9mTWVkaWF0b3Iuc2VuZDxGTm9kZUJhc2VbXT4obmV3IEdldFBhcmVudE5vZGVzUmVxdWVzdCh4KSk7XG4gICAgICByZXN1bHQucHVzaCh7IG5vZGU6IHgsIHBhcmVudE5vZGVzLCAuLi5yZXN0cmljdGlvbnMgfSwgLi4udGhpcy5nZXRDaGlsZHJlbkl0ZW1zVG9EcmFnKHgsIHJlc3RyaWN0aW9ucykpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2hpbGRyZW5JdGVtc1RvRHJhZyhub2RlOiBGTm9kZUJhc2UsIHJlc3RyaWN0aW9uczogSU5vZGVNb3ZlUmVzdHJpY3Rpb25zKTogSU5vZGVXaXRoRGlzdGFuY2VSZXN0cmljdGlvbnNbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hpbGRyZW5Ob2Rlcyhub2RlLmZJZCkubWFwKCh4KSA9PiAoeyBub2RlOiB4LCAuLi5yZXN0cmljdGlvbnMgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbk5vZGVzKGZJZDogc3RyaW5nKTogRk5vZGVCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLl9mTWVkaWF0b3Iuc2VuZDxGTm9kZUJhc2VbXT4obmV3IEdldERlZXBDaGlsZHJlbk5vZGVzQW5kR3JvdXBzUmVxdWVzdChmSWQpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsT3V0cHV0SWRzKGl0ZW1zOiBJTm9kZVdpdGhEaXN0YW5jZVJlc3RyaWN0aW9uc1tdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBmbGF0TWFwKGl0ZW1zLCAoaXRlbTogSU5vZGVXaXRoRGlzdGFuY2VSZXN0cmljdGlvbnMpID0+IHRoaXMuZ2V0T3V0cHV0c0Zvck5vZGUoaXRlbS5ub2RlKS5tYXAoKHgpID0+IHguZklkKSk7XG4gIH1cblxuICBwcml2YXRlIGdldE91dHB1dHNGb3JOb2RlKG5vZGU6IEZOb2RlQmFzZSk6IEZDb25uZWN0b3JCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZPdXRwdXRzLmZpbHRlcigoeCkgPT4gbm9kZS5pc0NvbnRhaW5zKHguaG9zdEVsZW1lbnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsSW5wdXRJZHMoaXRlbXM6IElOb2RlV2l0aERpc3RhbmNlUmVzdHJpY3Rpb25zW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGZsYXRNYXAoaXRlbXMsIChpdGVtOiBJTm9kZVdpdGhEaXN0YW5jZVJlc3RyaWN0aW9ucykgPT4gdGhpcy5nZXRJbnB1dHNGb3JOb2RlKGl0ZW0ubm9kZSkubWFwKCh4KSA9PiB4LmZJZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnB1dHNGb3JOb2RlKG5vZGU6IEZOb2RlQmFzZSk6IEZDb25uZWN0b3JCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZJbnB1dHMuZmlsdGVyKCh4KSA9PiBub2RlLmlzQ29udGFpbnMoeC5ob3N0RWxlbWVudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREcmFnSGFuZGxlcnNGcm9tTm9kZXMoaXRlbXM6IElOb2RlV2l0aERpc3RhbmNlUmVzdHJpY3Rpb25zW10pOiBJRHJhZ2dhYmxlSXRlbVtdIHtcbiAgICBsZXQgcmVzdWx0OiBJRHJhZ2dhYmxlSXRlbVtdID0gW107XG5cbiAgICBpdGVtcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICByZXN1bHQucHVzaChcbiAgICAgICAgbmV3IE5vZGVEcmFnSGFuZGxlcih0aGlzLl9mRHJhZ2dhYmxlRGF0YUNvbnRleHQsIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUsIG5vZGUubm9kZSwgbm9kZS5taW4sIG5vZGUubWF4KSxcbiAgICAgICAgLi4uKG5vZGUucGFyZW50Tm9kZXMgfHwgW10pLm1hcCgoKSA9PiBuZXcgTm9kZVJlc2l6ZUJ5Q2hpbGREcmFnSGFuZGxlcih0aGlzLl9mRHJhZ2dhYmxlRGF0YUNvbnRleHQpKVxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREcmFnSGFuZGxlcnNXaXRoQ29ubmVjdGlvbnMoXG4gICAgaGFuZGxlcnM6IElEcmFnZ2FibGVJdGVtW10sIG91dHB1dElkczogc3RyaW5nW10sIGlucHV0SWRzOiBzdHJpbmdbXVxuICApOiBJRHJhZ2dhYmxlSXRlbVtdIHtcbiAgICBsZXQgcmVzdWx0OiBJRHJhZ2dhYmxlSXRlbVtdID0gaGFuZGxlcnM7XG4gICAgaGFuZGxlcnMuZmlsdGVyKCh4KSA9PiB4IGluc3RhbmNlb2YgTm9kZURyYWdIYW5kbGVyKS5mb3JFYWNoKChkcmFnSGFuZGxlcikgPT4ge1xuICAgICAgdGhpcy5fZk1lZGlhdG9yLnNlbmQobmV3IFB1dE91dHB1dENvbm5lY3Rpb25IYW5kbGVyc1RvQXJyYXlSZXF1ZXN0KGRyYWdIYW5kbGVyIGFzIE5vZGVEcmFnSGFuZGxlciwgaW5wdXRJZHMsIHJlc3VsdCkpO1xuICAgICAgdGhpcy5fZk1lZGlhdG9yLnNlbmQobmV3IFB1dElucHV0Q29ubmVjdGlvbkhhbmRsZXJzVG9BcnJheVJlcXVlc3QoZHJhZ0hhbmRsZXIgYXMgTm9kZURyYWdIYW5kbGVyLCBvdXRwdXRJZHMsIHJlc3VsdCkpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,20 +1,17 @@
1
1
  import { __decorate } from "tslib";
2
- import { Injectable } from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
3
  import { GetNodeMoveRestrictionsRequest } from './get-node-move-restrictions.request';
4
4
  import { PointExtensions } from '@foblex/2d';
5
- import { FExecutionRegister } from '@foblex/mediator';
6
- import { GetNormalizedNodeRectRequest, GetNormalizedParentNodeRectRequest } from '../../../../domain';
5
+ import { FExecutionRegister, FMediator } from '@foblex/mediator';
6
+ import { GetNormalizedParentNodeRectRequest } from '../../../../domain';
7
+ import { GetNormalizedElementRectRequest } from '../../../../../domain';
7
8
  import * as i0 from "@angular/core";
8
- import * as i1 from "@foblex/mediator";
9
9
  let GetNodeMoveRestrictionsExecution = class GetNodeMoveRestrictionsExecution {
10
- fMediator;
11
- constructor(fMediator) {
12
- this.fMediator = fMediator;
13
- }
10
+ _fMediator = inject(FMediator);
14
11
  handle(request) {
15
12
  if (request.fNode.fParentId && !request.hasParentNodeInSelected) {
16
13
  const fParentNodeRect = this.getParentNodeRect(request.fNode);
17
- const fCurrentNodeRect = this.getCurrentNodeRect(request.fNode);
14
+ const fCurrentNodeRect = this._getNodeRect(request.fNode);
18
15
  return {
19
16
  min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),
20
17
  max: PointExtensions.initialize((fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width), (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height))
@@ -22,13 +19,13 @@ let GetNodeMoveRestrictionsExecution = class GetNodeMoveRestrictionsExecution {
22
19
  }
23
20
  return { ...DEFAULT_RESTRICTIONS };
24
21
  }
25
- getCurrentNodeRect(fNode) {
26
- return this.fMediator.send(new GetNormalizedNodeRectRequest(fNode));
22
+ _getNodeRect(fNode) {
23
+ return this._fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement, false));
27
24
  }
28
25
  getParentNodeRect(fNode) {
29
- return this.fMediator.send(new GetNormalizedParentNodeRectRequest(fNode));
26
+ return this._fMediator.send(new GetNormalizedParentNodeRectRequest(fNode));
30
27
  }
31
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution, deps: [{ token: i1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
32
29
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution });
33
30
  };
34
31
  GetNodeMoveRestrictionsExecution = __decorate([
@@ -37,9 +34,9 @@ GetNodeMoveRestrictionsExecution = __decorate([
37
34
  export { GetNodeMoveRestrictionsExecution };
38
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution, decorators: [{
39
36
  type: Injectable
40
- }], ctorParameters: () => [{ type: i1.FMediator }] });
37
+ }] });
41
38
  const DEFAULT_RESTRICTIONS = {
42
39
  min: PointExtensions.initialize(-Infinity, -Infinity),
43
40
  max: PointExtensions.initialize(Infinity, Infinity)
44
41
  };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW5vZGUtbW92ZS1yZXN0cmljdGlvbnMuZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWRyYWdnYWJsZS9ub2RlL2NyZWF0ZS1tb3ZlLW5vZGVzLWRyYWctbW9kZWwtZnJvbS1zZWxlY3Rpb24vZG9tYWluL2dldC1ub2RlLW1vdmUtcmVzdHJpY3Rpb25zL2dldC1ub2RlLW1vdmUtcmVzdHJpY3Rpb25zLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQVMsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXBELE9BQU8sRUFBRSxrQkFBa0IsRUFBeUIsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBSy9GLElBQU0sZ0NBQWdDLEdBQXRDLE1BQU0sZ0NBQWdDO0lBSWpDO0lBRFYsWUFDVSxTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBRTlCLENBQUM7SUFFTSxNQUFNLENBQUMsT0FBdUM7UUFDbkQsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2hFLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLE9BQU87Z0JBQ0wsR0FBRyxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQy9HLEdBQUcsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUM3QixDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUMzRixDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUM5RjthQUNGLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxFQUFFLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBZ0I7UUFDekMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBUSxJQUFJLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQWdCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQVEsSUFBSSxrQ0FBa0MsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7dUdBN0JVLGdDQUFnQzsyR0FBaEMsZ0NBQWdDOztBQUFoQyxnQ0FBZ0M7SUFENUMsa0JBQWtCLENBQUMsOEJBQThCLENBQUM7R0FDdEMsZ0NBQWdDLENBOEI1Qzs7MkZBOUJZLGdDQUFnQztrQkFGNUMsVUFBVTs7QUFrQ1gsTUFBTSxvQkFBb0IsR0FBMEI7SUFDbEQsR0FBRyxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDckQsR0FBRyxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztDQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2V0Tm9kZU1vdmVSZXN0cmljdGlvbnNSZXF1ZXN0IH0gZnJvbSAnLi9nZXQtbm9kZS1tb3ZlLXJlc3RyaWN0aW9ucy5yZXF1ZXN0JztcbmltcG9ydCB7IElSZWN0LCBQb2ludEV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IElOb2RlTW92ZVJlc3RyaWN0aW9ucyB9IGZyb20gJy4vaS1ub2RlLW1vdmUtcmVzdHJpY3Rpb25zJztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBHZXROb3JtYWxpemVkTm9kZVJlY3RSZXF1ZXN0LCBHZXROb3JtYWxpemVkUGFyZW50Tm9kZVJlY3RSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Ytbm9kZSc7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoR2V0Tm9kZU1vdmVSZXN0cmljdGlvbnNSZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIEdldE5vZGVNb3ZlUmVzdHJpY3Rpb25zRXhlY3V0aW9uXG4gIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxHZXROb2RlTW92ZVJlc3RyaWN0aW9uc1JlcXVlc3QsIElOb2RlTW92ZVJlc3RyaWN0aW9ucz4ge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZk1lZGlhdG9yOiBGTWVkaWF0b3JcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IEdldE5vZGVNb3ZlUmVzdHJpY3Rpb25zUmVxdWVzdCk6IElOb2RlTW92ZVJlc3RyaWN0aW9ucyB7XG4gICAgaWYgKHJlcXVlc3QuZk5vZGUuZlBhcmVudElkICYmICFyZXF1ZXN0Lmhhc1BhcmVudE5vZGVJblNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBmUGFyZW50Tm9kZVJlY3QgPSB0aGlzLmdldFBhcmVudE5vZGVSZWN0KHJlcXVlc3QuZk5vZGUpO1xuICAgICAgY29uc3QgZkN1cnJlbnROb2RlUmVjdCA9IHRoaXMuZ2V0Q3VycmVudE5vZGVSZWN0KHJlcXVlc3QuZk5vZGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWluOiBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZShmUGFyZW50Tm9kZVJlY3QueCAtIGZDdXJyZW50Tm9kZVJlY3QueCwgZlBhcmVudE5vZGVSZWN0LnkgLSBmQ3VycmVudE5vZGVSZWN0LnkpLFxuICAgICAgICBtYXg6IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKFxuICAgICAgICAgIChmUGFyZW50Tm9kZVJlY3QueCArIGZQYXJlbnROb2RlUmVjdC53aWR0aCkgLSAoZkN1cnJlbnROb2RlUmVjdC54ICsgZkN1cnJlbnROb2RlUmVjdC53aWR0aCksXG4gICAgICAgICAgKGZQYXJlbnROb2RlUmVjdC55ICsgZlBhcmVudE5vZGVSZWN0LmhlaWdodCkgLSAoZkN1cnJlbnROb2RlUmVjdC55ICsgZkN1cnJlbnROb2RlUmVjdC5oZWlnaHQpLFxuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4geyAuLi5ERUZBVUxUX1JFU1RSSUNUSU9OUyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50Tm9kZVJlY3QoZk5vZGU6IEZOb2RlQmFzZSk6IElSZWN0IHtcbiAgICByZXR1cm4gdGhpcy5mTWVkaWF0b3Iuc2VuZDxJUmVjdD4obmV3IEdldE5vcm1hbGl6ZWROb2RlUmVjdFJlcXVlc3QoZk5vZGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50Tm9kZVJlY3QoZk5vZGU6IEZOb2RlQmFzZSk6IElSZWN0IHtcbiAgICByZXR1cm4gdGhpcy5mTWVkaWF0b3Iuc2VuZDxJUmVjdD4obmV3IEdldE5vcm1hbGl6ZWRQYXJlbnROb2RlUmVjdFJlcXVlc3QoZk5vZGUpKTtcbiAgfVxufVxuXG5jb25zdCBERUZBVUxUX1JFU1RSSUNUSU9OUzogSU5vZGVNb3ZlUmVzdHJpY3Rpb25zID0ge1xuICBtaW46IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKC1JbmZpbml0eSwgLUluZmluaXR5KSxcbiAgbWF4OiBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZShJbmZpbml0eSwgSW5maW5pdHkpXG59O1xuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW5vZGUtbW92ZS1yZXN0cmljdGlvbnMuZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWRyYWdnYWJsZS9ub2RlL2NyZWF0ZS1tb3ZlLW5vZGVzLWRyYWctbW9kZWwtZnJvbS1zZWxlY3Rpb24vZG9tYWluL2dldC1ub2RlLW1vdmUtcmVzdHJpY3Rpb25zL2dldC1ub2RlLW1vdmUtcmVzdHJpY3Rpb25zLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEYsT0FBTyxFQUFTLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBSWpFLElBQU0sZ0NBQWdDLEdBQXRDLE1BQU0sZ0NBQWdDO0lBR25DLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFaEMsTUFBTSxDQUFDLE9BQXVDO1FBQ25ELElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNoRSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsT0FBTztnQkFDTCxHQUFHLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFDL0csR0FBRyxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQzdCLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQzNGLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQzlGO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBZ0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBUSxJQUFJLCtCQUErQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBZ0I7UUFDeEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBUSxJQUFJLGtDQUFrQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQzt1R0ExQlUsZ0NBQWdDOzJHQUFoQyxnQ0FBZ0M7O0FBQWhDLGdDQUFnQztJQUQ1QyxrQkFBa0IsQ0FBQyw4QkFBOEIsQ0FBQztHQUN0QyxnQ0FBZ0MsQ0EyQjVDOzsyRkEzQlksZ0NBQWdDO2tCQUY1QyxVQUFVOztBQStCWCxNQUFNLG9CQUFvQixHQUEwQjtJQUNsRCxHQUFHLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUNyRCxHQUFHLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0NBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdldE5vZGVNb3ZlUmVzdHJpY3Rpb25zUmVxdWVzdCB9IGZyb20gJy4vZ2V0LW5vZGUtbW92ZS1yZXN0cmljdGlvbnMucmVxdWVzdCc7XG5pbXBvcnQgeyBJUmVjdCwgUG9pbnRFeHRlbnNpb25zIH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBJTm9kZU1vdmVSZXN0cmljdGlvbnMgfSBmcm9tICcuL2ktbm9kZS1tb3ZlLXJlc3RyaWN0aW9ucyc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgR2V0Tm9ybWFsaXplZFBhcmVudE5vZGVSZWN0UmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGTm9kZUJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9mLW5vZGUnO1xuaW1wb3J0IHsgR2V0Tm9ybWFsaXplZEVsZW1lbnRSZWN0UmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbic7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoR2V0Tm9kZU1vdmVSZXN0cmljdGlvbnNSZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIEdldE5vZGVNb3ZlUmVzdHJpY3Rpb25zRXhlY3V0aW9uXG4gIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxHZXROb2RlTW92ZVJlc3RyaWN0aW9uc1JlcXVlc3QsIElOb2RlTW92ZVJlc3RyaWN0aW9ucz4ge1xuXG4gIHByaXZhdGUgX2ZNZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuXG4gIHB1YmxpYyBoYW5kbGUocmVxdWVzdDogR2V0Tm9kZU1vdmVSZXN0cmljdGlvbnNSZXF1ZXN0KTogSU5vZGVNb3ZlUmVzdHJpY3Rpb25zIHtcbiAgICBpZiAocmVxdWVzdC5mTm9kZS5mUGFyZW50SWQgJiYgIXJlcXVlc3QuaGFzUGFyZW50Tm9kZUluU2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IGZQYXJlbnROb2RlUmVjdCA9IHRoaXMuZ2V0UGFyZW50Tm9kZVJlY3QocmVxdWVzdC5mTm9kZSk7XG4gICAgICBjb25zdCBmQ3VycmVudE5vZGVSZWN0ID0gdGhpcy5fZ2V0Tm9kZVJlY3QocmVxdWVzdC5mTm9kZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtaW46IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKGZQYXJlbnROb2RlUmVjdC54IC0gZkN1cnJlbnROb2RlUmVjdC54LCBmUGFyZW50Tm9kZVJlY3QueSAtIGZDdXJyZW50Tm9kZVJlY3QueSksXG4gICAgICAgIG1heDogUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoXG4gICAgICAgICAgKGZQYXJlbnROb2RlUmVjdC54ICsgZlBhcmVudE5vZGVSZWN0LndpZHRoKSAtIChmQ3VycmVudE5vZGVSZWN0LnggKyBmQ3VycmVudE5vZGVSZWN0LndpZHRoKSxcbiAgICAgICAgICAoZlBhcmVudE5vZGVSZWN0LnkgKyBmUGFyZW50Tm9kZVJlY3QuaGVpZ2h0KSAtIChmQ3VycmVudE5vZGVSZWN0LnkgKyBmQ3VycmVudE5vZGVSZWN0LmhlaWdodCksXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7IC4uLkRFRkFVTFRfUkVTVFJJQ1RJT05TIH07XG4gIH1cblxuICBwcml2YXRlIF9nZXROb2RlUmVjdChmTm9kZTogRk5vZGVCYXNlKTogSVJlY3Qge1xuICAgIHJldHVybiB0aGlzLl9mTWVkaWF0b3Iuc2VuZDxJUmVjdD4obmV3IEdldE5vcm1hbGl6ZWRFbGVtZW50UmVjdFJlcXVlc3QoZk5vZGUuaG9zdEVsZW1lbnQsIGZhbHNlKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhcmVudE5vZGVSZWN0KGZOb2RlOiBGTm9kZUJhc2UpOiBJUmVjdCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZNZWRpYXRvci5zZW5kPElSZWN0PihuZXcgR2V0Tm9ybWFsaXplZFBhcmVudE5vZGVSZWN0UmVxdWVzdChmTm9kZSkpO1xuICB9XG59XG5cbmNvbnN0IERFRkFVTFRfUkVTVFJJQ1RJT05TOiBJTm9kZU1vdmVSZXN0cmljdGlvbnMgPSB7XG4gIG1pbjogUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoLUluZmluaXR5LCAtSW5maW5pdHkpLFxuICBtYXg6IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKEluZmluaXR5LCBJbmZpbml0eSlcbn07XG4iXX0=
@@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
3
3
  import { NodeDragToParentPreparationRequest } from './node-drag-to-parent-preparation.request';
4
4
  import { FExecutionRegister } from '@foblex/mediator';
5
5
  import { PointExtensions, RectExtensions } from '@foblex/2d';
6
- import { GetNormalizedElementRectRequest } from '../../../domain';
6
+ import { GetNormalizedElementRectRequest, GetParentNodesRequest } from '../../../domain';
7
7
  import { NodeDragToParentDragHandler } from '../node-drag-to-parent.drag-handler';
8
8
  import { NodeDragHandler } from '../node.drag-handler';
9
9
  import * as i0 from "@angular/core";
@@ -34,23 +34,30 @@ let NodeDragToParentPreparationExecution = class NodeDragToParentPreparationExec
34
34
  if (!fNode) {
35
35
  throw new Error('Node not found');
36
36
  }
37
- this.fDraggableDataContext.draggableItems.push(new NodeDragToParentDragHandler(this.fComponentsStore, this.fDraggableDataContext, this.getNotDraggedNodesRects()));
37
+ this.fDraggableDataContext.draggableItems.push(new NodeDragToParentDragHandler(this.fComponentsStore, this.fDraggableDataContext, this._getNotDraggedNodesRects()));
38
38
  }
39
- getNotDraggedNodesRects() {
40
- return this.getNotDraggedNodes(this.getDraggedNodes()).map((x) => {
41
- const rect = this.fMediator.send(new GetNormalizedElementRectRequest(x.hostElement));
39
+ _getNotDraggedNodesRects() {
40
+ const draggedNodes = this._addParentNodes(this._getNodesBeingDragged());
41
+ return this._getNotDraggedNodes(draggedNodes).map((x) => {
42
+ const rect = this.fMediator.send(new GetNormalizedElementRectRequest(x.hostElement, false));
42
43
  return {
43
44
  node: x,
44
45
  rect: RectExtensions.initialize(rect.x + this.fCanvasPosition.x, rect.y + this.fCanvasPosition.y, rect.width * this.transform.scale, rect.height * this.transform.scale)
45
46
  };
46
47
  });
47
48
  }
48
- getDraggedNodes() {
49
+ _getNodesBeingDragged() {
49
50
  return this.fDraggableDataContext.draggableItems
50
51
  .filter((x) => x instanceof NodeDragHandler)
51
52
  .map((x) => x.fNode);
52
53
  }
53
- getNotDraggedNodes(draggedNodes) {
54
+ _addParentNodes(fNodes) {
55
+ return fNodes.reduce((result, x) => {
56
+ result.push(x, ...this.fMediator.send(new GetParentNodesRequest(x)));
57
+ return result;
58
+ }, []);
59
+ }
60
+ _getNotDraggedNodes(draggedNodes) {
54
61
  return this.fNodes.filter((x) => !draggedNodes.includes(x));
55
62
  }
56
63
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeDragToParentPreparationExecution, deps: [{ token: i1.FMediator }, { token: i2.FDraggableDataContext }, { token: i3.FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -63,4 +70,4 @@ export { NodeDragToParentPreparationExecution };
63
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeDragToParentPreparationExecution, decorators: [{
64
71
  type: Injectable
65
72
  }], ctorParameters: () => [{ type: i1.FMediator }, { type: i2.FDraggableDataContext }, { type: i3.FComponentsStore }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kcmFnLXRvLXBhcmVudC1wcmVwYXJhdGlvbi5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1kcmFnLXRvLXBhcmVudC1wcmVwYXJhdGlvbi9ub2RlLWRyYWctdG8tcGFyZW50LXByZXBhcmF0aW9uLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRixPQUFPLEVBQUUsa0JBQWtCLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7QUFHN0UsT0FBTyxFQUFrQyxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR2xFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFJaEQsSUFBTSxvQ0FBb0MsR0FBMUMsTUFBTSxvQ0FBb0M7SUFnQnJDO0lBQ0E7SUFDQTtJQWZWLElBQVksTUFBTTtRQUNoQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVksU0FBUztRQUNuQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFRLENBQUMsU0FBUyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFZLGVBQWU7UUFDekIsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDcEYsQ0FBQztJQUVELFlBQ1UsU0FBb0IsRUFDcEIscUJBQTRDLEVBQzVDLGdCQUFrQztRQUZsQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUU1QyxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQTJDO1FBQ3ZELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7YUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzVDLElBQUksMkJBQTJCLENBQzdCLElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUMzRCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFRLElBQUksK0JBQStCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDNUYsT0FBTztnQkFDTCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLEVBQUUsY0FBYyxDQUFDLFVBQVUsQ0FDN0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsRUFDL0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsRUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FDbkM7YUFDRixDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjO2FBQzdDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLGVBQWUsQ0FBQzthQUMzQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFlBQXlCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7dUdBNURVLG9DQUFvQzsyR0FBcEMsb0NBQW9DOztBQUFwQyxvQ0FBb0M7SUFEaEQsa0JBQWtCLENBQUMsa0NBQWtDLENBQUM7R0FDMUMsb0NBQW9DLENBNkRoRDs7MkZBN0RZLG9DQUFvQztrQkFGaEQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVEcmFnVG9QYXJlbnRQcmVwYXJhdGlvblJlcXVlc3QgfSBmcm9tICcuL25vZGUtZHJhZy10by1wYXJlbnQtcHJlcGFyYXRpb24ucmVxdWVzdCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBJTm9kZVdpdGhSZWN0IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IElQb2ludCwgSVJlY3QsIElUcmFuc2Zvcm1Nb2RlbCwgUG9pbnRFeHRlbnNpb25zLCBSZWN0RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgR2V0Tm9ybWFsaXplZEVsZW1lbnRSZWN0UmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGTm9kZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9mLW5vZGUnO1xuaW1wb3J0IHsgRkRyYWdnYWJsZURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vZi1kcmFnZ2FibGUtZGF0YS1jb250ZXh0JztcbmltcG9ydCB7IE5vZGVEcmFnVG9QYXJlbnREcmFnSGFuZGxlciB9IGZyb20gJy4uL25vZGUtZHJhZy10by1wYXJlbnQuZHJhZy1oYW5kbGVyJztcbmltcG9ydCB7IE5vZGVEcmFnSGFuZGxlciB9IGZyb20gJy4uL25vZGUuZHJhZy1oYW5kbGVyJztcblxuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihOb2RlRHJhZ1RvUGFyZW50UHJlcGFyYXRpb25SZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIE5vZGVEcmFnVG9QYXJlbnRQcmVwYXJhdGlvbkV4ZWN1dGlvblxuICBpbXBsZW1lbnRzIElFeGVjdXRpb248Tm9kZURyYWdUb1BhcmVudFByZXBhcmF0aW9uUmVxdWVzdCwgdm9pZD4ge1xuXG4gIHByaXZhdGUgZ2V0IGZOb2RlcygpOiBGTm9kZUJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuZkNvbXBvbmVudHNTdG9yZS5mTm9kZXM7XG4gIH1cblxuICBwcml2YXRlIGdldCB0cmFuc2Zvcm0oKTogSVRyYW5zZm9ybU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZDYW52YXMhLnRyYW5zZm9ybTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZDYW52YXNQb3NpdGlvbigpOiBJUG9pbnQge1xuICAgIHJldHVybiBQb2ludEV4dGVuc2lvbnMuc3VtKHRoaXMudHJhbnNmb3JtLnBvc2l0aW9uLCB0aGlzLnRyYW5zZm9ybS5zY2FsZWRQb3NpdGlvbilcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZk1lZGlhdG9yOiBGTWVkaWF0b3IsXG4gICAgcHJpdmF0ZSBmRHJhZ2dhYmxlRGF0YUNvbnRleHQ6IEZEcmFnZ2FibGVEYXRhQ29udGV4dCxcbiAgICBwcml2YXRlIGZDb21wb25lbnRzU3RvcmU6IEZDb21wb25lbnRzU3RvcmVcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IE5vZGVEcmFnVG9QYXJlbnRQcmVwYXJhdGlvblJlcXVlc3QpOiB2b2lkIHtcbiAgICBjb25zdCBmTm9kZSA9IHRoaXMuZkNvbXBvbmVudHNTdG9yZVxuICAgICAgLmZOb2Rlcy5maW5kKG4gPT4gbi5pc0NvbnRhaW5zKHJlcXVlc3QuZXZlbnQudGFyZ2V0RWxlbWVudCkpO1xuICAgIGlmICghZk5vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm9kZSBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICB0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5kcmFnZ2FibGVJdGVtcy5wdXNoKFxuICAgICAgbmV3IE5vZGVEcmFnVG9QYXJlbnREcmFnSGFuZGxlcihcbiAgICAgICAgdGhpcy5mQ29tcG9uZW50c1N0b3JlLFxuICAgICAgICB0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dCwgdGhpcy5nZXROb3REcmFnZ2VkTm9kZXNSZWN0cygpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Tm90RHJhZ2dlZE5vZGVzUmVjdHMoKTogSU5vZGVXaXRoUmVjdFtdIHtcbiAgICByZXR1cm4gdGhpcy5nZXROb3REcmFnZ2VkTm9kZXModGhpcy5nZXREcmFnZ2VkTm9kZXMoKSkubWFwKCh4KSA9PiB7XG4gICAgICBjb25zdCByZWN0ID0gdGhpcy5mTWVkaWF0b3Iuc2VuZDxJUmVjdD4obmV3IEdldE5vcm1hbGl6ZWRFbGVtZW50UmVjdFJlcXVlc3QoeC5ob3N0RWxlbWVudCkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZTogeCxcbiAgICAgICAgcmVjdDogUmVjdEV4dGVuc2lvbnMuaW5pdGlhbGl6ZShcbiAgICAgICAgICByZWN0LnggKyB0aGlzLmZDYW52YXNQb3NpdGlvbi54LFxuICAgICAgICAgIHJlY3QueSArIHRoaXMuZkNhbnZhc1Bvc2l0aW9uLnksXG4gICAgICAgICAgcmVjdC53aWR0aCAqIHRoaXMudHJhbnNmb3JtLnNjYWxlLFxuICAgICAgICAgIHJlY3QuaGVpZ2h0ICogdGhpcy50cmFuc2Zvcm0uc2NhbGVcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREcmFnZ2VkTm9kZXMoKTogRk5vZGVCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5kcmFnZ2FibGVJdGVtc1xuICAgICAgLmZpbHRlcigoeCkgPT4geCBpbnN0YW5jZW9mIE5vZGVEcmFnSGFuZGxlcilcbiAgICAgIC5tYXAoKHgpID0+ICh4IGFzIE5vZGVEcmFnSGFuZGxlcikuZk5vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROb3REcmFnZ2VkTm9kZXMoZHJhZ2dlZE5vZGVzOiBGTm9kZUJhc2VbXSk6IEZOb2RlQmFzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5mTm9kZXMuZmlsdGVyKCh4KSA9PiAhZHJhZ2dlZE5vZGVzLmluY2x1ZGVzKHgpKTtcbiAgfVxufVxuIl19
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kcmFnLXRvLXBhcmVudC1wcmVwYXJhdGlvbi5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1kcmFnLXRvLXBhcmVudC1wcmVwYXJhdGlvbi9ub2RlLWRyYWctdG8tcGFyZW50LXByZXBhcmF0aW9uLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRixPQUFPLEVBQUUsa0JBQWtCLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7QUFHN0UsT0FBTyxFQUFrQyxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3pGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFJaEQsSUFBTSxvQ0FBb0MsR0FBMUMsTUFBTSxvQ0FBb0M7SUFnQnJDO0lBQ0E7SUFDQTtJQWZWLElBQVksTUFBTTtRQUNoQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVksU0FBUztRQUNuQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFRLENBQUMsU0FBUyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFZLGVBQWU7UUFDekIsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUE7SUFD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LENBQUM7R0FDMUMsb0NBQW9DLENBcUVoRDs7MkZBckVZLG9DQUFvQztrQkFGaEQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVEcmFnVG9QYXJlbnRQcmVwYXJhdGlvblJlcXVlc3QgfSBmcm9tICcuL25vZGUtZHJhZy10by1wYXJlbnQtcHJlcGFyYXRpb24ucmVxdWVzdCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBJTm9kZVdpdGhSZWN0IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IElQb2ludCwgSVJlY3QsIElUcmFuc2Zvcm1Nb2RlbCwgUG9pbnRFeHRlbnNpb25zLCBSZWN0RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgR2V0Tm9ybWFsaXplZEVsZW1lbnRSZWN0UmVxdWVzdCwgR2V0UGFyZW50Tm9kZXNSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uLy4uLy4uL2Ytbm9kZSc7XG5pbXBvcnQgeyBGRHJhZ2dhYmxlRGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9mLWRyYWdnYWJsZS1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHsgTm9kZURyYWdUb1BhcmVudERyYWdIYW5kbGVyIH0gZnJvbSAnLi4vbm9kZS1kcmFnLXRvLXBhcmVudC5kcmFnLWhhbmRsZXInO1xuaW1wb3J0IHsgTm9kZURyYWdIYW5kbGVyIH0gZnJvbSAnLi4vbm9kZS5kcmFnLWhhbmRsZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKE5vZGVEcmFnVG9QYXJlbnRQcmVwYXJhdGlvblJlcXVlc3QpXG5leHBvcnQgY2xhc3MgTm9kZURyYWdUb1BhcmVudFByZXBhcmF0aW9uRXhlY3V0aW9uXG4gIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxOb2RlRHJhZ1RvUGFyZW50UHJlcGFyYXRpb25SZXF1ZXN0LCB2b2lkPiB7XG5cbiAgcHJpdmF0ZSBnZXQgZk5vZGVzKCk6IEZOb2RlQmFzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZOb2RlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHRyYW5zZm9ybSgpOiBJVHJhbnNmb3JtTW9kZWwge1xuICAgIHJldHVybiB0aGlzLmZDb21wb25lbnRzU3RvcmUuZkNhbnZhcyEudHJhbnNmb3JtO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZkNhbnZhc1Bvc2l0aW9uKCk6IElQb2ludCB7XG4gICAgcmV0dXJuIFBvaW50RXh0ZW5zaW9ucy5zdW0odGhpcy50cmFuc2Zvcm0ucG9zaXRpb24sIHRoaXMudHJhbnNmb3JtLnNjYWxlZFBvc2l0aW9uKVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmTWVkaWF0b3I6IEZNZWRpYXRvcixcbiAgICBwcml2YXRlIGZEcmFnZ2FibGVEYXRhQ29udGV4dDogRkRyYWdnYWJsZURhdGFDb250ZXh0LFxuICAgIHByaXZhdGUgZkNvbXBvbmVudHNTdG9yZTogRkNvbXBvbmVudHNTdG9yZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGUocmVxdWVzdDogTm9kZURyYWdUb1BhcmVudFByZXBhcmF0aW9uUmVxdWVzdCk6IHZvaWQge1xuICAgIGNvbnN0IGZOb2RlID0gdGhpcy5mQ29tcG9uZW50c1N0b3JlXG4gICAgICAuZk5vZGVzLmZpbmQobiA9PiBuLmlzQ29udGFpbnMocmVxdWVzdC5ldmVudC50YXJnZXRFbGVtZW50KSk7XG4gICAgaWYgKCFmTm9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb2RlIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zLnB1c2goXG4gICAgICBuZXcgTm9kZURyYWdUb1BhcmVudERyYWdIYW5kbGVyKFxuICAgICAgICB0aGlzLmZDb21wb25lbnRzU3RvcmUsXG4gICAgICAgIHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LCB0aGlzLl9nZXROb3REcmFnZ2VkTm9kZXNSZWN0cygpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5vdERyYWdnZWROb2Rlc1JlY3RzKCk6IElOb2RlV2l0aFJlY3RbXSB7XG4gICAgY29uc3QgZHJhZ2dlZE5vZGVzID0gdGhpcy5fYWRkUGFyZW50Tm9kZXModGhpcy5fZ2V0Tm9kZXNCZWluZ0RyYWdnZWQoKSk7XG4gICAgcmV0dXJuIHRoaXMuX2dldE5vdERyYWdnZWROb2RlcyhkcmFnZ2VkTm9kZXMpLm1hcCgoeCkgPT4ge1xuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZk1lZGlhdG9yLnNlbmQ8SVJlY3Q+KG5ldyBHZXROb3JtYWxpemVkRWxlbWVudFJlY3RSZXF1ZXN0KHguaG9zdEVsZW1lbnQsIGZhbHNlKSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBub2RlOiB4LFxuICAgICAgICByZWN0OiBSZWN0RXh0ZW5zaW9ucy5pbml0aWFsaXplKFxuICAgICAgICAgIHJlY3QueCArIHRoaXMuZkNhbnZhc1Bvc2l0aW9uLngsXG4gICAgICAgICAgcmVjdC55ICsgdGhpcy5mQ2FudmFzUG9zaXRpb24ueSxcbiAgICAgICAgICByZWN0LndpZHRoICogdGhpcy50cmFuc2Zvcm0uc2NhbGUsXG4gICAgICAgICAgcmVjdC5oZWlnaHQgKiB0aGlzLnRyYW5zZm9ybS5zY2FsZVxuICAgICAgICApXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXROb2Rlc0JlaW5nRHJhZ2dlZCgpOiBGTm9kZUJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4IGluc3RhbmNlb2YgTm9kZURyYWdIYW5kbGVyKVxuICAgICAgLm1hcCgoeCkgPT4geC5mTm9kZSk7XG4gIH1cblxuICBwcml2YXRlIF9hZGRQYXJlbnROb2RlcyhmTm9kZXM6IEZOb2RlQmFzZVtdKTogRk5vZGVCYXNlW10ge1xuICAgIHJldHVybiBmTm9kZXMucmVkdWNlKChyZXN1bHQ6IEZOb2RlQmFzZVtdLCB4OiBGTm9kZUJhc2UpID0+IHtcbiAgICAgIHJlc3VsdC5wdXNoKHgsIC4uLnRoaXMuZk1lZGlhdG9yLnNlbmQ8Rk5vZGVCYXNlW10+KG5ldyBHZXRQYXJlbnROb2Rlc1JlcXVlc3QoeCkpKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Tm90RHJhZ2dlZE5vZGVzKGRyYWdnZWROb2RlczogRk5vZGVCYXNlW10pOiBGTm9kZUJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuZk5vZGVzLmZpbHRlcigoeCkgPT4gIWRyYWdnZWROb2Rlcy5pbmNsdWRlcyh4KSk7XG4gIH1cbn1cbiJdfQ==
@@ -7,40 +7,55 @@ export class NodeDragToParentDragHandler {
7
7
  fComponentsStore;
8
8
  fDraggableDataContext;
9
9
  notDraggedNodesRects;
10
- get transform() {
10
+ DEBOUNCE_TIME = 15;
11
+ get _transform() {
11
12
  return this.fComponentsStore.fCanvas.transform;
12
13
  }
13
- onPointerDownPosition = PointExtensions.initialize();
14
+ _onPointerDownPosition = PointExtensions.initialize();
15
+ _debounceTimer = null;
14
16
  fNodeWithRect = null;
15
17
  constructor(fComponentsStore, fDraggableDataContext, notDraggedNodesRects) {
16
18
  this.fComponentsStore = fComponentsStore;
17
19
  this.fDraggableDataContext = fDraggableDataContext;
18
20
  this.notDraggedNodesRects = notDraggedNodesRects;
19
- this.onPointerDownPosition = this.fDraggableDataContext.onPointerDownPosition;
21
+ this._onPointerDownPosition = this.fDraggableDataContext.onPointerDownPosition;
20
22
  }
21
- onPointerMove(difference) {
22
- let point = Point.fromPoint(this.onPointerDownPosition).add(difference).mult(this.transform.scale);
23
- const isInclude = this.notDraggedNodesRects.findIndex((x) => RectExtensions.isIncludePoint(x.rect, point));
24
- if (isInclude !== -1) {
25
- this.markIncludeNode(this.notDraggedNodesRects[isInclude]);
23
+ _toggleParentNode(difference) {
24
+ const isInclude = this._isNodeInsideAnotherNode(this._getNewPosition(difference));
25
+ if (isInclude) {
26
+ this._markIncludeNode(isInclude);
26
27
  }
27
28
  else {
28
- this.unmarkIncludeNode();
29
+ this._unmarkIncludeNode();
30
+ }
31
+ }
32
+ _getNewPosition(difference) {
33
+ return Point.fromPoint(this._onPointerDownPosition).add(difference).mult(this._transform.scale);
34
+ }
35
+ _isNodeInsideAnotherNode(point) {
36
+ return this.notDraggedNodesRects.find((x) => RectExtensions.isIncludePoint(x.rect, point));
37
+ }
38
+ onPointerMove(difference) {
39
+ if (this._debounceTimer) {
40
+ clearTimeout(this._debounceTimer);
29
41
  }
42
+ this._debounceTimer = setTimeout(() => this._toggleParentNode(difference), this.DEBOUNCE_TIME);
30
43
  }
31
- markIncludeNode(nodeWithRect) {
32
- this.unmarkIncludeNode();
44
+ _markIncludeNode(nodeWithRect) {
45
+ this._unmarkIncludeNode();
33
46
  this.fNodeWithRect = nodeWithRect;
34
47
  nodeWithRect.node.setClass('f-parent-for-drop');
35
48
  }
36
- unmarkIncludeNode() {
37
- if (this.fNodeWithRect) {
38
- this.fNodeWithRect.node.removeClass('f-parent-for-drop');
39
- }
49
+ _unmarkIncludeNode() {
50
+ this.fNodeWithRect?.node.removeClass('f-parent-for-drop');
40
51
  this.fNodeWithRect = null;
41
52
  }
42
53
  onPointerUp() {
43
- this.unmarkIncludeNode();
54
+ this._unmarkIncludeNode();
55
+ if (this._debounceTimer) {
56
+ clearTimeout(this._debounceTimer);
57
+ this._debounceTimer = null;
58
+ }
44
59
  }
45
60
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeDragToParentDragHandler, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
46
61
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: NodeDragToParentDragHandler, ngImport: i0 });
@@ -48,4 +63,4 @@ export class NodeDragToParentDragHandler {
48
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeDragToParentDragHandler, decorators: [{
49
64
  type: Directive
50
65
  }], ctorParameters: () => [{ type: i1.FComponentsStore }, { type: i2.FDraggableDataContext }, { type: undefined }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kcmFnLXRvLXBhcmVudC5kcmFnLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1kcmFnLXRvLXBhcmVudC5kcmFnLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQTJCLEtBQUssRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7O0FBTzdGLE1BQU0sT0FBTywyQkFBMkI7SUFXNUI7SUFDQTtJQUNBO0lBWFYsSUFBWSxTQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQVEsQ0FBQyxTQUFTLENBQUM7SUFDbEQsQ0FBQztJQUVPLHFCQUFxQixHQUFXLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUU5RCxhQUFhLEdBQXlCLElBQUksQ0FBQztJQUVsRCxZQUNVLGdCQUFrQyxFQUNsQyxxQkFBNEMsRUFDNUMsb0JBQXFDO1FBRnJDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWlCO1FBRTdDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMscUJBQXFCLENBQUM7SUFDaEYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUFrQjtRQUNyQyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUEyQjtRQUNqRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7dUdBM0NVLDJCQUEyQjsyRkFBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUR2QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUG9pbnQsIElUcmFuc2Zvcm1Nb2RlbCwgUG9pbnQsIFBvaW50RXh0ZW5zaW9ucywgUmVjdEV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IElEcmFnZ2FibGVJdGVtIH0gZnJvbSAnLi4vaS1kcmFnZ2FibGUtaXRlbSc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IElOb2RlV2l0aFJlY3QgfSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgRkRyYWdnYWJsZURhdGFDb250ZXh0IH0gZnJvbSAnLi4vZi1kcmFnZ2FibGUtZGF0YS1jb250ZXh0JztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgTm9kZURyYWdUb1BhcmVudERyYWdIYW5kbGVyIGltcGxlbWVudHMgSURyYWdnYWJsZUl0ZW0ge1xuXG4gIHByaXZhdGUgZ2V0IHRyYW5zZm9ybSgpOiBJVHJhbnNmb3JtTW9kZWwge1xuICAgIHJldHVybiB0aGlzLmZDb21wb25lbnRzU3RvcmUuZkNhbnZhcyEudHJhbnNmb3JtO1xuICB9XG5cbiAgcHJpdmF0ZSBvblBvaW50ZXJEb3duUG9zaXRpb246IElQb2ludCA9IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG5cbiAgcHVibGljIGZOb2RlV2l0aFJlY3Q6IElOb2RlV2l0aFJlY3QgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZDb21wb25lbnRzU3RvcmU6IEZDb21wb25lbnRzU3RvcmUsXG4gICAgcHJpdmF0ZSBmRHJhZ2dhYmxlRGF0YUNvbnRleHQ6IEZEcmFnZ2FibGVEYXRhQ29udGV4dCxcbiAgICBwcml2YXRlIG5vdERyYWdnZWROb2Rlc1JlY3RzOiBJTm9kZVdpdGhSZWN0W10sXG4gICkge1xuICAgIHRoaXMub25Qb2ludGVyRG93blBvc2l0aW9uID0gdGhpcy5mRHJhZ2dhYmxlRGF0YUNvbnRleHQub25Qb2ludGVyRG93blBvc2l0aW9uO1xuICB9XG5cbiAgcHVibGljIG9uUG9pbnRlck1vdmUoZGlmZmVyZW5jZTogSVBvaW50KTogdm9pZCB7XG4gICAgbGV0IHBvaW50ID0gUG9pbnQuZnJvbVBvaW50KHRoaXMub25Qb2ludGVyRG93blBvc2l0aW9uKS5hZGQoZGlmZmVyZW5jZSkubXVsdCh0aGlzLnRyYW5zZm9ybS5zY2FsZSk7XG4gICAgY29uc3QgaXNJbmNsdWRlID0gdGhpcy5ub3REcmFnZ2VkTm9kZXNSZWN0cy5maW5kSW5kZXgoKHgpID0+IFJlY3RFeHRlbnNpb25zLmlzSW5jbHVkZVBvaW50KHgucmVjdCwgcG9pbnQpKTtcbiAgICBpZiAoaXNJbmNsdWRlICE9PSAtMSkge1xuICAgICAgdGhpcy5tYXJrSW5jbHVkZU5vZGUodGhpcy5ub3REcmFnZ2VkTm9kZXNSZWN0c1tpc0luY2x1ZGVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51bm1hcmtJbmNsdWRlTm9kZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFya0luY2x1ZGVOb2RlKG5vZGVXaXRoUmVjdDogSU5vZGVXaXRoUmVjdCk6IHZvaWQge1xuICAgIHRoaXMudW5tYXJrSW5jbHVkZU5vZGUoKTtcbiAgICB0aGlzLmZOb2RlV2l0aFJlY3QgPSBub2RlV2l0aFJlY3Q7XG4gICAgbm9kZVdpdGhSZWN0Lm5vZGUuc2V0Q2xhc3MoJ2YtcGFyZW50LWZvci1kcm9wJyk7XG4gIH1cblxuICBwcml2YXRlIHVubWFya0luY2x1ZGVOb2RlKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuZk5vZGVXaXRoUmVjdCkge1xuICAgICAgdGhpcy5mTm9kZVdpdGhSZWN0Lm5vZGUucmVtb3ZlQ2xhc3MoJ2YtcGFyZW50LWZvci1kcm9wJyk7XG4gICAgfVxuICAgIHRoaXMuZk5vZGVXaXRoUmVjdCA9IG51bGw7XG4gIH1cblxuICBwdWJsaWMgb25Qb2ludGVyVXAoKTogdm9pZCB7XG4gICAgdGhpcy51bm1hcmtJbmNsdWRlTm9kZSgpO1xuICB9XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kcmFnLXRvLXBhcmVudC5kcmFnLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1kcmFnLXRvLXBhcmVudC5kcmFnLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQTJCLEtBQUssRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7O0FBTzdGLE1BQU0sT0FBTywyQkFBMkI7SUFjNUI7SUFDQTtJQUNBO0lBZEYsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUUzQixJQUFZLFVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBUSxDQUFDLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sc0JBQXNCLEdBQVcsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzlELGNBQWMsR0FBUSxJQUFJLENBQUM7SUFFNUIsYUFBYSxHQUF5QixJQUFJLENBQUM7SUFFbEQsWUFDVSxnQkFBa0MsRUFDbEMscUJBQTRDLEVBQzVDLG9CQUFxQztRQUZyQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFpQjtRQUU3QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHFCQUFxQixDQUFDO0lBQ2pGLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxVQUFrQjtRQUMxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxVQUFrQjtRQUN4QyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxLQUFhO1FBQzVDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUFrQjtRQUNyQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxZQUEyQjtRQUNsRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQzt1R0FoRVUsMkJBQTJCOzJGQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRHZDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQb2ludCwgSVRyYW5zZm9ybU1vZGVsLCBQb2ludCwgUG9pbnRFeHRlbnNpb25zLCBSZWN0RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgSURyYWdnYWJsZUl0ZW0gfSBmcm9tICcuLi9pLWRyYWdnYWJsZS1pdGVtJztcbmltcG9ydCB7IEZDb21wb25lbnRzU3RvcmUgfSBmcm9tICcuLi8uLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgSU5vZGVXaXRoUmVjdCB9IGZyb20gJy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGRHJhZ2dhYmxlRGF0YUNvbnRleHQgfSBmcm9tICcuLi9mLWRyYWdnYWJsZS1kYXRhLWNvbnRleHQnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBOb2RlRHJhZ1RvUGFyZW50RHJhZ0hhbmRsZXIgaW1wbGVtZW50cyBJRHJhZ2dhYmxlSXRlbSB7XG5cbiAgcHJpdmF0ZSBERUJPVU5DRV9USU1FID0gMTU7XG5cbiAgcHJpdmF0ZSBnZXQgX3RyYW5zZm9ybSgpOiBJVHJhbnNmb3JtTW9kZWwge1xuICAgIHJldHVybiB0aGlzLmZDb21wb25lbnRzU3RvcmUuZkNhbnZhcyEudHJhbnNmb3JtO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25Qb2ludGVyRG93blBvc2l0aW9uOiBJUG9pbnQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuICBwcml2YXRlIF9kZWJvdW5jZVRpbWVyOiBhbnkgPSBudWxsO1xuXG4gIHB1YmxpYyBmTm9kZVdpdGhSZWN0OiBJTm9kZVdpdGhSZWN0IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmQ29tcG9uZW50c1N0b3JlOiBGQ29tcG9uZW50c1N0b3JlLFxuICAgIHByaXZhdGUgZkRyYWdnYWJsZURhdGFDb250ZXh0OiBGRHJhZ2dhYmxlRGF0YUNvbnRleHQsXG4gICAgcHJpdmF0ZSBub3REcmFnZ2VkTm9kZXNSZWN0czogSU5vZGVXaXRoUmVjdFtdLFxuICApIHtcbiAgICB0aGlzLl9vblBvaW50ZXJEb3duUG9zaXRpb24gPSB0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5vblBvaW50ZXJEb3duUG9zaXRpb247XG4gIH1cblxuICBwcml2YXRlIF90b2dnbGVQYXJlbnROb2RlKGRpZmZlcmVuY2U6IElQb2ludCk6IHZvaWQge1xuICAgIGNvbnN0IGlzSW5jbHVkZSA9IHRoaXMuX2lzTm9kZUluc2lkZUFub3RoZXJOb2RlKHRoaXMuX2dldE5ld1Bvc2l0aW9uKGRpZmZlcmVuY2UpKTtcbiAgICBpZiAoaXNJbmNsdWRlKSB7XG4gICAgICB0aGlzLl9tYXJrSW5jbHVkZU5vZGUoaXNJbmNsdWRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdW5tYXJrSW5jbHVkZU5vZGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXdQb3NpdGlvbihkaWZmZXJlbmNlOiBJUG9pbnQpOiBJUG9pbnQge1xuICAgIHJldHVybiBQb2ludC5mcm9tUG9pbnQodGhpcy5fb25Qb2ludGVyRG93blBvc2l0aW9uKS5hZGQoZGlmZmVyZW5jZSkubXVsdCh0aGlzLl90cmFuc2Zvcm0uc2NhbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNOb2RlSW5zaWRlQW5vdGhlck5vZGUocG9pbnQ6IElQb2ludCk6IElOb2RlV2l0aFJlY3QgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm5vdERyYWdnZWROb2Rlc1JlY3RzLmZpbmQoKHgpID0+IFJlY3RFeHRlbnNpb25zLmlzSW5jbHVkZVBvaW50KHgucmVjdCwgcG9pbnQpKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBvaW50ZXJNb3ZlKGRpZmZlcmVuY2U6IElQb2ludCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kZWJvdW5jZVRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fZGVib3VuY2VUaW1lcik7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVib3VuY2VUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fdG9nZ2xlUGFyZW50Tm9kZShkaWZmZXJlbmNlKSwgdGhpcy5ERUJPVU5DRV9USU1FKTtcbiAgfVxuXG4gIHByaXZhdGUgX21hcmtJbmNsdWRlTm9kZShub2RlV2l0aFJlY3Q6IElOb2RlV2l0aFJlY3QpOiB2b2lkIHtcbiAgICB0aGlzLl91bm1hcmtJbmNsdWRlTm9kZSgpO1xuICAgIHRoaXMuZk5vZGVXaXRoUmVjdCA9IG5vZGVXaXRoUmVjdDtcbiAgICBub2RlV2l0aFJlY3Qubm9kZS5zZXRDbGFzcygnZi1wYXJlbnQtZm9yLWRyb3AnKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VubWFya0luY2x1ZGVOb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuZk5vZGVXaXRoUmVjdD8ubm9kZS5yZW1vdmVDbGFzcygnZi1wYXJlbnQtZm9yLWRyb3AnKTtcbiAgICB0aGlzLmZOb2RlV2l0aFJlY3QgPSBudWxsO1xuICB9XG5cbiAgcHVibGljIG9uUG9pbnRlclVwKCk6IHZvaWQge1xuICAgIHRoaXMuX3VubWFya0luY2x1ZGVOb2RlKCk7XG5cbiAgICBpZiAodGhpcy5fZGVib3VuY2VUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2RlYm91bmNlVGltZXIpO1xuICAgICAgdGhpcy5fZGVib3VuY2VUaW1lciA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,53 +1,59 @@
1
1
  import { __decorate } from "tslib";
2
- import { Injectable } from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
3
  import { NodeMoveFinalizeRequest } from './node-move-finalize.request';
4
4
  import { Point } from '@foblex/2d';
5
- import { FExecutionRegister } from '@foblex/mediator';
6
- import { IsConnectionUnderNodeRequest } from '../../domain/is-connection-under-node/is-connection-under-node.request';
5
+ import { FExecutionRegister, FMediator } from '@foblex/mediator';
6
+ import { FComponentsStore } from '../../../f-storage';
7
+ import { FDraggableDataContext } from '../../f-draggable-data-context';
8
+ import { IsConnectionUnderNodeRequest } from '../../domain';
7
9
  import { NodeDragToParentDragHandler } from '../node-drag-to-parent.drag-handler';
10
+ import { NodeDragHandler } from '../node.drag-handler';
8
11
  import * as i0 from "@angular/core";
9
- import * as i1 from "../../../f-storage";
10
- import * as i2 from "../../f-draggable-data-context";
11
- import * as i3 from "@foblex/mediator";
12
12
  let NodeMoveFinalizeExecution = class NodeMoveFinalizeExecution {
13
- fComponentsStore;
14
- fDraggableDataContext;
15
- fMediator;
16
- get flowHost() {
17
- return this.fComponentsStore.fFlow.hostElement;
18
- }
19
- constructor(fComponentsStore, fDraggableDataContext, fMediator) {
20
- this.fComponentsStore = fComponentsStore;
21
- this.fDraggableDataContext = fDraggableDataContext;
22
- this.fMediator = fMediator;
13
+ _fMediator = inject(FMediator);
14
+ _fComponentsStore = inject(FComponentsStore);
15
+ _fDraggableDataContext = inject(FDraggableDataContext);
16
+ get _fHost() {
17
+ return this._fComponentsStore.fFlow.hostElement;
23
18
  }
24
19
  handle(request) {
25
- const difference = this.getDifferenceWithLineAlignment(this.getDifferenceBetweenPreparationAndFinalize(request.event.getPosition()));
26
- this.getItems().forEach((x) => {
20
+ const difference = this._getDifferenceWithLineAlignment(this._getDifferenceBetweenPreparationAndFinalize(request.event.getPosition()));
21
+ const firstNodeOrGroup = this._fDraggableDataContext.draggableItems
22
+ .find((x) => x instanceof NodeDragHandler);
23
+ const differenceWithCellSize = firstNodeOrGroup.getDifferenceWithCellSize(difference);
24
+ this._finalizeMove(differenceWithCellSize);
25
+ this._fMediator.send(new IsConnectionUnderNodeRequest());
26
+ this._fDraggableDataContext.fLineAlignment?.complete();
27
+ }
28
+ _finalizeMove(difference) {
29
+ this._getItems().forEach((x) => {
27
30
  x.onPointerMove({ ...difference });
28
31
  x.onPointerUp?.();
29
32
  });
30
- this.fMediator.send(new IsConnectionUnderNodeRequest());
31
- this.fDraggableDataContext.fLineAlignment?.complete();
32
33
  }
33
- getItems() {
34
- return this.fDraggableDataContext.draggableItems
34
+ _getItems() {
35
+ return this._fDraggableDataContext.draggableItems
35
36
  .filter((x) => !(x instanceof NodeDragToParentDragHandler));
36
37
  }
37
- getDifferenceBetweenPreparationAndFinalize(position) {
38
- return Point.fromPoint(position).elementTransform(this.flowHost)
39
- .div(this.fDraggableDataContext.onPointerDownScale)
40
- .sub(this.fDraggableDataContext.onPointerDownPosition);
38
+ _getDifferenceBetweenPreparationAndFinalize(position) {
39
+ return Point.fromPoint(position).elementTransform(this._fHost)
40
+ .div(this._fDraggableDataContext.onPointerDownScale)
41
+ .sub(this._fDraggableDataContext.onPointerDownPosition);
42
+ }
43
+ _getDifferenceWithLineAlignment(difference) {
44
+ return this._applyLineAlignmentDifference(difference, this._getLineAlignmentDifference(difference));
45
+ }
46
+ _getLineAlignmentDifference(difference) {
47
+ return this._fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);
41
48
  }
42
- getDifferenceWithLineAlignment(difference) {
43
- const intersection = this.fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);
49
+ _applyLineAlignmentDifference(difference, intersection) {
44
50
  if (intersection) {
45
51
  difference.x = intersection.xResult.value ? (difference.x - intersection.xResult.distance) : difference.x;
46
52
  difference.y = intersection.yResult.value ? (difference.y - intersection.yResult.distance) : difference.y;
47
53
  }
48
54
  return difference;
49
55
  }
50
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMoveFinalizeExecution, deps: [{ token: i1.FComponentsStore }, { token: i2.FDraggableDataContext }, { token: i3.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMoveFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
51
57
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMoveFinalizeExecution });
52
58
  };
53
59
  NodeMoveFinalizeExecution = __decorate([
@@ -56,5 +62,5 @@ NodeMoveFinalizeExecution = __decorate([
56
62
  export { NodeMoveFinalizeExecution };
57
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMoveFinalizeExecution, decorators: [{
58
64
  type: Injectable
59
- }], ctorParameters: () => [{ type: i1.FComponentsStore }, { type: i2.FDraggableDataContext }, { type: i3.FMediator }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1tb3ZlLWZpbmFsaXplLmV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1kcmFnZ2FibGUvbm9kZS9ub2RlLW1vdmUtZmluYWxpemUvbm9kZS1tb3ZlLWZpbmFsaXplLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQVUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBeUIsTUFBTSxrQkFBa0IsQ0FBQztBQUc3RSxPQUFPLEVBQ0wsNEJBQTRCLEVBQzdCLE1BQU0sd0VBQXdFLENBQUM7QUFFaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7O0FBSTNFLElBQU0seUJBQXlCLEdBQS9CLE1BQU0seUJBQXlCO0lBTzFCO0lBQ0E7SUFDQTtJQVBWLElBQVksUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFNLENBQUMsV0FBVyxDQUFDO0lBQ2xELENBQUM7SUFFRCxZQUNVLGdCQUFrQyxFQUNsQyxxQkFBNEMsRUFDNUMsU0FBb0I7UUFGcEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFFOUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFnQztRQUM1QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQ3BELElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQzdFLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVPLFFBQVE7UUFDZCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjO2FBQzdDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSwyQkFBMkIsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLDBDQUEwQyxDQUFDLFFBQWdCO1FBQ2pFLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQzdELEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLENBQUM7YUFDbEQsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyw4QkFBOEIsQ0FBQyxVQUFrQjtRQUN2RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xHLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsVUFBVSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDM0csVUFBVSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDN0csQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7dUdBM0NVLHlCQUF5QjsyR0FBekIseUJBQXlCOztBQUF6Qix5QkFBeUI7SUFEckMsa0JBQWtCLENBQUMsdUJBQXVCLENBQUM7R0FDL0IseUJBQXlCLENBNENyQzs7MkZBNUNZLHlCQUF5QjtrQkFGckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVNb3ZlRmluYWxpemVSZXF1ZXN0IH0gZnJvbSAnLi9ub2RlLW1vdmUtZmluYWxpemUucmVxdWVzdCc7XG5pbXBvcnQgeyBJUG9pbnQsIFBvaW50IH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGRHJhZ2dhYmxlRGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9mLWRyYWdnYWJsZS1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtcbiAgSXNDb25uZWN0aW9uVW5kZXJOb2RlUmVxdWVzdFxufSBmcm9tICcuLi8uLi9kb21haW4vaXMtY29ubmVjdGlvbi11bmRlci1ub2RlL2lzLWNvbm5lY3Rpb24tdW5kZXItbm9kZS5yZXF1ZXN0JztcbmltcG9ydCB7IElEcmFnZ2FibGVJdGVtIH0gZnJvbSAnLi4vLi4vaS1kcmFnZ2FibGUtaXRlbSc7XG5pbXBvcnQgeyBOb2RlRHJhZ1RvUGFyZW50RHJhZ0hhbmRsZXIgfSBmcm9tICcuLi9ub2RlLWRyYWctdG8tcGFyZW50LmRyYWctaGFuZGxlcic7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoTm9kZU1vdmVGaW5hbGl6ZVJlcXVlc3QpXG5leHBvcnQgY2xhc3MgTm9kZU1vdmVGaW5hbGl6ZUV4ZWN1dGlvbiBpbXBsZW1lbnRzIElFeGVjdXRpb248Tm9kZU1vdmVGaW5hbGl6ZVJlcXVlc3QsIHZvaWQ+IHtcblxuICBwcml2YXRlIGdldCBmbG93SG9zdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZkNvbXBvbmVudHNTdG9yZS5mRmxvdyEuaG9zdEVsZW1lbnQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZDb21wb25lbnRzU3RvcmU6IEZDb21wb25lbnRzU3RvcmUsXG4gICAgcHJpdmF0ZSBmRHJhZ2dhYmxlRGF0YUNvbnRleHQ6IEZEcmFnZ2FibGVEYXRhQ29udGV4dCxcbiAgICBwcml2YXRlIGZNZWRpYXRvcjogRk1lZGlhdG9yXG4gICkge1xuICB9XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBOb2RlTW92ZUZpbmFsaXplUmVxdWVzdCk6IHZvaWQge1xuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLmdldERpZmZlcmVuY2VXaXRoTGluZUFsaWdubWVudChcbiAgICAgIHRoaXMuZ2V0RGlmZmVyZW5jZUJldHdlZW5QcmVwYXJhdGlvbkFuZEZpbmFsaXplKHJlcXVlc3QuZXZlbnQuZ2V0UG9zaXRpb24oKSlcbiAgICApO1xuICAgIHRoaXMuZ2V0SXRlbXMoKS5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICB4Lm9uUG9pbnRlck1vdmUoeyAuLi5kaWZmZXJlbmNlIH0pO1xuICAgICAgeC5vblBvaW50ZXJVcD8uKCk7XG4gICAgfSk7XG4gICAgdGhpcy5mTWVkaWF0b3Iuc2VuZChuZXcgSXNDb25uZWN0aW9uVW5kZXJOb2RlUmVxdWVzdCgpKTtcbiAgICB0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5mTGluZUFsaWdubWVudD8uY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbXMoKTogSURyYWdnYWJsZUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zXG4gICAgICAuZmlsdGVyKCh4KSA9PiAhKHggaW5zdGFuY2VvZiBOb2RlRHJhZ1RvUGFyZW50RHJhZ0hhbmRsZXIpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlmZmVyZW5jZUJldHdlZW5QcmVwYXJhdGlvbkFuZEZpbmFsaXplKHBvc2l0aW9uOiBJUG9pbnQpOiBQb2ludCB7XG4gICAgcmV0dXJuIFBvaW50LmZyb21Qb2ludChwb3NpdGlvbikuZWxlbWVudFRyYW5zZm9ybSh0aGlzLmZsb3dIb3N0KVxuICAgICAgLmRpdih0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5vblBvaW50ZXJEb3duU2NhbGUpXG4gICAgICAuc3ViKHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0Lm9uUG9pbnRlckRvd25Qb3NpdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGdldERpZmZlcmVuY2VXaXRoTGluZUFsaWdubWVudChkaWZmZXJlbmNlOiBJUG9pbnQpOiBJUG9pbnQge1xuICAgIGNvbnN0IGludGVyc2VjdGlvbiA9IHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LmZMaW5lQWxpZ25tZW50Py5maW5kTmVhcmVzdENvb3JkaW5hdGUoZGlmZmVyZW5jZSk7XG4gICAgaWYgKGludGVyc2VjdGlvbikge1xuICAgICAgZGlmZmVyZW5jZS54ID0gaW50ZXJzZWN0aW9uLnhSZXN1bHQudmFsdWUgPyAoZGlmZmVyZW5jZS54IC0gaW50ZXJzZWN0aW9uLnhSZXN1bHQuZGlzdGFuY2UhKSA6IGRpZmZlcmVuY2UueDtcbiAgICAgIGRpZmZlcmVuY2UueSA9IGludGVyc2VjdGlvbi55UmVzdWx0LnZhbHVlID8gKGRpZmZlcmVuY2UueSAtIGludGVyc2VjdGlvbi55UmVzdWx0LmRpc3RhbmNlISkgOiBkaWZmZXJlbmNlLnk7XG4gICAgfVxuICAgIHJldHVybiBkaWZmZXJlbmNlO1xuICB9XG59XG4iXX0=
65
+ }] });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1tb3ZlLWZpbmFsaXplLmV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1kcmFnZ2FibGUvbm9kZS9ub2RlLW1vdmUtZmluYWxpemUvbm9kZS1tb3ZlLWZpbmFsaXplLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFVLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUNMLDRCQUE0QixFQUM3QixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSWhELElBQU0seUJBQXlCLEdBQS9CLE1BQU0seUJBQXlCO0lBRTVCLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0Msc0JBQXNCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFL0QsSUFBWSxNQUFNO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQU0sQ0FBQyxXQUFXLENBQUM7SUFDbkQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFnQztRQUM1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cnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVNb3ZlRmluYWxpemVSZXF1ZXN0IH0gZnJvbSAnLi9ub2RlLW1vdmUtZmluYWxpemUucmVxdWVzdCc7XG5pbXBvcnQgeyBJUG9pbnQsIFBvaW50IH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGRHJhZ2dhYmxlRGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9mLWRyYWdnYWJsZS1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtcbiAgSXNDb25uZWN0aW9uVW5kZXJOb2RlUmVxdWVzdFxufSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgSURyYWdnYWJsZUl0ZW0gfSBmcm9tICcuLi8uLi9pLWRyYWdnYWJsZS1pdGVtJztcbmltcG9ydCB7IE5vZGVEcmFnVG9QYXJlbnREcmFnSGFuZGxlciB9IGZyb20gJy4uL25vZGUtZHJhZy10by1wYXJlbnQuZHJhZy1oYW5kbGVyJztcbmltcG9ydCB7IElMaW5lQWxpZ25tZW50UmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vZi1saW5lLWFsaWdubWVudCc7XG5pbXBvcnQgeyBOb2RlRHJhZ0hhbmRsZXIgfSBmcm9tICcuLi9ub2RlLmRyYWctaGFuZGxlcic7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoTm9kZU1vdmVGaW5hbGl6ZVJlcXVlc3QpXG5leHBvcnQgY2xhc3MgTm9kZU1vdmVGaW5hbGl6ZUV4ZWN1dGlvbiBpbXBsZW1lbnRzIElFeGVjdXRpb248Tm9kZU1vdmVGaW5hbGl6ZVJlcXVlc3QsIHZvaWQ+IHtcblxuICBwcml2YXRlIF9mTWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcbiAgcHJpdmF0ZSBfZkNvbXBvbmVudHNTdG9yZSA9IGluamVjdChGQ29tcG9uZW50c1N0b3JlKTtcbiAgcHJpdmF0ZSBfZkRyYWdnYWJsZURhdGFDb250ZXh0ID0gaW5qZWN0KEZEcmFnZ2FibGVEYXRhQ29udGV4dCk7XG5cbiAgcHJpdmF0ZSBnZXQgX2ZIb3N0KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mRmxvdyEuaG9zdEVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IE5vZGVNb3ZlRmluYWxpemVSZXF1ZXN0KTogdm9pZCB7XG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMuX2dldERpZmZlcmVuY2VXaXRoTGluZUFsaWdubWVudChcbiAgICAgIHRoaXMuX2dldERpZmZlcmVuY2VCZXR3ZWVuUHJlcGFyYXRpb25BbmRGaW5hbGl6ZShyZXF1ZXN0LmV2ZW50LmdldFBvc2l0aW9uKCkpXG4gICAgKTtcblxuICAgIGNvbnN0IGZpcnN0Tm9kZU9yR3JvdXA6IE5vZGVEcmFnSGFuZGxlciA9IHRoaXMuX2ZEcmFnZ2FibGVEYXRhQ29udGV4dC5kcmFnZ2FibGVJdGVtc1xuICAgICAgLmZpbmQoKHgpID0+IHggaW5zdGFuY2VvZiBOb2RlRHJhZ0hhbmRsZXIpITtcblxuICAgIGNvbnN0IGRpZmZlcmVuY2VXaXRoQ2VsbFNpemUgPSBmaXJzdE5vZGVPckdyb3VwLmdldERpZmZlcmVuY2VXaXRoQ2VsbFNpemUoZGlmZmVyZW5jZSk7XG5cbiAgICB0aGlzLl9maW5hbGl6ZU1vdmUoZGlmZmVyZW5jZVdpdGhDZWxsU2l6ZSk7XG5cbiAgICB0aGlzLl9mTWVkaWF0b3Iuc2VuZChuZXcgSXNDb25uZWN0aW9uVW5kZXJOb2RlUmVxdWVzdCgpKTtcbiAgICB0aGlzLl9mRHJhZ2dhYmxlRGF0YUNvbnRleHQuZkxpbmVBbGlnbm1lbnQ/LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9maW5hbGl6ZU1vdmUoZGlmZmVyZW5jZTogSVBvaW50KTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0SXRlbXMoKS5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICB4Lm9uUG9pbnRlck1vdmUoeyAuLi5kaWZmZXJlbmNlIH0pO1xuICAgICAgeC5vblBvaW50ZXJVcD8uKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJdGVtcygpOiBJRHJhZ2dhYmxlSXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zXG4gICAgICAuZmlsdGVyKCh4KSA9PiAhKHggaW5zdGFuY2VvZiBOb2RlRHJhZ1RvUGFyZW50RHJhZ0hhbmRsZXIpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERpZmZlcmVuY2VCZXR3ZWVuUHJlcGFyYXRpb25BbmRGaW5hbGl6ZShwb3NpdGlvbjogSVBvaW50KTogUG9pbnQge1xuICAgIHJldHVybiBQb2ludC5mcm9tUG9pbnQocG9zaXRpb24pLmVsZW1lbnRUcmFuc2Zvcm0odGhpcy5fZkhvc3QpXG4gICAgICAuZGl2KHRoaXMuX2ZEcmFnZ2FibGVEYXRhQ29udGV4dC5vblBvaW50ZXJEb3duU2NhbGUpXG4gICAgICAuc3ViKHRoaXMuX2ZEcmFnZ2FibGVEYXRhQ29udGV4dC5vblBvaW50ZXJEb3duUG9zaXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGlmZmVyZW5jZVdpdGhMaW5lQWxpZ25tZW50KGRpZmZlcmVuY2U6IElQb2ludCk6IElQb2ludCB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGx5TGluZUFsaWdubWVudERpZmZlcmVuY2UoXG4gICAgICBkaWZmZXJlbmNlLFxuICAgICAgdGhpcy5fZ2V0TGluZUFsaWdubWVudERpZmZlcmVuY2UoZGlmZmVyZW5jZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TGluZUFsaWdubWVudERpZmZlcmVuY2UoZGlmZmVyZW5jZTogSVBvaW50KTogSUxpbmVBbGlnbm1lbnRSZXN1bHQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9mRHJhZ2dhYmxlRGF0YUNvbnRleHQuZkxpbmVBbGlnbm1lbnQ/LmZpbmROZWFyZXN0Q29vcmRpbmF0ZShkaWZmZXJlbmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5TGluZUFsaWdubWVudERpZmZlcmVuY2UoZGlmZmVyZW5jZTogSVBvaW50LCBpbnRlcnNlY3Rpb246IElMaW5lQWxpZ25tZW50UmVzdWx0IHwgdW5kZWZpbmVkKTogSVBvaW50IHtcbiAgICBpZiAoaW50ZXJzZWN0aW9uKSB7XG4gICAgICBkaWZmZXJlbmNlLnggPSBpbnRlcnNlY3Rpb24ueFJlc3VsdC52YWx1ZSA/IChkaWZmZXJlbmNlLnggLSBpbnRlcnNlY3Rpb24ueFJlc3VsdC5kaXN0YW5jZSEpIDogZGlmZmVyZW5jZS54O1xuICAgICAgZGlmZmVyZW5jZS55ID0gaW50ZXJzZWN0aW9uLnlSZXN1bHQudmFsdWUgPyAoZGlmZmVyZW5jZS55IC0gaW50ZXJzZWN0aW9uLnlSZXN1bHQuZGlzdGFuY2UhKSA6IGRpZmZlcmVuY2UueTtcbiAgICB9XG4gICAgcmV0dXJuIGRpZmZlcmVuY2U7XG4gIH1cbn1cbiJdfQ==