@foblex/flow 17.0.5 → 17.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/domain/f-connection/find-closest-input/find-closest-input.execution.d.ts +11 -0
  2. package/domain/f-connection/{find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.d.ts → find-closest-input/find-closest-input.request.d.ts} +2 -3
  3. package/domain/f-connection/find-closest-input/i-closest-input.d.ts +7 -0
  4. package/domain/f-connection/find-closest-input/index.d.ts +3 -0
  5. package/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.d.ts +2 -3
  6. package/domain/f-connection/index.d.ts +1 -1
  7. package/domain/f-connection/providers.d.ts +2 -2
  8. package/domain/f-draggable/providers.d.ts +1 -1
  9. package/{f-draggable/domain → domain/f-node}/get-parent-nodes/get-parent-nodes.execution.d.ts +2 -4
  10. package/domain/f-node/index.d.ts +2 -0
  11. package/domain/f-node/providers.d.ts +3 -1
  12. package/domain/get-normalized-element-rect/get-normalized-element-rect-request.d.ts +2 -1
  13. package/domain/providers.d.ts +1 -1
  14. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.mjs +1 -1
  15. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.mjs +5 -3
  16. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.mjs +19 -29
  17. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.mjs +6 -3
  18. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.execution.mjs +42 -0
  19. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.request.mjs +9 -0
  20. package/esm2022/domain/f-connection/find-closest-input/i-closest-input.mjs +2 -0
  21. package/esm2022/domain/f-connection/find-closest-input/index.mjs +4 -0
  22. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.mjs +1 -1
  23. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.mjs +7 -11
  24. package/esm2022/domain/f-connection/index.mjs +2 -2
  25. package/esm2022/domain/f-connection/providers.mjs +3 -3
  26. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +2 -2
  27. package/esm2022/domain/f-node/get-node-padding/get-node-padding.execution.mjs +34 -0
  28. package/esm2022/domain/f-node/get-node-padding/get-node-padding.request.mjs +9 -0
  29. package/esm2022/domain/f-node/get-node-padding/index.mjs +3 -0
  30. package/esm2022/domain/f-node/get-parent-nodes/get-parent-nodes.execution.mjs +34 -0
  31. package/esm2022/domain/f-node/get-parent-nodes/get-parent-nodes.request.mjs +7 -0
  32. package/esm2022/domain/f-node/get-parent-nodes/index.mjs +3 -0
  33. package/esm2022/domain/f-node/index.mjs +3 -1
  34. package/esm2022/domain/f-node/providers.mjs +5 -1
  35. package/esm2022/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.mjs +3 -3
  36. package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect-request.mjs +4 -2
  37. package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect.execution.mjs +5 -5
  38. package/esm2022/f-connection/f-connection/f-connection.component.mjs +6 -5
  39. package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +33 -19
  40. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +29 -21
  41. package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.mjs +6 -6
  42. package/esm2022/f-draggable/domain/index.mjs +1 -4
  43. package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.mjs +2 -2
  44. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +2 -2
  45. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.request.mjs +1 -1
  46. package/esm2022/f-draggable/domain/providers.mjs +1 -7
  47. package/esm2022/f-draggable/f-draggable-base.mjs +1 -1
  48. package/esm2022/f-draggable/f-draggable.directive.mjs +8 -2
  49. package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +2 -2
  50. package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +2 -2
  51. package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +2 -2
  52. package/esm2022/f-draggable/node/connection.drag-handler.mjs +2 -2
  53. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.mjs +32 -35
  54. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.mjs +12 -15
  55. package/esm2022/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.mjs +15 -8
  56. package/esm2022/f-draggable/node/node-drag-to-parent.drag-handler.mjs +32 -17
  57. package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +37 -31
  58. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.execution.mjs +41 -43
  59. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.validator.mjs +19 -23
  60. package/esm2022/f-draggable/node/node.drag-handler.mjs +25 -10
  61. package/esm2022/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.mjs +3 -2
  62. package/esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.mjs +4 -5
  63. package/esm2022/f-draggable/node-resize/node-resize.drag-handler.mjs +3 -3
  64. package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.execution.mjs +2 -2
  65. package/esm2022/f-flow.module.mjs +1 -1
  66. package/esm2022/f-line-alignment/domain/index.mjs +1 -2
  67. package/esm2022/f-line-alignment/f-line-alignment.component.mjs +17 -12
  68. package/esm2022/f-node/f-drag-handle.directive.mjs +22 -0
  69. package/esm2022/f-node/index.mjs +3 -3
  70. package/esm2022/f-node/is-node.mjs +4 -0
  71. package/esm2022/f-node/providers.mjs +2 -2
  72. package/f-backgroud/providers.d.ts +1 -1
  73. package/f-connection/f-connection/f-connection.component.d.ts +4 -2
  74. package/f-connection/providers.d.ts +1 -1
  75. package/f-connectors/providers.d.ts +1 -1
  76. package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +8 -4
  77. package/f-draggable/connections/providers.d.ts +1 -1
  78. package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +7 -4
  79. package/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.d.ts +1 -1
  80. package/f-draggable/domain/index.d.ts +0 -3
  81. package/f-draggable/domain/providers.d.ts +1 -4
  82. package/f-draggable/f-draggable-base.d.ts +2 -0
  83. package/f-draggable/f-draggable.directive.d.ts +4 -2
  84. package/f-draggable/node/connection-base-drag-handler.d.ts +1 -1
  85. package/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.d.ts +7 -9
  86. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.d.ts +3 -4
  87. package/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.d.ts +1 -1
  88. package/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.d.ts +4 -3
  89. package/f-draggable/node/node-drag-to-parent.drag-handler.d.ts +9 -4
  90. package/f-draggable/node/node-move-finalize/node-move-finalize.execution.d.ts +11 -11
  91. package/f-draggable/node/node-move-preparation/node-move-preparation.execution.d.ts +11 -14
  92. package/f-draggable/node/node-move-preparation/node-move-preparation.validator.d.ts +6 -9
  93. package/f-draggable/node/node.drag-handler.d.ts +9 -5
  94. package/f-draggable/node/providers.d.ts +1 -1
  95. package/f-draggable/providers.d.ts +1 -1
  96. package/f-flow.module.d.ts +1 -1
  97. package/f-line-alignment/domain/index.d.ts +0 -1
  98. package/f-line-alignment/f-line-alignment.component.d.ts +2 -1
  99. package/f-minimap/domain/providers.d.ts +1 -1
  100. package/f-node/{f-drag-handle/f-drag-handle.directive.d.ts → f-drag-handle.directive.d.ts} +1 -1
  101. package/f-node/index.d.ts +2 -2
  102. package/f-node/providers.d.ts +2 -2
  103. package/f-storage/providers.d.ts +1 -1
  104. package/fesm2022/foblex-flow.mjs +409 -482
  105. package/fesm2022/foblex-flow.mjs.map +1 -1
  106. package/package.json +3 -3
  107. package/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.d.ts +0 -11
  108. package/domain/f-connection/find-closest-input-using-snap-threshold/index.d.ts +0 -2
  109. package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.mjs +0 -39
  110. package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.mjs +0 -11
  111. package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/index.mjs +0 -3
  112. package/esm2022/f-draggable/domain/get-node-padding/get-node-padding.execution.mjs +0 -34
  113. package/esm2022/f-draggable/domain/get-node-padding/get-node-padding.request.mjs +0 -9
  114. package/esm2022/f-draggable/domain/get-node-padding/index.mjs +0 -3
  115. package/esm2022/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.mjs +0 -30
  116. package/esm2022/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.mjs +0 -7
  117. package/esm2022/f-draggable/domain/get-normalized-node-rect/index.mjs +0 -3
  118. package/esm2022/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.mjs +0 -37
  119. package/esm2022/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.mjs +0 -7
  120. package/esm2022/f-draggable/domain/get-parent-nodes/index.mjs +0 -3
  121. package/esm2022/f-line-alignment/domain/nearest-coordinate.mjs +0 -104
  122. package/esm2022/f-node/domain/index.mjs +0 -2
  123. package/esm2022/f-node/domain/is-node.mjs +0 -4
  124. package/esm2022/f-node/f-drag-handle/f-drag-handle.directive.mjs +0 -22
  125. package/esm2022/f-node/f-drag-handle/index.mjs +0 -2
  126. package/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.d.ts +0 -13
  127. package/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.d.ts +0 -5
  128. package/f-draggable/domain/get-normalized-node-rect/index.d.ts +0 -2
  129. package/f-line-alignment/domain/nearest-coordinate.d.ts +0 -27
  130. package/f-node/domain/index.d.ts +0 -1
  131. package/f-node/f-drag-handle/index.d.ts +0 -1
  132. /package/{f-draggable/domain → domain/f-node}/get-node-padding/get-node-padding.execution.d.ts +0 -0
  133. /package/{f-draggable/domain → domain/f-node}/get-node-padding/get-node-padding.request.d.ts +0 -0
  134. /package/{f-draggable/domain → domain/f-node}/get-node-padding/index.d.ts +0 -0
  135. /package/{f-draggable/domain → domain/f-node}/get-parent-nodes/get-parent-nodes.request.d.ts +0 -0
  136. /package/{f-draggable/domain → domain/f-node}/get-parent-nodes/index.d.ts +0 -0
  137. /package/f-node/{domain/is-node.d.ts → is-node.d.ts} +0 -0
@@ -1,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, Line, setRectToElement, adjustRectToMinSize, setRectToViewBox } from '@foblex/2d';
3
+ import { RectExtensions, RoundedRect, TransformModelExtensions, PointExtensions, Point, SizeExtensions, LineExtensions, GetIntersections, setRectToElement, adjustRectToMinSize, findClosestAlignment, 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';
@@ -918,18 +918,16 @@ function createSVGElement$1(tag, fBrowser) {
918
918
  return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);
919
919
  }
920
920
 
921
- class FindClosestInputUsingSnapThresholdRequest {
921
+ class FindClosestInputRequest {
922
922
  position;
923
923
  canBeConnectedInputs;
924
- snapThreshold;
925
- constructor(position, canBeConnectedInputs, snapThreshold) {
924
+ constructor(position, canBeConnectedInputs) {
926
925
  this.position = position;
927
926
  this.canBeConnectedInputs = canBeConnectedInputs;
928
- this.snapThreshold = snapThreshold;
929
927
  }
930
928
  }
931
929
 
932
- let FindClosestInputUsingSnapThresholdExecution = class FindClosestInputUsingSnapThresholdExecution {
930
+ let FindClosestInputExecution = class FindClosestInputExecution {
933
931
  handle(payload) {
934
932
  let result;
935
933
  let minDistance = Infinity;
@@ -940,7 +938,10 @@ let FindClosestInputUsingSnapThresholdExecution = class FindClosestInputUsingSna
940
938
  result = element;
941
939
  }
942
940
  }
943
- return minDistance < payload.snapThreshold ? result : undefined;
941
+ return result ? {
942
+ ...result,
943
+ distance: minDistance,
944
+ } : undefined;
944
945
  }
945
946
  distanceToRectangle(point, inputWithRect) {
946
947
  const closestX = this.clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);
@@ -952,13 +953,13 @@ let FindClosestInputUsingSnapThresholdExecution = class FindClosestInputUsingSna
952
953
  clamp(value, min, max) {
953
954
  return Math.max(min, Math.min(max, value));
954
955
  }
955
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindClosestInputUsingSnapThresholdExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
956
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindClosestInputUsingSnapThresholdExecution });
956
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindClosestInputExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
957
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindClosestInputExecution });
957
958
  };
958
- FindClosestInputUsingSnapThresholdExecution = __decorate([
959
- FExecutionRegister(FindClosestInputUsingSnapThresholdRequest)
960
- ], FindClosestInputUsingSnapThresholdExecution);
961
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindClosestInputUsingSnapThresholdExecution, decorators: [{
959
+ FindClosestInputExecution = __decorate([
960
+ FExecutionRegister(FindClosestInputRequest)
961
+ ], FindClosestInputExecution);
962
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindClosestInputExecution, decorators: [{
962
963
  type: Injectable
963
964
  }] });
964
965
 
@@ -978,8 +979,10 @@ class GetConnectorWithRectRequest {
978
979
 
979
980
  class GetNormalizedElementRectRequest {
980
981
  element;
981
- constructor(element) {
982
+ isRoundedRect;
983
+ constructor(element, isRoundedRect = true) {
982
984
  this.element = element;
985
+ this.isRoundedRect = isRoundedRect;
983
986
  }
984
987
  }
985
988
 
@@ -990,13 +993,13 @@ let GetNormalizedElementRectExecution = class GetNormalizedElementRectExecution
990
993
  return this._fComponentsStore.fCanvas.transform;
991
994
  }
992
995
  handle(request) {
993
- const systemRect = this._getElementRoundedRect(request.element);
996
+ const systemRect = this._getElementRoundedRect(request);
994
997
  const position = this._normalizePosition(systemRect);
995
998
  const size = this._normalizeSize(systemRect);
996
999
  return new RoundedRect(position.x, position.y, size.width, size.height, systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4);
997
1000
  }
998
- _getElementRoundedRect(element) {
999
- return this._fMediator.send(new GetElementRoundedRectRequest(element));
1001
+ _getElementRoundedRect(request) {
1002
+ return request.isRoundedRect ? this._fMediator.send(new GetElementRoundedRectRequest(request.element)) : RoundedRect.fromRect(RectExtensions.fromElement(request.element));
1000
1003
  }
1001
1004
  _normalizePosition(rect) {
1002
1005
  return Point.fromPoint(rect).elementTransform(this._fComponentsStore.flowHost).sub(this._transform.scaledPosition).sub(this._transform.position).div(this._transform.scale);
@@ -1015,17 +1018,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
1015
1018
  }] });
1016
1019
 
1017
1020
  let GetConnectorWithRectExecution = class GetConnectorWithRectExecution {
1018
- fMediator;
1019
- constructor(fMediator) {
1020
- this.fMediator = fMediator;
1021
- }
1021
+ _fMediator = inject(FMediator);
1022
1022
  handle(request) {
1023
1023
  return {
1024
1024
  fConnector: request.connector,
1025
- fRect: this.fMediator.send(new GetNormalizedElementRectRequest(request.connector.hostElement))
1025
+ fRect: this._fMediator.send(new GetNormalizedElementRectRequest(request.connector.hostElement, true))
1026
1026
  };
1027
1027
  }
1028
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetConnectorWithRectExecution, deps: [{ token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
1028
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetConnectorWithRectExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1029
1029
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetConnectorWithRectExecution });
1030
1030
  };
1031
1031
  GetConnectorWithRectExecution = __decorate([
@@ -1033,7 +1033,7 @@ GetConnectorWithRectExecution = __decorate([
1033
1033
  ], GetConnectorWithRectExecution);
1034
1034
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetConnectorWithRectExecution, decorators: [{
1035
1035
  type: Injectable
1036
- }], ctorParameters: () => [{ type: i2.FMediator }] });
1036
+ }] });
1037
1037
 
1038
1038
  let GetAllCanBeConnectedInputPositionsExecution = class GetAllCanBeConnectedInputPositionsExecution {
1039
1039
  fComponentsStore;
@@ -1244,30 +1244,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
1244
1244
  type: Directive
1245
1245
  }] });
1246
1246
 
1247
- function isNode(element) {
1248
- return !!element.closest('[fNode]');
1249
- }
1250
-
1251
- const F_DRAG_HANDLE = new InjectionToken('F_DRAG_HANDLE');
1252
- class FDragHandleDirective {
1253
- _elementReference = inject(ElementRef);
1254
- get hostElement() {
1255
- return this._elementReference.nativeElement;
1256
- }
1257
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDragHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1258
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FDragHandleDirective, selector: "[fDragHandle]", host: { classAttribute: "f-drag-handle f-component" }, providers: [{ provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective }], ngImport: i0 });
1259
- }
1260
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDragHandleDirective, decorators: [{
1261
- type: Directive,
1262
- args: [{
1263
- selector: "[fDragHandle]",
1264
- host: {
1265
- class: "f-drag-handle f-component"
1266
- },
1267
- providers: [{ provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective }],
1268
- }]
1269
- }] });
1270
-
1271
1247
  var EFResizeHandleType;
1272
1248
  (function (EFResizeHandleType) {
1273
1249
  EFResizeHandleType["LEFT_TOP"] = "left-top";
@@ -1338,6 +1314,26 @@ class FRotateHandleDirective {
1338
1314
  }
1339
1315
  }
1340
1316
 
1317
+ const F_DRAG_HANDLE = new InjectionToken('F_DRAG_HANDLE');
1318
+ class FDragHandleDirective {
1319
+ _elementReference = inject(ElementRef);
1320
+ get hostElement() {
1321
+ return this._elementReference.nativeElement;
1322
+ }
1323
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDragHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1324
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FDragHandleDirective, selector: "[fDragHandle]", host: { classAttribute: "f-drag-handle f-component" }, providers: [{ provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective }], ngImport: i0 });
1325
+ }
1326
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDragHandleDirective, decorators: [{
1327
+ type: Directive,
1328
+ args: [{
1329
+ selector: "[fDragHandle]",
1330
+ host: {
1331
+ class: "f-drag-handle f-component"
1332
+ },
1333
+ providers: [{ provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective }],
1334
+ }]
1335
+ }] });
1336
+
1341
1337
  const F_SELECTED_CLASS = 'f-selected';
1342
1338
  function mixinChangeSelection(base) {
1343
1339
  return class extends base {
@@ -1659,6 +1655,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
1659
1655
  type: Input
1660
1656
  }] } });
1661
1657
 
1658
+ function isNode(element) {
1659
+ return !!element.closest('[fNode]');
1660
+ }
1661
+
1662
1662
  const F_NODE_PROVIDERS = [
1663
1663
  FGroupDirective,
1664
1664
  FNodeDirective,
@@ -2690,7 +2690,7 @@ class FConnectionComponent extends FConnectionBase {
2690
2690
  this._fMediator.send(new RemoveConnectionFromStoreRequest(this));
2691
2691
  }
2692
2692
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FConnectionComponent, deps: [{ token: i0.ElementRef }, { token: FConnectionFactory }], target: i0.ɵɵFactoryTarget.Component });
2693
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.4", type: FConnectionComponent, selector: "f-connection", inputs: { fId: ["fConnectionId", "fId"], fText: "fText", fTextStartOffset: "fTextStartOffset", fStartColor: "fStartColor", fEndColor: "fEndColor", fOutputId: "fOutputId", fInputId: "fInputId", fRadius: "fRadius", fOffset: "fOffset", fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType", fDraggingDisabled: ["fReassignDisabled", "fDraggingDisabled"], fSelectionDisabled: "fSelectionDisabled" }, host: { properties: { "attr.id": "fId", "class.f-connection-selection-disabled": "fSelectionDisabled", "class.f-connection-reassign-disabled": "fDraggingDisabled" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], queries: [{ propertyName: "fConnectionCenters", predicate: FConnectionCenterDirective, descendants: true }], viewQueries: [{ propertyName: "fDefs", first: true, predicate: ["defs"], descendants: true, static: true }, { propertyName: "fPath", first: true, predicate: CONNECTION_PATH, descendants: true, static: true }, { propertyName: "fGradient", first: true, predicate: CONNECTION_GRADIENT, descendants: true, static: true }, { propertyName: "fDragHandle", first: true, predicate: FConnectionDragHandleComponent, descendants: true, static: true }, { propertyName: "fSelection", first: true, predicate: FConnectionSelectionComponent, descendants: true, static: true }, { propertyName: "fTextComponent", first: true, predicate: CONNECTION_TEXT, descendants: true, static: true }, { propertyName: "fConnectionCenter", first: true, predicate: ["fConnectionCenter"], descendants: true }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center{pointer-events:all}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleComponent, selector: "circle[f-connection-drag-handle]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2693
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.4", type: FConnectionComponent, selector: "f-connection", inputs: { fId: ["fConnectionId", "fId"], fText: "fText", fTextStartOffset: "fTextStartOffset", fStartColor: "fStartColor", fEndColor: "fEndColor", fOutputId: "fOutputId", fInputId: "fInputId", fRadius: "fRadius", fOffset: "fOffset", fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType", fDraggingDisabled: ["fReassignDisabled", "fDraggingDisabled", booleanAttribute], fSelectionDisabled: ["fSelectionDisabled", "fSelectionDisabled", booleanAttribute] }, host: { properties: { "attr.id": "fId", "class.f-connection-selection-disabled": "fSelectionDisabled", "class.f-connection-reassign-disabled": "fDraggingDisabled" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], queries: [{ propertyName: "fConnectionCenters", predicate: FConnectionCenterDirective, descendants: true }], viewQueries: [{ propertyName: "fDefs", first: true, predicate: ["defs"], descendants: true, static: true }, { propertyName: "fPath", first: true, predicate: CONNECTION_PATH, descendants: true, static: true }, { propertyName: "fGradient", first: true, predicate: CONNECTION_GRADIENT, descendants: true, static: true }, { propertyName: "fDragHandle", first: true, predicate: FConnectionDragHandleComponent, descendants: true, static: true }, { propertyName: "fSelection", first: true, predicate: FConnectionSelectionComponent, descendants: true, static: true }, { propertyName: "fTextComponent", first: true, predicate: CONNECTION_TEXT, descendants: true, static: true }, { propertyName: "fConnectionCenter", first: true, predicate: ["fConnectionCenter"], descendants: true }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center{pointer-events:all}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleComponent, selector: "circle[f-connection-drag-handle]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2694
2694
  }
2695
2695
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FConnectionComponent, decorators: [{
2696
2696
  type: Component,
@@ -2726,9 +2726,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
2726
2726
  type: Input
2727
2727
  }], fDraggingDisabled: [{
2728
2728
  type: Input,
2729
- args: ['fReassignDisabled']
2729
+ args: [{ alias: 'fReassignDisabled', transform: booleanAttribute }]
2730
2730
  }], fSelectionDisabled: [{
2731
- type: Input
2731
+ type: Input,
2732
+ args: [{ transform: booleanAttribute }]
2732
2733
  }], fDefs: [{
2733
2734
  type: ViewChild,
2734
2735
  args: ['defs', { static: true }]
@@ -2942,42 +2943,39 @@ function _toRoundedRectIntersections(payload) {
2942
2943
  return GetIntersections.getRoundedRectIntersections(payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect)[0];
2943
2944
  }
2944
2945
  function _getIntersectionsLine(from, to, payload) {
2945
- return new Line(from ? from : payload.outputRect.gravityCenter, to ? to : payload.inputRect.gravityCenter);
2946
+ return {
2947
+ point1: from ? from : payload.outputRect.gravityCenter,
2948
+ point2: to ? to : payload.inputRect.gravityCenter
2949
+ };
2946
2950
  }
2947
2951
 
2948
2952
  function fixedCenterBehavior(payload) {
2949
- return new Line(payload.outputRect.gravityCenter, payload.inputRect.gravityCenter);
2953
+ return {
2954
+ point1: payload.outputRect.gravityCenter,
2955
+ point2: payload.inputRect.gravityCenter
2956
+ };
2950
2957
  }
2951
2958
 
2952
2959
  function fixedOutboundBehavior(payload) {
2953
- return new Line(positions[payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide](payload.outputRect), positions[payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide](payload.inputRect));
2960
+ return {
2961
+ point1: _getPosition(payload.outputRect, payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide),
2962
+ point2: _getPosition(payload.inputRect, payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide)
2963
+ };
2964
+ }
2965
+ function _getPosition(rect, side) {
2966
+ switch (side) {
2967
+ case EFConnectableSide.TOP:
2968
+ return { x: rect.x + rect.width / 2, y: rect.y };
2969
+ case EFConnectableSide.BOTTOM:
2970
+ return { x: rect.x + rect.width / 2, y: rect.y + rect.height };
2971
+ case EFConnectableSide.LEFT:
2972
+ return { x: rect.x, y: rect.y + rect.height / 2 };
2973
+ case EFConnectableSide.RIGHT:
2974
+ return { x: rect.x + rect.width, y: rect.y + rect.height / 2 };
2975
+ default:
2976
+ throw new Error(`Unknown side: ${side}`);
2977
+ }
2954
2978
  }
2955
- const positions = {
2956
- [EFConnectableSide.TOP]: (rect) => {
2957
- const result = new Point();
2958
- result.y = rect.y;
2959
- result.x = rect.x + rect.width / 2;
2960
- return result;
2961
- },
2962
- [EFConnectableSide.BOTTOM]: (rect) => {
2963
- const result = new Point();
2964
- result.y = rect.y + rect.height;
2965
- result.x = rect.x + rect.width / 2;
2966
- return result;
2967
- },
2968
- [EFConnectableSide.LEFT]: (rect) => {
2969
- const result = new Point();
2970
- result.x = rect.x;
2971
- result.y = rect.y + rect.height / 2;
2972
- return result;
2973
- },
2974
- [EFConnectableSide.RIGHT]: (rect) => {
2975
- const result = new Point();
2976
- result.x = rect.x + rect.width;
2977
- result.y = rect.y + rect.height / 2;
2978
- return result;
2979
- },
2980
- };
2981
2979
 
2982
2980
  let CalculateConnectionLineByBehaviorExecution = class CalculateConnectionLineByBehaviorExecution {
2983
2981
  _handlers = {
@@ -3038,7 +3036,7 @@ let RedrawConnectionsExecution = class RedrawConnectionsExecution {
3038
3036
  connection.isSelected() ? connection.select() : null;
3039
3037
  }
3040
3038
  getLine(output, input, connection) {
3041
- return this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fMediator.send(new GetNormalizedElementRectRequest(output.hostElement)), this.fMediator.send(new GetNormalizedElementRectRequest(input.hostElement)), connection.fBehavior, output.fConnectableSide, input.fConnectableSide));
3039
+ return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this.fMediator.execute(new GetNormalizedElementRectRequest(output.hostElement, true)), this.fMediator.execute(new GetNormalizedElementRectRequest(input.hostElement, true)), connection.fBehavior, output.fConnectableSide, input.fConnectableSide));
3042
3040
  }
3043
3041
  setMarkers(connection) {
3044
3042
  this.fMediator.send(new CreateConnectionMarkersRequest(connection));
@@ -3147,7 +3145,7 @@ const F_CONNECTION_FEATURES = [
3147
3145
  AddConnectionToStoreExecution,
3148
3146
  AddSnapConnectionToStoreExecution,
3149
3147
  CreateConnectionMarkersExecution,
3150
- FindClosestInputUsingSnapThresholdExecution,
3148
+ FindClosestInputExecution,
3151
3149
  GetAllCanBeConnectedInputPositionsExecution,
3152
3150
  CalculateConnectionLineByBehaviorExecution,
3153
3151
  GetConnectorWithRectExecution,
@@ -3789,34 +3787,42 @@ class CreateConnectionDragHandler {
3789
3787
  this.onPointerDownPosition = onPointerDownPosition;
3790
3788
  }
3791
3789
  prepareDragSequence() {
3792
- if (this.fSnapConnection) {
3793
- this.fSnapConnection.fOutputId = this.fOutput.fId;
3794
- this.fSnapConnection.initialize();
3795
- this.canBeConnectedInputs = this.fMediator.send(new GetAllCanBeConnectedInputPositionsRequest(this.fOutput.fId));
3796
- }
3797
- this.fConnection.fOutputId = this.fOutput.fId;
3798
- this.fConnection.initialize();
3790
+ this._initializeSnapConnection();
3791
+ this._initializeConnectionForCreate();
3792
+ this.canBeConnectedInputs = this.fMediator.send(new GetAllCanBeConnectedInputPositionsRequest(this.fOutput.fId));
3799
3793
  this.fOutputWithRect = this.fMediator.send(new GetConnectorWithRectRequest(this.fOutput));
3800
3794
  this.toConnectorRect = RoundedRect.fromRect(RectExtensions.initialize(this.onPointerDownPosition.x, this.onPointerDownPosition.y));
3801
3795
  this.fConnection.show();
3802
3796
  this.onPointerMove(PointExtensions.initialize());
3803
3797
  }
3798
+ _initializeSnapConnection() {
3799
+ if (!this.fSnapConnection) {
3800
+ return;
3801
+ }
3802
+ this.fSnapConnection.fOutputId = this.fOutput.fId;
3803
+ this.fSnapConnection.initialize();
3804
+ }
3805
+ _initializeConnectionForCreate() {
3806
+ this.fConnection.fOutputId = this.fOutput.fId;
3807
+ this.fConnection.initialize();
3808
+ }
3804
3809
  onPointerMove(difference) {
3805
- this.drawTempConnection(this.toConnectorRect.addPoint(difference));
3810
+ const fClosestInput = this._findClosestInput(difference);
3811
+ this._drawConnectionForCreate(this.toConnectorRect.addPoint(difference), fClosestInput?.fConnector.fConnectableSide || EFConnectableSide.TOP);
3806
3812
  if (this.fSnapConnection) {
3807
- this.drawSnapConnection(this.getClosetInput(difference));
3813
+ this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));
3808
3814
  }
3809
3815
  }
3810
- drawTempConnection(fInputRect) {
3811
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, EFConnectableSide.TOP));
3812
- this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, EFConnectableSide.TOP);
3816
+ _drawConnectionForCreate(fInputRect, fSide) {
3817
+ const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fSide));
3818
+ this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);
3813
3819
  this.fConnection.redraw();
3814
3820
  }
3815
- drawSnapConnection(fInputWithRect) {
3816
- if (fInputWithRect) {
3817
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputWithRect.fRect, this.fSnapConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fInputWithRect.fConnector.fConnectableSide));
3821
+ _drawSnapConnection(fClosestInput) {
3822
+ if (fClosestInput) {
3823
+ const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fClosestInput.fRect, this.fSnapConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
3818
3824
  this.fSnapConnection.show();
3819
- this.fSnapConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);
3825
+ this.fSnapConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);
3820
3826
  this.fSnapConnection.redraw();
3821
3827
  }
3822
3828
  else {
@@ -3827,7 +3833,13 @@ class CreateConnectionDragHandler {
3827
3833
  if (!this.fSnapConnection) {
3828
3834
  return undefined;
3829
3835
  }
3830
- return this.fMediator.send(new FindClosestInputUsingSnapThresholdRequest(Point.fromPoint(this.toConnectorRect).add(difference), this.canBeConnectedInputs, this.fSnapConnection.fSnapThreshold));
3836
+ return this._getClosestInputForSnapConnection(this._findClosestInput(difference));
3837
+ }
3838
+ _findClosestInput(difference) {
3839
+ return this.fMediator.send(new FindClosestInputRequest(Point.fromPoint(this.toConnectorRect).add(difference), this.canBeConnectedInputs));
3840
+ }
3841
+ _getClosestInputForSnapConnection(fClosestInput) {
3842
+ return fClosestInput && fClosestInput.distance < this.fSnapConnection.fSnapThreshold ? fClosestInput : undefined;
3831
3843
  }
3832
3844
  onPointerUp() {
3833
3845
  this.fConnection.redraw();
@@ -4168,15 +4180,19 @@ class ReassignConnectionDragHandler {
4168
4180
  this.fConnection = fConnection;
4169
4181
  }
4170
4182
  prepareDragSequence() {
4171
- if (this.fSnapConnection) {
4172
- this.fSnapConnection.fOutputId = this.fConnection.fOutputId;
4173
- this.fSnapConnection.initialize();
4174
- this.canBeConnectedInputs = this.fMediator.send(new GetAllCanBeConnectedInputPositionsRequest(this.fConnection.fOutputId));
4175
- }
4183
+ this._initializeSnapConnection();
4184
+ this.canBeConnectedInputs = this.fMediator.send(new GetAllCanBeConnectedInputPositionsRequest(this.fConnection.fOutputId));
4176
4185
  this.fOutputWithRect = this.fMediator.send(new GetConnectorWithRectRequest(this.getOutput()));
4177
4186
  this.fInputWithRect = this.fMediator.send(new GetConnectorWithRectRequest(this.getInput()));
4178
4187
  this.toConnectorRect = RoundedRect.fromRect(RectExtensions.initialize(this.fConnection.line.point2.x, this.fConnection.line.point2.y));
4179
4188
  }
4189
+ _initializeSnapConnection() {
4190
+ if (!this.fSnapConnection) {
4191
+ return;
4192
+ }
4193
+ this.fSnapConnection.fOutputId = this.fConnection.fOutputId;
4194
+ this.fSnapConnection.initialize();
4195
+ }
4180
4196
  getOutput() {
4181
4197
  return this.fComponentsStore.fOutputs.find((x) => x.fId === this.fConnection.fOutputId);
4182
4198
  }
@@ -4184,24 +4200,22 @@ class ReassignConnectionDragHandler {
4184
4200
  return this.fComponentsStore.fInputs.find((x) => x.fId === this.fConnection.fInputId);
4185
4201
  }
4186
4202
  onPointerMove(difference) {
4187
- this.drawConnection({
4188
- fRect: this.toConnectorRect.addPoint(difference),
4189
- fConnector: this.fInputWithRect.fConnector
4190
- });
4203
+ const fClosestInput = this._findClosestInput(difference);
4204
+ this._drawConnection(this.toConnectorRect.addPoint(difference), fClosestInput?.fConnector.fConnectableSide || this.fInputWithRect.fConnector.fConnectableSide);
4191
4205
  if (this.fSnapConnection) {
4192
- this.drawSnapConnection(this.getClosetInput(difference));
4206
+ this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));
4193
4207
  }
4194
4208
  }
4195
- drawConnection(fInputWithRect) {
4196
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputWithRect.fRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fInputWithRect.fConnector.fConnectableSide));
4197
- this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);
4209
+ _drawConnection(fInputRect, fSide) {
4210
+ const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fSide));
4211
+ this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);
4198
4212
  this.fConnection.redraw();
4199
4213
  }
4200
- drawSnapConnection(fInputWithRect) {
4201
- if (fInputWithRect) {
4202
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputWithRect.fRect, this.fSnapConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fInputWithRect.fConnector.fConnectableSide));
4214
+ _drawSnapConnection(fClosestInput) {
4215
+ if (fClosestInput) {
4216
+ const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fClosestInput.fRect, this.fSnapConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
4203
4217
  this.fSnapConnection.show();
4204
- this.fSnapConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);
4218
+ this.fSnapConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);
4205
4219
  this.fSnapConnection.redraw();
4206
4220
  }
4207
4221
  else {
@@ -4212,10 +4226,16 @@ class ReassignConnectionDragHandler {
4212
4226
  if (!this.fSnapConnection) {
4213
4227
  return undefined;
4214
4228
  }
4215
- return this.fMediator.send(new FindClosestInputUsingSnapThresholdRequest(Point.fromPoint(this.toConnectorRect).add(difference), this.canBeConnectedInputs, this.fSnapConnection.fSnapThreshold));
4229
+ return this._getClosestInputForSnapConnection(this._findClosestInput(difference));
4230
+ }
4231
+ _findClosestInput(difference) {
4232
+ return this.fMediator.send(new FindClosestInputRequest(Point.fromPoint(this.toConnectorRect).add(difference), this.canBeConnectedInputs));
4233
+ }
4234
+ _getClosestInputForSnapConnection(fClosestInput) {
4235
+ return fClosestInput && fClosestInput.distance < this.fSnapConnection.fSnapThreshold ? fClosestInput : undefined;
4216
4236
  }
4217
4237
  onPointerUp() {
4218
- this.drawConnection(this.fInputWithRect);
4238
+ this._drawConnection(this.fInputWithRect.fRect, this.fInputWithRect.fConnector.fConnectableSide);
4219
4239
  this.fSnapConnection?.hide();
4220
4240
  }
4221
4241
  }
@@ -4355,71 +4375,6 @@ const CONNECTIONS_PROVIDERS = [
4355
4375
  ReassignConnectionPreparationValidator,
4356
4376
  ];
4357
4377
 
4358
- class GetNodePaddingRequest {
4359
- fNode;
4360
- rect;
4361
- constructor(fNode, rect) {
4362
- this.fNode = fNode;
4363
- this.rect = rect;
4364
- }
4365
- }
4366
-
4367
- let GetNodePaddingExecution = class GetNodePaddingExecution {
4368
- fBrowser;
4369
- constructor(fBrowser) {
4370
- this.fBrowser = fBrowser;
4371
- }
4372
- handle(request) {
4373
- return request.fNode.fIncludePadding ? this.getPaddingData(request.fNode, request.rect) : [0, 0, 0, 0];
4374
- }
4375
- getPaddingData(node, rect) {
4376
- const style = this.fBrowser.window.getComputedStyle(node.hostElement);
4377
- return [
4378
- this.fBrowser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),
4379
- this.fBrowser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),
4380
- this.fBrowser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),
4381
- this.fBrowser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)
4382
- ];
4383
- }
4384
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodePaddingExecution, deps: [{ token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
4385
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodePaddingExecution });
4386
- };
4387
- GetNodePaddingExecution = __decorate([
4388
- FExecutionRegister(GetNodePaddingRequest)
4389
- ], GetNodePaddingExecution);
4390
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodePaddingExecution, decorators: [{
4391
- type: Injectable
4392
- }], ctorParameters: () => [{ type: i1.BrowserService }] });
4393
-
4394
- class GetNormalizedNodeRectRequest {
4395
- fNode;
4396
- constructor(fNode) {
4397
- this.fNode = fNode;
4398
- }
4399
- }
4400
-
4401
- let GetNormalizedNodeRectExecution = class GetNormalizedNodeRectExecution {
4402
- fComponentsStore;
4403
- constructor(fComponentsStore) {
4404
- this.fComponentsStore = fComponentsStore;
4405
- }
4406
- handle(request) {
4407
- return this.normalizeRect(RectExtensions.fromElement(request.fNode.hostElement), request.fNode.position);
4408
- }
4409
- normalizeRect(scaledRect, position) {
4410
- const rect = RectExtensions.div(scaledRect, this.fComponentsStore.fCanvas.transform.scale);
4411
- return RectExtensions.initialize(position.x, position.y, rect.width, rect.height);
4412
- }
4413
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedNodeRectExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
4414
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedNodeRectExecution });
4415
- };
4416
- GetNormalizedNodeRectExecution = __decorate([
4417
- FExecutionRegister(GetNormalizedNodeRectRequest)
4418
- ], GetNormalizedNodeRectExecution);
4419
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedNodeRectExecution, decorators: [{
4420
- type: Injectable
4421
- }], ctorParameters: () => [{ type: FComponentsStore }] });
4422
-
4423
4378
  class GetNormalizedParentNodeRectRequest {
4424
4379
  fNode;
4425
4380
  constructor(fNode) {
@@ -4446,12 +4401,12 @@ let GetNormalizedParentNodeRectExecution = class GetNormalizedParentNodeRectExec
4446
4401
  return this.fComponentsStore.fNodes.find((x) => x.fId === fId);
4447
4402
  }
4448
4403
  getParentRect(node) {
4449
- const rect = this.getNormalizedNodeRect(node);
4404
+ const rect = this._getNodeRect(node);
4450
4405
  const padding = this.getNodePadding(node, rect);
4451
4406
  return RectExtensions.initialize(rect.x + padding[0], rect.y + padding[1], rect.width - padding[0] - padding[2], rect.height - padding[1] - padding[3]);
4452
4407
  }
4453
- getNormalizedNodeRect(node) {
4454
- return this.fMediator.send(new GetNormalizedNodeRectRequest(node));
4408
+ _getNodeRect(fNode) {
4409
+ return this.fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement, false));
4455
4410
  }
4456
4411
  getNodePadding(node, rect) {
4457
4412
  return this.fMediator.send(new GetNodePaddingRequest(node, rect));
@@ -4466,6 +4421,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
4466
4421
  type: Injectable
4467
4422
  }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
4468
4423
 
4424
+ class IsArrayHasParentNodeRequest {
4425
+ fNode;
4426
+ fNodes;
4427
+ constructor(fNode, fNodes) {
4428
+ this.fNode = fNode;
4429
+ this.fNodes = fNodes;
4430
+ }
4431
+ }
4432
+
4469
4433
  class GetParentNodesRequest {
4470
4434
  fNode;
4471
4435
  constructor(fNode) {
@@ -4474,26 +4438,23 @@ class GetParentNodesRequest {
4474
4438
  }
4475
4439
 
4476
4440
  let GetParentNodesExecution = class GetParentNodesExecution {
4477
- fComponentsStore;
4478
- constructor(fComponentsStore) {
4479
- this.fComponentsStore = fComponentsStore;
4480
- }
4441
+ _fComponentsStore = inject(FComponentsStore);
4481
4442
  handle(request) {
4482
- return this.getParentNodes(request.fNode, new Set(), []);
4443
+ return this._getParentNodes(request.fNode, new Set(), []);
4483
4444
  }
4484
- getParentNodes(fNode, visited, result) {
4445
+ _getParentNodes(fNode, visited, result) {
4485
4446
  if (visited.has(fNode.fId)) {
4486
4447
  throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);
4487
4448
  }
4488
4449
  visited.add(fNode.fId);
4489
- const parent = this.fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);
4450
+ const parent = this._fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);
4490
4451
  if (!parent) {
4491
4452
  return result;
4492
4453
  }
4493
4454
  result.push(parent);
4494
- return this.getParentNodes(parent, visited, result);
4455
+ return this._getParentNodes(parent, visited, result);
4495
4456
  }
4496
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
4457
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4497
4458
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution });
4498
4459
  };
4499
4460
  GetParentNodesExecution = __decorate([
@@ -4501,16 +4462,7 @@ GetParentNodesExecution = __decorate([
4501
4462
  ], GetParentNodesExecution);
4502
4463
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, decorators: [{
4503
4464
  type: Injectable
4504
- }], ctorParameters: () => [{ type: FComponentsStore }] });
4505
-
4506
- class IsArrayHasParentNodeRequest {
4507
- fNode;
4508
- fNodes;
4509
- constructor(fNode, fNodes) {
4510
- this.fNode = fNode;
4511
- this.fNodes = fNodes;
4512
- }
4513
- }
4465
+ }] });
4514
4466
 
4515
4467
  let IsArrayHasParentNodeExecution = class IsArrayHasParentNodeExecution {
4516
4468
  fMediator;
@@ -4597,7 +4549,7 @@ let IsConnectionUnderNodeExecution = class IsConnectionUnderNodeExecution {
4597
4549
  return connectors.map((x) => x.fId);
4598
4550
  }
4599
4551
  _calculateConnectionsUnderNode(fNode) {
4600
- const fNodeRect = this._fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement));
4552
+ const fNodeRect = this._fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement, true));
4601
4553
  return this._fComponentsStore.fConnections.filter((x) => {
4602
4554
  return this._isConnectionHasIntersectionsWithNode(x, fNodeRect);
4603
4555
  });
@@ -4632,10 +4584,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
4632
4584
  }] });
4633
4585
 
4634
4586
  const DRAG_AND_DROP_COMMON_PROVIDERS = [
4635
- GetNodePaddingExecution,
4636
- GetNormalizedNodeRectExecution,
4637
4587
  GetNormalizedParentNodeRectExecution,
4638
- GetParentNodesExecution,
4639
4588
  IsArrayHasParentNodeExecution,
4640
4589
  IsConnectionUnderNodeExecution,
4641
4590
  IsConnectionUnderNodeValidator,
@@ -4702,7 +4651,7 @@ class ConnectionBaseDragHandler {
4702
4651
  connectorNotFoundPrefix(message) {
4703
4652
  return `ConnectionDragHandler Error: Connection From (fOutput)${this.connection.fOutputId} To (fInput)${this.connection.fInputId}. ${message}. Please ensure that all f-connections are associated with existing connectors`;
4704
4653
  }
4705
- getDifference(difference, restrictions) {
4654
+ getRestrictedDifference(difference, restrictions) {
4706
4655
  return {
4707
4656
  x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),
4708
4657
  y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)
@@ -4735,7 +4684,7 @@ class ConnectionDragHandler extends ConnectionBaseDragHandler {
4735
4684
  this.redrawConnection(this.getNewLineValue(difference));
4736
4685
  }
4737
4686
  getNewLineValue(difference) {
4738
- return this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.sourceRestrictions)), RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.targetRestrictions)), this.connection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, this.fInputWithRect.fConnector.fConnectableSide));
4687
+ return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, this.sourceRestrictions)), RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, this.targetRestrictions)), this.connection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, this.fInputWithRect.fConnector.fConnectableSide));
4739
4688
  }
4740
4689
  }
4741
4690
 
@@ -4751,7 +4700,7 @@ class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {
4751
4700
  this.redrawConnection(this.getNewLineValue(difference));
4752
4701
  }
4753
4702
  getNewLineValue(difference) {
4754
- return this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect), RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })), this.connection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, this.fInputWithRect.fConnector.fConnectableSide));
4703
+ 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));
4755
4704
  }
4756
4705
  }
4757
4706
 
@@ -4840,7 +4789,7 @@ class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {
4840
4789
  this.redrawConnection(this.getNewLineValue(difference));
4841
4790
  }
4842
4791
  getNewLineValue(difference) {
4843
- return this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })), RoundedRect.fromRoundedRect(this.fInputWithRect.fRect), this.connection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, this.fInputWithRect.fConnector.fConnectableSide));
4792
+ 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));
4844
4793
  }
4845
4794
  }
4846
4795
 
@@ -4916,14 +4865,11 @@ class GetNodeMoveRestrictionsRequest {
4916
4865
  }
4917
4866
 
4918
4867
  let GetNodeMoveRestrictionsExecution = class GetNodeMoveRestrictionsExecution {
4919
- fMediator;
4920
- constructor(fMediator) {
4921
- this.fMediator = fMediator;
4922
- }
4868
+ _fMediator = inject(FMediator);
4923
4869
  handle(request) {
4924
4870
  if (request.fNode.fParentId && !request.hasParentNodeInSelected) {
4925
4871
  const fParentNodeRect = this.getParentNodeRect(request.fNode);
4926
- const fCurrentNodeRect = this.getCurrentNodeRect(request.fNode);
4872
+ const fCurrentNodeRect = this._getNodeRect(request.fNode);
4927
4873
  return {
4928
4874
  min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),
4929
4875
  max: PointExtensions.initialize((fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width), (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height))
@@ -4931,13 +4877,13 @@ let GetNodeMoveRestrictionsExecution = class GetNodeMoveRestrictionsExecution {
4931
4877
  }
4932
4878
  return { ...DEFAULT_RESTRICTIONS };
4933
4879
  }
4934
- getCurrentNodeRect(fNode) {
4935
- return this.fMediator.send(new GetNormalizedNodeRectRequest(fNode));
4880
+ _getNodeRect(fNode) {
4881
+ return this._fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement, false));
4936
4882
  }
4937
4883
  getParentNodeRect(fNode) {
4938
- return this.fMediator.send(new GetNormalizedParentNodeRectRequest(fNode));
4884
+ return this._fMediator.send(new GetNormalizedParentNodeRectRequest(fNode));
4939
4885
  }
4940
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution, deps: [{ token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4886
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4941
4887
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution });
4942
4888
  };
4943
4889
  GetNodeMoveRestrictionsExecution = __decorate([
@@ -4945,7 +4891,7 @@ GetNodeMoveRestrictionsExecution = __decorate([
4945
4891
  ], GetNodeMoveRestrictionsExecution);
4946
4892
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution, decorators: [{
4947
4893
  type: Injectable
4948
- }], ctorParameters: () => [{ type: i2.FMediator }] });
4894
+ }] });
4949
4895
  const DEFAULT_RESTRICTIONS = {
4950
4896
  min: PointExtensions.initialize(-Infinity, -Infinity),
4951
4897
  max: PointExtensions.initialize(Infinity, Infinity)
@@ -4960,38 +4906,53 @@ class CreateMoveNodesDragModelFromSelectionRequest {
4960
4906
 
4961
4907
  class NodeDragHandler {
4962
4908
  fDraggableDataContext;
4909
+ fComponentsStore;
4963
4910
  fNode;
4964
4911
  minDistance;
4965
4912
  maxDistance;
4966
- onPointerDownPosition = PointExtensions.initialize();
4967
- constructor(fDraggableDataContext, fNode, minDistance, maxDistance) {
4913
+ _onPointerDownPosition = PointExtensions.initialize();
4914
+ constructor(fDraggableDataContext, fComponentsStore, fNode, minDistance, maxDistance) {
4968
4915
  this.fDraggableDataContext = fDraggableDataContext;
4916
+ this.fComponentsStore = fComponentsStore;
4969
4917
  this.fNode = fNode;
4970
4918
  this.minDistance = minDistance;
4971
4919
  this.maxDistance = maxDistance;
4972
- this.onPointerDownPosition = { ...fNode.position };
4920
+ this._onPointerDownPosition = { ...fNode.position };
4973
4921
  }
4974
4922
  onPointerMove(difference) {
4975
- const restrictedDifference = this.getDifference(difference, { min: this.minDistance, max: this.maxDistance });
4976
- this.redrawNode(this.getNewPosition(restrictedDifference));
4923
+ const restrictedDifference = this._getDifference(difference, { min: this.minDistance, max: this.maxDistance });
4924
+ this._redraw(this._getPosition(restrictedDifference));
4977
4925
  this.fDraggableDataContext.fLineAlignment?.handle(restrictedDifference);
4978
4926
  }
4979
- getNewPosition(difference) {
4980
- return Point.fromPoint(this.onPointerDownPosition).add(difference);
4927
+ _getPosition(difference) {
4928
+ return Point.fromPoint(this._onPointerDownPosition).add(difference);
4981
4929
  }
4982
- getDifference(difference, restrictions) {
4930
+ _getDifference(difference, restrictions) {
4983
4931
  return {
4984
4932
  x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),
4985
4933
  y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)
4986
4934
  };
4987
4935
  }
4988
- redrawNode(position) {
4936
+ _redraw(position) {
4989
4937
  this.fNode.updatePosition(position);
4990
4938
  this.fNode.redraw();
4991
4939
  }
4992
4940
  onPointerUp() {
4993
4941
  this.fNode.positionChange.emit(this.fNode.position);
4994
4942
  }
4943
+ getDifferenceWithCellSize(difference) {
4944
+ const restrictedDifference = this._getDifference(difference, { min: this.minDistance, max: this.maxDistance });
4945
+ const position = this._getPosition(restrictedDifference);
4946
+ return Point.fromPoint(this._applyCellSize(position)).sub(this._onPointerDownPosition);
4947
+ }
4948
+ _applyCellSize(position) {
4949
+ const hCellSize = this.fComponentsStore.fDraggable.hCellSize;
4950
+ const vCellSize = this.fComponentsStore.fDraggable.vCellSize;
4951
+ return {
4952
+ x: Math.round(position.x / hCellSize) * hCellSize,
4953
+ y: Math.round(position.y / vCellSize) * vCellSize
4954
+ };
4955
+ }
4995
4956
  }
4996
4957
 
4997
4958
  //TODO: Implement this class
@@ -5010,36 +4971,34 @@ class NodeResizeByChildDragHandler {
5010
4971
  }
5011
4972
 
5012
4973
  let CreateMoveNodesDragModelFromSelectionExecution = class CreateMoveNodesDragModelFromSelectionExecution {
5013
- fComponentsStore;
5014
- fDraggableDataContext;
5015
- fMediator;
5016
- constructor(fComponentsStore, fDraggableDataContext, fMediator) {
5017
- this.fComponentsStore = fComponentsStore;
5018
- this.fDraggableDataContext = fDraggableDataContext;
5019
- this.fMediator = fMediator;
5020
- }
4974
+ _fMediator = inject(FMediator);
4975
+ _fComponentsStore = inject(FComponentsStore);
4976
+ _fDraggableDataContext = inject(FDraggableDataContext);
5021
4977
  handle(request) {
5022
- const itemsToDrag = this.getNodesWithRestrictions(this.getSelectedNodes(request.nodeWithDisabledSelection));
4978
+ const itemsToDrag = this._getNodesWithRestrictions(this._getSelectedNodes(request.nodeWithDisabledSelection));
5023
4979
  return this.getDragHandlersWithConnections(this.getDragHandlersFromNodes(itemsToDrag), this.getAllOutputIds(itemsToDrag), this.getAllInputIds(itemsToDrag));
5024
4980
  }
5025
- getSelectedNodes(nodeWithDisabledSelection) {
5026
- const result = this.fDraggableDataContext.selectedItems
5027
- .map((x) => this._findNode(x.hostElement))
5028
- .filter((x) => !!x);
4981
+ _getSelectedNodes(nodeWithDisabledSelection) {
4982
+ const result = this._getNodesFromSelection();
5029
4983
  if (nodeWithDisabledSelection) {
5030
4984
  result.push(nodeWithDisabledSelection);
5031
4985
  }
5032
4986
  return result;
5033
4987
  }
4988
+ _getNodesFromSelection() {
4989
+ return this._fDraggableDataContext.selectedItems
4990
+ .map((x) => this._findNode(x.hostElement))
4991
+ .filter((x) => !!x);
4992
+ }
5034
4993
  _findNode(hostElement) {
5035
- return this.fComponentsStore.fNodes.find(n => n.isContains(hostElement));
4994
+ return this._fComponentsStore.fNodes.find(n => n.isContains(hostElement));
5036
4995
  }
5037
- getNodesWithRestrictions(selectedNodes) {
4996
+ _getNodesWithRestrictions(nodesToDrag) {
5038
4997
  const result = [];
5039
- selectedNodes.forEach((x) => {
5040
- const hasParentNodeInSelected = this.fMediator.send(new IsArrayHasParentNodeRequest(x, selectedNodes));
5041
- const restrictions = this.fMediator.send(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));
5042
- const parentNodes = this.fMediator.send(new GetParentNodesRequest(x));
4998
+ nodesToDrag.forEach((x) => {
4999
+ const hasParentNodeInSelected = this._fMediator.send(new IsArrayHasParentNodeRequest(x, nodesToDrag));
5000
+ const restrictions = this._fMediator.send(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));
5001
+ const parentNodes = this._fMediator.send(new GetParentNodesRequest(x));
5043
5002
  result.push({ node: x, parentNodes, ...restrictions }, ...this.getChildrenItemsToDrag(x, restrictions));
5044
5003
  });
5045
5004
  return result;
@@ -5048,36 +5007,36 @@ let CreateMoveNodesDragModelFromSelectionExecution = class CreateMoveNodesDragMo
5048
5007
  return this.getChildrenNodes(node.fId).map((x) => ({ node: x, ...restrictions }));
5049
5008
  }
5050
5009
  getChildrenNodes(fId) {
5051
- return this.fMediator.send(new GetDeepChildrenNodesAndGroupsRequest(fId));
5010
+ return this._fMediator.send(new GetDeepChildrenNodesAndGroupsRequest(fId));
5052
5011
  }
5053
5012
  getAllOutputIds(items) {
5054
5013
  return flatMap(items, (item) => this.getOutputsForNode(item.node).map((x) => x.fId));
5055
5014
  }
5056
5015
  getOutputsForNode(node) {
5057
- return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));
5016
+ return this._fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));
5058
5017
  }
5059
5018
  getAllInputIds(items) {
5060
5019
  return flatMap(items, (item) => this.getInputsForNode(item.node).map((x) => x.fId));
5061
5020
  }
5062
5021
  getInputsForNode(node) {
5063
- return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
5022
+ return this._fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
5064
5023
  }
5065
5024
  getDragHandlersFromNodes(items) {
5066
5025
  let result = [];
5067
5026
  items.forEach((node) => {
5068
- result.push(new NodeDragHandler(this.fDraggableDataContext, node.node, node.min, node.max), ...(node.parentNodes || []).map(() => new NodeResizeByChildDragHandler(this.fDraggableDataContext)));
5027
+ result.push(new NodeDragHandler(this._fDraggableDataContext, this._fComponentsStore, node.node, node.min, node.max), ...(node.parentNodes || []).map(() => new NodeResizeByChildDragHandler(this._fDraggableDataContext)));
5069
5028
  });
5070
5029
  return result;
5071
5030
  }
5072
5031
  getDragHandlersWithConnections(handlers, outputIds, inputIds) {
5073
5032
  let result = handlers;
5074
5033
  handlers.filter((x) => x instanceof NodeDragHandler).forEach((dragHandler) => {
5075
- this.fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler, inputIds, result));
5076
- this.fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler, outputIds, result));
5034
+ this._fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler, inputIds, result));
5035
+ this._fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler, outputIds, result));
5077
5036
  });
5078
5037
  return result;
5079
5038
  }
5080
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5039
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5081
5040
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution });
5082
5041
  };
5083
5042
  CreateMoveNodesDragModelFromSelectionExecution = __decorate([
@@ -5085,7 +5044,7 @@ CreateMoveNodesDragModelFromSelectionExecution = __decorate([
5085
5044
  ], CreateMoveNodesDragModelFromSelectionExecution);
5086
5045
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution, decorators: [{
5087
5046
  type: Injectable
5088
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
5047
+ }] });
5089
5048
 
5090
5049
  const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [
5091
5050
  GetNodeMoveRestrictionsExecution,
@@ -5105,40 +5064,55 @@ class NodeDragToParentDragHandler {
5105
5064
  fComponentsStore;
5106
5065
  fDraggableDataContext;
5107
5066
  notDraggedNodesRects;
5108
- get transform() {
5067
+ DEBOUNCE_TIME = 15;
5068
+ get _transform() {
5109
5069
  return this.fComponentsStore.fCanvas.transform;
5110
5070
  }
5111
- onPointerDownPosition = PointExtensions.initialize();
5071
+ _onPointerDownPosition = PointExtensions.initialize();
5072
+ _debounceTimer = null;
5112
5073
  fNodeWithRect = null;
5113
5074
  constructor(fComponentsStore, fDraggableDataContext, notDraggedNodesRects) {
5114
5075
  this.fComponentsStore = fComponentsStore;
5115
5076
  this.fDraggableDataContext = fDraggableDataContext;
5116
5077
  this.notDraggedNodesRects = notDraggedNodesRects;
5117
- this.onPointerDownPosition = this.fDraggableDataContext.onPointerDownPosition;
5078
+ this._onPointerDownPosition = this.fDraggableDataContext.onPointerDownPosition;
5118
5079
  }
5119
- onPointerMove(difference) {
5120
- let point = Point.fromPoint(this.onPointerDownPosition).add(difference).mult(this.transform.scale);
5121
- const isInclude = this.notDraggedNodesRects.findIndex((x) => RectExtensions.isIncludePoint(x.rect, point));
5122
- if (isInclude !== -1) {
5123
- this.markIncludeNode(this.notDraggedNodesRects[isInclude]);
5080
+ _toggleParentNode(difference) {
5081
+ const isInclude = this._isNodeInsideAnotherNode(this._getNewPosition(difference));
5082
+ if (isInclude) {
5083
+ this._markIncludeNode(isInclude);
5124
5084
  }
5125
5085
  else {
5126
- this.unmarkIncludeNode();
5086
+ this._unmarkIncludeNode();
5127
5087
  }
5128
5088
  }
5129
- markIncludeNode(nodeWithRect) {
5130
- this.unmarkIncludeNode();
5089
+ _getNewPosition(difference) {
5090
+ return Point.fromPoint(this._onPointerDownPosition).add(difference).mult(this._transform.scale);
5091
+ }
5092
+ _isNodeInsideAnotherNode(point) {
5093
+ return this.notDraggedNodesRects.find((x) => RectExtensions.isIncludePoint(x.rect, point));
5094
+ }
5095
+ onPointerMove(difference) {
5096
+ if (this._debounceTimer) {
5097
+ clearTimeout(this._debounceTimer);
5098
+ }
5099
+ this._debounceTimer = setTimeout(() => this._toggleParentNode(difference), this.DEBOUNCE_TIME);
5100
+ }
5101
+ _markIncludeNode(nodeWithRect) {
5102
+ this._unmarkIncludeNode();
5131
5103
  this.fNodeWithRect = nodeWithRect;
5132
5104
  nodeWithRect.node.setClass('f-parent-for-drop');
5133
5105
  }
5134
- unmarkIncludeNode() {
5135
- if (this.fNodeWithRect) {
5136
- this.fNodeWithRect.node.removeClass('f-parent-for-drop');
5137
- }
5106
+ _unmarkIncludeNode() {
5107
+ this.fNodeWithRect?.node.removeClass('f-parent-for-drop');
5138
5108
  this.fNodeWithRect = null;
5139
5109
  }
5140
5110
  onPointerUp() {
5141
- this.unmarkIncludeNode();
5111
+ this._unmarkIncludeNode();
5112
+ if (this._debounceTimer) {
5113
+ clearTimeout(this._debounceTimer);
5114
+ this._debounceTimer = null;
5115
+ }
5142
5116
  }
5143
5117
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeDragToParentDragHandler, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
5144
5118
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: NodeDragToParentDragHandler, ngImport: i0 });
@@ -5256,23 +5230,30 @@ let NodeDragToParentPreparationExecution = class NodeDragToParentPreparationExec
5256
5230
  if (!fNode) {
5257
5231
  throw new Error('Node not found');
5258
5232
  }
5259
- this.fDraggableDataContext.draggableItems.push(new NodeDragToParentDragHandler(this.fComponentsStore, this.fDraggableDataContext, this.getNotDraggedNodesRects()));
5233
+ this.fDraggableDataContext.draggableItems.push(new NodeDragToParentDragHandler(this.fComponentsStore, this.fDraggableDataContext, this._getNotDraggedNodesRects()));
5260
5234
  }
5261
- getNotDraggedNodesRects() {
5262
- return this.getNotDraggedNodes(this.getDraggedNodes()).map((x) => {
5263
- const rect = this.fMediator.send(new GetNormalizedElementRectRequest(x.hostElement));
5235
+ _getNotDraggedNodesRects() {
5236
+ const draggedNodes = this._addParentNodes(this._getNodesBeingDragged());
5237
+ return this._getNotDraggedNodes(draggedNodes).map((x) => {
5238
+ const rect = this.fMediator.send(new GetNormalizedElementRectRequest(x.hostElement, false));
5264
5239
  return {
5265
5240
  node: x,
5266
5241
  rect: RectExtensions.initialize(rect.x + this.fCanvasPosition.x, rect.y + this.fCanvasPosition.y, rect.width * this.transform.scale, rect.height * this.transform.scale)
5267
5242
  };
5268
5243
  });
5269
5244
  }
5270
- getDraggedNodes() {
5245
+ _getNodesBeingDragged() {
5271
5246
  return this.fDraggableDataContext.draggableItems
5272
5247
  .filter((x) => x instanceof NodeDragHandler)
5273
5248
  .map((x) => x.fNode);
5274
5249
  }
5275
- getNotDraggedNodes(draggedNodes) {
5250
+ _addParentNodes(fNodes) {
5251
+ return fNodes.reduce((result, x) => {
5252
+ result.push(x, ...this.fMediator.send(new GetParentNodesRequest(x)));
5253
+ return result;
5254
+ }, []);
5255
+ }
5256
+ _getNotDraggedNodes(draggedNodes) {
5276
5257
  return this.fNodes.filter((x) => !draggedNodes.includes(x));
5277
5258
  }
5278
5259
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeDragToParentPreparationExecution, deps: [{ token: i2.FMediator }, { token: FDraggableDataContext }, { token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -5316,56 +5297,55 @@ class NodeMovePreparationRequest {
5316
5297
  }
5317
5298
 
5318
5299
  let NodeMovePreparationExecution = class NodeMovePreparationExecution {
5319
- fComponentsStore;
5320
- fDraggableDataContext;
5321
- fMediator;
5322
- get transform() {
5323
- return this.fComponentsStore.fCanvas.transform;
5324
- }
5325
- get flowHost() {
5326
- return this.fComponentsStore.fFlow.hostElement;
5300
+ _fMediator = inject(FMediator);
5301
+ _fComponentsStore = inject(FComponentsStore);
5302
+ _fDraggableDataContext = inject(FDraggableDataContext);
5303
+ get _transform() {
5304
+ return this._fComponentsStore.fCanvas.transform;
5327
5305
  }
5328
- constructor(fComponentsStore, fDraggableDataContext, fMediator) {
5329
- this.fComponentsStore = fComponentsStore;
5330
- this.fDraggableDataContext = fDraggableDataContext;
5331
- this.fMediator = fMediator;
5306
+ get _fHost() {
5307
+ return this._fComponentsStore.fFlow.hostElement;
5332
5308
  }
5333
5309
  handle(request) {
5334
- const node = this.getNode(request.event.targetElement);
5335
- if (!node) {
5310
+ const itemsToDrag = this._calculateDraggableItems(this._getNode(request.event.targetElement));
5311
+ this._initializeLineAlignment(itemsToDrag);
5312
+ this._fDraggableDataContext.onPointerDownScale = this._transform.scale;
5313
+ this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
5314
+ .elementTransform(this._fHost).div(this._transform.scale);
5315
+ this._fDraggableDataContext.draggableItems = itemsToDrag;
5316
+ }
5317
+ _getNode(targetElement) {
5318
+ const result = this._fComponentsStore.fNodes.find(n => n.isContains(targetElement));
5319
+ if (!result) {
5336
5320
  throw new Error('Node not found');
5337
5321
  }
5338
- let itemsToDrag = [];
5339
- if (!node.fSelectionDisabled) {
5340
- this.selectAndUpdateNodeLayer(node);
5341
- itemsToDrag = this.createDragModelFromSelection();
5322
+ return result;
5323
+ }
5324
+ //We drag nodes from selection model
5325
+ _calculateDraggableItems(fNode) {
5326
+ let result = [];
5327
+ if (!fNode.fSelectionDisabled) {
5328
+ // Need to select node before drag
5329
+ this._fMediator.send(new SelectAndUpdateNodeLayerRequest(fNode));
5330
+ result = this._dragModelFromSelection();
5342
5331
  }
5343
5332
  else {
5344
- itemsToDrag = this.createDragModelFromSelection(node);
5333
+ // User can drag node that can't be selected
5334
+ result = this._dragModelFromSelection(fNode);
5345
5335
  }
5346
- this.initializeLineAlignment(this.filterNodesFromDraggableItems(itemsToDrag));
5347
- this.fDraggableDataContext.onPointerDownScale = this.transform.scale;
5348
- this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
5349
- .elementTransform(this.flowHost).div(this.transform.scale);
5350
- this.fDraggableDataContext.draggableItems = itemsToDrag;
5351
- }
5352
- selectAndUpdateNodeLayer(node) {
5353
- this.fMediator.send(new SelectAndUpdateNodeLayerRequest(node));
5354
- }
5355
- getNode(targetElement) {
5356
- return this.fComponentsStore.fNodes.find(n => n.isContains(targetElement));
5336
+ return result;
5357
5337
  }
5358
- createDragModelFromSelection(nodeWithDisabledSelection) {
5359
- return this.fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection));
5338
+ _dragModelFromSelection(nodeWithDisabledSelection) {
5339
+ return this._fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection));
5360
5340
  }
5361
- initializeLineAlignment(nodesToDrag) {
5362
- this.fDraggableDataContext.fLineAlignment?.initialize(this.fComponentsStore.fNodes, nodesToDrag);
5341
+ _initializeLineAlignment(itemsToDrag) {
5342
+ this._fDraggableDataContext.fLineAlignment?.initialize(this._fComponentsStore.fNodes, this._filterNodesFromDraggableItems(itemsToDrag));
5363
5343
  }
5364
- filterNodesFromDraggableItems(items) {
5344
+ _filterNodesFromDraggableItems(items) {
5365
5345
  return items.filter((x) => x instanceof NodeDragHandler)
5366
5346
  .map(x => x.fNode);
5367
5347
  }
5368
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5348
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5369
5349
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationExecution });
5370
5350
  };
5371
5351
  NodeMovePreparationExecution = __decorate([
@@ -5373,33 +5353,29 @@ NodeMovePreparationExecution = __decorate([
5373
5353
  ], NodeMovePreparationExecution);
5374
5354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationExecution, decorators: [{
5375
5355
  type: Injectable
5376
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
5356
+ }] });
5377
5357
 
5378
5358
  let NodeMovePreparationValidator = class NodeMovePreparationValidator {
5379
- fComponentsStore;
5380
- fDraggableDataContext;
5381
- constructor(fComponentsStore, fDraggableDataContext) {
5382
- this.fComponentsStore = fComponentsStore;
5383
- this.fDraggableDataContext = fDraggableDataContext;
5384
- }
5359
+ _fComponentsStore = inject(FComponentsStore);
5360
+ _fDraggableDataContext = inject(FDraggableDataContext);
5385
5361
  handle(request) {
5386
- return this.isDragHandlesEmpty()
5387
- && this.isDragHandleElement(request.event.targetElement)
5388
- && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));
5362
+ return this._isDragHandlesEmpty()
5363
+ && this._isDragHandleElement(request.event.targetElement)
5364
+ && this._isNodeCanBeDragged(this._getNode(request.event.targetElement));
5389
5365
  }
5390
- isDragHandlesEmpty() {
5391
- return !this.fDraggableDataContext.draggableItems.length;
5366
+ _isDragHandlesEmpty() {
5367
+ return !this._fDraggableDataContext.draggableItems.length;
5392
5368
  }
5393
- getNode(targetElement) {
5394
- return this.fComponentsStore.fNodes.find(n => n.isContains(targetElement));
5369
+ _isDragHandleElement(element) {
5370
+ return isClosestElementHasClass(element, '.f-drag-handle');
5395
5371
  }
5396
- isNodeCanBeDragged(node) {
5397
- return !!node && !node.fDraggingDisabled;
5372
+ _isNodeCanBeDragged(fNode) {
5373
+ return !!fNode && !fNode.fDraggingDisabled;
5398
5374
  }
5399
- isDragHandleElement(targetElement) {
5400
- return isClosestElementHasClass(targetElement, '.f-drag-handle');
5375
+ _getNode(element) {
5376
+ return this._fComponentsStore.fNodes.find(x => x.isContains(element));
5401
5377
  }
5402
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationValidator, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
5378
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5403
5379
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationValidator });
5404
5380
  };
5405
5381
  NodeMovePreparationValidator = __decorate([
@@ -5407,7 +5383,7 @@ NodeMovePreparationValidator = __decorate([
5407
5383
  ], NodeMovePreparationValidator);
5408
5384
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationValidator, decorators: [{
5409
5385
  type: Injectable
5410
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }] });
5386
+ }] });
5411
5387
 
5412
5388
  const NODE_MOVE_PREPARATION_PROVIDERS = [
5413
5389
  NodeMovePreparationExecution,
@@ -5422,44 +5398,50 @@ class NodeMoveFinalizeRequest {
5422
5398
  }
5423
5399
 
5424
5400
  let NodeMoveFinalizeExecution = class NodeMoveFinalizeExecution {
5425
- fComponentsStore;
5426
- fDraggableDataContext;
5427
- fMediator;
5428
- get flowHost() {
5429
- return this.fComponentsStore.fFlow.hostElement;
5430
- }
5431
- constructor(fComponentsStore, fDraggableDataContext, fMediator) {
5432
- this.fComponentsStore = fComponentsStore;
5433
- this.fDraggableDataContext = fDraggableDataContext;
5434
- this.fMediator = fMediator;
5401
+ _fMediator = inject(FMediator);
5402
+ _fComponentsStore = inject(FComponentsStore);
5403
+ _fDraggableDataContext = inject(FDraggableDataContext);
5404
+ get _fHost() {
5405
+ return this._fComponentsStore.fFlow.hostElement;
5435
5406
  }
5436
5407
  handle(request) {
5437
- const difference = this.getDifferenceWithLineAlignment(this.getDifferenceBetweenPreparationAndFinalize(request.event.getPosition()));
5438
- this.getItems().forEach((x) => {
5408
+ const difference = this._getDifferenceWithLineAlignment(this._getDifferenceBetweenPreparationAndFinalize(request.event.getPosition()));
5409
+ const firstNodeOrGroup = this._fDraggableDataContext.draggableItems
5410
+ .find((x) => x instanceof NodeDragHandler);
5411
+ const differenceWithCellSize = firstNodeOrGroup.getDifferenceWithCellSize(difference);
5412
+ this._finalizeMove(differenceWithCellSize);
5413
+ this._fMediator.send(new IsConnectionUnderNodeRequest());
5414
+ this._fDraggableDataContext.fLineAlignment?.complete();
5415
+ }
5416
+ _finalizeMove(difference) {
5417
+ this._getItems().forEach((x) => {
5439
5418
  x.onPointerMove({ ...difference });
5440
5419
  x.onPointerUp?.();
5441
5420
  });
5442
- this.fMediator.send(new IsConnectionUnderNodeRequest());
5443
- this.fDraggableDataContext.fLineAlignment?.complete();
5444
5421
  }
5445
- getItems() {
5446
- return this.fDraggableDataContext.draggableItems
5422
+ _getItems() {
5423
+ return this._fDraggableDataContext.draggableItems
5447
5424
  .filter((x) => !(x instanceof NodeDragToParentDragHandler));
5448
5425
  }
5449
- getDifferenceBetweenPreparationAndFinalize(position) {
5450
- return Point.fromPoint(position).elementTransform(this.flowHost)
5451
- .div(this.fDraggableDataContext.onPointerDownScale)
5452
- .sub(this.fDraggableDataContext.onPointerDownPosition);
5426
+ _getDifferenceBetweenPreparationAndFinalize(position) {
5427
+ return Point.fromPoint(position).elementTransform(this._fHost)
5428
+ .div(this._fDraggableDataContext.onPointerDownScale)
5429
+ .sub(this._fDraggableDataContext.onPointerDownPosition);
5430
+ }
5431
+ _getDifferenceWithLineAlignment(difference) {
5432
+ return this._applyLineAlignmentDifference(difference, this._getLineAlignmentDifference(difference));
5453
5433
  }
5454
- getDifferenceWithLineAlignment(difference) {
5455
- const intersection = this.fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);
5434
+ _getLineAlignmentDifference(difference) {
5435
+ return this._fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);
5436
+ }
5437
+ _applyLineAlignmentDifference(difference, intersection) {
5456
5438
  if (intersection) {
5457
5439
  difference.x = intersection.xResult.value ? (difference.x - intersection.xResult.distance) : difference.x;
5458
5440
  difference.y = intersection.yResult.value ? (difference.y - intersection.yResult.distance) : difference.y;
5459
5441
  }
5460
5442
  return difference;
5461
5443
  }
5462
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMoveFinalizeExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5444
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMoveFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5463
5445
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMoveFinalizeExecution });
5464
5446
  };
5465
5447
  NodeMoveFinalizeExecution = __decorate([
@@ -5467,7 +5449,7 @@ NodeMoveFinalizeExecution = __decorate([
5467
5449
  ], NodeMoveFinalizeExecution);
5468
5450
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMoveFinalizeExecution, decorators: [{
5469
5451
  type: Injectable
5470
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
5452
+ }] });
5471
5453
 
5472
5454
  let NodeMoveFinalizeValidator = class NodeMoveFinalizeValidator {
5473
5455
  fDraggableDataContext;
@@ -5700,8 +5682,8 @@ let GetNormalizedChildrenNodesRectExecution = class GetNormalizedChildrenNodesRe
5700
5682
  getChildrenNodes(fId) {
5701
5683
  return this.fMediator.send(new GetDeepChildrenNodesAndGroupsRequest(fId));
5702
5684
  }
5703
- normalizeRect(node) {
5704
- return this.fMediator.send(new GetNormalizedNodeRectRequest(node));
5685
+ normalizeRect(fNode) {
5686
+ return this.fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement, false));
5705
5687
  }
5706
5688
  concatRectWithParentPadding(rect, padding) {
5707
5689
  return RectExtensions.initialize(rect.x - padding[0], rect.y - padding[1], rect.width + padding[0] + padding[2], rect.height + +padding[1] + padding[3]);
@@ -5794,7 +5776,7 @@ class NodeResizeDragHandler {
5794
5776
  this.fResizeHandleType = fResizeHandleType;
5795
5777
  }
5796
5778
  prepareDragSequence() {
5797
- this.originalRect = this.fMediator.send(new GetNormalizedNodeRectRequest(this.fNode));
5779
+ this.originalRect = this.fMediator.send(new GetNormalizedElementRectRequest(this.fNode.hostElement, false));
5798
5780
  this.restrictions = this.fMediator.send(new GetNodeResizeRestrictionsRequest(this.fNode, this.originalRect));
5799
5781
  if (this.restrictions.childRect) {
5800
5782
  this.childRestrictions = (rect, restrictionsRect) => {
@@ -6135,7 +6117,7 @@ let ExternalItemFinalizeExecution = class ExternalItemFinalizeExecution {
6135
6117
  return elements.length ? this.flowHost.contains(elements[0]) : false;
6136
6118
  }
6137
6119
  getRectInCanvas() {
6138
- return this.fMediator.send(new GetNormalizedElementRectRequest(this.dragHandler.placeholder));
6120
+ return this.fMediator.send(new GetNormalizedElementRectRequest(this.dragHandler.placeholder, false));
6139
6121
  }
6140
6122
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ExternalItemFinalizeExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
6141
6123
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ExternalItemFinalizeExecution });
@@ -6432,6 +6414,8 @@ class FDraggableDirective extends FDraggableBase {
6432
6414
  fReassignConnection = new EventEmitter();
6433
6415
  fCreateConnection = new EventEmitter();
6434
6416
  fDropToGroup = new EventEmitter();
6417
+ vCellSize = 1;
6418
+ hCellSize = 1;
6435
6419
  plugins;
6436
6420
  constructor(ngZone, _fBrowser) {
6437
6421
  super(ngZone);
@@ -6490,7 +6474,7 @@ class FDraggableDirective extends FDraggableBase {
6490
6474
  super.unsubscribe();
6491
6475
  }
6492
6476
  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 });
6493
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FDraggableDirective, selector: "f-flow[fDraggable]", inputs: { disabled: ["fDraggableDisabled", "disabled"] }, 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 });
6477
+ 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 });
6494
6478
  }
6495
6479
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDraggableDirective, decorators: [{
6496
6480
  type: Directive,
@@ -6518,6 +6502,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
6518
6502
  type: Output
6519
6503
  }], fDropToGroup: [{
6520
6504
  type: Output
6505
+ }], vCellSize: [{
6506
+ type: Input
6507
+ }], hCellSize: [{
6508
+ type: Input
6521
6509
  }], plugins: [{
6522
6510
  type: ContentChildren,
6523
6511
  args: [F_DRAG_AND_DROP_PLUGIN, { descendants: true }]
@@ -7207,7 +7195,7 @@ let GetCanBeSelectedItemsExecution = class GetCanBeSelectedItemsExecution {
7207
7195
  return this.fNodes.filter((x) => !x.fSelectionDisabled).map((x) => {
7208
7196
  return {
7209
7197
  element: x,
7210
- rect: RectExtensions.mult(this._fMediator.send(new GetNormalizedElementRectRequest(x.hostElement)), this.transform.scale)
7198
+ rect: RectExtensions.mult(this._fMediator.send(new GetNormalizedElementRectRequest(x.hostElement, false)), this.transform.scale)
7211
7199
  };
7212
7200
  });
7213
7201
  }
@@ -7215,7 +7203,7 @@ let GetCanBeSelectedItemsExecution = class GetCanBeSelectedItemsExecution {
7215
7203
  return this.fConnections.filter((x) => !x.fSelectionDisabled).map((x) => {
7216
7204
  return {
7217
7205
  element: x,
7218
- rect: RectExtensions.mult(this._fMediator.send(new GetNormalizedElementRectRequest(x.boundingElement)), this.transform.scale)
7206
+ rect: RectExtensions.mult(this._fMediator.send(new GetNormalizedElementRectRequest(x.boundingElement, false)), this.transform.scale)
7219
7207
  };
7220
7208
  });
7221
7209
  }
@@ -8079,6 +8067,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
8079
8067
  type: Injectable
8080
8068
  }] });
8081
8069
 
8070
+ class GetNodePaddingRequest {
8071
+ fNode;
8072
+ rect;
8073
+ constructor(fNode, rect) {
8074
+ this.fNode = fNode;
8075
+ this.rect = rect;
8076
+ }
8077
+ }
8078
+
8079
+ let GetNodePaddingExecution = class GetNodePaddingExecution {
8080
+ fBrowser;
8081
+ constructor(fBrowser) {
8082
+ this.fBrowser = fBrowser;
8083
+ }
8084
+ handle(request) {
8085
+ return request.fNode.fIncludePadding ? this.getPaddingData(request.fNode, request.rect) : [0, 0, 0, 0];
8086
+ }
8087
+ getPaddingData(node, rect) {
8088
+ const style = this.fBrowser.window.getComputedStyle(node.hostElement);
8089
+ return [
8090
+ this.fBrowser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),
8091
+ this.fBrowser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),
8092
+ this.fBrowser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),
8093
+ this.fBrowser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)
8094
+ ];
8095
+ }
8096
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodePaddingExecution, deps: [{ token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
8097
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodePaddingExecution });
8098
+ };
8099
+ GetNodePaddingExecution = __decorate([
8100
+ FExecutionRegister(GetNodePaddingRequest)
8101
+ ], GetNodePaddingExecution);
8102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodePaddingExecution, decorators: [{
8103
+ type: Injectable
8104
+ }], ctorParameters: () => [{ type: i1.BrowserService }] });
8105
+
8082
8106
  class GetNodesRequest {
8083
8107
  }
8084
8108
 
@@ -8156,7 +8180,9 @@ const F_NODE_FEATURES = [
8156
8180
  AddNodeToStoreExecution,
8157
8181
  CalculateNodesBoundingBoxExecution,
8158
8182
  CalculateNodesBoundingBoxNormalizedPositionExecution,
8183
+ GetNodePaddingExecution,
8159
8184
  GetNodesExecution,
8185
+ GetParentNodesExecution,
8160
8186
  UpdateNodeWhenStateOrSizeChangedExecution,
8161
8187
  RemoveNodeFromStoreExecution
8162
8188
  ];
@@ -8774,110 +8800,6 @@ class LineService {
8774
8800
  }
8775
8801
  }
8776
8802
 
8777
- /**
8778
- * A class to find the nearest coordinate.
8779
- */
8780
- class NearestCoordinateFinder {
8781
- alignThreshold;
8782
- elements;
8783
- target;
8784
- /**
8785
- * Constructor to initialize the NearestCoordinateFinder.
8786
- * @param elements - The array of IRect elements.
8787
- * @param target - The target IRect element.
8788
- * @param alignThreshold - The threshold to align the elements.
8789
- */
8790
- constructor(elements, target, alignThreshold = 10) {
8791
- this.alignThreshold = alignThreshold;
8792
- this.elements = elements;
8793
- this.target = target;
8794
- }
8795
- /**
8796
- * Finds the nearest coordinate on a specified axis.
8797
- * @returns The nearest coordinate and its distance.
8798
- */
8799
- findNearestCoordinateByX() {
8800
- let nearest;
8801
- let minDistance;
8802
- for (const element of this.elements) {
8803
- const distanceLeftLeft = this.target.x - element.x;
8804
- const distanceLeftRight = this.target.x - (element.x + element.width);
8805
- const distanceCenterCenter = this.target.gravityCenter.x - element.gravityCenter.x;
8806
- const distanceRightLeft = (this.target.x + this.target.width) - element.x;
8807
- const distanceRightRight = (this.target.x + this.target.width) - (element.x + element.width);
8808
- if (Math.abs(distanceLeftLeft) <= this.alignThreshold ||
8809
- Math.abs(distanceLeftRight) <= this.alignThreshold ||
8810
- Math.abs(distanceCenterCenter) <= this.alignThreshold ||
8811
- Math.abs(distanceRightLeft) <= this.alignThreshold ||
8812
- Math.abs(distanceRightRight) <= this.alignThreshold) {
8813
- if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {
8814
- minDistance = distanceCenterCenter;
8815
- nearest = element.gravityCenter.x;
8816
- }
8817
- if (Math.abs(distanceLeftLeft) < Math.abs(minDistance)) {
8818
- minDistance = distanceLeftLeft;
8819
- nearest = element.x;
8820
- }
8821
- if (Math.abs(distanceRightRight) < Math.abs(minDistance)) {
8822
- minDistance = distanceRightRight;
8823
- nearest = element.x + element.width;
8824
- }
8825
- if (Math.abs(distanceLeftRight) < Math.abs(minDistance)) {
8826
- minDistance = distanceLeftRight;
8827
- nearest = element.x + element.width;
8828
- }
8829
- if (Math.abs(distanceRightLeft) < Math.abs(minDistance)) {
8830
- minDistance = distanceRightLeft;
8831
- nearest = element.x;
8832
- }
8833
- }
8834
- }
8835
- return { value: nearest, distance: minDistance };
8836
- }
8837
- /**
8838
- * Finds the nearest coordinate on a specified axis.
8839
- * @returns The nearest coordinate and its distance.
8840
- */
8841
- findNearestCoordinateByY() {
8842
- let nearest;
8843
- let minDistance;
8844
- for (const element of this.elements) {
8845
- const distanceTopTop = this.target.y - element.y;
8846
- const distanceTopBottom = this.target.y - (element.y + element.height);
8847
- const distanceCenterCenter = this.target.gravityCenter.y - element.gravityCenter.y;
8848
- const distanceBottomTop = (this.target.y + this.target.height) - element.y;
8849
- const distanceBottomBottom = (this.target.y + this.target.height) - (element.y + element.height);
8850
- if (Math.abs(distanceTopTop) <= this.alignThreshold ||
8851
- Math.abs(distanceTopBottom) <= this.alignThreshold ||
8852
- Math.abs(distanceCenterCenter) <= this.alignThreshold ||
8853
- Math.abs(distanceBottomTop) <= this.alignThreshold ||
8854
- Math.abs(distanceBottomBottom) <= this.alignThreshold) {
8855
- if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {
8856
- minDistance = distanceCenterCenter;
8857
- nearest = element.gravityCenter.y;
8858
- }
8859
- if (Math.abs(distanceTopTop) < Math.abs(minDistance)) {
8860
- minDistance = distanceTopTop;
8861
- nearest = element.y;
8862
- }
8863
- if (Math.abs(distanceBottomBottom) < Math.abs(minDistance)) {
8864
- minDistance = distanceBottomBottom;
8865
- nearest = element.y + element.height;
8866
- }
8867
- if (Math.abs(distanceTopBottom) < Math.abs(minDistance)) {
8868
- minDistance = distanceTopBottom;
8869
- nearest = element.y + element.height;
8870
- }
8871
- if (Math.abs(distanceBottomTop) < Math.abs(minDistance)) {
8872
- minDistance = distanceBottomTop;
8873
- nearest = element.y;
8874
- }
8875
- }
8876
- }
8877
- return { value: nearest, distance: minDistance };
8878
- }
8879
- }
8880
-
8881
8803
  const F_LINE_ALIGNMENT = new InjectionToken('F_LINE_ALIGNMENT');
8882
8804
  class FLineAlignmentBase {
8883
8805
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -8890,6 +8812,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
8890
8812
  class FLineAlignmentComponent extends FLineAlignmentBase {
8891
8813
  elementReference;
8892
8814
  fDraggableDataContext;
8815
+ DEBOUNCE_TIME = 10;
8893
8816
  fAlignThreshold = 10;
8894
8817
  get hostElement() {
8895
8818
  return this.elementReference.nativeElement;
@@ -8900,12 +8823,10 @@ class FLineAlignmentComponent extends FLineAlignmentBase {
8900
8823
  rects = [];
8901
8824
  _fMediator = inject(FMediator);
8902
8825
  _fCanvas;
8826
+ _debounceTimer = null;
8903
8827
  get _transform() {
8904
8828
  return this._fCanvas.transform;
8905
8829
  }
8906
- get _fFlowHostElement() {
8907
- return this._fMediator.send(new GetFlowHostElementRequest());
8908
- }
8909
8830
  constructor(elementReference, fDraggableDataContext, fBrowser) {
8910
8831
  super();
8911
8832
  this.elementReference = elementReference;
@@ -8917,21 +8838,24 @@ class FLineAlignmentComponent extends FLineAlignmentBase {
8917
8838
  this.fDraggableDataContext.fLineAlignment = this;
8918
8839
  }
8919
8840
  initialize(allNodes, currentNodes) {
8920
- this.size = this._fFlowHostElement.getBoundingClientRect();
8841
+ this.size = this._fMediator.send(new GetFlowHostElementRequest()).getBoundingClientRect();
8921
8842
  this.rects = [];
8922
8843
  const draggedNodeRects = currentNodes.map((x) => {
8923
- return this._fMediator.send(new GetNormalizedElementRectRequest(x.hostElement));
8844
+ return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
8924
8845
  });
8925
8846
  this.draggedNodeRect = RectExtensions.union(draggedNodeRects) || RectExtensions.initialize();
8926
8847
  const allNodesExcludeCurrents = allNodes.filter((x) => {
8927
8848
  return !currentNodes.includes(x);
8928
8849
  });
8929
8850
  this.rects = allNodesExcludeCurrents.map((x) => {
8930
- return this._fMediator.send(new GetNormalizedElementRectRequest(x.hostElement));
8851
+ return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
8931
8852
  });
8932
8853
  }
8933
8854
  handle(difference) {
8934
- this.drawIntersectingLines(difference);
8855
+ if (this._debounceTimer) {
8856
+ clearTimeout(this._debounceTimer);
8857
+ }
8858
+ this._debounceTimer = setTimeout(() => this.drawIntersectingLines(difference), this.DEBOUNCE_TIME);
8935
8859
  }
8936
8860
  drawIntersectingLines(difference) {
8937
8861
  const intersect = this.findNearestCoordinate(difference);
@@ -8950,12 +8874,15 @@ class FLineAlignmentComponent extends FLineAlignmentBase {
8950
8874
  }
8951
8875
  findNearestCoordinate(difference) {
8952
8876
  const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);
8953
- const finder = new NearestCoordinateFinder(this.rects, rect, this.fAlignThreshold);
8954
- return { xResult: finder.findNearestCoordinateByX(), yResult: finder.findNearestCoordinateByY() };
8877
+ return findClosestAlignment(this.rects, rect, this.fAlignThreshold);
8955
8878
  }
8956
8879
  complete() {
8957
8880
  this.lineService.hideVerticalLine();
8958
8881
  this.lineService.hideHorizontalLine();
8882
+ if (this._debounceTimer) {
8883
+ clearTimeout(this._debounceTimer);
8884
+ this._debounceTimer = null;
8885
+ }
8959
8886
  }
8960
8887
  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 });
8961
8888
  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: [
@@ -9429,5 +9356,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
9429
9356
  * Generated bundle index. Do not edit.
9430
9357
  */
9431
9358
 
9432
- 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, CanvasMoveFinalizeValidator, CanvasMovePreparationExecution, CanvasMovePreparationRequest, CanvasMovePreparationValidator, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, ConnectionBaseDragHandler, ConnectionDragHandler, ConnectionSourceDragHandler, ConnectionTargetDragHandler, CreateConnectionDragHandler, CreateConnectionDragHandlerExecution, CreateConnectionDragHandlerRequest, CreateConnectionFinalizeExecution, CreateConnectionFinalizeRequest, CreateConnectionFinalizeValidator, 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, ExternalItemFinalizeValidator, 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, FindClosestInputUsingSnapThresholdExecution, FindClosestInputUsingSnapThresholdRequest, 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, GetNormalizedNodeRectExecution, GetNormalizedNodeRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetNormalizedPointExecution, GetNormalizedPointRequest, GetParentNodesExecution, GetParentNodesRequest, InitializeDragSequenceExecution, InitializeDragSequenceRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, IsConnectionUnderNodeRequest, IsConnectionUnderNodeValidator, 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_FINALIZE_PROVIDERS, NODE_MOVE_PREPARATION_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_FINALIZE_PROVIDERS, NODE_RESIZE_PREPARATION_PROVIDERS, NODE_RESIZE_PROVIDERS, NearestCoordinateFinder, NodeDragHandler, NodeDragToParentDragHandler, NodeDragToParentFinalizeExecution, NodeDragToParentFinalizeRequest, NodeDragToParentFinalizeValidator, NodeDragToParentPreparationExecution, NodeDragToParentPreparationRequest, NodeDragToParentPreparationValidator, NodeMoveFinalizeExecution, NodeMoveFinalizeRequest, NodeMoveFinalizeValidator, NodeMovePreparationExecution, NodeMovePreparationRequest, NodeMovePreparationValidator, NodeResizeByChildDragHandler, NodeResizeDragHandler, NodeResizeFinalizeExecution, NodeResizeFinalizeRequest, NodeResizeFinalizeValidator, NodeResizePreparationExecution, NodeResizePreparationRequest, NodeResizePreparationValidator, NotifyDataChangedExecution, NotifyDataChangedRequest, NotifyTransformChangedExecution, NotifyTransformChangedRequest, OnPointerMoveExecution, OnPointerMoveRequest, PrepareDragSequenceExecution, PrepareDragSequenceRequest, PreventDefaultIsExternalItemExecution, PreventDefaultIsExternalItemRequest, PutInputConnectionHandlersToArrayExecution, PutInputConnectionHandlersToArrayRequest, PutOutputConnectionHandlersToArrayExecution, PutOutputConnectionHandlersToArrayRequest, RESIZE_DIRECTIONS, ReassignConnectionDragHandler, ReassignConnectionFinalizeExecution, ReassignConnectionFinalizeRequest, ReassignConnectionFinalizeValidator, 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 };
9359
+ 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, CanvasMoveFinalizeValidator, CanvasMovePreparationExecution, CanvasMovePreparationRequest, CanvasMovePreparationValidator, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, ConnectionBaseDragHandler, ConnectionDragHandler, ConnectionSourceDragHandler, ConnectionTargetDragHandler, CreateConnectionDragHandler, CreateConnectionDragHandlerExecution, CreateConnectionDragHandlerRequest, CreateConnectionFinalizeExecution, CreateConnectionFinalizeRequest, CreateConnectionFinalizeValidator, 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, ExternalItemFinalizeValidator, 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, IsConnectionUnderNodeValidator, 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_FINALIZE_PROVIDERS, NODE_MOVE_PREPARATION_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_FINALIZE_PROVIDERS, NODE_RESIZE_PREPARATION_PROVIDERS, NODE_RESIZE_PROVIDERS, NodeDragHandler, NodeDragToParentDragHandler, NodeDragToParentFinalizeExecution, NodeDragToParentFinalizeRequest, NodeDragToParentFinalizeValidator, NodeDragToParentPreparationExecution, NodeDragToParentPreparationRequest, NodeDragToParentPreparationValidator, NodeMoveFinalizeExecution, NodeMoveFinalizeRequest, NodeMoveFinalizeValidator, NodeMovePreparationExecution, NodeMovePreparationRequest, NodeMovePreparationValidator, NodeResizeByChildDragHandler, NodeResizeDragHandler, NodeResizeFinalizeExecution, NodeResizeFinalizeRequest, NodeResizeFinalizeValidator, NodeResizePreparationExecution, NodeResizePreparationRequest, NodeResizePreparationValidator, NotifyDataChangedExecution, NotifyDataChangedRequest, NotifyTransformChangedExecution, NotifyTransformChangedRequest, OnPointerMoveExecution, OnPointerMoveRequest, PrepareDragSequenceExecution, PrepareDragSequenceRequest, PreventDefaultIsExternalItemExecution, PreventDefaultIsExternalItemRequest, PutInputConnectionHandlersToArrayExecution, PutInputConnectionHandlersToArrayRequest, PutOutputConnectionHandlersToArrayExecution, PutOutputConnectionHandlersToArrayRequest, RESIZE_DIRECTIONS, ReassignConnectionDragHandler, ReassignConnectionFinalizeExecution, ReassignConnectionFinalizeRequest, ReassignConnectionFinalizeValidator, 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 };
9433
9360
  //# sourceMappingURL=foblex-flow.mjs.map