@foblex/flow 17.0.8 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/domain/f-background/providers.d.ts +1 -1
  2. package/domain/f-canvas/providers.d.ts +1 -1
  3. package/domain/f-draggable/providers.d.ts +1 -1
  4. package/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.d.ts +2 -3
  5. package/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.d.ts +2 -2
  6. package/domain/f-flow/get-flow-state/get-flow-state.execution.d.ts +4 -6
  7. package/domain/f-flow/get-flow-state/providers.d.ts +1 -1
  8. package/domain/f-flow/providers.d.ts +1 -1
  9. package/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.request.d.ts +3 -0
  10. package/domain/f-node/providers.d.ts +1 -1
  11. package/domain/index.d.ts +1 -0
  12. package/domain/log-execution-time.d.ts +1 -0
  13. package/domain/providers.d.ts +1 -1
  14. package/esm2022/domain/f-draggable/emit-selection-change-event/emit-selection-change-event.execution.mjs +2 -2
  15. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.mjs +17 -19
  16. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.mjs +5 -5
  17. package/esm2022/domain/f-flow/get-flow-state/get-flow-state.execution.mjs +14 -19
  18. package/esm2022/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store.execution.mjs +2 -2
  19. package/esm2022/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store.execution.mjs +2 -2
  20. package/esm2022/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.execution.mjs +4 -4
  21. package/esm2022/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.request.mjs +5 -1
  22. package/esm2022/domain/index.mjs +2 -1
  23. package/esm2022/domain/log-execution-time.mjs +16 -0
  24. package/esm2022/f-connection/common/f-drag-handle/f-connection-drag-handle.component.mjs +6 -4
  25. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.mjs +25 -19
  26. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/index.mjs +1 -2
  27. package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +3 -3
  28. package/esm2022/f-draggable/connections/providers.mjs +3 -5
  29. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.mjs +33 -33
  30. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.mjs +1 -2
  31. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.mjs +46 -42
  32. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +9 -3
  33. package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.mjs +8 -17
  34. package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.mjs +6 -6
  35. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +26 -22
  36. package/esm2022/f-draggable/f-draggable-base.mjs +1 -1
  37. package/esm2022/f-draggable/f-draggable-data-context.mjs +4 -2
  38. package/esm2022/f-draggable/f-draggable.directive.mjs +11 -7
  39. package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +1 -1
  40. package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +5 -7
  41. package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +5 -7
  42. package/esm2022/f-draggable/node/connection.drag-handler.mjs +5 -5
  43. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.mjs +37 -22
  44. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/calculate-common-node-move-restrictions.execution.mjs +40 -0
  45. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/calculate-common-node-move-restrictions.request.mjs +7 -0
  46. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/index.mjs +3 -0
  47. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.execution.mjs +42 -0
  48. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.request.mjs +9 -0
  49. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/index.mjs +3 -0
  50. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.mjs +16 -21
  51. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.mjs +4 -4
  52. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.mjs +1 -1
  53. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/index.mjs +3 -2
  54. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.mjs +5 -3
  55. package/esm2022/f-draggable/node/index.mjs +3 -1
  56. package/esm2022/f-draggable/node/line-alignment-preparation/index.mjs +3 -0
  57. package/esm2022/f-draggable/node/line-alignment-preparation/line-alignment-preparation.execution.mjs +67 -0
  58. package/esm2022/f-draggable/node/line-alignment-preparation/line-alignment-preparation.request.mjs +3 -0
  59. package/esm2022/f-draggable/node/line-alignment.drag-handler.mjs +61 -0
  60. package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +8 -6
  61. package/esm2022/f-draggable/node/node-move-preparation/index.mjs +1 -2
  62. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.execution.mjs +26 -21
  63. package/esm2022/f-draggable/node/node-move-preparation/providers.mjs +1 -3
  64. package/esm2022/f-draggable/node/node.drag-handler.mjs +13 -19
  65. package/esm2022/f-draggable/node/providers.mjs +3 -1
  66. package/esm2022/f-draggable/single-select/index.mjs +1 -2
  67. package/esm2022/f-draggable/single-select/providers.mjs +1 -3
  68. package/esm2022/f-draggable/single-select/single-select.execution.mjs +8 -1
  69. package/esm2022/f-line-alignment/f-line-alignment-base.mjs +1 -1
  70. package/esm2022/f-line-alignment/f-line-alignment.component.mjs +12 -78
  71. package/esm2022/f-storage/f-components-store.mjs +2 -1
  72. package/f-backgroud/providers.d.ts +1 -1
  73. package/f-connection/common/f-drag-handle/f-connection-drag-handle.component.d.ts +2 -0
  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-preparation/create-connection-preparation.execution.d.ts +6 -6
  77. package/f-draggable/connections/create-connection/create-connection-preparation/index.d.ts +0 -1
  78. package/f-draggable/connections/providers.d.ts +3 -3
  79. package/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.d.ts +12 -13
  80. package/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.d.ts +0 -1
  81. package/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.d.ts +14 -16
  82. package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +2 -0
  83. package/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.d.ts +3 -6
  84. package/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.d.ts +3 -3
  85. package/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.d.ts +3 -2
  86. package/f-draggable/f-draggable-base.d.ts +1 -0
  87. package/f-draggable/f-draggable-data-context.d.ts +1 -2
  88. package/f-draggable/f-draggable.directive.d.ts +3 -1
  89. package/f-draggable/node/connection-base-drag-handler.d.ts +2 -3
  90. package/f-draggable/node/connection-source.drag-handler.d.ts +3 -4
  91. package/f-draggable/node/connection-target.drag-handler.d.ts +3 -4
  92. package/f-draggable/node/connection.drag-handler.d.ts +3 -3
  93. package/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.d.ts +6 -3
  94. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/calculate-common-node-move-restrictions.execution.d.ts +13 -0
  95. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/calculate-common-node-move-restrictions.request.d.ts +5 -0
  96. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/index.d.ts +2 -0
  97. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.execution.d.ts +12 -0
  98. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/{get-node-move-restrictions/get-node-move-restrictions.request.d.ts → calculate-node-move-restrictions/calculate-node-move-restrictions.request.d.ts} +1 -1
  99. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/index.d.ts +2 -0
  100. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.d.ts +4 -6
  101. package/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.d.ts +4 -4
  102. package/f-draggable/node/create-move-nodes-drag-model-from-selection/index.d.ts +2 -1
  103. package/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.d.ts +3 -2
  104. package/f-draggable/node/index.d.ts +2 -0
  105. package/f-draggable/node/line-alignment-preparation/index.d.ts +2 -0
  106. package/f-draggable/node/line-alignment-preparation/line-alignment-preparation.execution.d.ts +21 -0
  107. package/f-draggable/node/line-alignment-preparation/line-alignment-preparation.request.d.ts +2 -0
  108. package/f-draggable/node/line-alignment.drag-handler.d.ts +20 -0
  109. package/f-draggable/node/node-move-finalize/node-move-finalize.execution.d.ts +1 -1
  110. package/f-draggable/node/node-move-preparation/index.d.ts +0 -1
  111. package/f-draggable/node/node-move-preparation/node-move-preparation.execution.d.ts +4 -3
  112. package/f-draggable/node/node-move-preparation/providers.d.ts +1 -2
  113. package/f-draggable/node/node.drag-handler.d.ts +4 -7
  114. package/f-draggable/node/providers.d.ts +2 -1
  115. package/f-draggable/node-resize/node-resize-preparation/providers.d.ts +1 -1
  116. package/f-draggable/node-resize/providers.d.ts +1 -1
  117. package/f-draggable/providers.d.ts +1 -1
  118. package/f-draggable/single-select/index.d.ts +0 -1
  119. package/f-draggable/single-select/providers.d.ts +1 -2
  120. package/f-draggable/single-select/single-select.execution.d.ts +1 -0
  121. package/f-line-alignment/f-line-alignment-base.d.ts +2 -8
  122. package/f-line-alignment/f-line-alignment.component.d.ts +6 -25
  123. package/f-minimap/domain/providers.d.ts +1 -1
  124. package/f-node/providers.d.ts +1 -1
  125. package/f-storage/f-components-store.d.ts +2 -0
  126. package/f-storage/providers.d.ts +1 -1
  127. package/fesm2022/foblex-flow.mjs +654 -624
  128. package/fesm2022/foblex-flow.mjs.map +1 -1
  129. package/package.json +2 -2
  130. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.mjs +0 -35
  131. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.mjs +0 -47
  132. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.mjs +0 -42
  133. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.mjs +0 -9
  134. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.mjs +0 -2
  135. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/index.mjs +0 -4
  136. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.validator.mjs +0 -39
  137. package/esm2022/f-draggable/single-select/single-select.validator.mjs +0 -29
  138. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.d.ts +0 -15
  139. package/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.d.ts +0 -20
  140. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.d.ts +0 -12
  141. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.d.ts +0 -5
  142. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/index.d.ts +0 -3
  143. package/f-draggable/node/node-move-preparation/node-move-preparation.validator.d.ts +0 -14
  144. package/f-draggable/single-select/single-select.validator.d.ts +0 -13
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, Injectable, Directive, ElementRef, Input, HostBinding, EventEmitter, DestroyRef, Output, booleanAttribute, Inject, Component, ChangeDetectionStrategy, ViewChild, Optional, ContentChildren, NgZone, ContentChild, NgModule } from '@angular/core';
3
- import { RectExtensions, RoundedRect, TransformModelExtensions, PointExtensions, Point, SizeExtensions, LineExtensions, GetIntersections, setRectToElement, adjustRectToMinSize, findClosestAlignment, setRectToViewBox } from '@foblex/2d';
3
+ import { RectExtensions, RoundedRect, TransformModelExtensions, PointExtensions, Point, SizeExtensions, LineExtensions, GetIntersections, findClosestAlignment, setRectToElement, adjustRectToMinSize, setRectToViewBox } from '@foblex/2d';
4
4
  import { __decorate } from 'tslib';
5
5
  import * as i2 from '@foblex/mediator';
6
6
  import { FExecutionRegister, FMediator, FValidatorRegister } from '@foblex/mediator';
@@ -229,6 +229,7 @@ class FComponentsStore {
229
229
  fInputs = [];
230
230
  fOutlets = [];
231
231
  fDraggable;
232
+ fLineAlignment;
232
233
  addComponent(collection, component) {
233
234
  collection.push(component);
234
235
  this.countChanged();
@@ -2243,6 +2244,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
2243
2244
  const F_CONNECTION_DRAG_HANDLE_CLASS = 'f-connection-drag-handle';
2244
2245
  class FConnectionDragHandleComponent {
2245
2246
  elementReference;
2247
+ point;
2248
+ radius = 8;
2246
2249
  class = F_CONNECTION_DRAG_HANDLE_CLASS;
2247
2250
  get hostElement() {
2248
2251
  return this.elementReference.nativeElement;
@@ -2251,9 +2254,9 @@ class FConnectionDragHandleComponent {
2251
2254
  this.elementReference = elementReference;
2252
2255
  }
2253
2256
  redraw(penultimatePoint, endPoint) {
2254
- const point = this._calculateCircleCenter(penultimatePoint, endPoint, 8);
2255
- this.hostElement.setAttribute('cx', point.x.toString());
2256
- this.hostElement.setAttribute('cy', point.y.toString());
2257
+ this.point = this._calculateCircleCenter(penultimatePoint, endPoint, 8);
2258
+ this.hostElement.setAttribute('cx', this.point.x.toString());
2259
+ this.hostElement.setAttribute('cy', this.point.y.toString());
2257
2260
  }
2258
2261
  _calculateCircleCenter(start, end, radius) {
2259
2262
  const direction = { x: end.x - start.x, y: end.y - start.y };
@@ -3353,7 +3356,6 @@ class FDraggableDataContext {
3353
3356
  onPointerDownScale = 1;
3354
3357
  onPointerDownPosition = new Point(0, 0);
3355
3358
  draggableItems = [];
3356
- fLineAlignment;
3357
3359
  reset() {
3358
3360
  this.draggableItems = [];
3359
3361
  this.onPointerDownScale = 1;
@@ -3362,6 +3364,9 @@ class FDraggableDataContext {
3362
3364
  markSelectionAsChanged() {
3363
3365
  this.isSelectedChanged = true;
3364
3366
  }
3367
+ isEmpty() {
3368
+ return !this.draggableItems.length;
3369
+ }
3365
3370
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDraggableDataContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3366
3371
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDraggableDataContext });
3367
3372
  }
@@ -3642,13 +3647,13 @@ class CreateConnectionDragHandler {
3642
3647
  }
3643
3648
  }
3644
3649
  _drawConnectionForCreate(fInputRect, fSide) {
3645
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fSide));
3650
+ const line = this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fSide));
3646
3651
  this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);
3647
3652
  this.fConnection.redraw();
3648
3653
  }
3649
3654
  _drawSnapConnection(fClosestInput) {
3650
3655
  if (fClosestInput) {
3651
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fClosestInput.fRect, this.fSnapConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
3656
+ const line = this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fClosestInput.fRect, this.fSnapConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
3652
3657
  this.fSnapConnection.show();
3653
3658
  this.fSnapConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);
3654
3659
  this.fSnapConnection.redraw();
@@ -4013,31 +4018,37 @@ class CreateConnectionPreparationRequest {
4013
4018
  }
4014
4019
 
4015
4020
  let CreateConnectionPreparationExecution = class CreateConnectionPreparationExecution {
4016
- fComponentsStore;
4017
- fMediator;
4018
- constructor(fComponentsStore, fMediator) {
4019
- this.fComponentsStore = fComponentsStore;
4020
- this.fMediator = fMediator;
4021
- }
4021
+ _fMediator = inject(FMediator);
4022
+ _fComponentsStore = inject(FComponentsStore);
4023
+ _fDraggableDataContext = inject(FDraggableDataContext);
4022
4024
  handle(request) {
4025
+ if (!this._isValid(request)) {
4026
+ return;
4027
+ }
4023
4028
  if (isNodeOutlet(request.event.targetElement)) {
4024
- this.fMediator.send(new CreateConnectionFromOutletPreparationRequest(request.event));
4029
+ this._fMediator.send(new CreateConnectionFromOutletPreparationRequest(request.event));
4025
4030
  }
4026
- else if (this.isNodeOutput(request.event.targetElement, this.getNode(request.event))) {
4027
- this.fMediator.send(new CreateConnectionFromOutputPreparationRequest(request.event));
4031
+ else if (this.isNodeOutput(request.event.targetElement, this._getNode(request.event))) {
4032
+ this._fMediator.send(new CreateConnectionFromOutputPreparationRequest(request.event));
4028
4033
  }
4029
4034
  }
4030
- getNode(event) {
4031
- return this.fComponentsStore
4035
+ _isValid(request) {
4036
+ return !!this._getNode(request.event) && this._isValidConditions();
4037
+ }
4038
+ _getNode(event) {
4039
+ return this._fComponentsStore
4032
4040
  .fNodes.find(n => n.isContains(event.targetElement));
4033
4041
  }
4042
+ _isValidConditions() {
4043
+ return !this._fDraggableDataContext.draggableItems.length && !!this._fComponentsStore.fTempConnection;
4044
+ }
4034
4045
  isNodeOutput(targetElement, node) {
4035
4046
  return isNodeOutput(targetElement) && !this.getOutlets(node).length;
4036
4047
  }
4037
4048
  getOutlets(node) {
4038
- return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));
4049
+ return this._fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));
4039
4050
  }
4040
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionPreparationExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4051
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionPreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4041
4052
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionPreparationExecution });
4042
4053
  };
4043
4054
  CreateConnectionPreparationExecution = __decorate([
@@ -4045,34 +4056,7 @@ CreateConnectionPreparationExecution = __decorate([
4045
4056
  ], CreateConnectionPreparationExecution);
4046
4057
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionPreparationExecution, decorators: [{
4047
4058
  type: Injectable
4048
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
4049
-
4050
- let CreateConnectionPreparationValidator = class CreateConnectionPreparationValidator {
4051
- fComponentsStore;
4052
- fDraggableDataContext;
4053
- constructor(fComponentsStore, fDraggableDataContext) {
4054
- this.fComponentsStore = fComponentsStore;
4055
- this.fDraggableDataContext = fDraggableDataContext;
4056
- }
4057
- handle(request) {
4058
- return !!this.getNode(request.event) && this.isValidConditions();
4059
- }
4060
- getNode(event) {
4061
- return this.fComponentsStore
4062
- .fNodes.find(n => n.isContains(event.targetElement));
4063
- }
4064
- isValidConditions() {
4065
- return !this.fDraggableDataContext.draggableItems.length && !!this.fComponentsStore.fTempConnection;
4066
- }
4067
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionPreparationValidator, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
4068
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionPreparationValidator });
4069
- };
4070
- CreateConnectionPreparationValidator = __decorate([
4071
- FValidatorRegister(CreateConnectionPreparationRequest)
4072
- ], CreateConnectionPreparationValidator);
4073
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionPreparationValidator, decorators: [{
4074
- type: Injectable
4075
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }] });
4059
+ }] });
4076
4060
 
4077
4061
  class ReassignConnectionFinalizeRequest {
4078
4062
  event;
@@ -4125,13 +4109,16 @@ class ReassignConnectionDragHandler {
4125
4109
  }
4126
4110
  }
4127
4111
  _drawConnection(fInputRect, fSide) {
4128
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fSide));
4112
+ const line = this._getLineToPointer(fInputRect, fSide);
4129
4113
  this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);
4130
4114
  this.fConnection.redraw();
4131
4115
  }
4116
+ _getLineToPointer(fInputRect, fSide) {
4117
+ return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fSide));
4118
+ }
4132
4119
  _drawSnapConnection(fClosestInput) {
4133
4120
  if (fClosestInput) {
4134
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fClosestInput.fRect, this.fSnapConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
4121
+ const line = this._getLineToClosestInput(fClosestInput);
4135
4122
  this.fSnapConnection.show();
4136
4123
  this.fSnapConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);
4137
4124
  this.fSnapConnection.redraw();
@@ -4140,6 +4127,9 @@ class ReassignConnectionDragHandler {
4140
4127
  this.fSnapConnection?.hide();
4141
4128
  }
4142
4129
  }
4130
+ _getLineToClosestInput(fClosestInput) {
4131
+ return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fClosestInput.fRect, this.fSnapConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
4132
+ }
4143
4133
  getClosetInput(difference) {
4144
4134
  if (!this.fSnapConnection) {
4145
4135
  return undefined;
@@ -4174,44 +4164,45 @@ class FReassignConnectionEvent {
4174
4164
  }
4175
4165
 
4176
4166
  let ReassignConnectionFinalizeExecution = class ReassignConnectionFinalizeExecution {
4177
- fComponentsStore;
4178
- fDraggableDataContext;
4179
- fMediator;
4180
- get fDraggable() {
4181
- return this.fComponentsStore.fDraggable;
4182
- }
4183
- get dragHandler() {
4184
- return this.fDraggableDataContext.draggableItems[0];
4167
+ _fMediator = inject(FMediator);
4168
+ _fComponentsStore = inject(FComponentsStore);
4169
+ _fDraggableDataContext = inject(FDraggableDataContext);
4170
+ get _fDraggable() {
4171
+ return this._fComponentsStore.fDraggable;
4185
4172
  }
4186
- constructor(fComponentsStore, fDraggableDataContext, fMediator) {
4187
- this.fComponentsStore = fComponentsStore;
4188
- this.fDraggableDataContext = fDraggableDataContext;
4189
- this.fMediator = fMediator;
4173
+ get _fDragHandler() {
4174
+ return this._fDraggableDataContext.draggableItems[0];
4190
4175
  }
4191
4176
  handle(request) {
4192
- if (!this._isValid()) {
4177
+ if (!this._isDroppedConnectionReassignEvent()) {
4193
4178
  return;
4194
4179
  }
4195
- this.emitEvent(request.event);
4196
- this.dragHandler.onPointerUp();
4180
+ this._applyReassignEvent(request.event);
4181
+ this._fDragHandler.onPointerUp();
4197
4182
  }
4198
- _isValid() {
4199
- return this.fDraggableDataContext.draggableItems.some((x) => x instanceof ReassignConnectionDragHandler);
4183
+ _isDroppedConnectionReassignEvent() {
4184
+ return this._fDraggableDataContext.draggableItems.some((x) => x instanceof ReassignConnectionDragHandler);
4200
4185
  }
4201
- emitEvent(event) {
4202
- const input = this.getInputUnderPointer(event);
4203
- if (!!input && !this.isReassignToDifferentInput(input)) {
4186
+ _applyReassignEvent(event) {
4187
+ const fInput = this._getInputUnderPointer(event);
4188
+ if (!!fInput && !this._isReassignToDifferentInput(fInput)) {
4204
4189
  return;
4205
4190
  }
4206
- this.fDraggable.fReassignConnection.emit(new FReassignConnectionEvent(this.dragHandler.fConnection.fId, this.dragHandler.fConnection.fOutputId, this.dragHandler.fConnection.fInputId, input?.fId, event.getPosition()));
4191
+ this._emitReassignConnectionEvent(event, fInput);
4207
4192
  }
4208
- getInputUnderPointer(event) {
4209
- return this.fMediator.send(new GetInputUnderPointerRequest(event, this.dragHandler));
4193
+ _getInputUnderPointer(event) {
4194
+ return this._fMediator.send(new GetInputUnderPointerRequest(event, this._fDragHandler));
4210
4195
  }
4211
- isReassignToDifferentInput(inputsUnderPointer) {
4212
- return this.dragHandler.fConnection.fInputId !== inputsUnderPointer.fId;
4196
+ _isReassignToDifferentInput(fInput) {
4197
+ return this._fDragHandler.fConnection.fInputId !== fInput.fId;
4213
4198
  }
4214
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionFinalizeExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4199
+ _emitReassignConnectionEvent(event, fInput) {
4200
+ this._fDraggable.fReassignConnection.emit(this._getEventData(event, fInput));
4201
+ }
4202
+ _getEventData(event, fInput) {
4203
+ return new FReassignConnectionEvent(this._fDragHandler.fConnection.fId, this._fDragHandler.fConnection.fOutputId, this._fDragHandler.fConnection.fInputId, fInput?.fId, event.getPosition());
4204
+ }
4205
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4215
4206
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionFinalizeExecution });
4216
4207
  };
4217
4208
  ReassignConnectionFinalizeExecution = __decorate([
@@ -4219,7 +4210,7 @@ ReassignConnectionFinalizeExecution = __decorate([
4219
4210
  ], ReassignConnectionFinalizeExecution);
4220
4211
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionFinalizeExecution, decorators: [{
4221
4212
  type: Injectable
4222
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
4213
+ }] });
4223
4214
 
4224
4215
  class ReassignConnectionPreparationRequest {
4225
4216
  event;
@@ -4229,50 +4220,57 @@ class ReassignConnectionPreparationRequest {
4229
4220
  }
4230
4221
 
4231
4222
  let ReassignConnectionPreparationExecution = class ReassignConnectionPreparationExecution {
4232
- fComponentsStore;
4233
- fDraggableDataContext;
4234
- fMediator;
4235
- fBrowser;
4236
- get transform() {
4237
- return this.fComponentsStore.fCanvas.transform;
4238
- }
4239
- get flowHost() {
4240
- return this.fComponentsStore.fFlow.hostElement;
4223
+ _fMediator = inject(FMediator);
4224
+ _fComponentsStore = inject(FComponentsStore);
4225
+ _fDraggableDataContext = inject(FDraggableDataContext);
4226
+ _fConnection;
4227
+ get _transform() {
4228
+ return this._fComponentsStore.fCanvas.transform;
4241
4229
  }
4242
- get fConnections() {
4243
- return this.fComponentsStore.fConnections;
4230
+ get _fHost() {
4231
+ return this._fComponentsStore.fFlow.hostElement;
4244
4232
  }
4245
- constructor(fComponentsStore, fDraggableDataContext, fMediator, fBrowser) {
4246
- this.fComponentsStore = fComponentsStore;
4247
- this.fDraggableDataContext = fDraggableDataContext;
4248
- this.fMediator = fMediator;
4249
- this.fBrowser = fBrowser;
4233
+ get _fConnections() {
4234
+ return this._fComponentsStore.fConnections;
4250
4235
  }
4251
4236
  handle(request) {
4252
- const connectionToReassign = this.getConnectionHandler(this.getDragHandleElement(request.event.getPosition()));
4253
- if (connectionToReassign.fDraggingDisabled) {
4237
+ if (!this._isValid(request)) {
4254
4238
  return;
4255
4239
  }
4256
- this.fMediator.send(new UpdateItemAndChildrenLayersRequest(connectionToReassign, this.fComponentsStore.fCanvas.fConnectionsContainer.nativeElement));
4257
- this.fDraggableDataContext.onPointerDownScale = this.transform.scale;
4258
- this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
4259
- .elementTransform(this.flowHost).div(this.transform.scale);
4260
- this.fDraggableDataContext.draggableItems = [
4261
- new ReassignConnectionDragHandler(this.fMediator, this.fComponentsStore, connectionToReassign)
4240
+ this._fDraggableDataContext.onPointerDownScale = this._transform.scale;
4241
+ this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
4242
+ .elementTransform(this._fHost).div(this._transform.scale);
4243
+ this._fDraggableDataContext.draggableItems = [
4244
+ new ReassignConnectionDragHandler(this._fMediator, this._fComponentsStore, this._fConnection)
4262
4245
  ];
4246
+ setTimeout(() => this._updateConnectionLayer());
4263
4247
  }
4264
- getDragHandleElement(position) {
4265
- return this.getElementsFromPoint(position).filter((x) => {
4266
- return !!this.getConnectionHandler(x) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);
4267
- }).find((x) => !!x);
4248
+ _isValid(request) {
4249
+ this._fConnection = this._getConnectionToReassign(this._getPointInFlow(request));
4250
+ return !!this._fConnection && !this._fDraggableDataContext.draggableItems.length;
4268
4251
  }
4269
- getElementsFromPoint(position) {
4270
- return this.fBrowser.document.elementsFromPoint(position.x, position.y);
4252
+ _getPointInFlow(request) {
4253
+ return Point.fromPoint(request.event.getPosition())
4254
+ .elementTransform(this._fHost)
4255
+ .sub(this._transform.scaledPosition).sub(this._transform.position)
4256
+ .div(this._transform.scale);
4271
4257
  }
4272
- getConnectionHandler(element) {
4273
- return this.fConnections.find(c => c.isContains(element));
4258
+ _getConnectionToReassign(position) {
4259
+ const connections = this._getConnectionsFromPoint(position);
4260
+ return connections.length ? connections[0] : undefined;
4261
+ }
4262
+ _getConnectionsFromPoint(position) {
4263
+ return this._fConnections.filter((x) => {
4264
+ return this._isPointInsideCircle(position, x.fDragHandle.point) && !x.fDraggingDisabled;
4265
+ });
4266
+ }
4267
+ _isPointInsideCircle(point, circleCenter) {
4268
+ return (point.x - circleCenter.x) ** 2 + (point.y - circleCenter.y) ** 2 <= 8 ** 2;
4274
4269
  }
4275
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionPreparationExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
4270
+ _updateConnectionLayer() {
4271
+ this._fMediator.execute(new UpdateItemAndChildrenLayersRequest(this._fConnection, this._fComponentsStore.fCanvas.fConnectionsContainer.nativeElement));
4272
+ }
4273
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionPreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4276
4274
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionPreparationExecution });
4277
4275
  };
4278
4276
  ReassignConnectionPreparationExecution = __decorate([
@@ -4280,44 +4278,7 @@ ReassignConnectionPreparationExecution = __decorate([
4280
4278
  ], ReassignConnectionPreparationExecution);
4281
4279
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionPreparationExecution, decorators: [{
4282
4280
  type: Injectable
4283
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }, { type: i1.BrowserService }] });
4284
-
4285
- let ReassignConnectionPreparationValidator = class ReassignConnectionPreparationValidator {
4286
- fComponentsStore;
4287
- fDraggableDataContext;
4288
- fBrowser;
4289
- get fConnections() {
4290
- return this.fComponentsStore.fConnections;
4291
- }
4292
- constructor(fComponentsStore, fDraggableDataContext, fBrowser) {
4293
- this.fComponentsStore = fComponentsStore;
4294
- this.fDraggableDataContext = fDraggableDataContext;
4295
- this.fBrowser = fBrowser;
4296
- }
4297
- handle(request) {
4298
- return !!this.getDragHandleElements(request.event.getPosition()).length
4299
- && !this.fDraggableDataContext.draggableItems.length;
4300
- }
4301
- getDragHandleElements(position) {
4302
- return this.getElementsFromPoint(position).filter((x) => {
4303
- return !!this.getConnectionHandler(x) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);
4304
- });
4305
- }
4306
- getElementsFromPoint(position) {
4307
- return this.fBrowser.document.elementsFromPoint(position.x, position.y);
4308
- }
4309
- getConnectionHandler(element) {
4310
- return this.fConnections.find(c => c.isContains(element));
4311
- }
4312
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionPreparationValidator, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
4313
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionPreparationValidator });
4314
- };
4315
- ReassignConnectionPreparationValidator = __decorate([
4316
- FValidatorRegister(ReassignConnectionPreparationRequest)
4317
- ], ReassignConnectionPreparationValidator);
4318
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionPreparationValidator, decorators: [{
4319
- type: Injectable
4320
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i1.BrowserService }] });
4281
+ }] });
4321
4282
 
4322
4283
  const CONNECTIONS_PROVIDERS = [
4323
4284
  GetInputUnderPointerExecution,
@@ -4330,10 +4291,8 @@ const CONNECTIONS_PROVIDERS = [
4330
4291
  CreateConnectionFromOutputPreparationExecution,
4331
4292
  CreateConnectionFromOutputPreparationValidator,
4332
4293
  CreateConnectionPreparationExecution,
4333
- CreateConnectionPreparationValidator,
4334
4294
  ReassignConnectionFinalizeExecution,
4335
4295
  ReassignConnectionPreparationExecution,
4336
- ReassignConnectionPreparationValidator,
4337
4296
  ];
4338
4297
 
4339
4298
  class GetNormalizedParentNodeRectRequest {
@@ -4383,66 +4342,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
4383
4342
  }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
4384
4343
 
4385
4344
  class IsArrayHasParentNodeRequest {
4386
- fNode;
4387
- fNodes;
4388
- constructor(fNode, fNodes) {
4389
- this.fNode = fNode;
4390
- this.fNodes = fNodes;
4391
- }
4392
- }
4393
-
4394
- class GetParentNodesRequest {
4395
- fNode;
4396
- constructor(fNode) {
4397
- this.fNode = fNode;
4345
+ fParentNodes;
4346
+ fDraggedNodes;
4347
+ constructor(fParentNodes, fDraggedNodes) {
4348
+ this.fParentNodes = fParentNodes;
4349
+ this.fDraggedNodes = fDraggedNodes;
4398
4350
  }
4399
4351
  }
4400
4352
 
4401
- let GetParentNodesExecution = class GetParentNodesExecution {
4402
- _fComponentsStore = inject(FComponentsStore);
4403
- handle(request) {
4404
- return this._getParentNodes(request.fNode, new Set(), []);
4405
- }
4406
- _getParentNodes(fNode, visited, result) {
4407
- if (visited.has(fNode.fId)) {
4408
- throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);
4409
- }
4410
- visited.add(fNode.fId);
4411
- const parent = this._fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);
4412
- if (!parent) {
4413
- return result;
4414
- }
4415
- result.push(parent);
4416
- return this._getParentNodes(parent, visited, result);
4417
- }
4418
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4419
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution });
4420
- };
4421
- GetParentNodesExecution = __decorate([
4422
- FExecutionRegister(GetParentNodesRequest)
4423
- ], GetParentNodesExecution);
4424
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, decorators: [{
4425
- type: Injectable
4426
- }] });
4427
-
4428
4353
  let IsArrayHasParentNodeExecution = class IsArrayHasParentNodeExecution {
4429
- fMediator;
4430
- constructor(fMediator) {
4431
- this.fMediator = fMediator;
4432
- }
4433
4354
  handle(request) {
4434
- return this.isParentNodeInArray(this.getParentNodeIds(request.fNode), request.fNodes);
4355
+ return this._isParentNodeInArray(this._getParentNodeIds(request.fParentNodes), request.fDraggedNodes);
4435
4356
  }
4436
- getParentNodeIds(fNode) {
4437
- return this.getParentNodes(fNode).map((x) => x.fId);
4357
+ _getParentNodeIds(fParentNodes) {
4358
+ return fParentNodes.map((x) => x.fId);
4438
4359
  }
4439
- getParentNodes(fNode) {
4440
- return this.fMediator.send(new GetParentNodesRequest(fNode));
4360
+ _isParentNodeInArray(parentNodeIds, fDraggedNodes) {
4361
+ return fDraggedNodes.some((x) => parentNodeIds.includes(x.fId));
4441
4362
  }
4442
- isParentNodeInArray(parentNodeIds, fNodes) {
4443
- return fNodes.some((x) => parentNodeIds.includes(x.fId));
4444
- }
4445
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsArrayHasParentNodeExecution, deps: [{ token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4363
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsArrayHasParentNodeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4446
4364
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsArrayHasParentNodeExecution });
4447
4365
  };
4448
4366
  IsArrayHasParentNodeExecution = __decorate([
@@ -4450,7 +4368,7 @@ IsArrayHasParentNodeExecution = __decorate([
4450
4368
  ], IsArrayHasParentNodeExecution);
4451
4369
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsArrayHasParentNodeExecution, decorators: [{
4452
4370
  type: Injectable
4453
- }], ctorParameters: () => [{ type: i2.FMediator }] });
4371
+ }] });
4454
4372
 
4455
4373
  class FNodeIntersectedWithConnections {
4456
4374
  fNodeId;
@@ -4472,27 +4390,30 @@ let IsConnectionUnderNodeExecution = class IsConnectionUnderNodeExecution {
4472
4390
  _fMediator = inject(FMediator);
4473
4391
  _fComponentsStore = inject(FComponentsStore);
4474
4392
  handle(request) {
4475
- const fNode = request.fNode;
4476
- const fOutputConnectors = this._getNodeOutputConnectors(fNode);
4477
- const fInputConnectors = this._getNodeInputConnectors(fNode);
4478
- const canBeConnectedOutputs = fOutputConnectors.filter((x) => x.canBeConnected);
4479
- const canBeConnectedInputs = fInputConnectors.filter((x) => x.canBeConnected);
4480
- if (canBeConnectedOutputs.length && canBeConnectedInputs.length) {
4481
- const fOutputConnections = this._getOutputConnectionsId(canBeConnectedOutputs);
4482
- const fInputConnections = this._getInputConnectionsId(canBeConnectedInputs);
4483
- const fConnectionsUnderNode = this._calculateConnectionsUnderNode(fNode).filter((x) => {
4484
- return !fOutputConnections.includes(x.fId) && !fInputConnections.includes(x.fId);
4485
- });
4486
- if (fConnectionsUnderNode.length) {
4487
- this._fComponentsStore.fDraggable?.fNodeIntersectedWithConnections.emit(new FNodeIntersectedWithConnections(fNode.fId, fConnectionsUnderNode.map((x) => x.fId)));
4488
- }
4393
+ const fOutputConnectors = this._getOutputConnectors(request.fNode);
4394
+ const fInputConnectors = this._getInputConnectors(request.fNode);
4395
+ if (!fOutputConnectors.length || !fInputConnectors.length) {
4396
+ return;
4397
+ }
4398
+ const fOutputConnections = this._getOutputConnectionsId(fOutputConnectors);
4399
+ const fInputConnections = this._getInputConnectionsId(fInputConnectors);
4400
+ const fConnectionsUnderNode = this._calculateConnectionsUnderNode(request.fNode).filter((x) => {
4401
+ return !fOutputConnections.includes(x.fId) && !fInputConnections.includes(x.fId);
4402
+ });
4403
+ if (!fConnectionsUnderNode.length) {
4404
+ return;
4489
4405
  }
4406
+ this._emitNodeIntersectedWithConnections(request.fNode, fConnectionsUnderNode);
4490
4407
  }
4491
- _getNodeOutputConnectors(fNode) {
4492
- return this._fComponentsStore.fOutputs.filter((x) => fNode.isContains(x.hostElement));
4408
+ _getOutputConnectors(fNode) {
4409
+ return this._fComponentsStore.fOutputs.filter((x) => {
4410
+ return fNode.isContains(x.hostElement) && x.canBeConnected;
4411
+ });
4493
4412
  }
4494
- _getNodeInputConnectors(fNode) {
4495
- return this._fComponentsStore.fInputs.filter((x) => fNode.isContains(x.hostElement));
4413
+ _getInputConnectors(fNode) {
4414
+ return this._fComponentsStore.fInputs.filter((x) => {
4415
+ return fNode.isContains(x.hostElement) && x.canBeConnected;
4416
+ });
4496
4417
  }
4497
4418
  _getOutputConnectionsId(connectors) {
4498
4419
  const connectorsId = this._getConnectorsId(connectors);
@@ -4511,13 +4432,14 @@ let IsConnectionUnderNodeExecution = class IsConnectionUnderNodeExecution {
4511
4432
  }
4512
4433
  _calculateConnectionsUnderNode(fNode) {
4513
4434
  const fNodeRect = this._fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement, true));
4514
- return this._fComponentsStore.fConnections.filter((x) => {
4515
- return this._isConnectionHasIntersectionsWithNode(x, fNodeRect);
4516
- });
4435
+ return this._fComponentsStore.fConnections.filter((x) => this._isConnectionHasIntersectionsWithNode(x, fNodeRect));
4517
4436
  }
4518
4437
  _isConnectionHasIntersectionsWithNode(fConnection, fNodeRect) {
4519
4438
  return GetIntersections.getRoundedRectIntersectionsWithSVGPath(fConnection.fPath.hostElement, fNodeRect).length > 0;
4520
4439
  }
4440
+ _emitNodeIntersectedWithConnections(fNode, fConnections) {
4441
+ this._fComponentsStore.fDraggable?.fNodeIntersectedWithConnections.emit(new FNodeIntersectedWithConnections(fNode.fId, fConnections.map((x) => x.fId)));
4442
+ }
4521
4443
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsConnectionUnderNodeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4522
4444
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsConnectionUnderNodeExecution });
4523
4445
  };
@@ -4552,6 +4474,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
4552
4474
  type: Injectable
4553
4475
  }] });
4554
4476
 
4477
+ class CalculateCommonNodeMoveRestrictionsRequest {
4478
+ restrictions;
4479
+ constructor(restrictions) {
4480
+ this.restrictions = restrictions;
4481
+ }
4482
+ }
4483
+
4484
+ let CalculateCommonNodeMoveRestrictionsExecution = class CalculateCommonNodeMoveRestrictionsExecution {
4485
+ handle(request) {
4486
+ return this._calculateCommonRestrictions(request.restrictions);
4487
+ }
4488
+ _calculateCommonRestrictions(restrictions) {
4489
+ return restrictions.reduce((result, x) => this._clampRestrictions(result, x), restrictions[0]);
4490
+ }
4491
+ _clampRestrictions(common, x) {
4492
+ common.min = this._clampMinRestrictions(common.min, x.min);
4493
+ common.max = this._clampMaxRestrictions(common.max, x.max);
4494
+ return common;
4495
+ }
4496
+ _clampMinRestrictions(common, node) {
4497
+ return {
4498
+ x: Math.max(common.x, node.x),
4499
+ y: Math.max(common.y, node.y),
4500
+ };
4501
+ }
4502
+ _clampMaxRestrictions(common, node) {
4503
+ return {
4504
+ x: Math.min(common.x, node.x),
4505
+ y: Math.min(common.y, node.y),
4506
+ };
4507
+ }
4508
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateCommonNodeMoveRestrictionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4509
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateCommonNodeMoveRestrictionsExecution });
4510
+ };
4511
+ CalculateCommonNodeMoveRestrictionsExecution = __decorate([
4512
+ FExecutionRegister(CalculateCommonNodeMoveRestrictionsRequest)
4513
+ ], CalculateCommonNodeMoveRestrictionsExecution);
4514
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateCommonNodeMoveRestrictionsExecution, decorators: [{
4515
+ type: Injectable
4516
+ }] });
4517
+
4555
4518
  class PutInputConnectionHandlersToArrayRequest {
4556
4519
  nodeDragHandler;
4557
4520
  outputIds;
@@ -4618,11 +4581,11 @@ class ConnectionDragHandler extends ConnectionBaseDragHandler {
4618
4581
  constructor(fMediator, fComponentsStore, connection) {
4619
4582
  super(fMediator, fComponentsStore, connection);
4620
4583
  }
4621
- setOutputRestrictions(min, max) {
4622
- this.sourceRestrictions = { min, max };
4584
+ setOutputRestrictions(restrictions) {
4585
+ this.sourceRestrictions = restrictions;
4623
4586
  }
4624
- setInputRestrictions(min, max) {
4625
- this.targetRestrictions = { min, max };
4587
+ setInputRestrictions(restrictions) {
4588
+ this.targetRestrictions = restrictions;
4626
4589
  }
4627
4590
  onPointerMove(difference) {
4628
4591
  this.redrawConnection(this.getNewLineValue(difference));
@@ -4633,30 +4596,24 @@ class ConnectionDragHandler extends ConnectionBaseDragHandler {
4633
4596
  }
4634
4597
 
4635
4598
  class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {
4636
- minDistance;
4637
- maxDistance;
4638
- constructor(fMediator, fComponentsStore, connection, minDistance, maxDistance) {
4599
+ restrictions;
4600
+ constructor(fMediator, fComponentsStore, connection, restrictions) {
4639
4601
  super(fMediator, fComponentsStore, connection);
4640
- this.minDistance = minDistance;
4641
- this.maxDistance = maxDistance;
4602
+ this.restrictions = restrictions;
4642
4603
  }
4643
4604
  onPointerMove(difference) {
4644
4605
  this.redrawConnection(this.getNewLineValue(difference));
4645
4606
  }
4646
4607
  getNewLineValue(difference) {
4647
- return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })), this.connection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, this.fInputWithRect.fConnector.fConnectableSide));
4608
+ return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, this.restrictions)), this.connection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, this.fInputWithRect.fConnector.fConnectableSide));
4648
4609
  }
4649
4610
  }
4650
4611
 
4651
4612
  let PutInputConnectionHandlersToArrayExecution = class PutInputConnectionHandlersToArrayExecution {
4652
- fComponentsStore;
4653
- fMediator;
4654
- get fConnections() {
4655
- return this.fComponentsStore.fConnections;
4656
- }
4657
- constructor(fComponentsStore, fMediator) {
4658
- this.fComponentsStore = fComponentsStore;
4659
- this.fMediator = fMediator;
4613
+ _fMediator = inject(FMediator);
4614
+ _fComponentsStore = inject(FComponentsStore);
4615
+ get _fConnections() {
4616
+ return this._fComponentsStore.fConnections;
4660
4617
  }
4661
4618
  handle(request) {
4662
4619
  this.getInputConnections(request.nodeDragHandler.fNode).forEach((connection) => {
@@ -4671,10 +4628,10 @@ let PutInputConnectionHandlersToArrayExecution = class PutInputConnectionHandler
4671
4628
  }
4672
4629
  getInputConnections(node) {
4673
4630
  const inputIds = new Set(this.getInputsForNode(node).map((x) => x.fId));
4674
- return this.fConnections.filter((x) => inputIds.has(x.fInputId));
4631
+ return this._fConnections.filter((x) => inputIds.has(x.fInputId));
4675
4632
  }
4676
4633
  getInputsForNode(node) {
4677
- return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
4634
+ return this._fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
4678
4635
  }
4679
4636
  getExistingConnectionHandlerIndex(result, connection) {
4680
4637
  return result.findIndex((x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId);
@@ -4690,17 +4647,17 @@ let PutInputConnectionHandlersToArrayExecution = class PutInputConnectionHandler
4690
4647
  return result;
4691
4648
  }
4692
4649
  getNewConnectionHandler(connection, nodeDragHandler) {
4693
- const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);
4694
- handler.setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4650
+ const handler = new ConnectionDragHandler(this._fMediator, this._fComponentsStore, connection);
4651
+ handler.setInputRestrictions(nodeDragHandler.restrictions);
4695
4652
  return handler;
4696
4653
  }
4697
4654
  updateExistingConnectionHandler(result, index, nodeDragHandler) {
4698
- result[index].setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4655
+ result[index].setInputRestrictions(nodeDragHandler.restrictions);
4699
4656
  }
4700
4657
  getNewSourceConnectionHandler(connection, nodeDragHandler) {
4701
- return new ConnectionTargetDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4658
+ return new ConnectionTargetDragHandler(this._fMediator, this._fComponentsStore, connection, nodeDragHandler.restrictions);
4702
4659
  }
4703
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutInputConnectionHandlersToArrayExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4660
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutInputConnectionHandlersToArrayExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4704
4661
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutInputConnectionHandlersToArrayExecution });
4705
4662
  };
4706
4663
  PutInputConnectionHandlersToArrayExecution = __decorate([
@@ -4708,7 +4665,7 @@ PutInputConnectionHandlersToArrayExecution = __decorate([
4708
4665
  ], PutInputConnectionHandlersToArrayExecution);
4709
4666
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutInputConnectionHandlersToArrayExecution, decorators: [{
4710
4667
  type: Injectable
4711
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
4668
+ }] });
4712
4669
 
4713
4670
  class PutOutputConnectionHandlersToArrayRequest {
4714
4671
  nodeDragHandler;
@@ -4722,18 +4679,16 @@ class PutOutputConnectionHandlersToArrayRequest {
4722
4679
  }
4723
4680
 
4724
4681
  class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {
4725
- minDistance;
4726
- maxDistance;
4727
- constructor(fMediator, fComponentsStore, connection, minDistance, maxDistance) {
4682
+ restrictions;
4683
+ constructor(fMediator, fComponentsStore, connection, restrictions) {
4728
4684
  super(fMediator, fComponentsStore, connection);
4729
- this.minDistance = minDistance;
4730
- this.maxDistance = maxDistance;
4685
+ this.restrictions = restrictions;
4731
4686
  }
4732
4687
  onPointerMove(difference) {
4733
4688
  this.redrawConnection(this.getNewLineValue(difference));
4734
4689
  }
4735
4690
  getNewLineValue(difference) {
4736
- return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })), this.fInputWithRect.fRect, this.connection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, this.fInputWithRect.fConnector.fConnectableSide));
4691
+ return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, this.restrictions)), this.fInputWithRect.fRect, this.connection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, this.fInputWithRect.fConnector.fConnectableSide));
4737
4692
  }
4738
4693
  }
4739
4694
 
@@ -4780,14 +4735,14 @@ let PutOutputConnectionHandlersToArrayExecution = class PutOutputConnectionHandl
4780
4735
  }
4781
4736
  getNewConnectionHandler(connection, nodeDragHandler) {
4782
4737
  const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);
4783
- handler.setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4738
+ handler.setOutputRestrictions(nodeDragHandler.restrictions);
4784
4739
  return handler;
4785
4740
  }
4786
4741
  updateExistingConnectionHandler(result, index, nodeDragHandler) {
4787
- result[index].setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4742
+ result[index].setOutputRestrictions(nodeDragHandler.restrictions);
4788
4743
  }
4789
4744
  getNewSourceConnectionHandler(connection, nodeDragHandler) {
4790
- return new ConnectionSourceDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4745
+ return new ConnectionSourceDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.restrictions);
4791
4746
  }
4792
4747
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutOutputConnectionHandlersToArrayExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4793
4748
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutOutputConnectionHandlersToArrayExecution });
@@ -4799,7 +4754,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
4799
4754
  type: Injectable
4800
4755
  }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
4801
4756
 
4802
- class GetNodeMoveRestrictionsRequest {
4757
+ class CalculateNodeMoveRestrictionsRequest {
4803
4758
  fNode;
4804
4759
  hasParentNodeInSelected;
4805
4760
  constructor(fNode, hasParentNodeInSelected) {
@@ -4808,32 +4763,32 @@ class GetNodeMoveRestrictionsRequest {
4808
4763
  }
4809
4764
  }
4810
4765
 
4811
- let GetNodeMoveRestrictionsExecution = class GetNodeMoveRestrictionsExecution {
4766
+ let CalculateNodeMoveRestrictionsExecution = class CalculateNodeMoveRestrictionsExecution {
4812
4767
  _fMediator = inject(FMediator);
4813
4768
  handle(request) {
4814
- if (request.fNode.fParentId && !request.hasParentNodeInSelected) {
4815
- const fParentNodeRect = this.getParentNodeRect(request.fNode);
4816
- const fCurrentNodeRect = this._getNodeRect(request.fNode);
4817
- return {
4818
- min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),
4819
- max: PointExtensions.initialize((fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width), (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height))
4820
- };
4769
+ if (!request.fNode.fParentId || request.hasParentNodeInSelected) {
4770
+ return { ...DEFAULT_RESTRICTIONS };
4821
4771
  }
4822
- return { ...DEFAULT_RESTRICTIONS };
4772
+ const fParentNodeRect = this._getParentNodeRect(request.fNode);
4773
+ const fCurrentNodeRect = this._getNodeRect(request.fNode);
4774
+ return {
4775
+ min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),
4776
+ max: PointExtensions.initialize((fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width), (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height))
4777
+ };
4823
4778
  }
4824
4779
  _getNodeRect(fNode) {
4825
- return this._fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement, false));
4780
+ return this._fMediator.execute(new GetNormalizedElementRectRequest(fNode.hostElement, false));
4826
4781
  }
4827
- getParentNodeRect(fNode) {
4828
- return this._fMediator.send(new GetNormalizedParentNodeRectRequest(fNode));
4782
+ _getParentNodeRect(fNode) {
4783
+ return this._fMediator.execute(new GetNormalizedParentNodeRectRequest(fNode));
4829
4784
  }
4830
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4831
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution });
4785
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateNodeMoveRestrictionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4786
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateNodeMoveRestrictionsExecution });
4832
4787
  };
4833
- GetNodeMoveRestrictionsExecution = __decorate([
4834
- FExecutionRegister(GetNodeMoveRestrictionsRequest)
4835
- ], GetNodeMoveRestrictionsExecution);
4836
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution, decorators: [{
4788
+ CalculateNodeMoveRestrictionsExecution = __decorate([
4789
+ FExecutionRegister(CalculateNodeMoveRestrictionsRequest)
4790
+ ], CalculateNodeMoveRestrictionsExecution);
4791
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateNodeMoveRestrictionsExecution, decorators: [{
4837
4792
  type: Injectable
4838
4793
  }] });
4839
4794
  const DEFAULT_RESTRICTIONS = {
@@ -4849,32 +4804,27 @@ class CreateMoveNodesDragModelFromSelectionRequest {
4849
4804
  }
4850
4805
 
4851
4806
  class NodeDragHandler {
4852
- fDraggableDataContext;
4853
- fComponentsStore;
4807
+ _fComponentsStore;
4854
4808
  fNode;
4855
- minDistance;
4856
- maxDistance;
4809
+ restrictions;
4857
4810
  _onPointerDownPosition = PointExtensions.initialize();
4858
- constructor(fDraggableDataContext, fComponentsStore, fNode, minDistance, maxDistance) {
4859
- this.fDraggableDataContext = fDraggableDataContext;
4860
- this.fComponentsStore = fComponentsStore;
4811
+ constructor(_fComponentsStore, fNode, restrictions) {
4812
+ this._fComponentsStore = _fComponentsStore;
4861
4813
  this.fNode = fNode;
4862
- this.minDistance = minDistance;
4863
- this.maxDistance = maxDistance;
4814
+ this.restrictions = restrictions;
4864
4815
  this._onPointerDownPosition = { ...fNode.position };
4865
4816
  }
4866
4817
  onPointerMove(difference) {
4867
- const restrictedDifference = this._getDifference(difference, { min: this.minDistance, max: this.maxDistance });
4818
+ const restrictedDifference = this._getDifference(difference);
4868
4819
  this._redraw(this._getPosition(restrictedDifference));
4869
- this.fDraggableDataContext.fLineAlignment?.handle(restrictedDifference);
4870
4820
  }
4871
4821
  _getPosition(difference) {
4872
4822
  return Point.fromPoint(this._onPointerDownPosition).add(difference);
4873
4823
  }
4874
- _getDifference(difference, restrictions) {
4824
+ _getDifference(difference) {
4875
4825
  return {
4876
- x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),
4877
- y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)
4826
+ x: Math.min(Math.max(difference.x, this.restrictions.min.x), this.restrictions.max.x),
4827
+ y: Math.min(Math.max(difference.y, this.restrictions.min.y), this.restrictions.max.y)
4878
4828
  };
4879
4829
  }
4880
4830
  _redraw(position) {
@@ -4885,13 +4835,12 @@ class NodeDragHandler {
4885
4835
  this.fNode.positionChange.emit(this.fNode.position);
4886
4836
  }
4887
4837
  getDifferenceWithCellSize(difference) {
4888
- const restrictedDifference = this._getDifference(difference, { min: this.minDistance, max: this.maxDistance });
4889
- const position = this._getPosition(restrictedDifference);
4838
+ const position = this._getPosition(this._getDifference(difference));
4890
4839
  return Point.fromPoint(this._applyCellSize(position)).sub(this._onPointerDownPosition);
4891
4840
  }
4892
4841
  _applyCellSize(position) {
4893
- const hCellSize = this.fComponentsStore.fDraggable.hCellSize;
4894
- const vCellSize = this.fComponentsStore.fDraggable.vCellSize;
4842
+ const hCellSize = this._fComponentsStore.fDraggable.hCellSize;
4843
+ const vCellSize = this._fComponentsStore.fDraggable.vCellSize;
4895
4844
  return {
4896
4845
  x: Math.round(position.x / hCellSize) * hCellSize,
4897
4846
  y: Math.round(position.y / vCellSize) * vCellSize
@@ -4919,10 +4868,10 @@ let CreateMoveNodesDragModelFromSelectionExecution = class CreateMoveNodesDragMo
4919
4868
  _fComponentsStore = inject(FComponentsStore);
4920
4869
  _fDraggableDataContext = inject(FDraggableDataContext);
4921
4870
  handle(request) {
4922
- const itemsToDrag = this._getNodesWithRestrictions(this._getSelectedNodes(request.nodeWithDisabledSelection));
4923
- return this.getDragHandlersWithConnections(this.getDragHandlersFromNodes(itemsToDrag), this.getAllOutputIds(itemsToDrag), this.getAllInputIds(itemsToDrag));
4871
+ const fItemsToDrag = this._getNodesWithRestrictions(this._getDraggedNodes(request.nodeWithDisabledSelection));
4872
+ return this.getDragHandlersWithConnections(this.getDragHandlersFromNodes(fItemsToDrag), this.getAllOutputIds(fItemsToDrag), this.getAllInputIds(fItemsToDrag));
4924
4873
  }
4925
- _getSelectedNodes(nodeWithDisabledSelection) {
4874
+ _getDraggedNodes(nodeWithDisabledSelection) {
4926
4875
  const result = this._getNodesFromSelection();
4927
4876
  if (nodeWithDisabledSelection) {
4928
4877
  result.push(nodeWithDisabledSelection);
@@ -4935,32 +4884,46 @@ let CreateMoveNodesDragModelFromSelectionExecution = class CreateMoveNodesDragMo
4935
4884
  .filter((x) => !!x);
4936
4885
  }
4937
4886
  _findNode(hostElement) {
4938
- return this._fComponentsStore.fNodes.find(n => n.isContains(hostElement));
4887
+ return this._fComponentsStore.fNodes
4888
+ .find(n => n.isContains(hostElement));
4939
4889
  }
4940
- _getNodesWithRestrictions(nodesToDrag) {
4890
+ _getNodesWithRestrictions(fDraggedNodes) {
4941
4891
  const result = [];
4942
- nodesToDrag.forEach((x) => {
4943
- const hasParentNodeInSelected = this._fMediator.send(new IsArrayHasParentNodeRequest(x, nodesToDrag));
4944
- const restrictions = this._fMediator.send(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));
4945
- const parentNodes = this._fMediator.send(new GetParentNodesRequest(x));
4946
- result.push({ node: x, parentNodes, ...restrictions }, ...this.getChildrenItemsToDrag(x, restrictions));
4892
+ fDraggedNodes.forEach((x) => {
4893
+ const fParentNodes = this._fMediator.execute(new GetParentNodesRequest(x));
4894
+ const restrictions = this._getNodeMoveRestrictions(x, fParentNodes, fDraggedNodes);
4895
+ result.push({ fDraggedNode: x, fParentNodes, ...restrictions }, ...this._getChildrenItemsToDrag(x, restrictions));
4947
4896
  });
4897
+ this._applyCommonRestrictions(result);
4948
4898
  return result;
4949
4899
  }
4950
- getChildrenItemsToDrag(node, restrictions) {
4951
- return this.getChildrenNodes(node.fId).map((x) => ({ node: x, ...restrictions }));
4900
+ _getNodeMoveRestrictions(fNode, fParentNodes, fDraggedNodes) {
4901
+ return this._fMediator.execute(new CalculateNodeMoveRestrictionsRequest(fNode, this._isParentNodeInArray(fParentNodes, fDraggedNodes)));
4952
4902
  }
4953
- getChildrenNodes(fId) {
4954
- return this._fMediator.send(new GetDeepChildrenNodesAndGroupsRequest(fId));
4903
+ _isParentNodeInArray(fParentNodes, fDraggedNodes) {
4904
+ return this._fMediator.execute(new IsArrayHasParentNodeRequest(fParentNodes, fDraggedNodes));
4905
+ }
4906
+ _getChildrenItemsToDrag(node, restrictions) {
4907
+ return this._getChildrenNodes(node.fId).map((x) => ({ fDraggedNode: x, ...restrictions }));
4908
+ }
4909
+ _getChildrenNodes(fId) {
4910
+ return this._fMediator.execute(new GetDeepChildrenNodesAndGroupsRequest(fId));
4911
+ }
4912
+ _applyCommonRestrictions(restrictions) {
4913
+ const commonRestrictions = this._fMediator.execute(new CalculateCommonNodeMoveRestrictionsRequest(restrictions));
4914
+ restrictions.forEach((x) => {
4915
+ x.min = commonRestrictions.min;
4916
+ x.max = commonRestrictions.max;
4917
+ });
4955
4918
  }
4956
4919
  getAllOutputIds(items) {
4957
- return flatMap(items, (item) => this.getOutputsForNode(item.node).map((x) => x.fId));
4920
+ return flatMap(items, (item) => this.getOutputsForNode(item.fDraggedNode).map((x) => x.fId));
4958
4921
  }
4959
4922
  getOutputsForNode(node) {
4960
4923
  return this._fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));
4961
4924
  }
4962
4925
  getAllInputIds(items) {
4963
- return flatMap(items, (item) => this.getInputsForNode(item.node).map((x) => x.fId));
4926
+ return flatMap(items, (item) => this.getInputsForNode(item.fDraggedNode).map((x) => x.fId));
4964
4927
  }
4965
4928
  getInputsForNode(node) {
4966
4929
  return this._fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
@@ -4968,15 +4931,15 @@ let CreateMoveNodesDragModelFromSelectionExecution = class CreateMoveNodesDragMo
4968
4931
  getDragHandlersFromNodes(items) {
4969
4932
  let result = [];
4970
4933
  items.forEach((node) => {
4971
- result.push(new NodeDragHandler(this._fDraggableDataContext, this._fComponentsStore, node.node, node.min, node.max), ...(node.parentNodes || []).map(() => new NodeResizeByChildDragHandler(this._fDraggableDataContext)));
4934
+ result.push(new NodeDragHandler(this._fComponentsStore, node.fDraggedNode, { min: node.min, max: node.max }), ...(node.fParentNodes || []).map(() => new NodeResizeByChildDragHandler(this._fDraggableDataContext)));
4972
4935
  });
4973
4936
  return result;
4974
4937
  }
4975
4938
  getDragHandlersWithConnections(handlers, outputIds, inputIds) {
4976
4939
  let result = handlers;
4977
- handlers.filter((x) => x instanceof NodeDragHandler).forEach((dragHandler) => {
4978
- this._fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler, inputIds, result));
4979
- this._fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler, outputIds, result));
4940
+ handlers.filter((x) => x instanceof NodeDragHandler).forEach((x) => {
4941
+ this._fMediator.execute(new PutOutputConnectionHandlersToArrayRequest(x, inputIds, result));
4942
+ this._fMediator.execute(new PutInputConnectionHandlersToArrayRequest(x, outputIds, result));
4980
4943
  });
4981
4944
  return result;
4982
4945
  }
@@ -4991,35 +4954,255 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
4991
4954
  }] });
4992
4955
 
4993
4956
  const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [
4994
- GetNodeMoveRestrictionsExecution,
4957
+ CalculateCommonNodeMoveRestrictionsExecution,
4958
+ CalculateNodeMoveRestrictionsExecution,
4995
4959
  PutInputConnectionHandlersToArrayExecution,
4996
4960
  PutOutputConnectionHandlersToArrayExecution,
4997
4961
  CreateMoveNodesDragModelFromSelectionExecution,
4998
4962
  ];
4999
4963
 
5000
- class NodeDragToParentFinalizeRequest {
5001
- event;
5002
- constructor(event) {
5003
- this.event = event;
5004
- }
4964
+ class LineAlignmentPreparationRequest {
5005
4965
  }
5006
4966
 
5007
- class NodeDragToParentDragHandler {
5008
- fComponentsStore;
5009
- fDraggableDataContext;
5010
- notDraggedNodesRects;
5011
- DEBOUNCE_TIME = 15;
5012
- get _transform() {
5013
- return this.fComponentsStore.fCanvas.transform;
5014
- }
5015
- _onPointerDownPosition = PointExtensions.initialize();
4967
+ class LineAlignmentDragHandler {
4968
+ _fComponentsStore;
4969
+ _lineService;
4970
+ _size;
4971
+ _draggedNodeRect;
4972
+ _rects;
4973
+ _restrictions;
5016
4974
  _debounceTimer = null;
5017
- fNodeWithRect = null;
5018
- constructor(fComponentsStore, fDraggableDataContext, notDraggedNodesRects) {
5019
- this.fComponentsStore = fComponentsStore;
5020
- this.fDraggableDataContext = fDraggableDataContext;
5021
- this.notDraggedNodesRects = notDraggedNodesRects;
5022
- this._onPointerDownPosition = this.fDraggableDataContext.onPointerDownPosition;
4975
+ _transform;
4976
+ constructor(_fComponentsStore, _lineService, _size, _draggedNodeRect, _rects, _restrictions) {
4977
+ this._fComponentsStore = _fComponentsStore;
4978
+ this._lineService = _lineService;
4979
+ this._size = _size;
4980
+ this._draggedNodeRect = _draggedNodeRect;
4981
+ this._rects = _rects;
4982
+ this._restrictions = _restrictions;
4983
+ this._transform = this._fComponentsStore.fCanvas?.transform;
4984
+ }
4985
+ onPointerMove(difference) {
4986
+ const restrictedDifference = this._getDifference(difference);
4987
+ if (this._debounceTimer) {
4988
+ clearTimeout(this._debounceTimer);
4989
+ }
4990
+ this._debounceTimer = setTimeout(() => this._drawIntersectingLines(restrictedDifference), 15);
4991
+ }
4992
+ _drawIntersectingLines(difference) {
4993
+ const intersect = this.findNearestCoordinate(difference);
4994
+ if (intersect.xResult.value !== undefined) {
4995
+ this._lineService.drawVerticalLine(intersect.xResult.value, this._size, this._transform);
4996
+ }
4997
+ else {
4998
+ this._lineService.hideVerticalLine();
4999
+ }
5000
+ if (intersect.yResult.value !== undefined) {
5001
+ this._lineService.drawHorizontalLine(intersect.yResult.value, this._size, this._transform);
5002
+ }
5003
+ else {
5004
+ this._lineService.hideHorizontalLine();
5005
+ }
5006
+ }
5007
+ _getDifference(difference) {
5008
+ return {
5009
+ x: Math.min(Math.max(difference.x, this._restrictions.min.x), this._restrictions.max.x),
5010
+ y: Math.min(Math.max(difference.y, this._restrictions.min.y), this._restrictions.max.y)
5011
+ };
5012
+ }
5013
+ findNearestCoordinate(difference) {
5014
+ const rect = RectExtensions.addPoint(this._draggedNodeRect, difference);
5015
+ return findClosestAlignment(this._rects, rect, this._fComponentsStore.fLineAlignment.fAlignThreshold);
5016
+ }
5017
+ onPointerUp() {
5018
+ this._lineService.hideVerticalLine();
5019
+ this._lineService.hideHorizontalLine();
5020
+ if (this._debounceTimer) {
5021
+ clearTimeout(this._debounceTimer);
5022
+ this._debounceTimer = null;
5023
+ }
5024
+ }
5025
+ }
5026
+
5027
+ class LineElement {
5028
+ hostElement;
5029
+ element;
5030
+ constructor(fBrowser, hostElement) {
5031
+ this.hostElement = hostElement;
5032
+ this.element = fBrowser.document.createElement('div');
5033
+ this.hostElement.appendChild(this.element);
5034
+ this.element.classList.add('f-line');
5035
+ }
5036
+ hide() {
5037
+ this.element.style.display = 'none';
5038
+ }
5039
+ show() {
5040
+ this.element.style.display = 'block';
5041
+ }
5042
+ draw(object) {
5043
+ this.element.style.position = 'absolute';
5044
+ Object.keys(object).forEach((key) => {
5045
+ // @ts-ignore
5046
+ this.element.style[key] = object[key] + 'px';
5047
+ });
5048
+ }
5049
+ }
5050
+
5051
+ class LineService {
5052
+ hostElement;
5053
+ fHorizontalLine;
5054
+ fVerticalLine;
5055
+ constructor(fBrowser, hostElement) {
5056
+ this.hostElement = hostElement;
5057
+ this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);
5058
+ this.fVerticalLine = new LineElement(fBrowser, this.hostElement);
5059
+ this.fHorizontalLine.hide();
5060
+ this.fVerticalLine.hide();
5061
+ }
5062
+ drawVerticalLine(x, size, transform) {
5063
+ this.fVerticalLine.show();
5064
+ this.fVerticalLine.draw({
5065
+ left: x * transform.scale + transform.position.x + transform.scaledPosition.x,
5066
+ top: 0,
5067
+ width: 1,
5068
+ height: size.height
5069
+ });
5070
+ }
5071
+ drawHorizontalLine(y, size, transform) {
5072
+ this.fHorizontalLine.show();
5073
+ this.fHorizontalLine.draw({
5074
+ left: 0,
5075
+ top: y * transform.scale + transform.position.y + transform.scaledPosition.y,
5076
+ width: size.width,
5077
+ height: 1
5078
+ });
5079
+ }
5080
+ hideVerticalLine() {
5081
+ this.fVerticalLine.hide();
5082
+ }
5083
+ hideHorizontalLine() {
5084
+ this.fHorizontalLine.hide();
5085
+ }
5086
+ }
5087
+
5088
+ const F_LINE_ALIGNMENT = new InjectionToken('F_LINE_ALIGNMENT');
5089
+ class FLineAlignmentBase {
5090
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5091
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FLineAlignmentBase, ngImport: i0 });
5092
+ }
5093
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentBase, decorators: [{
5094
+ type: Directive
5095
+ }] });
5096
+
5097
+ class FLineAlignmentComponent extends FLineAlignmentBase {
5098
+ fAlignThreshold = 10;
5099
+ _fMediator = inject(FMediator);
5100
+ _elementReference = inject(ElementRef);
5101
+ get hostElement() {
5102
+ return this._elementReference.nativeElement;
5103
+ }
5104
+ ngOnInit() {
5105
+ this._fMediator.execute(new AddLineAlignmentToStoreRequest(this));
5106
+ }
5107
+ ngOnDestroy() {
5108
+ this._fMediator.execute(new RemoveLineAlignmentFromStoreRequest());
5109
+ }
5110
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5111
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: FLineAlignmentComponent, selector: "f-line-alignment", inputs: { fAlignThreshold: "fAlignThreshold" }, host: { classAttribute: "f-line-alignment f-component" }, providers: [
5112
+ { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }
5113
+ ], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0, template: "", isInline: true, styles: [":host{display:block;position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}\n"] });
5114
+ }
5115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentComponent, decorators: [{
5116
+ type: Component,
5117
+ args: [{ selector: "f-line-alignment", template: "", exportAs: "fComponent", host: {
5118
+ 'class': 'f-line-alignment f-component'
5119
+ }, providers: [
5120
+ { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }
5121
+ ], styles: [":host{display:block;position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}\n"] }]
5122
+ }], propDecorators: { fAlignThreshold: [{
5123
+ type: Input
5124
+ }] } });
5125
+
5126
+ const F_LINE_ALIGNMENT_PROVIDERS = [
5127
+ FLineAlignmentComponent
5128
+ ];
5129
+
5130
+ let LineAlignmentPreparationExecution = class LineAlignmentPreparationExecution {
5131
+ _fMediator = inject(FMediator);
5132
+ _fComponentsStore = inject(FComponentsStore);
5133
+ _fDraggableDataContext = inject(FDraggableDataContext);
5134
+ _fBrowser = inject(BrowserService);
5135
+ _lineService;
5136
+ handle(request) {
5137
+ this._addLineAlignmentDragHandler(this._getDraggedNodes());
5138
+ }
5139
+ _getDraggedNodes() {
5140
+ return this._fDraggableDataContext.draggableItems
5141
+ .filter((x) => x instanceof NodeDragHandler)
5142
+ .map((x) => x.fNode);
5143
+ }
5144
+ _addLineAlignmentDragHandler(fNodes) {
5145
+ this._fDraggableDataContext.draggableItems.push(new LineAlignmentDragHandler(this._fComponentsStore, this._lineService || this._createLineService(), this._getFlowHostSize(), this._getDraggedNodesBoundingRect(fNodes), this._getStaticNodeRects(fNodes), this._getCommonRestrictions()));
5146
+ }
5147
+ _getFlowHostSize() {
5148
+ return this._fMediator.send(new GetFlowHostElementRequest())
5149
+ .getBoundingClientRect();
5150
+ }
5151
+ _createLineService() {
5152
+ this._lineService = new LineService(this._fBrowser, this._fComponentsStore.fLineAlignment.hostElement);
5153
+ return this._lineService;
5154
+ }
5155
+ _getDraggedNodesBoundingRect(fNodes) {
5156
+ return RectExtensions.union(fNodes.map((x) => {
5157
+ return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
5158
+ })) || RectExtensions.initialize();
5159
+ }
5160
+ _getStaticNodeRects(fNodes) {
5161
+ return this._getStaticNodes(fNodes).map((x) => {
5162
+ return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
5163
+ });
5164
+ }
5165
+ _getStaticNodes(fNodes) {
5166
+ return this._fComponentsStore.fNodes
5167
+ .filter((x) => !fNodes.includes(x));
5168
+ }
5169
+ _getCommonRestrictions() {
5170
+ return this._fDraggableDataContext.draggableItems
5171
+ .filter((x) => x instanceof NodeDragHandler)[0].restrictions;
5172
+ }
5173
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: LineAlignmentPreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5174
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: LineAlignmentPreparationExecution });
5175
+ };
5176
+ LineAlignmentPreparationExecution = __decorate([
5177
+ FExecutionRegister(LineAlignmentPreparationRequest)
5178
+ ], LineAlignmentPreparationExecution);
5179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: LineAlignmentPreparationExecution, decorators: [{
5180
+ type: Injectable
5181
+ }] });
5182
+
5183
+ class NodeDragToParentFinalizeRequest {
5184
+ event;
5185
+ constructor(event) {
5186
+ this.event = event;
5187
+ }
5188
+ }
5189
+
5190
+ class NodeDragToParentDragHandler {
5191
+ fComponentsStore;
5192
+ fDraggableDataContext;
5193
+ notDraggedNodesRects;
5194
+ DEBOUNCE_TIME = 15;
5195
+ get _transform() {
5196
+ return this.fComponentsStore.fCanvas.transform;
5197
+ }
5198
+ _onPointerDownPosition = PointExtensions.initialize();
5199
+ _debounceTimer = null;
5200
+ fNodeWithRect = null;
5201
+ constructor(fComponentsStore, fDraggableDataContext, notDraggedNodesRects) {
5202
+ this.fComponentsStore = fComponentsStore;
5203
+ this.fDraggableDataContext = fDraggableDataContext;
5204
+ this.notDraggedNodesRects = notDraggedNodesRects;
5205
+ this._onPointerDownPosition = this.fDraggableDataContext.onPointerDownPosition;
5023
5206
  }
5024
5207
  _toggleParentNode(difference) {
5025
5208
  const isInclude = this._isNodeInsideAnotherNode(this._getNewPosition(difference));
@@ -5237,27 +5420,38 @@ let NodeMovePreparationExecution = class NodeMovePreparationExecution {
5237
5420
  get _fHost() {
5238
5421
  return this._fComponentsStore.fFlow.hostElement;
5239
5422
  }
5423
+ _fNode;
5240
5424
  handle(request) {
5241
- const itemsToDrag = this._calculateDraggableItems(this._getNode(request.event.targetElement));
5242
- this._initializeLineAlignment(itemsToDrag);
5425
+ if (!this._isValid(request)) {
5426
+ return;
5427
+ }
5243
5428
  this._fDraggableDataContext.onPointerDownScale = this._transform.scale;
5244
5429
  this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
5245
5430
  .elementTransform(this._fHost).div(this._transform.scale);
5246
- this._fDraggableDataContext.draggableItems = itemsToDrag;
5247
- }
5248
- _getNode(targetElement) {
5249
- const result = this._fComponentsStore.fNodes.find(n => n.isContains(targetElement));
5250
- if (!result) {
5251
- throw new Error('Node not found');
5431
+ this._fDraggableDataContext.draggableItems = this._calculateDraggedItems(this._fNode);
5432
+ if (this._fComponentsStore.fLineAlignment) {
5433
+ this._fMediator.execute(new LineAlignmentPreparationRequest());
5252
5434
  }
5253
- return result;
5435
+ }
5436
+ _isValid(request) {
5437
+ return this._fDraggableDataContext.isEmpty()
5438
+ && this._isDragHandleElement(request.event.targetElement)
5439
+ && !!this._getNode(request.event.targetElement);
5440
+ }
5441
+ _isDragHandleElement(element) {
5442
+ return isClosestElementHasClass(element, '.f-drag-handle');
5443
+ }
5444
+ _getNode(element) {
5445
+ this._fNode = this._fComponentsStore.fNodes
5446
+ .find(x => x.isContains(element) && !x.fDraggingDisabled);
5447
+ return this._fNode;
5254
5448
  }
5255
5449
  //We drag nodes from selection model
5256
- _calculateDraggableItems(fNode) {
5450
+ _calculateDraggedItems(fNode) {
5257
5451
  let result = [];
5258
5452
  if (!fNode.fSelectionDisabled) {
5259
5453
  // Need to select node before drag
5260
- this._fMediator.send(new SelectAndUpdateNodeLayerRequest(fNode));
5454
+ this._fMediator.execute(new SelectAndUpdateNodeLayerRequest(fNode));
5261
5455
  result = this._dragModelFromSelection();
5262
5456
  }
5263
5457
  else {
@@ -5267,14 +5461,7 @@ let NodeMovePreparationExecution = class NodeMovePreparationExecution {
5267
5461
  return result;
5268
5462
  }
5269
5463
  _dragModelFromSelection(nodeWithDisabledSelection) {
5270
- return this._fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection));
5271
- }
5272
- _initializeLineAlignment(itemsToDrag) {
5273
- this._fDraggableDataContext.fLineAlignment?.initialize(this._fComponentsStore.fNodes, this._filterNodesFromDraggableItems(itemsToDrag));
5274
- }
5275
- _filterNodesFromDraggableItems(items) {
5276
- return items.filter((x) => x instanceof NodeDragHandler)
5277
- .map(x => x.fNode);
5464
+ return this._fMediator.execute(new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection));
5278
5465
  }
5279
5466
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5280
5467
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationExecution });
@@ -5286,39 +5473,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
5286
5473
  type: Injectable
5287
5474
  }] });
5288
5475
 
5289
- let NodeMovePreparationValidator = class NodeMovePreparationValidator {
5290
- _fComponentsStore = inject(FComponentsStore);
5291
- _fDraggableDataContext = inject(FDraggableDataContext);
5292
- handle(request) {
5293
- return this._isDragHandlesEmpty()
5294
- && this._isDragHandleElement(request.event.targetElement)
5295
- && this._isNodeCanBeDragged(this._getNode(request.event.targetElement));
5296
- }
5297
- _isDragHandlesEmpty() {
5298
- return !this._fDraggableDataContext.draggableItems.length;
5299
- }
5300
- _isDragHandleElement(element) {
5301
- return isClosestElementHasClass(element, '.f-drag-handle');
5302
- }
5303
- _isNodeCanBeDragged(fNode) {
5304
- return !!fNode && !fNode.fDraggingDisabled;
5305
- }
5306
- _getNode(element) {
5307
- return this._fComponentsStore.fNodes.find(x => x.isContains(element));
5308
- }
5309
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5310
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationValidator });
5311
- };
5312
- NodeMovePreparationValidator = __decorate([
5313
- FValidatorRegister(NodeMovePreparationRequest)
5314
- ], NodeMovePreparationValidator);
5315
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationValidator, decorators: [{
5316
- type: Injectable
5317
- }] });
5318
-
5319
5476
  const NODE_MOVE_PREPARATION_PROVIDERS = [
5320
5477
  NodeMovePreparationExecution,
5321
- NodeMovePreparationValidator,
5322
5478
  ];
5323
5479
 
5324
5480
  class NodeMoveFinalizeRequest {
@@ -5344,8 +5500,7 @@ let NodeMoveFinalizeExecution = class NodeMoveFinalizeExecution {
5344
5500
  .find((x) => x instanceof NodeDragHandler);
5345
5501
  const differenceWithCellSize = firstNodeOrGroup.getDifferenceWithCellSize(difference);
5346
5502
  this._finalizeMove(differenceWithCellSize);
5347
- this._fDraggableDataContext.fLineAlignment?.complete();
5348
- this._applyConnectionUnderNode();
5503
+ this._applyConnectionUnderDroppedNode();
5349
5504
  }
5350
5505
  _isValid() {
5351
5506
  return this._fDraggableDataContext.draggableItems.some((x) => x instanceof NodeDragHandler);
@@ -5369,7 +5524,9 @@ let NodeMoveFinalizeExecution = class NodeMoveFinalizeExecution {
5369
5524
  return this._applyLineAlignmentDifference(difference, this._getLineAlignmentDifference(difference));
5370
5525
  }
5371
5526
  _getLineAlignmentDifference(difference) {
5372
- return this._fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);
5527
+ return this._fDraggableDataContext.draggableItems
5528
+ .find((x) => x instanceof LineAlignmentDragHandler)
5529
+ ?.findNearestCoordinate(difference);
5373
5530
  }
5374
5531
  _applyLineAlignmentDifference(difference, intersection) {
5375
5532
  if (intersection) {
@@ -5378,9 +5535,9 @@ let NodeMoveFinalizeExecution = class NodeMoveFinalizeExecution {
5378
5535
  }
5379
5536
  return difference;
5380
5537
  }
5381
- _applyConnectionUnderNode() {
5538
+ _applyConnectionUnderDroppedNode() {
5382
5539
  const isDraggedJustOneNode = this._fDraggableDataContext.draggableItems[0] instanceof NodeDragHandler;
5383
- if (isDraggedJustOneNode) {
5540
+ if (isDraggedJustOneNode && this._fComponentsStore.fDraggable?.emitWhenNodeIntersectedWithConnection) {
5384
5541
  const fNode = this._fDraggableDataContext.draggableItems[0].fNode;
5385
5542
  setTimeout(() => this._fMediator.execute(new IsConnectionUnderNodeRequest(fNode)));
5386
5543
  }
@@ -5397,6 +5554,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
5397
5554
 
5398
5555
  const NODE_PROVIDERS = [
5399
5556
  ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,
5557
+ LineAlignmentPreparationExecution,
5400
5558
  NodeMoveFinalizeExecution,
5401
5559
  ...NODE_MOVE_PREPARATION_PROVIDERS,
5402
5560
  ...NODE_DRAG_TO_PARENT_PREPARATION_PROVIDERS,
@@ -5860,6 +6018,9 @@ let SingleSelectExecution = class SingleSelectExecution {
5860
6018
  this.fMediator = fMediator;
5861
6019
  }
5862
6020
  handle(request) {
6021
+ if (!this._isValid(request)) {
6022
+ return;
6023
+ }
5863
6024
  const { event } = request;
5864
6025
  const item = this.getSelectableItem(event);
5865
6026
  if (item) {
@@ -5867,6 +6028,10 @@ let SingleSelectExecution = class SingleSelectExecution {
5867
6028
  }
5868
6029
  this.isMultiselectEnabled(event) ? this.multiSelect(item) : this.singleSelect(item);
5869
6030
  }
6031
+ _isValid(request) {
6032
+ return this.fComponentsStore.fFlow.hostElement.contains(request.event.targetElement)
6033
+ && !this.fDraggableDataContext.draggableItems.length;
6034
+ }
5870
6035
  getSelectableItem(event) {
5871
6036
  return this._findNode(event.targetElement) || this.getConnectionHandler(event.targetElement);
5872
6037
  }
@@ -5935,30 +6100,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
5935
6100
  type: Injectable
5936
6101
  }], ctorParameters: () => [{ type: i1.PlatformService }, { type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
5937
6102
 
5938
- let SingleSelectValidator = class SingleSelectValidator {
5939
- fComponentsStore;
5940
- fDraggableDataContext;
5941
- constructor(fComponentsStore, fDraggableDataContext) {
5942
- this.fComponentsStore = fComponentsStore;
5943
- this.fDraggableDataContext = fDraggableDataContext;
5944
- }
5945
- handle(request) {
5946
- return this.fComponentsStore.fFlow.hostElement.contains(request.event.targetElement)
5947
- && !this.fDraggableDataContext.draggableItems.length;
5948
- }
5949
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SingleSelectValidator, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
5950
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SingleSelectValidator });
5951
- };
5952
- SingleSelectValidator = __decorate([
5953
- FValidatorRegister(SingleSelectRequest)
5954
- ], SingleSelectValidator);
5955
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SingleSelectValidator, decorators: [{
5956
- type: Injectable
5957
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }] });
5958
-
5959
6103
  const SINGLE_SELECT_PROVIDERS = [
5960
6104
  SingleSelectExecution,
5961
- SingleSelectValidator
5962
6105
  ];
5963
6106
 
5964
6107
  class FDraggableBase extends DragAndDropBase {
@@ -6305,6 +6448,7 @@ class FDraggableDirective extends FDraggableBase {
6305
6448
  }
6306
6449
  fSelectionChange = new EventEmitter();
6307
6450
  fNodeIntersectedWithConnections = new EventEmitter();
6451
+ emitWhenNodeIntersectedWithConnection = false;
6308
6452
  fCreateNode = new EventEmitter();
6309
6453
  fReassignConnection = new EventEmitter();
6310
6454
  fCreateConnection = new EventEmitter();
@@ -6323,11 +6467,11 @@ class FDraggableDirective extends FDraggableBase {
6323
6467
  super.subscribe(this._fBrowser.document);
6324
6468
  }
6325
6469
  onPointerDown(event) {
6326
- this._fMediator.send(new InitializeDragSequenceRequest());
6470
+ this._fMediator.execute(new InitializeDragSequenceRequest());
6327
6471
  this.plugins.forEach((p) => p.onPointerDown?.(event));
6328
- this._fMediator.send(new SingleSelectRequest(event));
6329
- this._fMediator.send(new ReassignConnectionPreparationRequest(event));
6330
- this._fMediator.send(new CreateConnectionPreparationRequest(event));
6472
+ this._fMediator.execute(new SingleSelectRequest(event));
6473
+ this._fMediator.execute(new ReassignConnectionPreparationRequest(event));
6474
+ this._fMediator.execute(new CreateConnectionPreparationRequest(event));
6331
6475
  const isMouseLeftButton = event.isMouseLeftButton();
6332
6476
  if (!isMouseLeftButton) {
6333
6477
  this.finalizeDragSequence();
@@ -6369,7 +6513,7 @@ class FDraggableDirective extends FDraggableBase {
6369
6513
  super.unsubscribe();
6370
6514
  }
6371
6515
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDraggableDirective, deps: [{ token: NgZone, optional: true }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Directive });
6372
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FDraggableDirective, selector: "f-flow[fDraggable]", inputs: { disabled: ["fDraggableDisabled", "disabled"], vCellSize: "vCellSize", hCellSize: "hCellSize" }, outputs: { fSelectionChange: "fSelectionChange", fNodeIntersectedWithConnections: "fNodeIntersectedWithConnections", fCreateNode: "fCreateNode", fReassignConnection: "fReassignConnection", fCreateConnection: "fCreateConnection", fDropToGroup: "fDropToGroup" }, queries: [{ propertyName: "plugins", predicate: F_DRAG_AND_DROP_PLUGIN, descendants: true }], exportAs: ["fDraggable"], usesInheritance: true, ngImport: i0 });
6516
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.4", type: FDraggableDirective, selector: "f-flow[fDraggable]", inputs: { disabled: ["fDraggableDisabled", "disabled"], emitWhenNodeIntersectedWithConnection: ["emitWhenNodeIntersectedWithConnection", "emitWhenNodeIntersectedWithConnection", booleanAttribute], vCellSize: "vCellSize", hCellSize: "hCellSize" }, outputs: { fSelectionChange: "fSelectionChange", fNodeIntersectedWithConnections: "fNodeIntersectedWithConnections", fCreateNode: "fCreateNode", fReassignConnection: "fReassignConnection", fCreateConnection: "fCreateConnection", fDropToGroup: "fDropToGroup" }, queries: [{ propertyName: "plugins", predicate: F_DRAG_AND_DROP_PLUGIN, descendants: true }], exportAs: ["fDraggable"], usesInheritance: true, ngImport: i0 });
6373
6517
  }
6374
6518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDraggableDirective, decorators: [{
6375
6519
  type: Directive,
@@ -6389,6 +6533,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
6389
6533
  type: Output
6390
6534
  }], fNodeIntersectedWithConnections: [{
6391
6535
  type: Output
6536
+ }], emitWhenNodeIntersectedWithConnection: [{
6537
+ type: Input,
6538
+ args: [{ transform: booleanAttribute }]
6392
6539
  }], fCreateNode: [{
6393
6540
  type: Output
6394
6541
  }], fReassignConnection: [{
@@ -7702,23 +7849,21 @@ class GetFlowStateConnectionsRequest {
7702
7849
  }
7703
7850
 
7704
7851
  let GetFlowStateConnectionsExecution = class GetFlowStateConnectionsExecution {
7705
- fComponentsStore;
7706
- constructor(fComponentsStore) {
7707
- this.fComponentsStore = fComponentsStore;
7708
- }
7852
+ _fComponentsStore = inject(FComponentsStore);
7709
7853
  handle(request) {
7710
- return this.fComponentsStore.fConnections.map((x) => {
7711
- return {
7712
- id: x.fId,
7713
- fOutputId: x.fOutputId,
7714
- fInputId: x.fInputId,
7715
- fType: x.fType,
7716
- fBehavior: x.fBehavior,
7717
- isSelected: x.isSelected()
7718
- };
7719
- });
7854
+ return this._fComponentsStore.fConnections.map(this._mapToConnectionState);
7855
+ }
7856
+ _mapToConnectionState(x) {
7857
+ return {
7858
+ id: x.fId,
7859
+ fOutputId: x.fOutputId,
7860
+ fInputId: x.fInputId,
7861
+ fType: x.fType,
7862
+ fBehavior: x.fBehavior,
7863
+ isSelected: x.isSelected()
7864
+ };
7720
7865
  }
7721
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateConnectionsExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
7866
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateConnectionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7722
7867
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateConnectionsExecution });
7723
7868
  };
7724
7869
  GetFlowStateConnectionsExecution = __decorate([
@@ -7726,7 +7871,7 @@ GetFlowStateConnectionsExecution = __decorate([
7726
7871
  ], GetFlowStateConnectionsExecution);
7727
7872
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateConnectionsExecution, decorators: [{
7728
7873
  type: Injectable
7729
- }], ctorParameters: () => [{ type: FComponentsStore }] });
7874
+ }] });
7730
7875
 
7731
7876
  class GetFlowStateNodesRequest {
7732
7877
  type;
@@ -7747,13 +7892,13 @@ let GetFlowStateNodesExecution = class GetFlowStateNodesExecution {
7747
7892
  parent: x.fParentId,
7748
7893
  position: x.position,
7749
7894
  size: x.size,
7750
- fOutputs: this.getOutputs(x.hostElement),
7751
- fInputs: this.getInputs(x.hostElement),
7895
+ fOutputs: this._getOutputs(x.hostElement),
7896
+ fInputs: this._getInputs(x.hostElement),
7752
7897
  isSelected: x.isSelected()
7753
7898
  };
7754
7899
  });
7755
7900
  }
7756
- getOutputs(hostElement) {
7901
+ _getOutputs(hostElement) {
7757
7902
  return this.fComponentsStore.fOutputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {
7758
7903
  return {
7759
7904
  id: x.fId,
@@ -7761,7 +7906,7 @@ let GetFlowStateNodesExecution = class GetFlowStateNodesExecution {
7761
7906
  };
7762
7907
  });
7763
7908
  }
7764
- getInputs(hostElement) {
7909
+ _getInputs(hostElement) {
7765
7910
  return this.fComponentsStore.fInputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {
7766
7911
  return {
7767
7912
  id: x.fId,
@@ -7783,25 +7928,21 @@ class GetFlowStateRequest {
7783
7928
  }
7784
7929
 
7785
7930
  let GetFlowStateExecution = class GetFlowStateExecution {
7786
- fComponentsStore;
7787
- fMediator;
7788
- constructor(fComponentsStore, fMediator) {
7789
- this.fComponentsStore = fComponentsStore;
7790
- this.fMediator = fMediator;
7791
- }
7931
+ _fMediator = inject(FMediator);
7932
+ _fComponentsStore = inject(FComponentsStore);
7792
7933
  handle(payload) {
7793
7934
  return {
7794
- position: this.getCanvasPosition(this.fComponentsStore.fCanvas.transform),
7795
- scale: this.fComponentsStore.fCanvas.transform.scale,
7796
- nodes: this.fMediator.send(new GetFlowStateNodesRequest(FNodeDirective)),
7797
- groups: this.fMediator.send(new GetFlowStateNodesRequest(FGroupDirective)),
7798
- connections: this.fMediator.send(new GetFlowStateConnectionsRequest())
7935
+ position: this._getCanvasPosition(this._fComponentsStore.fCanvas.transform),
7936
+ scale: this._fComponentsStore.fCanvas.transform.scale,
7937
+ nodes: this._fMediator.send(new GetFlowStateNodesRequest(FNodeDirective)),
7938
+ groups: this._fMediator.send(new GetFlowStateNodesRequest(FGroupDirective)),
7939
+ connections: this._fMediator.send(new GetFlowStateConnectionsRequest())
7799
7940
  };
7800
7941
  }
7801
- getCanvasPosition(transform) {
7942
+ _getCanvasPosition(transform) {
7802
7943
  return PointExtensions.sum(transform.position, transform.scaledPosition);
7803
7944
  }
7804
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
7945
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7805
7946
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateExecution });
7806
7947
  };
7807
7948
  GetFlowStateExecution = __decorate([
@@ -7809,7 +7950,7 @@ GetFlowStateExecution = __decorate([
7809
7950
  ], GetFlowStateExecution);
7810
7951
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateExecution, decorators: [{
7811
7952
  type: Injectable
7812
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
7953
+ }] });
7813
7954
 
7814
7955
  const GET_FLOW_STATE_PROVIDERS = [
7815
7956
  GetFlowStateExecution,
@@ -7853,7 +7994,7 @@ class AddLineAlignmentToStoreRequest {
7853
7994
  let AddLineAlignmentToStoreExecution = class AddLineAlignmentToStoreExecution {
7854
7995
  _fComponentsStore = inject(FComponentsStore);
7855
7996
  handle(request) {
7856
- //this._fComponentsStore.fFlow = request.fComponent;
7997
+ this._fComponentsStore.fLineAlignment = request.fComponent;
7857
7998
  }
7858
7999
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddLineAlignmentToStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7859
8000
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddLineAlignmentToStoreExecution });
@@ -7871,7 +8012,7 @@ class RemoveLineAlignmentFromStoreRequest {
7871
8012
  let RemoveLineAlignmentFromStoreExecution = class RemoveLineAlignmentFromStoreExecution {
7872
8013
  _fComponentsStore = inject(FComponentsStore);
7873
8014
  handle(request) {
7874
- this._fComponentsStore.fFlow = undefined;
8015
+ this._fComponentsStore.fLineAlignment = undefined;
7875
8016
  }
7876
8017
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveLineAlignmentFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7877
8018
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveLineAlignmentFromStoreExecution });
@@ -7937,15 +8078,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
7937
8078
  }] });
7938
8079
 
7939
8080
  class CalculateNodesBoundingBoxNormalizedPositionRequest {
8081
+ fNodes;
8082
+ constructor(fNodes) {
8083
+ this.fNodes = fNodes;
8084
+ }
7940
8085
  }
7941
8086
 
7942
8087
  let CalculateNodesBoundingBoxNormalizedPositionExecution = class CalculateNodesBoundingBoxNormalizedPositionExecution {
7943
8088
  _fComponentsStore = inject(FComponentsStore);
7944
8089
  handle(request) {
7945
- return RectExtensions.union(this._getNodesRects());
8090
+ return RectExtensions.union(this._getNodesRects(request.fNodes || this._fComponentsStore.fNodes));
7946
8091
  }
7947
- _getNodesRects() {
7948
- return this._fComponentsStore.fNodes.map((x) => {
8092
+ _getNodesRects(fNodes) {
8093
+ return fNodes.map((x) => {
7949
8094
  return this._getElementRect(x, RectExtensions.fromElement(x.hostElement));
7950
8095
  });
7951
8096
  }
@@ -8016,6 +8161,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
8016
8161
  type: Injectable
8017
8162
  }] });
8018
8163
 
8164
+ class GetParentNodesRequest {
8165
+ fNode;
8166
+ constructor(fNode) {
8167
+ this.fNode = fNode;
8168
+ }
8169
+ }
8170
+
8171
+ let GetParentNodesExecution = class GetParentNodesExecution {
8172
+ _fComponentsStore = inject(FComponentsStore);
8173
+ handle(request) {
8174
+ return this._getParentNodes(request.fNode, new Set(), []);
8175
+ }
8176
+ _getParentNodes(fNode, visited, result) {
8177
+ if (visited.has(fNode.fId)) {
8178
+ throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);
8179
+ }
8180
+ visited.add(fNode.fId);
8181
+ const parent = this._fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);
8182
+ if (!parent) {
8183
+ return result;
8184
+ }
8185
+ result.push(parent);
8186
+ return this._getParentNodes(parent, visited, result);
8187
+ }
8188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8189
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution });
8190
+ };
8191
+ GetParentNodesExecution = __decorate([
8192
+ FExecutionRegister(GetParentNodesRequest)
8193
+ ], GetParentNodesExecution);
8194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, decorators: [{
8195
+ type: Injectable
8196
+ }] });
8197
+
8019
8198
  class UpdateNodeWhenStateOrSizeChangedRequest {
8020
8199
  fComponent;
8021
8200
  destroyRef;
@@ -8259,6 +8438,22 @@ function isMobile() {
8259
8438
  return /android|iPad|iPhone|iPod/i.test(navigator.userAgent || navigator.vendor || window['opera']);
8260
8439
  }
8261
8440
 
8441
+ function LogExecutionTime(label) {
8442
+ return function (target, propertyKey, descriptor) {
8443
+ const originalMethod = descriptor.value;
8444
+ descriptor.value = function (...args) {
8445
+ console.time(label || String(propertyKey));
8446
+ const result = originalMethod.apply(this, args);
8447
+ if (result instanceof Promise) {
8448
+ return result.finally(() => console.timeEnd(label || String(propertyKey)));
8449
+ }
8450
+ console.timeEnd(label || String(propertyKey));
8451
+ return result;
8452
+ };
8453
+ return descriptor;
8454
+ };
8455
+ }
8456
+
8262
8457
  const COMMON_PROVIDERS = [
8263
8458
  ...F_CANVAS_FEATURES,
8264
8459
  ...F_CONNECTION_FEATURES,
@@ -8634,171 +8829,6 @@ const F_CANVAS_PROVIDERS = [
8634
8829
  FCanvasComponent,
8635
8830
  ];
8636
8831
 
8637
- class LineElement {
8638
- hostElement;
8639
- element;
8640
- constructor(fBrowser, hostElement) {
8641
- this.hostElement = hostElement;
8642
- this.element = fBrowser.document.createElement('div');
8643
- this.hostElement.appendChild(this.element);
8644
- this.element.classList.add('f-line');
8645
- }
8646
- hide() {
8647
- this.element.style.display = 'none';
8648
- }
8649
- show() {
8650
- this.element.style.display = 'block';
8651
- }
8652
- draw(object) {
8653
- this.element.style.position = 'absolute';
8654
- Object.keys(object).forEach((key) => {
8655
- // @ts-ignore
8656
- this.element.style[key] = object[key] + 'px';
8657
- });
8658
- }
8659
- }
8660
-
8661
- class LineService {
8662
- hostElement;
8663
- fHorizontalLine;
8664
- fVerticalLine;
8665
- constructor(fBrowser, hostElement) {
8666
- this.hostElement = hostElement;
8667
- this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);
8668
- this.fVerticalLine = new LineElement(fBrowser, this.hostElement);
8669
- this.fHorizontalLine.hide();
8670
- this.fVerticalLine.hide();
8671
- }
8672
- drawVerticalLine(x, size, transform) {
8673
- this.fVerticalLine.show();
8674
- this.fVerticalLine.draw({
8675
- left: x * transform.scale + transform.position.x + transform.scaledPosition.x,
8676
- top: 0,
8677
- width: 1,
8678
- height: size.height
8679
- });
8680
- }
8681
- drawHorizontalLine(y, size, transform) {
8682
- this.fHorizontalLine.show();
8683
- this.fHorizontalLine.draw({
8684
- left: 0,
8685
- top: y * transform.scale + transform.position.y + transform.scaledPosition.y,
8686
- width: size.width,
8687
- height: 1
8688
- });
8689
- }
8690
- hideVerticalLine() {
8691
- this.fVerticalLine.hide();
8692
- }
8693
- hideHorizontalLine() {
8694
- this.fHorizontalLine.hide();
8695
- }
8696
- }
8697
-
8698
- const F_LINE_ALIGNMENT = new InjectionToken('F_LINE_ALIGNMENT');
8699
- class FLineAlignmentBase {
8700
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
8701
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FLineAlignmentBase, ngImport: i0 });
8702
- }
8703
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentBase, decorators: [{
8704
- type: Directive
8705
- }] });
8706
-
8707
- class FLineAlignmentComponent extends FLineAlignmentBase {
8708
- elementReference;
8709
- fDraggableDataContext;
8710
- DEBOUNCE_TIME = 10;
8711
- fAlignThreshold = 10;
8712
- get hostElement() {
8713
- return this.elementReference.nativeElement;
8714
- }
8715
- lineService;
8716
- size = SizeExtensions.initialize();
8717
- draggedNodeRect = RectExtensions.initialize();
8718
- rects = [];
8719
- _fMediator = inject(FMediator);
8720
- _fCanvas;
8721
- _debounceTimer = null;
8722
- get _transform() {
8723
- return this._fCanvas.transform;
8724
- }
8725
- constructor(elementReference, fDraggableDataContext, fBrowser) {
8726
- super();
8727
- this.elementReference = elementReference;
8728
- this.fDraggableDataContext = fDraggableDataContext;
8729
- this.lineService = new LineService(fBrowser, this.hostElement);
8730
- }
8731
- ngAfterViewInit() {
8732
- this._fCanvas = this._fMediator.send(new GetCanvasRequest());
8733
- this.fDraggableDataContext.fLineAlignment = this;
8734
- }
8735
- initialize(allNodes, currentNodes) {
8736
- this.size = this._fMediator.send(new GetFlowHostElementRequest()).getBoundingClientRect();
8737
- this.rects = [];
8738
- const draggedNodeRects = currentNodes.map((x) => {
8739
- return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
8740
- });
8741
- this.draggedNodeRect = RectExtensions.union(draggedNodeRects) || RectExtensions.initialize();
8742
- const allNodesExcludeCurrents = allNodes.filter((x) => {
8743
- return !currentNodes.includes(x);
8744
- });
8745
- this.rects = allNodesExcludeCurrents.map((x) => {
8746
- return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
8747
- });
8748
- }
8749
- handle(difference) {
8750
- if (this._debounceTimer) {
8751
- clearTimeout(this._debounceTimer);
8752
- }
8753
- this._debounceTimer = setTimeout(() => this.drawIntersectingLines(difference), this.DEBOUNCE_TIME);
8754
- }
8755
- drawIntersectingLines(difference) {
8756
- const intersect = this.findNearestCoordinate(difference);
8757
- if (intersect.xResult.value !== undefined) {
8758
- this.lineService.drawVerticalLine(intersect.xResult.value, this.size, this._transform);
8759
- }
8760
- else {
8761
- this.lineService.hideVerticalLine();
8762
- }
8763
- if (intersect.yResult.value !== undefined) {
8764
- this.lineService.drawHorizontalLine(intersect.yResult.value, this.size, this._transform);
8765
- }
8766
- else {
8767
- this.lineService.hideHorizontalLine();
8768
- }
8769
- }
8770
- findNearestCoordinate(difference) {
8771
- const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);
8772
- return findClosestAlignment(this.rects, rect, this.fAlignThreshold);
8773
- }
8774
- complete() {
8775
- this.lineService.hideVerticalLine();
8776
- this.lineService.hideHorizontalLine();
8777
- if (this._debounceTimer) {
8778
- clearTimeout(this._debounceTimer);
8779
- this._debounceTimer = null;
8780
- }
8781
- }
8782
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentComponent, deps: [{ token: i0.ElementRef }, { token: FDraggableDataContext }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Component });
8783
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: FLineAlignmentComponent, selector: "f-line-alignment", inputs: { fAlignThreshold: "fAlignThreshold" }, host: { classAttribute: "f-line-alignment f-component" }, providers: [
8784
- { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }
8785
- ], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0, template: "", isInline: true, styles: [":host{display:block;position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}\n"] });
8786
- }
8787
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentComponent, decorators: [{
8788
- type: Component,
8789
- args: [{ selector: "f-line-alignment", template: "", exportAs: "fComponent", host: {
8790
- 'class': 'f-line-alignment f-component'
8791
- }, providers: [
8792
- { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }
8793
- ], styles: [":host{display:block;position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}\n"] }]
8794
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: FDraggableDataContext }, { type: i1.BrowserService }], propDecorators: { fAlignThreshold: [{
8795
- type: Input
8796
- }] } });
8797
-
8798
- const F_LINE_ALIGNMENT_PROVIDERS = [
8799
- FLineAlignmentComponent
8800
- ];
8801
-
8802
8832
  class FMinimapData {
8803
8833
  element;
8804
8834
  scale;
@@ -9251,5 +9281,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
9251
9281
  * Generated bundle index. Do not edit.
9252
9282
  */
9253
9283
 
9254
- export { AddBackgroundToStoreExecution, AddBackgroundToStoreRequest, AddCanvasToStoreExecution, AddCanvasToStoreRequest, AddConnectionForCreateToStoreExecution, AddConnectionForCreateToStoreRequest, AddConnectionMarkerToStoreExecution, AddConnectionMarkerToStoreRequest, AddConnectionToStoreExecution, AddConnectionToStoreRequest, AddDndToStoreExecution, AddDndToStoreRequest, AddFlowToStoreExecution, AddFlowToStoreRequest, AddInputToStoreExecution, AddInputToStoreRequest, AddLineAlignmentToStoreExecution, AddLineAlignmentToStoreRequest, AddNodeToStoreExecution, AddNodeToStoreRequest, AddOutletToStoreExecution, AddOutletToStoreRequest, AddOutputToStoreExecution, AddOutputToStoreRequest, AddPatternToBackgroundExecution, AddPatternToBackgroundRequest, AddSnapConnectionToStoreExecution, AddSnapConnectionToStoreRequest, ApplyChildResizeRestrictionsExecution, ApplyChildResizeRestrictionsRequest, ApplyParentResizeRestrictionsExecution, ApplyParentResizeRestrictionsRequest, CANVAS_MOVE_FINALIZE_PROVIDERS, CANVAS_MOVE_PREPARATION_PROVIDERS, CANVAS_PROVIDERS, COMMON_PROVIDERS, CONNECTIONS_PROVIDERS, CONNECTION_GRADIENT, CONNECTION_PATH, CONNECTION_TEXT, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest, CalculateChangedPositionExecution, CalculateChangedPositionRequest, CalculateChangedSizeExecution, CalculateChangedSizeRequest, CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, CalculateConnectionLineByBehaviorExecution, CalculateConnectionLineByBehaviorRequest, CalculateConnectorConnectableSideHandler, CalculateConnectorConnectableSideRequest, CalculateFlowPointFromMinimapPointExecution, CalculateFlowPointFromMinimapPointRequest, CalculateNodesBoundingBoxExecution, CalculateNodesBoundingBoxNormalizedPositionExecution, CalculateNodesBoundingBoxNormalizedPositionRequest, CalculateNodesBoundingBoxRequest, CanvasDragHandler, CanvasMoveFinalizeExecution, CanvasMoveFinalizeRequest, CanvasMovePreparationExecution, CanvasMovePreparationRequest, CanvasMovePreparationValidator, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, ConnectionBaseDragHandler, ConnectionDragHandler, ConnectionSourceDragHandler, ConnectionTargetDragHandler, CreateConnectionDragHandler, CreateConnectionDragHandlerExecution, CreateConnectionDragHandlerRequest, CreateConnectionFinalizeExecution, CreateConnectionFinalizeRequest, CreateConnectionFromOutletPreparationExecution, CreateConnectionFromOutletPreparationRequest, CreateConnectionFromOutputPreparationExecution, CreateConnectionFromOutputPreparationRequest, CreateConnectionFromOutputPreparationValidator, CreateConnectionMarkersExecution, CreateConnectionMarkersRequest, CreateConnectionPreparationExecution, CreateConnectionPreparationRequest, CreateConnectionPreparationValidator, CreateMoveNodesDragModelFromSelectionExecution, CreateMoveNodesDragModelFromSelectionRequest, DRAG_AND_DROP_COMMON_PROVIDERS, EFConnectableSide, EFConnectionBehavior, EFConnectionType, EFMarkerType, EFResizeHandleType, EXTERNAL_ITEM_FINALIZE_PROVIDERS, EXTERNAL_ITEM_PREPARATION_PROVIDERS, EmitSelectionChangeEventExecution, EmitSelectionChangeEventRequest, EndDragSequenceExecution, EndDragSequenceRequest, ExternalItemDragHandler, ExternalItemFinalizeExecution, ExternalItemFinalizeRequest, ExternalItemPreparationExecution, ExternalItemPreparationRequest, ExternalItemPreparationValidator, FBackgroundBase, FBackgroundComponent, FBezierPathBuilder, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FChannel, FChannelHub, FCirclePatternComponent, FComponentsStore, FConnectionBase, FConnectionCenterDirective, FConnectionComponent, FConnectionDragHandleComponent, FConnectionFactory, FConnectionForCreateComponent, FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, FConnectionTextPathDirective, FConnectorBase, FCreateConnectionEvent, FCreateNodeEvent, FDragHandleDirective, FDraggableBase, FDraggableDataContext, FDraggableDirective, FDropToGroupEvent, FExternalItemBase, FExternalItemDirective, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FGroupDirective, FLineAlignmentBase, FLineAlignmentComponent, FMarkerBase, FMarkerDirective, FMinimapCanvasDirective, FMinimapComponent, FMinimapData, FMinimapDragHandler, FMinimapFlowDirective, FMinimapViewDirective, FNodeBase, FNodeDirective, FNodeInputBase, FNodeInputDirective, FNodeIntersectedWithConnections, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FReassignConnectionEvent, FRectPatternComponent, FResizeChannel, FResizeHandleDirective, FRotateHandleDirective, FSegmentPathBuilder, FSelectionAreaBase, FSelectionAreaComponent, FSelectionChangeEvent, FSnapConnectionComponent, FStraightPathBuilder, FZoomBase, FZoomDirective, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_CANVAS, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_DRAG_HANDLE_CLASS, F_CONNECTION_FEATURES, F_CONNECTION_IDENTIFIERS, F_CONNECTION_PROVIDERS, F_CONNECTORS_FEATURES, F_CONNECTORS_PROVIDERS, F_DRAGGABLE_FEATURES, F_DRAGGABLE_PROVIDERS, F_DRAG_AND_DROP_PLUGIN, F_DRAG_HANDLE, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_FEATURES, F_FLOW_PROVIDERS, F_LINE_ALIGNMENT, F_LINE_ALIGNMENT_FEATURES, F_LINE_ALIGNMENT_PROVIDERS, F_MARKER, F_MINIMAP_DRAG_AND_DROP_PROVIDERS, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_FEATURES, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_RESIZE_HANDLE, F_SELECTED_CLASS, F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_STORAGE_PROVIDERS, F_ZOOM, F_ZOOM_PROVIDERS, FindClosestInputExecution, FindClosestInputRequest, FitToFlowExecution, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetAllCanBeConnectedInputPositionsExecution, GetAllCanBeConnectedInputPositionsRequest, GetCanBeConnectedOutputByOutletExecution, GetCanBeConnectedOutputByOutletRequest, GetCanBeConnectedOutputByOutletValidator, GetCanBeSelectedItemsExecution, GetCanBeSelectedItemsRequest, GetCanvasExecution, GetCanvasRequest, GetConnectorWithRectExecution, GetConnectorWithRectRequest, GetCurrentSelectionExecution, GetCurrentSelectionRequest, GetDeepChildrenNodesAndGroupsExecution, GetDeepChildrenNodesAndGroupsRequest, GetElementRoundedRectExecution, GetElementRoundedRectRequest, GetFlowExecution, GetFlowHostElementExecution, GetFlowHostElementRequest, GetFlowRequest, GetFlowStateConnectionsExecution, GetFlowStateConnectionsRequest, GetFlowStateExecution, GetFlowStateNodesExecution, GetFlowStateNodesRequest, GetFlowStateRequest, GetInputUnderPointerExecution, GetInputUnderPointerRequest, GetInputUnderPointerValidator, GetNodeMoveRestrictionsExecution, GetNodeMoveRestrictionsRequest, GetNodePaddingExecution, GetNodePaddingRequest, GetNodeResizeRestrictionsExecution, GetNodeResizeRestrictionsRequest, GetNodesExecution, GetNodesRequest, GetNormalizedChildrenNodesRectExecution, GetNormalizedChildrenNodesRectRequest, GetNormalizedElementRectExecution, GetNormalizedElementRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetNormalizedPointExecution, GetNormalizedPointRequest, GetParentNodesExecution, GetParentNodesRequest, InitializeDragSequenceExecution, InitializeDragSequenceRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, IsConnectionUnderNodeRequest, IsDragStartedExecution, IsDragStartedRequest, LineElement, LineService, ListenCountChangesExecution, ListenCountChangesRequest, ListenDataChangesExecution, ListenDataChangesRequest, ListenTransformChangesExecution, ListenTransformChangesRequest, MINIMAP_DRAG_FINALIZE_PROVIDERS, MINIMAP_DRAG_PREPARATION_PROVIDERS, MinimapCalculateSvgScaleAndViewBoxExecution, MinimapCalculateSvgScaleAndViewBoxRequest, MinimapCalculateViewBoxExecution, MinimapCalculateViewBoxRequest, MinimapDragFinalizeExecution, MinimapDragFinalizeRequest, MinimapDragFinalizeValidator, MinimapDragPreparationExecution, MinimapDragPreparationRequest, MinimapDragPreparationValidator, MinimapDrawNodesExecution, MinimapDrawNodesRequest, MoveFrontElementsBeforeTargetElementExecution, MoveFrontElementsBeforeTargetElementRequest, NODE_DRAG_TO_PARENT_FINALIZE_PROVIDERS, NODE_DRAG_TO_PARENT_PREPARATION_PROVIDERS, NODE_MOVE_PREPARATION_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_FINALIZE_PROVIDERS, NODE_RESIZE_PREPARATION_PROVIDERS, NODE_RESIZE_PROVIDERS, NodeDragHandler, NodeDragToParentDragHandler, NodeDragToParentFinalizeExecution, NodeDragToParentFinalizeRequest, NodeDragToParentPreparationExecution, NodeDragToParentPreparationRequest, NodeDragToParentPreparationValidator, NodeMoveFinalizeExecution, NodeMoveFinalizeRequest, NodeMovePreparationExecution, NodeMovePreparationRequest, NodeMovePreparationValidator, NodeResizeByChildDragHandler, NodeResizeDragHandler, NodeResizeFinalizeExecution, NodeResizeFinalizeRequest, NodeResizePreparationExecution, NodeResizePreparationRequest, NodeResizePreparationValidator, NotifyDataChangedExecution, NotifyDataChangedRequest, NotifyTransformChangedExecution, NotifyTransformChangedRequest, OnPointerMoveExecution, OnPointerMoveRequest, PrepareDragSequenceExecution, PrepareDragSequenceRequest, PreventDefaultIsExternalItemExecution, PreventDefaultIsExternalItemRequest, PutInputConnectionHandlersToArrayExecution, PutInputConnectionHandlersToArrayRequest, PutOutputConnectionHandlersToArrayExecution, PutOutputConnectionHandlersToArrayRequest, RESIZE_DIRECTIONS, ReassignConnectionDragHandler, ReassignConnectionFinalizeExecution, ReassignConnectionFinalizeRequest, ReassignConnectionPreparationExecution, ReassignConnectionPreparationRequest, ReassignConnectionPreparationValidator, RedrawCanvasWithAnimationExecution, RedrawCanvasWithAnimationRequest, RedrawConnectionsExecution, RedrawConnectionsRequest, RemoveBackgroundFromStoreExecution, RemoveBackgroundFromStoreRequest, RemoveCanvasFromStoreExecution, RemoveCanvasFromStoreRequest, RemoveConnectionForCreateFromStoreExecution, RemoveConnectionForCreateFromStoreRequest, RemoveConnectionFromStoreExecution, RemoveConnectionFromStoreRequest, RemoveConnectionMarkerFromStoreExecution, RemoveConnectionMarkerFromStoreRequest, RemoveDndFromStoreExecution, RemoveDndFromStoreRequest, RemoveFlowFromStoreExecution, RemoveFlowFromStoreRequest, RemoveInputFromStoreExecution, RemoveInputFromStoreRequest, RemoveLineAlignmentFromStoreExecution, RemoveLineAlignmentFromStoreRequest, RemoveNodeFromStoreExecution, RemoveNodeFromStoreRequest, RemoveOutletFromStoreExecution, RemoveOutletFromStoreRequest, RemoveOutputFromStoreExecution, RemoveOutputFromStoreRequest, RemoveSnapConnectionFromStoreExecution, RemoveSnapConnectionFromStoreRequest, ResetScaleAndCenterExecution, ResetScaleAndCenterRequest, ResetScaleExecution, ResetScaleRequest, SELECTION_AREA_FINALIZE_PROVIDERS, SELECTION_AREA_PREPARATION_PROVIDERS, SINGLE_SELECT_PROVIDERS, SelectAllExecution, SelectAllRequest, SelectAndUpdateNodeLayerExecution, SelectAndUpdateNodeLayerRequest, SelectExecution, SelectRequest, SelectionAreaDragHandle, SelectionAreaFinalizeExecution, SelectionAreaFinalizeRequest, SelectionAreaFinalizeValidator, SelectionAreaPreparationExecution, SelectionAreaPreparationRequest, SelectionAreaPreparationValidator, SetBackgroundTransformExecution, SetBackgroundTransformRequest, SingleSelectExecution, SingleSelectRequest, SingleSelectValidator, SortItemLayersExecution, SortItemLayersRequest, SortItemsByParentExecution, SortItemsByParentRequest, SortNodeLayersExecution, SortNodeLayersRequest, StartDragSequenceExecution, StartDragSequenceRequest, UpdateItemAndChildrenLayersExecution, UpdateItemAndChildrenLayersRequest, UpdateNodeWhenStateOrSizeChangedExecution, UpdateNodeWhenStateOrSizeChangedRequest, UpdateScaleExecution, UpdateScaleRequest, createSVGElement, debounceTime, fixedCenterBehavior, fixedOutboundBehavior, floatingBehavior, getExternalItem, getMarkerEndId, getMarkerSelectedEndId, getMarkerSelectedStartId, getMarkerStartId, isExternalItem, isMobile, isNode, isNodeOutlet, isNodeOutput, mixinChangeSelection, mixinChangeVisibility, notifyOnStart, transitionEnd };
9284
+ export { AddBackgroundToStoreExecution, AddBackgroundToStoreRequest, AddCanvasToStoreExecution, AddCanvasToStoreRequest, AddConnectionForCreateToStoreExecution, AddConnectionForCreateToStoreRequest, AddConnectionMarkerToStoreExecution, AddConnectionMarkerToStoreRequest, AddConnectionToStoreExecution, AddConnectionToStoreRequest, AddDndToStoreExecution, AddDndToStoreRequest, AddFlowToStoreExecution, AddFlowToStoreRequest, AddInputToStoreExecution, AddInputToStoreRequest, AddLineAlignmentToStoreExecution, AddLineAlignmentToStoreRequest, AddNodeToStoreExecution, AddNodeToStoreRequest, AddOutletToStoreExecution, AddOutletToStoreRequest, AddOutputToStoreExecution, AddOutputToStoreRequest, AddPatternToBackgroundExecution, AddPatternToBackgroundRequest, AddSnapConnectionToStoreExecution, AddSnapConnectionToStoreRequest, ApplyChildResizeRestrictionsExecution, ApplyChildResizeRestrictionsRequest, ApplyParentResizeRestrictionsExecution, ApplyParentResizeRestrictionsRequest, CANVAS_MOVE_FINALIZE_PROVIDERS, CANVAS_MOVE_PREPARATION_PROVIDERS, CANVAS_PROVIDERS, COMMON_PROVIDERS, CONNECTIONS_PROVIDERS, CONNECTION_GRADIENT, CONNECTION_PATH, CONNECTION_TEXT, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest, CalculateChangedPositionExecution, CalculateChangedPositionRequest, CalculateChangedSizeExecution, CalculateChangedSizeRequest, CalculateCommonNodeMoveRestrictionsExecution, CalculateCommonNodeMoveRestrictionsRequest, CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, CalculateConnectionLineByBehaviorExecution, CalculateConnectionLineByBehaviorRequest, CalculateConnectorConnectableSideHandler, CalculateConnectorConnectableSideRequest, CalculateFlowPointFromMinimapPointExecution, CalculateFlowPointFromMinimapPointRequest, CalculateNodeMoveRestrictionsExecution, CalculateNodeMoveRestrictionsRequest, CalculateNodesBoundingBoxExecution, CalculateNodesBoundingBoxNormalizedPositionExecution, CalculateNodesBoundingBoxNormalizedPositionRequest, CalculateNodesBoundingBoxRequest, CanvasDragHandler, CanvasMoveFinalizeExecution, CanvasMoveFinalizeRequest, CanvasMovePreparationExecution, CanvasMovePreparationRequest, CanvasMovePreparationValidator, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, ConnectionBaseDragHandler, ConnectionDragHandler, ConnectionSourceDragHandler, ConnectionTargetDragHandler, CreateConnectionDragHandler, CreateConnectionDragHandlerExecution, CreateConnectionDragHandlerRequest, CreateConnectionFinalizeExecution, CreateConnectionFinalizeRequest, CreateConnectionFromOutletPreparationExecution, CreateConnectionFromOutletPreparationRequest, CreateConnectionFromOutputPreparationExecution, CreateConnectionFromOutputPreparationRequest, CreateConnectionFromOutputPreparationValidator, CreateConnectionMarkersExecution, CreateConnectionMarkersRequest, CreateConnectionPreparationExecution, CreateConnectionPreparationRequest, CreateMoveNodesDragModelFromSelectionExecution, CreateMoveNodesDragModelFromSelectionRequest, DRAG_AND_DROP_COMMON_PROVIDERS, EFConnectableSide, EFConnectionBehavior, EFConnectionType, EFMarkerType, EFResizeHandleType, EXTERNAL_ITEM_FINALIZE_PROVIDERS, EXTERNAL_ITEM_PREPARATION_PROVIDERS, EmitSelectionChangeEventExecution, EmitSelectionChangeEventRequest, EndDragSequenceExecution, EndDragSequenceRequest, ExternalItemDragHandler, ExternalItemFinalizeExecution, ExternalItemFinalizeRequest, ExternalItemPreparationExecution, ExternalItemPreparationRequest, ExternalItemPreparationValidator, FBackgroundBase, FBackgroundComponent, FBezierPathBuilder, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FChannel, FChannelHub, FCirclePatternComponent, FComponentsStore, FConnectionBase, FConnectionCenterDirective, FConnectionComponent, FConnectionDragHandleComponent, FConnectionFactory, FConnectionForCreateComponent, FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, FConnectionTextPathDirective, FConnectorBase, FCreateConnectionEvent, FCreateNodeEvent, FDragHandleDirective, FDraggableBase, FDraggableDataContext, FDraggableDirective, FDropToGroupEvent, FExternalItemBase, FExternalItemDirective, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FGroupDirective, FLineAlignmentBase, FLineAlignmentComponent, FMarkerBase, FMarkerDirective, FMinimapCanvasDirective, FMinimapComponent, FMinimapData, FMinimapDragHandler, FMinimapFlowDirective, FMinimapViewDirective, FNodeBase, FNodeDirective, FNodeInputBase, FNodeInputDirective, FNodeIntersectedWithConnections, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FReassignConnectionEvent, FRectPatternComponent, FResizeChannel, FResizeHandleDirective, FRotateHandleDirective, FSegmentPathBuilder, FSelectionAreaBase, FSelectionAreaComponent, FSelectionChangeEvent, FSnapConnectionComponent, FStraightPathBuilder, FZoomBase, FZoomDirective, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_CANVAS, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_DRAG_HANDLE_CLASS, F_CONNECTION_FEATURES, F_CONNECTION_IDENTIFIERS, F_CONNECTION_PROVIDERS, F_CONNECTORS_FEATURES, F_CONNECTORS_PROVIDERS, F_DRAGGABLE_FEATURES, F_DRAGGABLE_PROVIDERS, F_DRAG_AND_DROP_PLUGIN, F_DRAG_HANDLE, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_FEATURES, F_FLOW_PROVIDERS, F_LINE_ALIGNMENT, F_LINE_ALIGNMENT_FEATURES, F_LINE_ALIGNMENT_PROVIDERS, F_MARKER, F_MINIMAP_DRAG_AND_DROP_PROVIDERS, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_FEATURES, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_RESIZE_HANDLE, F_SELECTED_CLASS, F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_STORAGE_PROVIDERS, F_ZOOM, F_ZOOM_PROVIDERS, FindClosestInputExecution, FindClosestInputRequest, FitToFlowExecution, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetAllCanBeConnectedInputPositionsExecution, GetAllCanBeConnectedInputPositionsRequest, GetCanBeConnectedOutputByOutletExecution, GetCanBeConnectedOutputByOutletRequest, GetCanBeConnectedOutputByOutletValidator, GetCanBeSelectedItemsExecution, GetCanBeSelectedItemsRequest, GetCanvasExecution, GetCanvasRequest, GetConnectorWithRectExecution, GetConnectorWithRectRequest, GetCurrentSelectionExecution, GetCurrentSelectionRequest, GetDeepChildrenNodesAndGroupsExecution, GetDeepChildrenNodesAndGroupsRequest, GetElementRoundedRectExecution, GetElementRoundedRectRequest, GetFlowExecution, GetFlowHostElementExecution, GetFlowHostElementRequest, GetFlowRequest, GetFlowStateConnectionsExecution, GetFlowStateConnectionsRequest, GetFlowStateExecution, GetFlowStateNodesExecution, GetFlowStateNodesRequest, GetFlowStateRequest, GetInputUnderPointerExecution, GetInputUnderPointerRequest, GetInputUnderPointerValidator, GetNodePaddingExecution, GetNodePaddingRequest, GetNodeResizeRestrictionsExecution, GetNodeResizeRestrictionsRequest, GetNodesExecution, GetNodesRequest, GetNormalizedChildrenNodesRectExecution, GetNormalizedChildrenNodesRectRequest, GetNormalizedElementRectExecution, GetNormalizedElementRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetNormalizedPointExecution, GetNormalizedPointRequest, GetParentNodesExecution, GetParentNodesRequest, InitializeDragSequenceExecution, InitializeDragSequenceRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, IsConnectionUnderNodeRequest, IsDragStartedExecution, IsDragStartedRequest, LineAlignmentDragHandler, LineAlignmentPreparationExecution, LineAlignmentPreparationRequest, LineElement, LineService, ListenCountChangesExecution, ListenCountChangesRequest, ListenDataChangesExecution, ListenDataChangesRequest, ListenTransformChangesExecution, ListenTransformChangesRequest, LogExecutionTime, MINIMAP_DRAG_FINALIZE_PROVIDERS, MINIMAP_DRAG_PREPARATION_PROVIDERS, MinimapCalculateSvgScaleAndViewBoxExecution, MinimapCalculateSvgScaleAndViewBoxRequest, MinimapCalculateViewBoxExecution, MinimapCalculateViewBoxRequest, MinimapDragFinalizeExecution, MinimapDragFinalizeRequest, MinimapDragFinalizeValidator, MinimapDragPreparationExecution, MinimapDragPreparationRequest, MinimapDragPreparationValidator, MinimapDrawNodesExecution, MinimapDrawNodesRequest, MoveFrontElementsBeforeTargetElementExecution, MoveFrontElementsBeforeTargetElementRequest, NODE_DRAG_TO_PARENT_FINALIZE_PROVIDERS, NODE_DRAG_TO_PARENT_PREPARATION_PROVIDERS, NODE_MOVE_PREPARATION_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_FINALIZE_PROVIDERS, NODE_RESIZE_PREPARATION_PROVIDERS, NODE_RESIZE_PROVIDERS, NodeDragHandler, NodeDragToParentDragHandler, NodeDragToParentFinalizeExecution, NodeDragToParentFinalizeRequest, NodeDragToParentPreparationExecution, NodeDragToParentPreparationRequest, NodeDragToParentPreparationValidator, NodeMoveFinalizeExecution, NodeMoveFinalizeRequest, NodeMovePreparationExecution, NodeMovePreparationRequest, NodeResizeByChildDragHandler, NodeResizeDragHandler, NodeResizeFinalizeExecution, NodeResizeFinalizeRequest, NodeResizePreparationExecution, NodeResizePreparationRequest, NodeResizePreparationValidator, NotifyDataChangedExecution, NotifyDataChangedRequest, NotifyTransformChangedExecution, NotifyTransformChangedRequest, OnPointerMoveExecution, OnPointerMoveRequest, PrepareDragSequenceExecution, PrepareDragSequenceRequest, PreventDefaultIsExternalItemExecution, PreventDefaultIsExternalItemRequest, PutInputConnectionHandlersToArrayExecution, PutInputConnectionHandlersToArrayRequest, PutOutputConnectionHandlersToArrayExecution, PutOutputConnectionHandlersToArrayRequest, RESIZE_DIRECTIONS, ReassignConnectionDragHandler, ReassignConnectionFinalizeExecution, ReassignConnectionFinalizeRequest, ReassignConnectionPreparationExecution, ReassignConnectionPreparationRequest, RedrawCanvasWithAnimationExecution, RedrawCanvasWithAnimationRequest, RedrawConnectionsExecution, RedrawConnectionsRequest, RemoveBackgroundFromStoreExecution, RemoveBackgroundFromStoreRequest, RemoveCanvasFromStoreExecution, RemoveCanvasFromStoreRequest, RemoveConnectionForCreateFromStoreExecution, RemoveConnectionForCreateFromStoreRequest, RemoveConnectionFromStoreExecution, RemoveConnectionFromStoreRequest, RemoveConnectionMarkerFromStoreExecution, RemoveConnectionMarkerFromStoreRequest, RemoveDndFromStoreExecution, RemoveDndFromStoreRequest, RemoveFlowFromStoreExecution, RemoveFlowFromStoreRequest, RemoveInputFromStoreExecution, RemoveInputFromStoreRequest, RemoveLineAlignmentFromStoreExecution, RemoveLineAlignmentFromStoreRequest, RemoveNodeFromStoreExecution, RemoveNodeFromStoreRequest, RemoveOutletFromStoreExecution, RemoveOutletFromStoreRequest, RemoveOutputFromStoreExecution, RemoveOutputFromStoreRequest, RemoveSnapConnectionFromStoreExecution, RemoveSnapConnectionFromStoreRequest, ResetScaleAndCenterExecution, ResetScaleAndCenterRequest, ResetScaleExecution, ResetScaleRequest, SELECTION_AREA_FINALIZE_PROVIDERS, SELECTION_AREA_PREPARATION_PROVIDERS, SINGLE_SELECT_PROVIDERS, SelectAllExecution, SelectAllRequest, SelectAndUpdateNodeLayerExecution, SelectAndUpdateNodeLayerRequest, SelectExecution, SelectRequest, SelectionAreaDragHandle, SelectionAreaFinalizeExecution, SelectionAreaFinalizeRequest, SelectionAreaFinalizeValidator, SelectionAreaPreparationExecution, SelectionAreaPreparationRequest, SelectionAreaPreparationValidator, SetBackgroundTransformExecution, SetBackgroundTransformRequest, SingleSelectExecution, SingleSelectRequest, SortItemLayersExecution, SortItemLayersRequest, SortItemsByParentExecution, SortItemsByParentRequest, SortNodeLayersExecution, SortNodeLayersRequest, StartDragSequenceExecution, StartDragSequenceRequest, UpdateItemAndChildrenLayersExecution, UpdateItemAndChildrenLayersRequest, UpdateNodeWhenStateOrSizeChangedExecution, UpdateNodeWhenStateOrSizeChangedRequest, UpdateScaleExecution, UpdateScaleRequest, createSVGElement, debounceTime, fixedCenterBehavior, fixedOutboundBehavior, floatingBehavior, getExternalItem, getMarkerEndId, getMarkerSelectedEndId, getMarkerSelectedStartId, getMarkerStartId, isExternalItem, isMobile, isNode, isNodeOutlet, isNodeOutput, mixinChangeSelection, mixinChangeVisibility, notifyOnStart, transitionEnd };
9255
9285
  //# sourceMappingURL=foblex-flow.mjs.map