@foblex/flow 17.0.9 → 17.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/domain/css-cls.d.ts +13 -0
  2. package/domain/f-connection/index.d.ts +0 -3
  3. package/domain/f-connection/providers.d.ts +1 -4
  4. package/domain/f-connection/redraw-connections/redraw-connections.execution.d.ts +2 -2
  5. package/domain/f-connectors/calculate-closest-input/calculate-closest-input.execution.d.ts +11 -0
  6. package/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.d.ts +7 -0
  7. package/domain/f-connectors/calculate-closest-input/index.d.ts +2 -0
  8. package/domain/f-connectors/find-input-at-position/find-input-at-position.execution.d.ts +24 -0
  9. package/domain/f-connectors/find-input-at-position/find-input-at-position.request.d.ts +8 -0
  10. package/domain/f-connectors/find-input-at-position/index.d.ts +2 -0
  11. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.d.ts +14 -0
  12. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.d.ts +5 -0
  13. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/index.d.ts +2 -0
  14. package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.d.ts +5 -0
  15. package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.d.ts +11 -0
  16. package/domain/f-connectors/get-connector-and-rect/index.d.ts +2 -0
  17. package/domain/{f-connection/find-closest-input → f-connectors}/i-closest-input.d.ts +1 -1
  18. package/domain/{f-connection/get-connector-with-rect/i-connector-with-rect.d.ts → f-connectors/i-connector-and-rect.d.ts} +2 -2
  19. package/domain/f-connectors/index.d.ts +8 -0
  20. package/domain/f-connectors/mark-all-can-be-connected-inputs/index.d.ts +2 -0
  21. package/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.execution.d.ts +10 -0
  22. package/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.d.ts +5 -0
  23. package/domain/f-connectors/providers.d.ts +7 -1
  24. package/domain/f-connectors/unmark-all-can-be-connected-inputs/index.d.ts +2 -0
  25. package/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.execution.d.ts +10 -0
  26. package/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.d.ts +5 -0
  27. package/domain/f-draggable/providers.d.ts +1 -1
  28. package/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.d.ts +2 -3
  29. package/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.d.ts +2 -2
  30. package/domain/f-flow/get-flow-state/get-flow-state.execution.d.ts +4 -6
  31. package/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.request.d.ts +3 -0
  32. package/domain/f-node/providers.d.ts +1 -1
  33. package/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.execution.d.ts +2 -0
  34. package/domain/f-selection/select/select.execution.d.ts +2 -5
  35. package/domain/f-selection/select-all/select-all.execution.d.ts +2 -5
  36. package/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.d.ts +5 -0
  37. package/domain/f-zoom/add-zoom-to-store/add-zoom-to-store.execution.d.ts +9 -0
  38. package/domain/f-zoom/add-zoom-to-store/index.d.ts +2 -0
  39. package/domain/f-zoom/f-zoom-tag.d.ts +1 -0
  40. package/domain/f-zoom/index.d.ts +6 -0
  41. package/domain/f-zoom/providers.d.ts +5 -0
  42. package/domain/f-zoom/remove-zoom-from-store/index.d.ts +2 -0
  43. package/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.d.ts +2 -0
  44. package/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.d.ts +9 -0
  45. package/domain/f-zoom/reset-zoom/index.d.ts +2 -0
  46. package/domain/f-zoom/reset-zoom/reset-zoom-request.d.ts +2 -0
  47. package/domain/f-zoom/reset-zoom/reset-zoom.execution.d.ts +10 -0
  48. package/domain/f-zoom/set-zoom/index.d.ts +2 -0
  49. package/domain/f-zoom/set-zoom/set-zoom-request.d.ts +8 -0
  50. package/domain/f-zoom/set-zoom/set-zoom.execution.d.ts +16 -0
  51. package/domain/i-f-action-trigger.d.ts +14 -0
  52. package/domain/index.d.ts +5 -0
  53. package/domain/log-deprecated.d.ts +1 -0
  54. package/domain/log-execution-time.d.ts +1 -0
  55. package/domain/providers.d.ts +1 -1
  56. package/esm2022/domain/css-cls.mjs +14 -0
  57. package/esm2022/domain/f-connection/index.mjs +1 -4
  58. package/esm2022/domain/f-connection/providers.mjs +1 -7
  59. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +9 -9
  60. package/esm2022/domain/f-connectors/calculate-closest-input/calculate-closest-input.execution.mjs +42 -0
  61. package/esm2022/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.mjs +9 -0
  62. package/esm2022/domain/f-connectors/calculate-closest-input/index.mjs +3 -0
  63. package/esm2022/domain/f-connectors/find-input-at-position/find-input-at-position.execution.mjs +89 -0
  64. package/esm2022/domain/f-connectors/find-input-at-position/find-input-at-position.request.mjs +11 -0
  65. package/esm2022/domain/f-connectors/find-input-at-position/index.mjs +3 -0
  66. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.mjs +45 -0
  67. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.mjs +7 -0
  68. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/index.mjs +3 -0
  69. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.mjs +7 -0
  70. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.mjs +28 -0
  71. package/esm2022/domain/f-connectors/get-connector-and-rect/index.mjs +3 -0
  72. package/esm2022/domain/f-connectors/i-closest-input.mjs +2 -0
  73. package/esm2022/domain/f-connectors/i-connector-and-rect.mjs +2 -0
  74. package/esm2022/domain/f-connectors/index.mjs +9 -1
  75. package/esm2022/domain/f-connectors/mark-all-can-be-connected-inputs/index.mjs +3 -0
  76. package/esm2022/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.execution.mjs +27 -0
  77. package/esm2022/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.mjs +7 -0
  78. package/esm2022/domain/f-connectors/providers.mjs +14 -2
  79. package/esm2022/domain/f-connectors/unmark-all-can-be-connected-inputs/index.mjs +3 -0
  80. package/esm2022/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.execution.mjs +27 -0
  81. package/esm2022/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.mjs +7 -0
  82. package/esm2022/domain/f-draggable/end-drag-sequence/end-drag-sequence.execution.mjs +3 -2
  83. package/esm2022/domain/f-draggable/start-drag-sequence/start-drag-sequence.execution.mjs +3 -2
  84. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.mjs +17 -19
  85. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.mjs +5 -5
  86. package/esm2022/domain/f-flow/get-flow-state/get-flow-state.execution.mjs +14 -19
  87. package/esm2022/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store.execution.mjs +2 -2
  88. package/esm2022/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store.execution.mjs +2 -2
  89. package/esm2022/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.execution.mjs +4 -4
  90. package/esm2022/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.request.mjs +5 -1
  91. package/esm2022/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.execution.mjs +39 -5
  92. package/esm2022/domain/f-selection/select/select.execution.mjs +15 -19
  93. package/esm2022/domain/f-selection/select-all/select-all.execution.mjs +15 -19
  94. package/esm2022/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.mjs +7 -0
  95. package/esm2022/domain/f-zoom/add-zoom-to-store/add-zoom-to-store.execution.mjs +25 -0
  96. package/esm2022/domain/f-zoom/add-zoom-to-store/index.mjs +3 -0
  97. package/esm2022/domain/f-zoom/f-zoom-tag.mjs +2 -0
  98. package/esm2022/domain/f-zoom/index.mjs +7 -0
  99. package/esm2022/domain/f-zoom/providers.mjs +11 -0
  100. package/esm2022/domain/f-zoom/remove-zoom-from-store/index.mjs +3 -0
  101. package/esm2022/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.mjs +3 -0
  102. package/esm2022/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.mjs +25 -0
  103. package/esm2022/domain/f-zoom/reset-zoom/index.mjs +3 -0
  104. package/esm2022/domain/f-zoom/reset-zoom/reset-zoom-request.mjs +3 -0
  105. package/esm2022/domain/f-zoom/reset-zoom/reset-zoom.execution.mjs +27 -0
  106. package/esm2022/domain/f-zoom/set-zoom/index.mjs +3 -0
  107. package/esm2022/domain/f-zoom/set-zoom/set-zoom-request.mjs +13 -0
  108. package/esm2022/domain/f-zoom/set-zoom/set-zoom.execution.mjs +50 -0
  109. package/esm2022/domain/i-f-action-trigger.mjs +11 -0
  110. package/esm2022/domain/index.mjs +6 -1
  111. package/esm2022/domain/log-deprecated.mjs +11 -0
  112. package/esm2022/domain/log-execution-time.mjs +16 -0
  113. package/esm2022/domain/providers.mjs +3 -1
  114. package/esm2022/f-canvas/domain/f-canvas-change.event.mjs +1 -1
  115. package/esm2022/f-canvas/f-canvas-base.mjs +1 -1
  116. package/esm2022/f-canvas/f-canvas.component.mjs +25 -2
  117. package/esm2022/f-connection/f-connection/f-connection.component.mjs +7 -5
  118. package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +7 -5
  119. package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +9 -6
  120. package/esm2022/f-connectors/f-connector-base.mjs +9 -5
  121. package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +23 -23
  122. package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +16 -17
  123. package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +28 -24
  124. package/esm2022/f-connectors/index.mjs +1 -2
  125. package/esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.mjs +8 -11
  126. package/esm2022/f-draggable/canvas/canvas-move-finalize/index.mjs +1 -2
  127. package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.mjs +36 -19
  128. package/esm2022/f-draggable/canvas/canvas-move-preparation/index.mjs +1 -3
  129. package/esm2022/f-draggable/canvas/canvas.drag-handler.mjs +8 -8
  130. package/esm2022/f-draggable/canvas/providers.mjs +5 -5
  131. package/esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.mjs +13 -10
  132. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.mjs +2 -2
  133. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.mjs +4 -4
  134. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.mjs +3 -3
  135. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.mjs +7 -7
  136. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.mjs +5 -5
  137. package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +54 -50
  138. package/esm2022/f-draggable/connections/i-create-reassign-connection-drag-data.mjs +2 -0
  139. package/esm2022/f-draggable/connections/index.mjs +2 -2
  140. package/esm2022/f-draggable/connections/providers.mjs +1 -4
  141. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.mjs +38 -34
  142. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.mjs +1 -1
  143. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +73 -50
  144. package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.mjs +8 -17
  145. package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.mjs +6 -6
  146. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +25 -19
  147. package/esm2022/f-draggable/f-draggable-data-context.mjs +4 -2
  148. package/esm2022/f-draggable/i-draggable-item.mjs +1 -1
  149. package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +4 -4
  150. package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +5 -7
  151. package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +5 -7
  152. package/esm2022/f-draggable/node/connection.drag-handler.mjs +5 -5
  153. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.mjs +37 -22
  154. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/calculate-common-node-move-restrictions.execution.mjs +40 -0
  155. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/calculate-common-node-move-restrictions.request.mjs +7 -0
  156. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/index.mjs +3 -0
  157. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.execution.mjs +42 -0
  158. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.request.mjs +9 -0
  159. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/index.mjs +3 -0
  160. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.mjs +16 -21
  161. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.mjs +4 -4
  162. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.mjs +1 -1
  163. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/index.mjs +3 -2
  164. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.mjs +5 -3
  165. package/esm2022/f-draggable/node/index.mjs +3 -1
  166. package/esm2022/f-draggable/node/line-alignment-preparation/index.mjs +3 -0
  167. package/esm2022/f-draggable/node/line-alignment-preparation/line-alignment-preparation.execution.mjs +67 -0
  168. package/esm2022/f-draggable/node/line-alignment-preparation/line-alignment-preparation.request.mjs +3 -0
  169. package/esm2022/f-draggable/node/line-alignment.drag-handler.mjs +61 -0
  170. package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +5 -3
  171. package/esm2022/f-draggable/node/node-move-preparation/index.mjs +1 -2
  172. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.execution.mjs +26 -21
  173. package/esm2022/f-draggable/node/node-move-preparation/providers.mjs +1 -3
  174. package/esm2022/f-draggable/node/node.drag-handler.mjs +13 -19
  175. package/esm2022/f-draggable/node/providers.mjs +3 -1
  176. package/esm2022/f-line-alignment/f-line-alignment-base.mjs +1 -1
  177. package/esm2022/f-line-alignment/f-line-alignment.component.mjs +12 -78
  178. package/esm2022/f-node/f-group.directive.mjs +9 -7
  179. package/esm2022/f-node/f-node.directive.mjs +10 -8
  180. package/esm2022/f-storage/f-components-store.mjs +3 -1
  181. package/esm2022/f-zoom/e-f-zoom-action.mjs +6 -0
  182. package/esm2022/f-zoom/e-f-zoom-direction.mjs +6 -0
  183. package/esm2022/f-zoom/f-zoom-base.mjs +2 -98
  184. package/esm2022/f-zoom/f-zoom.directive.mjs +139 -21
  185. package/esm2022/f-zoom/index.mjs +3 -1
  186. package/f-backgroud/providers.d.ts +1 -1
  187. package/f-canvas/f-canvas-base.d.ts +2 -2
  188. package/f-canvas/f-canvas.component.d.ts +9 -0
  189. package/f-connection/f-connection/f-connection.component.d.ts +2 -0
  190. package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +2 -0
  191. package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +3 -0
  192. package/f-connection/providers.d.ts +1 -1
  193. package/f-connectors/f-connector-base.d.ts +4 -2
  194. package/f-connectors/f-node-input/f-node-input.directive.d.ts +6 -6
  195. package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +6 -6
  196. package/f-connectors/f-node-output/f-node-output.directive.d.ts +8 -7
  197. package/f-connectors/index.d.ts +0 -1
  198. package/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.d.ts +1 -3
  199. package/f-draggable/canvas/canvas-move-finalize/index.d.ts +0 -1
  200. package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.d.ts +7 -6
  201. package/f-draggable/canvas/canvas-move-preparation/index.d.ts +0 -2
  202. package/f-draggable/canvas/canvas.drag-handler.d.ts +2 -2
  203. package/f-draggable/canvas/providers.d.ts +3 -1
  204. package/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.d.ts +3 -2
  205. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.d.ts +3 -3
  206. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.d.ts +2 -2
  207. package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +14 -15
  208. package/f-draggable/connections/i-create-reassign-connection-drag-data.d.ts +7 -0
  209. package/f-draggable/connections/index.d.ts +1 -1
  210. package/f-draggable/connections/providers.d.ts +1 -2
  211. package/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.d.ts +13 -13
  212. package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +19 -15
  213. package/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.d.ts +3 -6
  214. package/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.d.ts +3 -3
  215. package/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.d.ts +3 -2
  216. package/f-draggable/domain/providers.d.ts +1 -1
  217. package/f-draggable/f-draggable-data-context.d.ts +1 -2
  218. package/f-draggable/i-draggable-item.d.ts +2 -1
  219. package/f-draggable/node/connection-base-drag-handler.d.ts +5 -6
  220. package/f-draggable/node/connection-source.drag-handler.d.ts +3 -4
  221. package/f-draggable/node/connection-target.drag-handler.d.ts +3 -4
  222. package/f-draggable/node/connection.drag-handler.d.ts +3 -3
  223. package/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.d.ts +6 -3
  224. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/calculate-common-node-move-restrictions.execution.d.ts +13 -0
  225. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/calculate-common-node-move-restrictions.request.d.ts +5 -0
  226. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/index.d.ts +2 -0
  227. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.execution.d.ts +12 -0
  228. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/{get-node-move-restrictions/get-node-move-restrictions.request.d.ts → calculate-node-move-restrictions/calculate-node-move-restrictions.request.d.ts} +1 -1
  229. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/index.d.ts +2 -0
  230. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.d.ts +4 -6
  231. package/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.d.ts +4 -4
  232. package/f-draggable/node/create-move-nodes-drag-model-from-selection/index.d.ts +2 -1
  233. package/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.d.ts +3 -2
  234. package/f-draggable/node/index.d.ts +2 -0
  235. package/f-draggable/node/line-alignment-preparation/index.d.ts +2 -0
  236. package/f-draggable/node/line-alignment-preparation/line-alignment-preparation.execution.d.ts +21 -0
  237. package/f-draggable/node/line-alignment-preparation/line-alignment-preparation.request.d.ts +2 -0
  238. package/f-draggable/node/line-alignment.drag-handler.d.ts +20 -0
  239. package/f-draggable/node/node-move-preparation/index.d.ts +0 -1
  240. package/f-draggable/node/node-move-preparation/node-move-preparation.execution.d.ts +4 -3
  241. package/f-draggable/node/node-move-preparation/providers.d.ts +1 -2
  242. package/f-draggable/node/node.drag-handler.d.ts +4 -7
  243. package/f-draggable/node/providers.d.ts +2 -1
  244. package/f-draggable/providers.d.ts +1 -1
  245. package/f-line-alignment/f-line-alignment-base.d.ts +2 -8
  246. package/f-line-alignment/f-line-alignment.component.d.ts +6 -25
  247. package/f-minimap/providers.d.ts +1 -1
  248. package/f-node/f-group.directive.d.ts +4 -0
  249. package/f-node/f-node.directive.d.ts +4 -0
  250. package/f-node/providers.d.ts +1 -1
  251. package/f-storage/f-components-store.d.ts +4 -0
  252. package/f-storage/providers.d.ts +1 -1
  253. package/f-zoom/e-f-zoom-action.d.ts +4 -0
  254. package/f-zoom/e-f-zoom-direction.d.ts +4 -0
  255. package/f-zoom/f-zoom-base.d.ts +0 -17
  256. package/f-zoom/f-zoom.directive.d.ts +40 -5
  257. package/f-zoom/index.d.ts +2 -0
  258. package/fesm2022/foblex-flow.mjs +1766 -1435
  259. package/fesm2022/foblex-flow.mjs.map +1 -1
  260. package/package.json +2 -2
  261. package/domain/f-connection/find-closest-input/find-closest-input.execution.d.ts +0 -11
  262. package/domain/f-connection/find-closest-input/find-closest-input.request.d.ts +0 -7
  263. package/domain/f-connection/find-closest-input/index.d.ts +0 -3
  264. package/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.d.ts +0 -21
  265. package/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.d.ts +0 -4
  266. package/domain/f-connection/get-all-can-be-connected-input-positions/index.d.ts +0 -2
  267. package/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.d.ts +0 -5
  268. package/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.d.ts +0 -10
  269. package/domain/f-connection/get-connector-with-rect/index.d.ts +0 -3
  270. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.execution.mjs +0 -42
  271. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.request.mjs +0 -9
  272. package/esm2022/domain/f-connection/find-closest-input/i-closest-input.mjs +0 -2
  273. package/esm2022/domain/f-connection/find-closest-input/index.mjs +0 -4
  274. package/esm2022/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.mjs +0 -57
  275. package/esm2022/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.mjs +0 -7
  276. package/esm2022/domain/f-connection/get-all-can-be-connected-input-positions/index.mjs +0 -3
  277. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.mjs +0 -7
  278. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.mjs +0 -25
  279. package/esm2022/domain/f-connection/get-connector-with-rect/i-connector-with-rect.mjs +0 -2
  280. package/esm2022/domain/f-connection/get-connector-with-rect/index.mjs +0 -4
  281. package/esm2022/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.mjs +0 -9
  282. package/esm2022/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.mjs +0 -38
  283. package/esm2022/f-connectors/domain/calculate-connector-connectable-side/index.mjs +0 -3
  284. package/esm2022/f-connectors/domain/index.mjs +0 -2
  285. package/esm2022/f-draggable/canvas/canvas-move-finalize/providers.mjs +0 -5
  286. package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.mjs +0 -46
  287. package/esm2022/f-draggable/canvas/canvas-move-preparation/providers.mjs +0 -7
  288. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.mjs +0 -88
  289. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.mjs +0 -9
  290. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.mjs +0 -36
  291. package/esm2022/f-draggable/connections/get-input-under-pointer/index.mjs +0 -4
  292. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.mjs +0 -42
  293. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.mjs +0 -9
  294. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.mjs +0 -2
  295. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/index.mjs +0 -4
  296. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.validator.mjs +0 -39
  297. package/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.d.ts +0 -6
  298. package/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.d.ts +0 -7
  299. package/f-connectors/domain/calculate-connector-connectable-side/index.d.ts +0 -2
  300. package/f-connectors/domain/index.d.ts +0 -1
  301. package/f-draggable/canvas/canvas-move-finalize/providers.d.ts +0 -2
  302. package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.d.ts +0 -17
  303. package/f-draggable/canvas/canvas-move-preparation/providers.d.ts +0 -3
  304. package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.d.ts +0 -27
  305. package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.d.ts +0 -8
  306. package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.d.ts +0 -13
  307. package/f-draggable/connections/get-input-under-pointer/index.d.ts +0 -3
  308. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.d.ts +0 -12
  309. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.d.ts +0 -5
  310. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/index.d.ts +0 -3
  311. package/f-draggable/node/node-move-preparation/node-move-preparation.validator.d.ts +0 -14
@@ -1,15 +1,15 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Injectable, Directive, ElementRef, Input, HostBinding, EventEmitter, DestroyRef, Output, booleanAttribute, Inject, Component, ChangeDetectionStrategy, ViewChild, Optional, ContentChildren, NgZone, ContentChild, NgModule } from '@angular/core';
3
- import { RectExtensions, RoundedRect, TransformModelExtensions, PointExtensions, Point, SizeExtensions, LineExtensions, GetIntersections, setRectToElement, adjustRectToMinSize, findClosestAlignment, setRectToViewBox } from '@foblex/2d';
2
+ import { InjectionToken, inject, Injectable, Directive, ElementRef, Input, HostBinding, EventEmitter, DestroyRef, booleanAttribute, Output, Inject, Component, ChangeDetectionStrategy, ViewChild, Optional, numberAttribute, ContentChildren, NgZone, ContentChild, Renderer2, NgModule } from '@angular/core';
3
+ import { RectExtensions, RoundedRect, TransformModelExtensions, PointExtensions, Point, LineExtensions, GetIntersections, SizeExtensions, findClosestAlignment, setRectToElement, adjustRectToMinSize, setRectToViewBox } from '@foblex/2d';
4
4
  import { __decorate } from 'tslib';
5
- import * as i2 from '@foblex/mediator';
5
+ import * as i2$1 from '@foblex/mediator';
6
6
  import { FExecutionRegister, FMediator, FValidatorRegister } from '@foblex/mediator';
7
7
  import * as i1 from '@foblex/platform';
8
8
  import { BrowserService, EOperationSystem } from '@foblex/platform';
9
- import { normalizeDomElementId, castToEnum, flatMap, isClosestElementHasClass, getDataAttrValueFromClosestElementWithClass, deepCloneNode, castToBoolean } from '@foblex/utils';
10
- import * as i2$1 from '@angular/common';
9
+ import { normalizeDomElementId, castToEnum, flatMap, isClosestElementHasClass, getDataAttrValueFromClosestElementWithClass, deepCloneNode } from '@foblex/utils';
10
+ import * as i2 from '@angular/common';
11
11
  import { CommonModule } from '@angular/common';
12
- import { DragAndDropBase, EventExtensions } from '@foblex/drag-toolkit';
12
+ import { DragAndDropBase } from '@foblex/drag-toolkit';
13
13
 
14
14
  const F_BACKGROUND_PATTERN = new InjectionToken('F_BACKGROUND_PATTERN');
15
15
 
@@ -217,6 +217,7 @@ class FComponentsStore {
217
217
  get flowHost() {
218
218
  return this.fFlow?.hostElement;
219
219
  }
220
+ fComponents = {};
220
221
  fFlow;
221
222
  fCanvas;
222
223
  fBackground;
@@ -229,6 +230,7 @@ class FComponentsStore {
229
230
  fInputs = [];
230
231
  fOutlets = [];
231
232
  fDraggable;
233
+ fLineAlignment;
232
234
  addComponent(collection, component) {
233
235
  collection.push(component);
234
236
  this.countChanged();
@@ -918,171 +920,6 @@ function createSVGElement$1(tag, fBrowser) {
918
920
  return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);
919
921
  }
920
922
 
921
- class FindClosestInputRequest {
922
- position;
923
- canBeConnectedInputs;
924
- constructor(position, canBeConnectedInputs) {
925
- this.position = position;
926
- this.canBeConnectedInputs = canBeConnectedInputs;
927
- }
928
- }
929
-
930
- let FindClosestInputExecution = class FindClosestInputExecution {
931
- handle(payload) {
932
- let result;
933
- let minDistance = Infinity;
934
- for (const element of payload.canBeConnectedInputs) {
935
- const distance = this.distanceToRectangle(payload.position, element);
936
- if (distance < minDistance) {
937
- minDistance = distance;
938
- result = element;
939
- }
940
- }
941
- return result ? {
942
- ...result,
943
- distance: minDistance,
944
- } : undefined;
945
- }
946
- distanceToRectangle(point, inputWithRect) {
947
- const closestX = this.clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);
948
- const closestY = this.clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);
949
- const dx = point.x - closestX;
950
- const dy = point.y - closestY;
951
- return Math.sqrt(dx * dx + dy * dy);
952
- }
953
- clamp(value, min, max) {
954
- return Math.max(min, Math.min(max, value));
955
- }
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 });
958
- };
959
- FindClosestInputExecution = __decorate([
960
- FExecutionRegister(FindClosestInputRequest)
961
- ], FindClosestInputExecution);
962
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindClosestInputExecution, decorators: [{
963
- type: Injectable
964
- }] });
965
-
966
- class GetAllCanBeConnectedInputPositionsRequest {
967
- fOutputId;
968
- constructor(fOutputId) {
969
- this.fOutputId = fOutputId;
970
- }
971
- }
972
-
973
- class GetConnectorWithRectRequest {
974
- connector;
975
- constructor(connector) {
976
- this.connector = connector;
977
- }
978
- }
979
-
980
- class GetNormalizedElementRectRequest {
981
- element;
982
- isRoundedRect;
983
- constructor(element, isRoundedRect = true) {
984
- this.element = element;
985
- this.isRoundedRect = isRoundedRect;
986
- }
987
- }
988
-
989
- let GetNormalizedElementRectExecution = class GetNormalizedElementRectExecution {
990
- _fComponentsStore = inject(FComponentsStore);
991
- _fMediator = inject(FMediator);
992
- get _transform() {
993
- return this._fComponentsStore.fCanvas.transform;
994
- }
995
- handle(request) {
996
- const systemRect = this._getElementRoundedRect(request);
997
- const position = this._normalizePosition(systemRect);
998
- const size = this._normalizeSize(systemRect);
999
- return new RoundedRect(position.x, position.y, size.width, size.height, systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4);
1000
- }
1001
- _getElementRoundedRect(request) {
1002
- return request.isRoundedRect ? this._fMediator.send(new GetElementRoundedRectRequest(request.element)) : RoundedRect.fromRect(RectExtensions.fromElement(request.element));
1003
- }
1004
- _normalizePosition(rect) {
1005
- return Point.fromPoint(rect).elementTransform(this._fComponentsStore.flowHost).sub(this._transform.scaledPosition).sub(this._transform.position).div(this._transform.scale);
1006
- }
1007
- _normalizeSize(rect) {
1008
- return SizeExtensions.initialize(rect.width / this._transform.scale, rect.height / this._transform.scale);
1009
- }
1010
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedElementRectExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1011
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedElementRectExecution });
1012
- };
1013
- GetNormalizedElementRectExecution = __decorate([
1014
- FExecutionRegister(GetNormalizedElementRectRequest)
1015
- ], GetNormalizedElementRectExecution);
1016
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedElementRectExecution, decorators: [{
1017
- type: Injectable
1018
- }] });
1019
-
1020
- let GetConnectorWithRectExecution = class GetConnectorWithRectExecution {
1021
- _fMediator = inject(FMediator);
1022
- handle(request) {
1023
- return {
1024
- fConnector: request.connector,
1025
- fRect: this._fMediator.send(new GetNormalizedElementRectRequest(request.connector.hostElement, true))
1026
- };
1027
- }
1028
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetConnectorWithRectExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1029
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetConnectorWithRectExecution });
1030
- };
1031
- GetConnectorWithRectExecution = __decorate([
1032
- FExecutionRegister(GetConnectorWithRectRequest)
1033
- ], GetConnectorWithRectExecution);
1034
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetConnectorWithRectExecution, decorators: [{
1035
- type: Injectable
1036
- }] });
1037
-
1038
- let GetAllCanBeConnectedInputPositionsExecution = class GetAllCanBeConnectedInputPositionsExecution {
1039
- fComponentsStore;
1040
- fMediator;
1041
- get fNodes() {
1042
- return this.fComponentsStore.fNodes;
1043
- }
1044
- get fInputs() {
1045
- return this.fComponentsStore.fInputs;
1046
- }
1047
- constructor(fComponentsStore, fMediator) {
1048
- this.fComponentsStore = fComponentsStore;
1049
- this.fMediator = fMediator;
1050
- }
1051
- handle(payload) {
1052
- return this.getCanBeConnectedInputs(this.getOutput(payload.fOutputId)).map((x) => {
1053
- return this.fMediator.send(new GetConnectorWithRectRequest(x));
1054
- });
1055
- }
1056
- getOutput(fId) {
1057
- return this.findOutputById(fId) || this.findOutletById(fId);
1058
- }
1059
- findOutputById(fId) {
1060
- return this.fComponentsStore.fOutputs.find((x) => x.fId === fId);
1061
- }
1062
- findOutletById(fId) {
1063
- return this.fComponentsStore.fOutlets.find((x) => x.fId === fId);
1064
- }
1065
- getCanBeConnectedInputs(output) {
1066
- return output.isSelfConnectable ?
1067
- this.fInputs.filter((x) => x.canBeConnected) :
1068
- this.filterSelfConnectable(this.fInputs.filter((x) => x.canBeConnected), output);
1069
- }
1070
- filterSelfConnectable(inputs, output) {
1071
- return inputs.filter((x) => this.getNodeOfConnector(output)?.hostElement !== this.getNodeOfConnector(x)?.hostElement);
1072
- }
1073
- getNodeOfConnector(connector) {
1074
- return this.fNodes.find((x) => x.isContains(connector.hostElement));
1075
- }
1076
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetAllCanBeConnectedInputPositionsExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
1077
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetAllCanBeConnectedInputPositionsExecution });
1078
- };
1079
- GetAllCanBeConnectedInputPositionsExecution = __decorate([
1080
- FExecutionRegister(GetAllCanBeConnectedInputPositionsRequest)
1081
- ], GetAllCanBeConnectedInputPositionsExecution);
1082
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetAllCanBeConnectedInputPositionsExecution, decorators: [{
1083
- type: Injectable
1084
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
1085
-
1086
923
  class CalculateConnectionLineByBehaviorRequest {
1087
924
  outputRect;
1088
925
  inputRect;
@@ -1169,66 +1006,25 @@ var EFConnectableSide;
1169
1006
  EFConnectableSide["AUTO"] = "auto";
1170
1007
  })(EFConnectableSide || (EFConnectableSide = {}));
1171
1008
 
1172
- class CalculateConnectorConnectableSideHandler {
1173
- handle(request) {
1174
- let result;
1175
- if (request.fConnector.userFConnectableSide === EFConnectableSide.AUTO) {
1176
- result = this.getSideByDelta(request.fConnector.hostElement, request.fNodeHost);
1177
- }
1178
- else {
1179
- result = request.fConnector.userFConnectableSide;
1180
- }
1181
- return result;
1182
- }
1183
- getSideByDelta(fConnectorHost, fNodeHost) {
1184
- let result;
1185
- const childRect = RectExtensions.fromElement(fConnectorHost);
1186
- const parentRect = fNodeHost.getBoundingClientRect();
1187
- const deltaLeft = childRect.gravityCenter.x - parentRect.left;
1188
- const deltaRight = parentRect.right - childRect.gravityCenter.x;
1189
- const deltaTop = childRect.gravityCenter.y - parentRect.top;
1190
- const deltaBottom = parentRect.bottom - childRect.gravityCenter.y;
1191
- const minDelta = Math.min(deltaLeft, deltaRight, deltaTop, deltaBottom);
1192
- if (minDelta === deltaLeft) {
1193
- result = EFConnectableSide.LEFT;
1194
- }
1195
- else if (minDelta === deltaRight) {
1196
- result = EFConnectableSide.RIGHT;
1197
- }
1198
- else if (minDelta === deltaTop) {
1199
- result = EFConnectableSide.TOP;
1200
- }
1201
- else {
1202
- result = EFConnectableSide.BOTTOM;
1203
- }
1204
- return result;
1205
- }
1206
- }
1207
-
1208
- class CalculateConnectorConnectableSideRequest {
1209
- fConnector;
1210
- fNodeHost;
1211
- constructor(fConnector, fNodeHost) {
1212
- this.fConnector = fConnector;
1213
- this.fNodeHost = fNodeHost;
1214
- }
1215
- }
1216
-
1217
1009
  class FConnectorBase {
1218
1010
  _isConnected = false;
1219
1011
  get isConnected() {
1220
1012
  return this._isConnected;
1221
1013
  }
1222
- toConnector;
1014
+ toConnector = [];
1223
1015
  isSelfConnectable = true;
1224
1016
  fConnectableSide = EFConnectableSide.AUTO;
1225
1017
  userFConnectableSide = EFConnectableSide.AUTO;
1226
1018
  isContains(element) {
1227
1019
  return this.hostElement.contains(element);
1228
1020
  }
1229
- setConnected(isConnected, toConnector) {
1230
- this._isConnected = isConnected;
1231
- this.toConnector = toConnector;
1021
+ setConnected(toConnector) {
1022
+ this._isConnected = true;
1023
+ this.toConnector.push(toConnector);
1024
+ }
1025
+ resetConnected() {
1026
+ this._isConnected = false;
1027
+ this.toConnector = [];
1232
1028
  }
1233
1029
  }
1234
1030
 
@@ -1490,7 +1286,7 @@ class FGroupDirective extends FNodeBase {
1490
1286
  this._fMediator.send(new RemoveNodeFromStoreRequest(this));
1491
1287
  }
1492
1288
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FGroupDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Directive });
1493
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FGroupDirective, selector: "[fGroup]", inputs: { fId: ["fGroupId", "fId"], fParentId: ["fGroupParentId", "fParentId"], position: ["fGroupPosition", "position"], size: ["fGroupSize", "size"], fDraggingDisabled: ["fGroupDraggingDisabled", "fDraggingDisabled"], fSelectionDisabled: ["fGroupSelectionDisabled", "fSelectionDisabled"], fIncludePadding: "fIncludePadding", fConnectOnNode: "fConnectOnNode" }, outputs: { positionChange: "fGroupPositionChange", sizeChange: "fGroupSizeChange" }, host: { properties: { "attr.data-f-group-id": "fId", "class.f-group-dragging-disabled": "fDraggingDisabled", "class.f-group-selection-disabled": "fSelectionDisabled" }, classAttribute: "f-group f-component" }, providers: [
1289
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.4", type: FGroupDirective, selector: "[fGroup]", inputs: { fId: ["fGroupId", "fId"], fParentId: ["fGroupParentId", "fParentId"], position: ["fGroupPosition", "position"], size: ["fGroupSize", "size"], fDraggingDisabled: ["fGroupDraggingDisabled", "fDraggingDisabled", booleanAttribute], fSelectionDisabled: ["fGroupSelectionDisabled", "fSelectionDisabled", booleanAttribute], fIncludePadding: ["fIncludePadding", "fIncludePadding", booleanAttribute], fConnectOnNode: ["fConnectOnNode", "fConnectOnNode", booleanAttribute] }, outputs: { positionChange: "fGroupPositionChange", sizeChange: "fGroupSizeChange" }, host: { properties: { "attr.data-f-group-id": "fId", "class.f-group-dragging-disabled": "fDraggingDisabled", "class.f-group-selection-disabled": "fSelectionDisabled" }, classAttribute: "f-group f-component" }, providers: [
1494
1290
  { provide: F_NODE, useExisting: FGroupDirective }
1495
1291
  ], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0 });
1496
1292
  }
@@ -1529,14 +1325,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
1529
1325
  args: ['fGroupSizeChange']
1530
1326
  }], fDraggingDisabled: [{
1531
1327
  type: Input,
1532
- args: ['fGroupDraggingDisabled']
1328
+ args: [{ alias: 'fGroupDraggingDisabled', transform: booleanAttribute }]
1533
1329
  }], fSelectionDisabled: [{
1534
1330
  type: Input,
1535
- args: ['fGroupSelectionDisabled']
1331
+ args: [{ alias: 'fGroupSelectionDisabled', transform: booleanAttribute }]
1536
1332
  }], fIncludePadding: [{
1537
- type: Input
1333
+ type: Input,
1334
+ args: [{ transform: booleanAttribute }]
1538
1335
  }], fConnectOnNode: [{
1539
- type: Input
1336
+ type: Input,
1337
+ args: [{ transform: booleanAttribute }]
1540
1338
  }] } });
1541
1339
 
1542
1340
  let uniqueId$a = 0;
@@ -1564,7 +1362,7 @@ class FNodeDirective extends FNodeBase {
1564
1362
  fDraggingDisabled = false;
1565
1363
  fSelectionDisabled = false;
1566
1364
  fIncludePadding = true;
1567
- //TODO: Add ability to connect to first connectable input if node is under pointer
1365
+ //Add ability to connect to first connectable input if node is at pointer position
1568
1366
  fConnectOnNode = true;
1569
1367
  _destroyRef = inject(DestroyRef);
1570
1368
  _fMediator = inject(FMediator);
@@ -1606,7 +1404,7 @@ class FNodeDirective extends FNodeBase {
1606
1404
  this._fMediator.send(new RemoveNodeFromStoreRequest(this));
1607
1405
  }
1608
1406
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FNodeDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Directive });
1609
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FNodeDirective, selector: "[fNode]", inputs: { fId: ["fNodeId", "fId"], fParentId: ["fNodeParentId", "fParentId"], position: ["fNodePosition", "position"], size: ["fNodeSize", "size"], fDraggingDisabled: ["fNodeDraggingDisabled", "fDraggingDisabled"], fSelectionDisabled: ["fNodeSelectionDisabled", "fSelectionDisabled"], fIncludePadding: "fIncludePadding", fConnectOnNode: "fConnectOnNode" }, outputs: { positionChange: "fNodePositionChange", sizeChange: "fNodeSizeChange" }, host: { properties: { "attr.data-f-node-id": "fId", "class.f-node-dragging-disabled": "fDraggingDisabled", "class.f-node-selection-disabled": "fSelectionDisabled" }, classAttribute: "f-node f-component" }, providers: [
1407
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.4", type: FNodeDirective, selector: "[fNode]", inputs: { fId: ["fNodeId", "fId"], fParentId: ["fNodeParentId", "fParentId"], position: ["fNodePosition", "position"], size: ["fNodeSize", "size"], fDraggingDisabled: ["fNodeDraggingDisabled", "fDraggingDisabled", booleanAttribute], fSelectionDisabled: ["fNodeSelectionDisabled", "fSelectionDisabled", booleanAttribute], fIncludePadding: ["fIncludePadding", "fIncludePadding", booleanAttribute], fConnectOnNode: ["fConnectOnNode", "fConnectOnNode", booleanAttribute] }, outputs: { positionChange: "fNodePositionChange", sizeChange: "fNodeSizeChange" }, host: { properties: { "attr.data-f-node-id": "fId", "class.f-node-dragging-disabled": "fDraggingDisabled", "class.f-node-selection-disabled": "fSelectionDisabled" }, classAttribute: "f-node f-component" }, providers: [
1610
1408
  { provide: F_NODE, useExisting: FNodeDirective }
1611
1409
  ], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0 });
1612
1410
  }
@@ -1645,14 +1443,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
1645
1443
  args: ['fNodeSizeChange']
1646
1444
  }], fDraggingDisabled: [{
1647
1445
  type: Input,
1648
- args: ['fNodeDraggingDisabled']
1446
+ args: [{ alias: 'fNodeDraggingDisabled', transform: booleanAttribute }]
1649
1447
  }], fSelectionDisabled: [{
1650
1448
  type: Input,
1651
- args: ['fNodeSelectionDisabled']
1449
+ args: [{ alias: 'fNodeSelectionDisabled', transform: booleanAttribute }]
1652
1450
  }], fIncludePadding: [{
1653
- type: Input
1451
+ type: Input,
1452
+ args: [{ transform: booleanAttribute }]
1654
1453
  }], fConnectOnNode: [{
1655
- type: Input
1454
+ type: Input,
1455
+ args: [{ transform: booleanAttribute }]
1656
1456
  }] } });
1657
1457
 
1658
1458
  function isNode(element) {
@@ -1668,39 +1468,43 @@ const F_NODE_PROVIDERS = [
1668
1468
 
1669
1469
  let uniqueId$9 = 0;
1670
1470
  class FNodeInputDirective extends FNodeInputBase {
1671
- fNode;
1471
+ _elementReference = inject(ElementRef);
1472
+ _fMediator = inject(FMediator);
1473
+ _fNode = inject(F_NODE);
1672
1474
  fId = `f-node-input-${uniqueId$9++}`;
1673
1475
  multiple = true;
1674
1476
  disabled = false;
1675
1477
  userFConnectableSide = EFConnectableSide.AUTO;
1478
+ get fNodeId() {
1479
+ return this._fNode.fId;
1480
+ }
1676
1481
  get hostElement() {
1677
1482
  return this._elementReference.nativeElement;
1678
1483
  }
1679
- _elementReference = inject(ElementRef);
1680
- _fMediator = inject(FMediator);
1681
- constructor(fNode) {
1682
- super();
1683
- this.fNode = fNode;
1684
- }
1685
1484
  ngOnInit() {
1686
1485
  this._fMediator.send(new AddInputToStoreRequest(this));
1687
- this.fNode.addConnector(this);
1486
+ this._fNode.addConnector(this);
1688
1487
  }
1689
1488
  ngOnChanges(changes) {
1690
1489
  if (changes['userFConnectableSide']) {
1691
- this.fNode.refresh();
1490
+ this._fNode.refresh();
1692
1491
  }
1693
1492
  }
1694
- setConnected(isConnected, toConnector) {
1695
- super.setConnected(isConnected, toConnector);
1696
- this.hostElement.classList.toggle('f-node-input-connected', isConnected);
1697
- this.hostElement.classList.toggle('f-node-input-not-connectable', !this.canBeConnected);
1493
+ setConnected(toConnector) {
1494
+ super.setConnected(toConnector);
1495
+ this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_CONNECTED, true);
1496
+ this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);
1497
+ }
1498
+ resetConnected() {
1499
+ super.resetConnected();
1500
+ this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_CONNECTED, false);
1501
+ this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);
1698
1502
  }
1699
1503
  ngOnDestroy() {
1700
- this.fNode.removeConnector(this);
1504
+ this._fNode.removeConnector(this);
1701
1505
  this._fMediator.send(new RemoveInputFromStoreRequest(this));
1702
1506
  }
1703
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FNodeInputDirective, deps: [{ token: F_NODE }], target: i0.ɵɵFactoryTarget.Directive });
1507
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FNodeInputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1704
1508
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.4", type: FNodeInputDirective, selector: "[fNodeInput]", inputs: { fId: ["fInputId", "fId"], multiple: ["fInputMultiple", "multiple"], disabled: ["fInputDisabled", "disabled", booleanAttribute], userFConnectableSide: ["fInputConnectableSide", "userFConnectableSide", (value) => castToEnum(value, 'fInputConnectableSide', EFConnectableSide)] }, host: { properties: { "attr.data-f-input-id": "fId", "class.f-node-input-multiple": "multiple", "class.f-node-input-disabled": "disabled" }, classAttribute: "f-component f-node-input" }, providers: [{ provide: F_NODE_INPUT, useExisting: FNodeInputDirective }], exportAs: ["fNodeInput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
1705
1509
  }
1706
1510
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FNodeInputDirective, decorators: [{
@@ -1716,10 +1520,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
1716
1520
  },
1717
1521
  providers: [{ provide: F_NODE_INPUT, useExisting: FNodeInputDirective }],
1718
1522
  }]
1719
- }], ctorParameters: () => [{ type: FNodeBase, decorators: [{
1720
- type: Inject,
1721
- args: [F_NODE]
1722
- }] }], propDecorators: { fId: [{
1523
+ }], propDecorators: { fId: [{
1723
1524
  type: Input,
1724
1525
  args: ['fInputId']
1725
1526
  }], multiple: [{
@@ -1758,30 +1559,30 @@ function isNodeOutlet(element) {
1758
1559
 
1759
1560
  let uniqueId$8 = 0;
1760
1561
  class FNodeOutletDirective extends FNodeOutletBase {
1761
- fNode;
1562
+ _elementReference = inject(ElementRef);
1563
+ _fMediator = inject(FMediator);
1564
+ /// Inject FNodeBase to check if the outlet inside the node
1565
+ _fNode = inject(F_NODE);
1762
1566
  fId = `f-node-outlet-${uniqueId$8++}`;
1763
1567
  disabled = false;
1764
1568
  fConnectableSide = EFConnectableSide.AUTO;
1765
1569
  userFConnectableSide = EFConnectableSide.AUTO;
1766
1570
  isConnectionFromOutlet = false;
1571
+ canBeConnectedInputs = [];
1572
+ get fNodeId() {
1573
+ return this._fNode.fId;
1574
+ }
1767
1575
  get hostElement() {
1768
1576
  return this._elementReference.nativeElement;
1769
1577
  }
1770
- _elementReference = inject(ElementRef);
1771
- _fMediator = inject(FMediator);
1772
- /// Inject FNodeBase to check if the outlet inside the node
1773
- constructor(fNode) {
1774
- super();
1775
- this.fNode = fNode;
1776
- }
1777
1578
  ngOnInit() {
1778
1579
  this._fMediator.send(new AddOutletToStoreRequest(this));
1779
1580
  }
1780
1581
  ngOnDestroy() {
1781
1582
  this._fMediator.send(new RemoveOutletFromStoreRequest(this));
1782
1583
  }
1783
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FNodeOutletDirective, deps: [{ token: F_NODE }], target: i0.ɵɵFactoryTarget.Directive });
1784
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.4", type: FNodeOutletDirective, selector: "[fNodeOutlet]", inputs: { fId: ["fOutletId", "fId"], disabled: ["fOutletDisabled", "disabled", booleanAttribute], isConnectionFromOutlet: "isConnectionFromOutlet" }, host: { properties: { "attr.data-f-outlet-id": "fId", "class.f-node-outlet-disabled": "disabled" }, classAttribute: "f-component f-node-outlet" }, providers: [{ provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective }], exportAs: ["fNodeOutlet"], usesInheritance: true, ngImport: i0 });
1584
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FNodeOutletDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1585
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.4", type: FNodeOutletDirective, selector: "[fNodeOutlet]", inputs: { fId: ["fOutletId", "fId"], disabled: ["fOutletDisabled", "disabled", booleanAttribute], isConnectionFromOutlet: "isConnectionFromOutlet", canBeConnectedInputs: ["fCanBeConnectedInputs", "canBeConnectedInputs"] }, host: { properties: { "attr.data-f-outlet-id": "fId", "class.f-node-outlet-disabled": "disabled" }, classAttribute: "f-component f-node-outlet" }, providers: [{ provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective }], exportAs: ["fNodeOutlet"], usesInheritance: true, ngImport: i0 });
1785
1586
  }
1786
1587
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FNodeOutletDirective, decorators: [{
1787
1588
  type: Directive,
@@ -1795,10 +1596,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
1795
1596
  },
1796
1597
  providers: [{ provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective }],
1797
1598
  }]
1798
- }], ctorParameters: () => [{ type: FNodeBase, decorators: [{
1799
- type: Inject,
1800
- args: [F_NODE]
1801
- }] }], propDecorators: { fId: [{
1599
+ }], propDecorators: { fId: [{
1802
1600
  type: Input,
1803
1601
  args: ['fOutletId']
1804
1602
  }], disabled: [{
@@ -1806,6 +1604,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
1806
1604
  args: [{ alias: 'fOutletDisabled', transform: booleanAttribute }]
1807
1605
  }], isConnectionFromOutlet: [{
1808
1606
  type: Input
1607
+ }], canBeConnectedInputs: [{
1608
+ type: Input,
1609
+ args: [{ alias: 'fCanBeConnectedInputs' }]
1809
1610
  }] } });
1810
1611
 
1811
1612
  const F_NODE_OUTPUT = new InjectionToken('F_NODE_OUTPUT');
@@ -1826,41 +1627,46 @@ function isNodeOutput(element) {
1826
1627
 
1827
1628
  let uniqueId$7 = 0;
1828
1629
  class FNodeOutputDirective extends FNodeOutputBase {
1829
- fNode;
1630
+ _elementReference = inject(ElementRef);
1631
+ _fMediator = inject(FMediator);
1632
+ _fNode = inject(F_NODE);
1830
1633
  fId = `f-node-output-${uniqueId$7++}`;
1831
1634
  multiple = false;
1832
1635
  disabled = false;
1833
1636
  userFConnectableSide = EFConnectableSide.AUTO;
1834
1637
  isSelfConnectable = true;
1638
+ canBeConnectedInputs = [];
1639
+ get fNodeId() {
1640
+ return this._fNode.fId;
1641
+ }
1835
1642
  get hostElement() {
1836
1643
  return this._elementReference.nativeElement;
1837
1644
  }
1838
- _elementReference = inject(ElementRef);
1839
- _fMediator = inject(FMediator);
1840
- constructor(fNode) {
1841
- super();
1842
- this.fNode = fNode;
1843
- }
1844
1645
  ngOnInit() {
1845
1646
  this._fMediator.send(new AddOutputToStoreRequest(this));
1846
- this.fNode.addConnector(this);
1647
+ this._fNode.addConnector(this);
1847
1648
  }
1848
1649
  ngOnChanges(changes) {
1849
1650
  if (changes['userFConnectableSide']) {
1850
- this.fNode.refresh();
1651
+ this._fNode.refresh();
1851
1652
  }
1852
1653
  }
1853
- setConnected(isConnected, toConnector) {
1854
- super.setConnected(isConnected, toConnector);
1855
- this.hostElement.classList.toggle('f-node-output-connected', isConnected);
1856
- this.hostElement.classList.toggle('f-node-output-not-connectable', !this.canBeConnected);
1654
+ setConnected(toConnector) {
1655
+ super.setConnected(toConnector);
1656
+ this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_CONNECTED, true);
1657
+ this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_NOT_CONNECTABLE, !this.canBeConnected);
1658
+ }
1659
+ resetConnected() {
1660
+ super.resetConnected();
1661
+ this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_CONNECTED, false);
1662
+ this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_NOT_CONNECTABLE, !this.canBeConnected);
1857
1663
  }
1858
1664
  ngOnDestroy() {
1859
- this.fNode.removeConnector(this);
1665
+ this._fNode.removeConnector(this);
1860
1666
  this._fMediator.send(new RemoveOutputFromStoreRequest(this));
1861
1667
  }
1862
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FNodeOutputDirective, deps: [{ token: F_NODE }], target: i0.ɵɵFactoryTarget.Directive });
1863
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.4", type: FNodeOutputDirective, selector: "[fNodeOutput]", inputs: { fId: ["fOutputId", "fId"], multiple: ["fOutputMultiple", "multiple"], disabled: ["fOutputDisabled", "disabled", booleanAttribute], userFConnectableSide: ["fOutputConnectableSide", "userFConnectableSide", (value) => castToEnum(value, 'fOutputConnectableSide', EFConnectableSide)], isSelfConnectable: "isSelfConnectable" }, host: { properties: { "attr.data-f-output-id": "fId", "class.f-node-output-multiple": "multiple", "class.f-node-output-disabled": "disabled", "class.f-node-output-self-connectable": "isSelfConnectable" }, classAttribute: "f-component f-node-output" }, providers: [{ provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective }], exportAs: ["fNodeOutput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
1668
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FNodeOutputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1669
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.4", type: FNodeOutputDirective, selector: "[fNodeOutput]", inputs: { fId: ["fOutputId", "fId"], multiple: ["fOutputMultiple", "multiple"], disabled: ["fOutputDisabled", "disabled", booleanAttribute], userFConnectableSide: ["fOutputConnectableSide", "userFConnectableSide", (value) => castToEnum(value, 'fOutputConnectableSide', EFConnectableSide)], isSelfConnectable: "isSelfConnectable", canBeConnectedInputs: ["fCanBeConnectedInputs", "canBeConnectedInputs"] }, host: { properties: { "attr.data-f-output-id": "fId", "class.f-node-output-multiple": "multiple", "class.f-node-output-disabled": "disabled", "class.f-node-output-self-connectable": "isSelfConnectable" }, classAttribute: "f-component f-node-output" }, providers: [{ provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective }], exportAs: ["fNodeOutput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
1864
1670
  }
1865
1671
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FNodeOutputDirective, decorators: [{
1866
1672
  type: Directive,
@@ -1876,10 +1682,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
1876
1682
  },
1877
1683
  providers: [{ provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective }],
1878
1684
  }]
1879
- }], ctorParameters: () => [{ type: FNodeBase, decorators: [{
1880
- type: Inject,
1881
- args: [F_NODE]
1882
- }] }], propDecorators: { fId: [{
1685
+ }], propDecorators: { fId: [{
1883
1686
  type: Input,
1884
1687
  args: ['fOutputId']
1885
1688
  }], multiple: [{
@@ -1896,6 +1699,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
1896
1699
  }]
1897
1700
  }], isSelfConnectable: [{
1898
1701
  type: Input
1702
+ }], canBeConnectedInputs: [{
1703
+ type: Input,
1704
+ args: [{ alias: 'fCanBeConnectedInputs' }]
1899
1705
  }] } });
1900
1706
 
1901
1707
  const F_CONNECTORS_PROVIDERS = [
@@ -2606,7 +2412,7 @@ class FConnectionForCreateComponent extends FConnectionBase {
2606
2412
  this._fMediator.send(new RemoveConnectionForCreateFromStoreRequest());
2607
2413
  }
2608
2414
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FConnectionForCreateComponent, deps: [{ token: i0.ElementRef }, { token: FConnectionFactory }], target: i0.ɵɵFactoryTarget.Component });
2609
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.4", type: FConnectionForCreateComponent, selector: "f-connection-for-create", inputs: { fStartColor: "fStartColor", fEndColor: "fEndColor", fRadius: "fRadius", fOffset: "fOffset", fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-connection-for-create" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionForCreateComponent }], 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 }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\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 });
2415
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.4", type: FConnectionForCreateComponent, selector: "f-connection-for-create", inputs: { fStartColor: "fStartColor", fEndColor: "fEndColor", fRadius: ["fRadius", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-connection-for-create" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionForCreateComponent }], 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 }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\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.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 });
2610
2416
  }
2611
2417
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FConnectionForCreateComponent, decorators: [{
2612
2418
  type: Component,
@@ -2618,9 +2424,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
2618
2424
  }], fEndColor: [{
2619
2425
  type: Input
2620
2426
  }], fRadius: [{
2621
- type: Input
2427
+ type: Input,
2428
+ args: [{ transform: numberAttribute }]
2622
2429
  }], fOffset: [{
2623
- type: Input
2430
+ type: Input,
2431
+ args: [{ transform: numberAttribute }]
2624
2432
  }], fBehavior: [{
2625
2433
  type: Input,
2626
2434
  args: [{ transform: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }]
@@ -2692,7 +2500,7 @@ class FConnectionComponent extends FConnectionBase {
2692
2500
  this._fMediator.send(new RemoveConnectionFromStoreRequest(this));
2693
2501
  }
2694
2502
  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 });
2695
- 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 });
2503
+ 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", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], 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.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 });
2696
2504
  }
2697
2505
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FConnectionComponent, decorators: [{
2698
2506
  type: Component,
@@ -2718,9 +2526,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
2718
2526
  }], fInputId: [{
2719
2527
  type: Input
2720
2528
  }], fRadius: [{
2721
- type: Input
2529
+ type: Input,
2530
+ args: [{ transform: numberAttribute }]
2722
2531
  }], fOffset: [{
2723
- type: Input
2532
+ type: Input,
2533
+ args: [{ transform: numberAttribute }]
2724
2534
  }], fBehavior: [{
2725
2535
  type: Input,
2726
2536
  args: [{ transform: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }]
@@ -2873,7 +2683,7 @@ class FSnapConnectionComponent extends FConnectionBase {
2873
2683
  this._fMediator.send(new RemoveSnapConnectionFromStoreRequest());
2874
2684
  }
2875
2685
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FSnapConnectionComponent, deps: [{ token: i0.ElementRef }, { token: FConnectionFactory }], target: i0.ɵɵFactoryTarget.Component });
2876
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.4", type: FSnapConnectionComponent, selector: "f-snap-connection", inputs: { fStartColor: "fStartColor", fEndColor: "fEndColor", fSnapThreshold: "fSnapThreshold", fRadius: "fRadius", fOffset: "fOffset", fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-snap-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FSnapConnectionComponent }], 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 }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\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 });
2686
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.4", type: FSnapConnectionComponent, selector: "f-snap-connection", inputs: { fStartColor: "fStartColor", fEndColor: "fEndColor", fSnapThreshold: ["fSnapThreshold", "fSnapThreshold", numberAttribute], fRadius: ["fRadius", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-snap-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FSnapConnectionComponent }], 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 }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\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.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 });
2877
2687
  }
2878
2688
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FSnapConnectionComponent, decorators: [{
2879
2689
  type: Component,
@@ -2885,11 +2695,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
2885
2695
  }], fEndColor: [{
2886
2696
  type: Input
2887
2697
  }], fSnapThreshold: [{
2888
- type: Input
2698
+ type: Input,
2699
+ args: [{ transform: numberAttribute }]
2889
2700
  }], fRadius: [{
2890
- type: Input
2701
+ type: Input,
2702
+ args: [{ transform: numberAttribute }]
2891
2703
  }], fOffset: [{
2892
- type: Input
2704
+ type: Input,
2705
+ args: [{ transform: numberAttribute }]
2893
2706
  }], fBehavior: [{
2894
2707
  type: Input,
2895
2708
  args: [{ transform: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }]
@@ -3001,6 +2814,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
3001
2814
  class RedrawConnectionsRequest {
3002
2815
  }
3003
2816
 
2817
+ class GetNormalizedElementRectRequest {
2818
+ element;
2819
+ isRoundedRect;
2820
+ constructor(element, isRoundedRect = true) {
2821
+ this.element = element;
2822
+ this.isRoundedRect = isRoundedRect;
2823
+ }
2824
+ }
2825
+
2826
+ let GetNormalizedElementRectExecution = class GetNormalizedElementRectExecution {
2827
+ _fComponentsStore = inject(FComponentsStore);
2828
+ _fMediator = inject(FMediator);
2829
+ get _transform() {
2830
+ return this._fComponentsStore.fCanvas.transform;
2831
+ }
2832
+ handle(request) {
2833
+ const systemRect = this._getElementRoundedRect(request);
2834
+ const position = this._normalizePosition(systemRect);
2835
+ const size = this._normalizeSize(systemRect);
2836
+ return new RoundedRect(position.x, position.y, size.width, size.height, systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4);
2837
+ }
2838
+ _getElementRoundedRect(request) {
2839
+ return request.isRoundedRect ? this._fMediator.send(new GetElementRoundedRectRequest(request.element)) : RoundedRect.fromRect(RectExtensions.fromElement(request.element));
2840
+ }
2841
+ _normalizePosition(rect) {
2842
+ return Point.fromPoint(rect).elementTransform(this._fComponentsStore.flowHost).sub(this._transform.scaledPosition).sub(this._transform.position).div(this._transform.scale);
2843
+ }
2844
+ _normalizeSize(rect) {
2845
+ return SizeExtensions.initialize(rect.width / this._transform.scale, rect.height / this._transform.scale);
2846
+ }
2847
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedElementRectExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2848
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedElementRectExecution });
2849
+ };
2850
+ GetNormalizedElementRectExecution = __decorate([
2851
+ FExecutionRegister(GetNormalizedElementRectRequest)
2852
+ ], GetNormalizedElementRectExecution);
2853
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedElementRectExecution, decorators: [{
2854
+ type: Injectable
2855
+ }] });
2856
+
3004
2857
  let RedrawConnectionsExecution = class RedrawConnectionsExecution {
3005
2858
  fComponentsStore;
3006
2859
  fMediator;
@@ -3009,7 +2862,7 @@ let RedrawConnectionsExecution = class RedrawConnectionsExecution {
3009
2862
  this.fMediator = fMediator;
3010
2863
  }
3011
2864
  handle(request) {
3012
- this.resetConnectors();
2865
+ this._resetConnectors();
3013
2866
  if (this.fComponentsStore.fTempConnection) {
3014
2867
  this.setMarkers(this.fComponentsStore.fTempConnection);
3015
2868
  }
@@ -3020,17 +2873,17 @@ let RedrawConnectionsExecution = class RedrawConnectionsExecution {
3020
2873
  const output = this.fComponentsStore.fOutputs.find((x) => x.fId === connection.fOutputId);
3021
2874
  const input = this.fComponentsStore.fInputs.find((x) => x.fId === connection.fInputId);
3022
2875
  if (output && input) {
3023
- this.setupConnection(output, input, connection);
2876
+ this._setupConnection(output, input, connection);
3024
2877
  }
3025
2878
  });
3026
2879
  }
3027
- resetConnectors() {
3028
- this.fComponentsStore.fOutputs.forEach((output) => output.setConnected(false, undefined));
3029
- this.fComponentsStore.fInputs.forEach((input) => input.setConnected(false, undefined));
2880
+ _resetConnectors() {
2881
+ this.fComponentsStore.fOutputs.forEach((x) => x.resetConnected());
2882
+ this.fComponentsStore.fInputs.forEach((x) => x.resetConnected());
3030
2883
  }
3031
- setupConnection(output, input, connection) {
3032
- output.setConnected(true, input);
3033
- input.setConnected(true, output);
2884
+ _setupConnection(output, input, connection) {
2885
+ output.setConnected(input);
2886
+ input.setConnected(output);
3034
2887
  const line = this.getLine(output, input, connection);
3035
2888
  this.setMarkers(connection);
3036
2889
  connection.setLine(line.point1, output.fConnectableSide, line.point2, input.fConnectableSide);
@@ -3043,7 +2896,7 @@ let RedrawConnectionsExecution = class RedrawConnectionsExecution {
3043
2896
  setMarkers(connection) {
3044
2897
  this.fMediator.send(new CreateConnectionMarkersRequest(connection));
3045
2898
  }
3046
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RedrawConnectionsExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
2899
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RedrawConnectionsExecution, deps: [{ token: FComponentsStore }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
3047
2900
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RedrawConnectionsExecution });
3048
2901
  };
3049
2902
  RedrawConnectionsExecution = __decorate([
@@ -3051,7 +2904,7 @@ RedrawConnectionsExecution = __decorate([
3051
2904
  ], RedrawConnectionsExecution);
3052
2905
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RedrawConnectionsExecution, decorators: [{
3053
2906
  type: Injectable
3054
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
2907
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2$1.FMediator }] });
3055
2908
 
3056
2909
  class RemoveConnectionForCreateFromStoreRequest {
3057
2910
  }
@@ -3147,10 +3000,7 @@ const F_CONNECTION_FEATURES = [
3147
3000
  AddConnectionToStoreExecution,
3148
3001
  AddSnapConnectionToStoreExecution,
3149
3002
  CreateConnectionMarkersExecution,
3150
- FindClosestInputExecution,
3151
- GetAllCanBeConnectedInputPositionsExecution,
3152
3003
  CalculateConnectionLineByBehaviorExecution,
3153
- GetConnectorWithRectExecution,
3154
3004
  RedrawConnectionsExecution,
3155
3005
  RemoveConnectionForCreateFromStoreExecution,
3156
3006
  RemoveConnectionFromStoreExecution,
@@ -3224,104 +3074,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
3224
3074
  type: Injectable
3225
3075
  }] });
3226
3076
 
3227
- class RemoveInputFromStoreRequest {
3228
- fComponent;
3229
- constructor(fComponent) {
3230
- this.fComponent = fComponent;
3231
- }
3232
- }
3233
-
3234
- let RemoveInputFromStoreExecution = class RemoveInputFromStoreExecution {
3235
- _fComponentsStore = inject(FComponentsStore);
3236
- handle(request) {
3237
- this._fComponentsStore.removeComponent(this._fComponentsStore.fInputs, request.fComponent);
3238
- }
3239
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveInputFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3240
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveInputFromStoreExecution });
3241
- };
3242
- RemoveInputFromStoreExecution = __decorate([
3243
- FExecutionRegister(RemoveInputFromStoreRequest)
3244
- ], RemoveInputFromStoreExecution);
3245
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveInputFromStoreExecution, decorators: [{
3246
- type: Injectable
3247
- }] });
3248
-
3249
- class RemoveOutletFromStoreRequest {
3250
- fComponent;
3251
- constructor(fComponent) {
3252
- this.fComponent = fComponent;
3077
+ class CalculateClosestInputRequest {
3078
+ position;
3079
+ canBeConnectedInputs;
3080
+ constructor(position, canBeConnectedInputs) {
3081
+ this.position = position;
3082
+ this.canBeConnectedInputs = canBeConnectedInputs;
3253
3083
  }
3254
3084
  }
3255
3085
 
3256
- let RemoveOutletFromStoreExecution = class RemoveOutletFromStoreExecution {
3257
- _fComponentsStore = inject(FComponentsStore);
3258
- handle(request) {
3259
- this._fComponentsStore.removeComponent(this._fComponentsStore.fOutlets, request.fComponent);
3086
+ let CalculateClosestInputExecution = class CalculateClosestInputExecution {
3087
+ handle(payload) {
3088
+ let result;
3089
+ let minDistance = Infinity;
3090
+ for (const element of payload.canBeConnectedInputs) {
3091
+ const distance = this._distanceToRectangle(payload.position, element);
3092
+ if (distance < minDistance) {
3093
+ minDistance = distance;
3094
+ result = element;
3095
+ }
3096
+ }
3097
+ return result ? {
3098
+ ...result,
3099
+ distance: minDistance,
3100
+ } : undefined;
3260
3101
  }
3261
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutletFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3262
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutletFromStoreExecution });
3263
- };
3264
- RemoveOutletFromStoreExecution = __decorate([
3265
- FExecutionRegister(RemoveOutletFromStoreRequest)
3266
- ], RemoveOutletFromStoreExecution);
3267
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutletFromStoreExecution, decorators: [{
3268
- type: Injectable
3269
- }] });
3270
-
3271
- class RemoveOutputFromStoreRequest {
3272
- fComponent;
3273
- constructor(fComponent) {
3274
- this.fComponent = fComponent;
3102
+ _distanceToRectangle(point, inputWithRect) {
3103
+ const closestX = this._clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);
3104
+ const closestY = this._clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);
3105
+ const dx = point.x - closestX;
3106
+ const dy = point.y - closestY;
3107
+ return Math.sqrt(dx * dx + dy * dy);
3275
3108
  }
3276
- }
3277
-
3278
- let RemoveOutputFromStoreExecution = class RemoveOutputFromStoreExecution {
3279
- _fComponentsStore = inject(FComponentsStore);
3280
- handle(request) {
3281
- this._fComponentsStore.removeComponent(this._fComponentsStore.fOutputs, request.fComponent);
3109
+ _clamp(value, min, max) {
3110
+ return Math.max(min, Math.min(max, value));
3282
3111
  }
3283
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutputFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3284
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutputFromStoreExecution });
3112
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateClosestInputExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3113
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateClosestInputExecution });
3285
3114
  };
3286
- RemoveOutputFromStoreExecution = __decorate([
3287
- FExecutionRegister(RemoveOutputFromStoreRequest)
3288
- ], RemoveOutputFromStoreExecution);
3289
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutputFromStoreExecution, decorators: [{
3115
+ CalculateClosestInputExecution = __decorate([
3116
+ FExecutionRegister(CalculateClosestInputRequest)
3117
+ ], CalculateClosestInputExecution);
3118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateClosestInputExecution, decorators: [{
3290
3119
  type: Injectable
3291
3120
  }] });
3292
3121
 
3293
- const F_CONNECTORS_FEATURES = [
3294
- AddInputToStoreExecution,
3295
- AddOutletToStoreExecution,
3296
- AddOutputToStoreExecution,
3297
- RemoveInputFromStoreExecution,
3298
- RemoveOutletFromStoreExecution,
3299
- RemoveOutputFromStoreExecution
3300
- ];
3301
-
3302
- class AddDndToStoreRequest {
3303
- fComponent;
3304
- constructor(fComponent) {
3305
- this.fComponent = fComponent;
3306
- }
3307
- }
3308
-
3309
- let AddDndToStoreExecution = class AddDndToStoreExecution {
3310
- _fComponentsStore = inject(FComponentsStore);
3311
- handle(request) {
3312
- this._fComponentsStore.fDraggable = request.fComponent;
3122
+ class FindInputAtPositionRequest {
3123
+ pointerPosition;
3124
+ toConnectorRect;
3125
+ canBeConnectedInputs;
3126
+ constructor(pointerPosition, toConnectorRect, canBeConnectedInputs) {
3127
+ this.pointerPosition = pointerPosition;
3128
+ this.toConnectorRect = toConnectorRect;
3129
+ this.canBeConnectedInputs = canBeConnectedInputs;
3313
3130
  }
3314
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddDndToStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3315
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddDndToStoreExecution });
3316
- };
3317
- AddDndToStoreExecution = __decorate([
3318
- FExecutionRegister(AddDndToStoreRequest)
3319
- ], AddDndToStoreExecution);
3320
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddDndToStoreExecution, decorators: [{
3321
- type: Injectable
3322
- }] });
3323
-
3324
- class EmitSelectionChangeEventRequest {
3325
3131
  }
3326
3132
 
3327
3133
  class CanvasMoveFinalizeRequest {
@@ -3331,31 +3137,12 @@ class CanvasMoveFinalizeRequest {
3331
3137
  }
3332
3138
  }
3333
3139
 
3334
- class CanvasDragHandler {
3335
- fComponentsStore;
3336
- onPointerDownPosition = PointExtensions.initialize();
3337
- constructor(fComponentsStore) {
3338
- this.fComponentsStore = fComponentsStore;
3339
- }
3340
- prepareDragSequence() {
3341
- this.onPointerDownPosition = this.fComponentsStore.fCanvas.transform.position;
3342
- }
3343
- onPointerMove(difference) {
3344
- this.fComponentsStore.fCanvas.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));
3345
- this.fComponentsStore.fCanvas.redraw();
3346
- }
3347
- onPointerUp() {
3348
- this.fComponentsStore.fCanvas.emitCanvasChangeEvent();
3349
- }
3350
- }
3351
-
3352
3140
  class FDraggableDataContext {
3353
3141
  selectedItems = [];
3354
3142
  isSelectedChanged = false;
3355
3143
  onPointerDownScale = 1;
3356
3144
  onPointerDownPosition = new Point(0, 0);
3357
3145
  draggableItems = [];
3358
- fLineAlignment;
3359
3146
  reset() {
3360
3147
  this.draggableItems = [];
3361
3148
  this.onPointerDownScale = 1;
@@ -3364,6 +3151,9 @@ class FDraggableDataContext {
3364
3151
  markSelectionAsChanged() {
3365
3152
  this.isSelectedChanged = true;
3366
3153
  }
3154
+ isEmpty() {
3155
+ return !this.draggableItems.length;
3156
+ }
3367
3157
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDraggableDataContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3368
3158
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FDraggableDataContext });
3369
3159
  }
@@ -3371,21 +3161,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
3371
3161
  type: Injectable
3372
3162
  }] });
3373
3163
 
3374
- let CanvasMoveFinalizeExecution = class CanvasMoveFinalizeExecution {
3375
- fDraggableDataContext;
3376
- constructor(fDraggableDataContext) {
3377
- this.fDraggableDataContext = fDraggableDataContext;
3164
+ class CanvasDragHandler {
3165
+ _fComponentsStore;
3166
+ onPointerDownPosition = PointExtensions.initialize();
3167
+ constructor(_fComponentsStore) {
3168
+ this._fComponentsStore = _fComponentsStore;
3169
+ }
3170
+ prepareDragSequence() {
3171
+ this.onPointerDownPosition = this._fComponentsStore.fCanvas.transform.position;
3172
+ }
3173
+ onPointerMove(difference) {
3174
+ this._fComponentsStore.fCanvas.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));
3175
+ this._fComponentsStore.fCanvas.redraw();
3378
3176
  }
3177
+ onPointerUp() {
3178
+ this._fComponentsStore.fCanvas.emitCanvasChangeEvent();
3179
+ }
3180
+ }
3181
+
3182
+ let CanvasMoveFinalizeExecution = class CanvasMoveFinalizeExecution {
3183
+ _fDraggableDataContext = inject(FDraggableDataContext);
3379
3184
  handle(request) {
3380
3185
  if (!this._isValid()) {
3381
3186
  return;
3382
3187
  }
3383
- this.fDraggableDataContext.draggableItems.forEach((x) => x.onPointerUp?.());
3188
+ this._fDraggableDataContext.draggableItems.forEach((x) => x.onPointerUp?.());
3384
3189
  }
3385
3190
  _isValid() {
3386
- return this.fDraggableDataContext.draggableItems.some((x) => x instanceof CanvasDragHandler);
3191
+ return this._fDraggableDataContext.draggableItems.some((x) => x instanceof CanvasDragHandler);
3387
3192
  }
3388
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMoveFinalizeExecution, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
3193
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMoveFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3389
3194
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMoveFinalizeExecution });
3390
3195
  };
3391
3196
  CanvasMoveFinalizeExecution = __decorate([
@@ -3393,11 +3198,7 @@ CanvasMoveFinalizeExecution = __decorate([
3393
3198
  ], CanvasMoveFinalizeExecution);
3394
3199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMoveFinalizeExecution, decorators: [{
3395
3200
  type: Injectable
3396
- }], ctorParameters: () => [{ type: FDraggableDataContext }] });
3397
-
3398
- const CANVAS_MOVE_FINALIZE_PROVIDERS = [
3399
- CanvasMoveFinalizeExecution,
3400
- ];
3201
+ }] });
3401
3202
 
3402
3203
  class CanvasMovePreparationRequest {
3403
3204
  event;
@@ -3407,79 +3208,53 @@ class CanvasMovePreparationRequest {
3407
3208
  }
3408
3209
 
3409
3210
  let CanvasMovePreparationExecution = class CanvasMovePreparationExecution {
3410
- fComponentsStore;
3411
- fDraggableDataContext;
3412
- get flowHost() {
3413
- return this.fComponentsStore.fFlow.hostElement;
3414
- }
3415
- constructor(fComponentsStore, fDraggableDataContext) {
3416
- this.fComponentsStore = fComponentsStore;
3417
- this.fDraggableDataContext = fDraggableDataContext;
3211
+ _fComponentsStore = inject(FComponentsStore);
3212
+ _fDraggableDataContext = inject(FDraggableDataContext);
3213
+ get _fHost() {
3214
+ return this._fComponentsStore.fFlow.hostElement;
3418
3215
  }
3419
3216
  handle(request) {
3420
- this.fDraggableDataContext.onPointerDownScale = 1;
3421
- this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
3422
- .elementTransform(this.flowHost);
3423
- this.fDraggableDataContext.draggableItems = [
3424
- new CanvasDragHandler(this.fComponentsStore)
3217
+ if (!this._isValid(request)) {
3218
+ return;
3219
+ }
3220
+ this._fDraggableDataContext.onPointerDownScale = 1;
3221
+ this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
3222
+ .elementTransform(this._fHost);
3223
+ this._fDraggableDataContext.draggableItems = [
3224
+ new CanvasDragHandler(this._fComponentsStore)
3425
3225
  ];
3426
3226
  }
3427
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMovePreparationExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
3428
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMovePreparationExecution });
3429
- };
3430
- CanvasMovePreparationExecution = __decorate([
3431
- FExecutionRegister(CanvasMovePreparationRequest)
3432
- ], CanvasMovePreparationExecution);
3433
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMovePreparationExecution, decorators: [{
3434
- type: Injectable
3435
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }] });
3436
-
3437
- let CanvasMovePreparationValidator = class CanvasMovePreparationValidator {
3438
- fComponentsStore;
3439
- fDraggableDataContext;
3440
- get flowHost() {
3441
- return this.fComponentsStore.fFlow.hostElement;
3442
- }
3443
- constructor(fComponentsStore, fDraggableDataContext) {
3444
- this.fComponentsStore = fComponentsStore;
3445
- this.fDraggableDataContext = fDraggableDataContext;
3446
- }
3447
- handle(request) {
3448
- return !this.fDraggableDataContext.draggableItems.length &&
3449
- (this.isBackgroundElement(request.event.targetElement) || this.isDragOnHost(request.event.targetElement));
3227
+ _isValid(request) {
3228
+ return this._fDraggableDataContext.isEmpty() &&
3229
+ (this._isBackgroundElement(request.event.targetElement) || this._isDragOnHost(request.event.targetElement));
3450
3230
  }
3451
- isBackgroundElement(targetElement) {
3452
- return this.fComponentsStore.fBackground?.hostElement.contains(targetElement);
3231
+ _isBackgroundElement(targetElement) {
3232
+ return this._fComponentsStore.fBackground?.hostElement.contains(targetElement);
3453
3233
  }
3454
- isDragOnHost(targetElement) {
3455
- return this.flowHost.contains(targetElement) && !this.getNode(targetElement);
3234
+ _isDragOnHost(targetElement) {
3235
+ return this._fHost.contains(targetElement) && !this._getNode(targetElement);
3456
3236
  }
3457
- getNode(targetElement) {
3458
- let result = this.fComponentsStore.fNodes
3459
- .find(n => n.isContains(targetElement));
3237
+ _getNode(targetElement) {
3238
+ let result = this._fComponentsStore.fNodes
3239
+ .find(x => x.isContains(targetElement));
3460
3240
  if (result && result.fDraggingDisabled) {
3461
3241
  result = undefined;
3462
3242
  }
3463
3243
  return result;
3464
3244
  }
3465
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMovePreparationValidator, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
3466
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMovePreparationValidator });
3245
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMovePreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3246
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMovePreparationExecution });
3467
3247
  };
3468
- CanvasMovePreparationValidator = __decorate([
3469
- FValidatorRegister(CanvasMovePreparationRequest)
3470
- ], CanvasMovePreparationValidator);
3471
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMovePreparationValidator, decorators: [{
3248
+ CanvasMovePreparationExecution = __decorate([
3249
+ FExecutionRegister(CanvasMovePreparationRequest)
3250
+ ], CanvasMovePreparationExecution);
3251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CanvasMovePreparationExecution, decorators: [{
3472
3252
  type: Injectable
3473
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }] });
3474
-
3475
- const CANVAS_MOVE_PREPARATION_PROVIDERS = [
3476
- CanvasMovePreparationExecution,
3477
- CanvasMovePreparationValidator,
3478
- ];
3253
+ }] });
3479
3254
 
3480
3255
  const CANVAS_PROVIDERS = [
3481
- ...CANVAS_MOVE_FINALIZE_PROVIDERS,
3482
- ...CANVAS_MOVE_PREPARATION_PROVIDERS,
3256
+ CanvasMoveFinalizeExecution,
3257
+ CanvasMovePreparationExecution,
3483
3258
  ];
3484
3259
 
3485
3260
  class CreateConnectionFinalizeRequest {
@@ -3597,207 +3372,96 @@ class FCreateConnectionEvent {
3597
3372
  }
3598
3373
 
3599
3374
  class CreateConnectionDragHandler {
3600
- fMediator;
3601
- fComponentsStore;
3602
- fOutput;
3603
- onPointerDownPosition;
3604
- toConnectorRect = new RoundedRect();
3605
- get fConnection() {
3606
- return this.fComponentsStore.fTempConnection;
3607
- }
3608
- get fSnapConnection() {
3609
- return this.fComponentsStore.fSnapConnection;
3610
- }
3611
- fOutputWithRect;
3612
- canBeConnectedInputs = [];
3613
- constructor(fMediator, fComponentsStore, fOutput, onPointerDownPosition) {
3614
- this.fMediator = fMediator;
3615
- this.fComponentsStore = fComponentsStore;
3616
- this.fOutput = fOutput;
3617
- this.onPointerDownPosition = onPointerDownPosition;
3375
+ _fMediator;
3376
+ _fComponentsStore;
3377
+ _fOutput;
3378
+ _toConnectorRect = new RoundedRect();
3379
+ get _fConnection() {
3380
+ return this._fComponentsStore.fTempConnection;
3381
+ }
3382
+ get _fSnapConnection() {
3383
+ return this._fComponentsStore.fSnapConnection;
3384
+ }
3385
+ _fOutputWithRect;
3386
+ _canBeConnectedInputs = [];
3387
+ constructor(_fMediator, _fComponentsStore, _fOutput, _onPointerDownPosition) {
3388
+ this._fMediator = _fMediator;
3389
+ this._fComponentsStore = _fComponentsStore;
3390
+ this._fOutput = _fOutput;
3391
+ this._toConnectorRect = RoundedRect.fromRect(RectExtensions.initialize(_onPointerDownPosition.x, _onPointerDownPosition.y));
3618
3392
  }
3619
3393
  prepareDragSequence() {
3394
+ this._getAndMarkCanBeConnectedInputs();
3620
3395
  this._initializeSnapConnection();
3621
3396
  this._initializeConnectionForCreate();
3622
- this.canBeConnectedInputs = this.fMediator.send(new GetAllCanBeConnectedInputPositionsRequest(this.fOutput.fId));
3623
- this.fOutputWithRect = this.fMediator.send(new GetConnectorWithRectRequest(this.fOutput));
3624
- this.toConnectorRect = RoundedRect.fromRect(RectExtensions.initialize(this.onPointerDownPosition.x, this.onPointerDownPosition.y));
3625
- this.fConnection.show();
3397
+ this._fOutputWithRect = this._fMediator.execute(new GetConnectorAndRectRequest(this._fOutput));
3398
+ this._fConnection.show();
3626
3399
  this.onPointerMove(PointExtensions.initialize());
3627
3400
  }
3401
+ _getAndMarkCanBeConnectedInputs() {
3402
+ this._canBeConnectedInputs = this._fMediator.execute(new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutput));
3403
+ this._fMediator.execute(new MarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector)));
3404
+ }
3628
3405
  _initializeSnapConnection() {
3629
- if (!this.fSnapConnection) {
3406
+ if (!this._fSnapConnection) {
3630
3407
  return;
3631
3408
  }
3632
- this.fSnapConnection.fOutputId = this.fOutput.fId;
3633
- this.fSnapConnection.initialize();
3409
+ this._fSnapConnection.fOutputId = this._fOutput.fId;
3410
+ this._fSnapConnection.initialize();
3634
3411
  }
3635
3412
  _initializeConnectionForCreate() {
3636
- this.fConnection.fOutputId = this.fOutput.fId;
3637
- this.fConnection.initialize();
3413
+ this._fConnection.fOutputId = this._fOutput.fId;
3414
+ this._fConnection.initialize();
3638
3415
  }
3639
3416
  onPointerMove(difference) {
3640
3417
  const fClosestInput = this._findClosestInput(difference);
3641
- this._drawConnectionForCreate(this.toConnectorRect.addPoint(difference), fClosestInput?.fConnector.fConnectableSide || EFConnectableSide.TOP);
3642
- if (this.fSnapConnection) {
3418
+ this._drawConnectionForCreate(this._toConnectorRect.addPoint(difference), fClosestInput?.fConnector.fConnectableSide || EFConnectableSide.TOP);
3419
+ if (this._fSnapConnection) {
3643
3420
  this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));
3644
3421
  }
3645
3422
  }
3646
- _drawConnectionForCreate(fInputRect, fSide) {
3647
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fSide));
3648
- this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);
3649
- this.fConnection.redraw();
3423
+ _drawConnectionForCreate(toConnectorRect, fSide) {
3424
+ const line = this._fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fOutputWithRect.fRect, toConnectorRect, this._fConnection.fBehavior, this._fOutputWithRect.fConnector.fConnectableSide, fSide));
3425
+ this._fConnection.setLine(line.point1, this._fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);
3426
+ this._fConnection.redraw();
3650
3427
  }
3651
3428
  _drawSnapConnection(fClosestInput) {
3652
3429
  if (fClosestInput) {
3653
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fClosestInput.fRect, this.fSnapConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
3654
- this.fSnapConnection.show();
3655
- this.fSnapConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);
3656
- this.fSnapConnection.redraw();
3430
+ const line = this._fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fOutputWithRect.fRect, fClosestInput.fRect, this._fSnapConnection.fBehavior, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
3431
+ this._fSnapConnection.show();
3432
+ this._fSnapConnection.setLine(line.point1, this._fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);
3433
+ this._fSnapConnection.redraw();
3657
3434
  }
3658
3435
  else {
3659
- this.fSnapConnection?.hide();
3660
- }
3661
- }
3662
- getClosetInput(difference) {
3663
- if (!this.fSnapConnection) {
3664
- return undefined;
3436
+ this._fSnapConnection?.hide();
3665
3437
  }
3666
- return this._getClosestInputForSnapConnection(this._findClosestInput(difference));
3667
3438
  }
3668
3439
  _findClosestInput(difference) {
3669
- return this.fMediator.send(new FindClosestInputRequest(Point.fromPoint(this.toConnectorRect).add(difference), this.canBeConnectedInputs));
3440
+ return this._fMediator.execute(new CalculateClosestInputRequest(this._toConnectorRect.addPoint(difference), this._canBeConnectedInputs));
3670
3441
  }
3671
3442
  _getClosestInputForSnapConnection(fClosestInput) {
3672
- return fClosestInput && fClosestInput.distance < this.fSnapConnection.fSnapThreshold ? fClosestInput : undefined;
3443
+ return fClosestInput && fClosestInput.distance < this._fSnapConnection.fSnapThreshold ? fClosestInput : undefined;
3673
3444
  }
3674
3445
  onPointerUp() {
3675
- this.fConnection.redraw();
3676
- this.fConnection.hide();
3677
- this.fSnapConnection?.hide();
3446
+ this._fConnection.redraw();
3447
+ this._fConnection.hide();
3448
+ this._fSnapConnection?.hide();
3449
+ this._fMediator.execute(new UnmarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector)));
3678
3450
  }
3679
- }
3680
-
3681
- class GetInputUnderPointerRequest {
3682
- event;
3683
- dragHandler;
3684
- constructor(event, dragHandler) {
3685
- this.event = event;
3686
- this.dragHandler = dragHandler;
3451
+ getData() {
3452
+ return {
3453
+ toConnectorRect: this._toConnectorRect,
3454
+ fOutputId: this._fOutput.fId,
3455
+ canBeConnectedInputs: this._canBeConnectedInputs
3456
+ };
3687
3457
  }
3688
3458
  }
3689
3459
 
3690
- let GetInputUnderPointerExecution = class GetInputUnderPointerExecution {
3691
- fComponentsStore;
3692
- fDraggableDataContext;
3693
- fBrowser;
3694
- get fNodes() {
3695
- return this.fComponentsStore.fNodes;
3696
- }
3697
- get fInputs() {
3698
- return this.fComponentsStore.fInputs;
3699
- }
3700
- constructor(fComponentsStore, fDraggableDataContext, fBrowser) {
3701
- this.fComponentsStore = fComponentsStore;
3702
- this.fDraggableDataContext = fDraggableDataContext;
3703
- this.fBrowser = fBrowser;
3704
- }
3705
- handle(payload) {
3706
- const output = (this.getOutput(payload.dragHandler) || this.getOutlet(payload.dragHandler));
3707
- const inputsUnderPointer = this.getInputsUnderPointer(payload.event.getPosition(), payload.dragHandler);
3708
- const connectors = output.isSelfConnectable ?
3709
- inputsUnderPointer :
3710
- this.filterSelfConnectable(inputsUnderPointer, output);
3711
- return connectors.length > 0 ? connectors[0] : undefined;
3712
- }
3713
- getOutput(dragHandler) {
3714
- return this.fComponentsStore.fOutputs.find((x) => x.fId === dragHandler.fConnection.fOutputId);
3715
- }
3716
- getOutlet(dragHandler) {
3717
- return this.fComponentsStore.fOutlets.find((x) => x.fId === dragHandler.fConnection.fOutputId);
3718
- }
3719
- getInputsUnderPointer(position, dragHandler) {
3720
- const result = this.getInputsInPosition(position);
3721
- const closestInput = dragHandler.getClosetInput(this.getDifference(position));
3722
- if (closestInput) {
3723
- result.push(closestInput.fConnector);
3724
- }
3725
- const input = this.getFirstConnectableInputOfNodeInPosition(position);
3726
- if (input) {
3727
- result.push(input);
3728
- }
3729
- return result;
3730
- }
3731
- getDifference(position) {
3732
- return Point.fromPoint(position).elementTransform(this.fComponentsStore.flowHost)
3733
- .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);
3734
- }
3735
- getInputsInPosition(position) {
3736
- return this.getElementsFromPoint(position).map((element) => this.fInputs.find(x => x.isContains(element) && x.canBeConnected)).filter((x) => !!x);
3737
- }
3738
- getElementsFromPoint(position) {
3739
- return this.fBrowser.document.elementsFromPoint(position.x, position.y);
3740
- }
3741
- getFirstConnectableInputOfNodeInPosition(position) {
3742
- return this.getNodesInPosition(position).map((x) => {
3743
- return this.fInputs.find((i) => x.isContains(i.hostElement) && i.canBeConnected);
3744
- }).find((x) => !!x);
3745
- }
3746
- getNodesInPosition(position) {
3747
- return this.getElementsFromPoint(position).map((element) => {
3748
- return this.fNodes.find((x) => x.isContains(element) && x.fConnectOnNode);
3749
- }).filter((x) => !!x);
3750
- }
3751
- filterSelfConnectable(inputs, connector) {
3752
- return inputs.filter((x) => {
3753
- const targetNode = this.fNodes.find((k) => k.isContains(x.hostElement));
3754
- const sourceNode = this.fNodes.find((k) => k.isContains(connector.hostElement));
3755
- return sourceNode?.hostElement !== targetNode?.hostElement;
3756
- });
3757
- }
3758
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetInputUnderPointerExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
3759
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetInputUnderPointerExecution });
3760
- };
3761
- GetInputUnderPointerExecution = __decorate([
3762
- FExecutionRegister(GetInputUnderPointerRequest)
3763
- ], GetInputUnderPointerExecution);
3764
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetInputUnderPointerExecution, decorators: [{
3765
- type: Injectable
3766
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i1.BrowserService }] });
3767
-
3768
- let GetInputUnderPointerValidator = class GetInputUnderPointerValidator {
3769
- fComponentsStore;
3770
- constructor(fComponentsStore) {
3771
- this.fComponentsStore = fComponentsStore;
3772
- }
3773
- handle(request) {
3774
- let output = this.getOutput(request.dragHandler) || this.getOutlet(request.dragHandler);
3775
- if (!output) {
3776
- throw OutputNotFound(request.dragHandler.fConnection.fOutputId);
3777
- }
3778
- return true;
3779
- }
3780
- getOutput(dragHandler) {
3781
- return this.fComponentsStore.fOutputs.find((x) => x.fId === dragHandler.fConnection.fOutputId);
3782
- }
3783
- getOutlet(dragHandler) {
3784
- return this.fComponentsStore.fOutlets.find((x) => x.fId === dragHandler.fConnection.fOutputId);
3785
- }
3786
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetInputUnderPointerValidator, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
3787
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetInputUnderPointerValidator });
3788
- };
3789
- GetInputUnderPointerValidator = __decorate([
3790
- FValidatorRegister(GetInputUnderPointerRequest)
3791
- ], GetInputUnderPointerValidator);
3792
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetInputUnderPointerValidator, decorators: [{
3793
- type: Injectable
3794
- }], ctorParameters: () => [{ type: FComponentsStore }] });
3795
-
3796
3460
  let CreateConnectionFinalizeExecution = class CreateConnectionFinalizeExecution {
3797
3461
  fComponentsStore;
3798
3462
  fDraggableDataContext;
3799
3463
  fMediator;
3800
- get dragHandler() {
3464
+ get _fDragHandler() {
3801
3465
  return this.fDraggableDataContext.draggableItems[0];
3802
3466
  }
3803
3467
  constructor(fComponentsStore, fDraggableDataContext, fMediator) {
@@ -3810,30 +3474,33 @@ let CreateConnectionFinalizeExecution = class CreateConnectionFinalizeExecution
3810
3474
  return;
3811
3475
  }
3812
3476
  this.emitEvent(request.event);
3813
- this.dragHandler.onPointerUp();
3477
+ this._fDragHandler.onPointerUp();
3814
3478
  }
3815
3479
  _isValid() {
3816
3480
  return this.fDraggableDataContext.draggableItems.some((x) => x instanceof CreateConnectionDragHandler);
3817
3481
  }
3818
3482
  getTargetOutput(output) {
3819
3483
  if (!output) {
3820
- throw OutputNotFound(this.dragHandler.fConnection.fOutputId);
3484
+ throw OutputNotFound(this._getDragHandlerData().fOutputId);
3821
3485
  }
3822
3486
  return isNodeOutlet(output.hostElement) ? this.fMediator.send(new GetCanBeConnectedOutputByOutletRequest(output)) : output;
3823
3487
  }
3824
3488
  getOutput() {
3825
- return this.fComponentsStore.fOutputs.find((x) => x.fId === this.dragHandler.fConnection.fOutputId);
3489
+ return this.fComponentsStore.fOutputs.find((x) => x.fId === this._getDragHandlerData().fOutputId);
3826
3490
  }
3827
3491
  getOutlet() {
3828
- return this.fComponentsStore.fOutlets.find((x) => x.fId === this.dragHandler.fConnection.fOutputId);
3492
+ return this.fComponentsStore.fOutlets.find((x) => x.fId === this._getDragHandlerData().fOutputId);
3829
3493
  }
3830
3494
  emitEvent(event) {
3831
- this.fComponentsStore.fDraggable?.fCreateConnection.emit(new FCreateConnectionEvent(this.getTargetOutput(this.getOutput() || this.getOutlet()).fId, this.getInputUnderPointer(event)?.fId, event.getPosition()));
3495
+ this.fComponentsStore.fDraggable?.fCreateConnection.emit(new FCreateConnectionEvent(this.getTargetOutput(this.getOutput() || this.getOutlet()).fId, this._getInputUnderPointer(event)?.fId, event.getPosition()));
3832
3496
  }
3833
- getInputUnderPointer(event) {
3834
- return this.fMediator.send(new GetInputUnderPointerRequest(event, this.dragHandler));
3497
+ _getInputUnderPointer(event) {
3498
+ return this.fMediator.send(new FindInputAtPositionRequest(event.getPosition(), this._getDragHandlerData().toConnectorRect, this._getDragHandlerData().canBeConnectedInputs));
3835
3499
  }
3836
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFinalizeExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
3500
+ _getDragHandlerData() {
3501
+ return this._fDragHandler.getData();
3502
+ }
3503
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFinalizeExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
3837
3504
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFinalizeExecution });
3838
3505
  };
3839
3506
  CreateConnectionFinalizeExecution = __decorate([
@@ -3841,14 +3508,14 @@ CreateConnectionFinalizeExecution = __decorate([
3841
3508
  ], CreateConnectionFinalizeExecution);
3842
3509
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFinalizeExecution, decorators: [{
3843
3510
  type: Injectable
3844
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
3511
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2$1.FMediator }] });
3845
3512
 
3846
3513
  class CreateConnectionDragHandlerRequest {
3847
3514
  onPointerDownPosition;
3848
- connector;
3849
- constructor(onPointerDownPosition, connector) {
3515
+ fOutput;
3516
+ constructor(onPointerDownPosition, fOutput) {
3850
3517
  this.onPointerDownPosition = onPointerDownPosition;
3851
- this.connector = connector;
3518
+ this.fOutput = fOutput;
3852
3519
  }
3853
3520
  }
3854
3521
 
@@ -3875,10 +3542,10 @@ let CreateConnectionDragHandlerExecution = class CreateConnectionDragHandlerExec
3875
3542
  const positionRelativeToCanvasComponent = Point.fromPoint(positionRelativeToFlowComponent).mult(this.transform.scale)
3876
3543
  .sub(this.transform.position).sub(this.transform.scaledPosition).div(this.transform.scale);
3877
3544
  this.fDraggableDataContext.draggableItems = [
3878
- new CreateConnectionDragHandler(this.fMediator, this.fComponentsStore, request.connector, positionRelativeToCanvasComponent)
3545
+ new CreateConnectionDragHandler(this.fMediator, this.fComponentsStore, request.fOutput, positionRelativeToCanvasComponent)
3879
3546
  ];
3880
3547
  }
3881
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionDragHandlerExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
3548
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionDragHandlerExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
3882
3549
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionDragHandlerExecution });
3883
3550
  };
3884
3551
  CreateConnectionDragHandlerExecution = __decorate([
@@ -3886,7 +3553,7 @@ CreateConnectionDragHandlerExecution = __decorate([
3886
3553
  ], CreateConnectionDragHandlerExecution);
3887
3554
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionDragHandlerExecution, decorators: [{
3888
3555
  type: Injectable
3889
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
3556
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2$1.FMediator }] });
3890
3557
 
3891
3558
  class CreateConnectionFromOutletPreparationRequest {
3892
3559
  event;
@@ -3927,10 +3594,10 @@ let CreateConnectionFromOutletPreparationExecution = class CreateConnectionFromO
3927
3594
  }
3928
3595
  }
3929
3596
  }
3930
- createDragHandler(position, output) {
3931
- this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));
3597
+ createDragHandler(position, fOutput) {
3598
+ this.fMediator.send(new CreateConnectionDragHandlerRequest(position, fOutput));
3932
3599
  }
3933
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFromOutletPreparationExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
3600
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFromOutletPreparationExecution, deps: [{ token: FComponentsStore }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
3934
3601
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFromOutletPreparationExecution });
3935
3602
  };
3936
3603
  CreateConnectionFromOutletPreparationExecution = __decorate([
@@ -3938,7 +3605,7 @@ CreateConnectionFromOutletPreparationExecution = __decorate([
3938
3605
  ], CreateConnectionFromOutletPreparationExecution);
3939
3606
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFromOutletPreparationExecution, decorators: [{
3940
3607
  type: Injectable
3941
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
3608
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2$1.FMediator }] });
3942
3609
 
3943
3610
  class CreateConnectionFromOutputPreparationRequest {
3944
3611
  event;
@@ -3956,20 +3623,20 @@ let CreateConnectionFromOutputPreparationExecution = class CreateConnectionFromO
3956
3623
  }
3957
3624
  handle(request) {
3958
3625
  const { event } = request;
3959
- const output = this.fComponentsStore.fOutputs.find((x) => {
3626
+ const fOutput = this.fComponentsStore.fOutputs.find((x) => {
3960
3627
  return x.hostElement.contains(event.targetElement);
3961
3628
  });
3962
- if (!output) {
3629
+ if (!fOutput) {
3963
3630
  throw new Error('Output not found');
3964
3631
  }
3965
- if (output.canBeConnected) {
3966
- this.createDragHandler(event.getPosition(), output);
3632
+ if (fOutput.canBeConnected) {
3633
+ this.createDragHandler(event.getPosition(), fOutput);
3967
3634
  }
3968
3635
  }
3969
- createDragHandler(position, output) {
3970
- this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));
3636
+ createDragHandler(position, fOutput) {
3637
+ this.fMediator.send(new CreateConnectionDragHandlerRequest(position, fOutput));
3971
3638
  }
3972
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFromOutputPreparationExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
3639
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFromOutputPreparationExecution, deps: [{ token: FComponentsStore }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
3973
3640
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFromOutputPreparationExecution });
3974
3641
  };
3975
3642
  CreateConnectionFromOutputPreparationExecution = __decorate([
@@ -3977,7 +3644,7 @@ CreateConnectionFromOutputPreparationExecution = __decorate([
3977
3644
  ], CreateConnectionFromOutputPreparationExecution);
3978
3645
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionFromOutputPreparationExecution, decorators: [{
3979
3646
  type: Injectable
3980
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
3647
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2$1.FMediator }] });
3981
3648
 
3982
3649
  let CreateConnectionFromOutputPreparationValidator = class CreateConnectionFromOutputPreparationValidator {
3983
3650
  fComponentsStore;
@@ -4025,7 +3692,7 @@ let CreateConnectionPreparationExecution = class CreateConnectionPreparationExec
4025
3692
  if (isNodeOutlet(request.event.targetElement)) {
4026
3693
  this._fMediator.send(new CreateConnectionFromOutletPreparationRequest(request.event));
4027
3694
  }
4028
- else if (this.isNodeOutput(request.event.targetElement, this._getNode(request.event))) {
3695
+ else if (this._isNodeOutput(request.event.targetElement, this._getNode(request.event))) {
4029
3696
  this._fMediator.send(new CreateConnectionFromOutputPreparationRequest(request.event));
4030
3697
  }
4031
3698
  }
@@ -4039,10 +3706,10 @@ let CreateConnectionPreparationExecution = class CreateConnectionPreparationExec
4039
3706
  _isValidConditions() {
4040
3707
  return !this._fDraggableDataContext.draggableItems.length && !!this._fComponentsStore.fTempConnection;
4041
3708
  }
4042
- isNodeOutput(targetElement, node) {
4043
- return isNodeOutput(targetElement) && !this.getOutlets(node).length;
3709
+ _isNodeOutput(targetElement, node) {
3710
+ return isNodeOutput(targetElement) && !this._getOutlets(node).length;
4044
3711
  }
4045
- getOutlets(node) {
3712
+ _getOutlets(node) {
4046
3713
  return this._fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));
4047
3714
  }
4048
3715
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateConnectionPreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -4063,79 +3730,102 @@ class ReassignConnectionFinalizeRequest {
4063
3730
  }
4064
3731
 
4065
3732
  class ReassignConnectionDragHandler {
4066
- fMediator;
4067
- fComponentsStore;
4068
- fConnection;
4069
- toConnectorRect = new RoundedRect();
4070
- get fSnapConnection() {
4071
- return this.fComponentsStore.fSnapConnection;
3733
+ _fMediator;
3734
+ _fComponentsStore;
3735
+ _fConnection;
3736
+ _toConnectorRect = new RoundedRect();
3737
+ get _fSnapConnection() {
3738
+ return this._fComponentsStore.fSnapConnection;
3739
+ }
3740
+ _fOutputWithRect;
3741
+ _fInputWithRect;
3742
+ _canBeConnectedInputs = [];
3743
+ get _fOutput() {
3744
+ const result = this._fComponentsStore.fOutputs.find((x) => x.fId === this._fConnection.fOutputId);
3745
+ if (!result) {
3746
+ throw new Error('Connection output not found');
3747
+ }
3748
+ return result;
4072
3749
  }
4073
- fOutputWithRect;
4074
- fInputWithRect;
4075
- canBeConnectedInputs = [];
4076
- constructor(fMediator, fComponentsStore, fConnection) {
4077
- this.fMediator = fMediator;
4078
- this.fComponentsStore = fComponentsStore;
4079
- this.fConnection = fConnection;
3750
+ get _fInput() {
3751
+ const result = this._fComponentsStore.fInputs.find((x) => x.fId === this._fConnection.fInputId);
3752
+ if (!result) {
3753
+ throw new Error('Connection input not found');
3754
+ }
3755
+ return result;
3756
+ }
3757
+ constructor(_fMediator, _fComponentsStore, _fConnection) {
3758
+ this._fMediator = _fMediator;
3759
+ this._fComponentsStore = _fComponentsStore;
3760
+ this._fConnection = _fConnection;
3761
+ this._toConnectorRect = RoundedRect.fromRect(RectExtensions.initialize(this._fConnection.line.point2.x, this._fConnection.line.point2.y));
4080
3762
  }
4081
3763
  prepareDragSequence() {
3764
+ this._getAndMarkCanBeConnectedInputs();
4082
3765
  this._initializeSnapConnection();
4083
- this.canBeConnectedInputs = this.fMediator.send(new GetAllCanBeConnectedInputPositionsRequest(this.fConnection.fOutputId));
4084
- this.fOutputWithRect = this.fMediator.send(new GetConnectorWithRectRequest(this.getOutput()));
4085
- this.fInputWithRect = this.fMediator.send(new GetConnectorWithRectRequest(this.getInput()));
4086
- this.toConnectorRect = RoundedRect.fromRect(RectExtensions.initialize(this.fConnection.line.point2.x, this.fConnection.line.point2.y));
3766
+ this._fOutputWithRect = this._fMediator.execute(new GetConnectorAndRectRequest(this._fOutput));
3767
+ this._fInputWithRect = this._fMediator.execute(new GetConnectorAndRectRequest(this._fInput));
3768
+ }
3769
+ _getAndMarkCanBeConnectedInputs() {
3770
+ this._canBeConnectedInputs = this._fMediator.execute(new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutput));
3771
+ this._fMediator.execute(new MarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector)));
4087
3772
  }
4088
3773
  _initializeSnapConnection() {
4089
- if (!this.fSnapConnection) {
3774
+ if (!this._fSnapConnection) {
4090
3775
  return;
4091
3776
  }
4092
- this.fSnapConnection.fOutputId = this.fConnection.fOutputId;
4093
- this.fSnapConnection.initialize();
4094
- }
4095
- getOutput() {
4096
- return this.fComponentsStore.fOutputs.find((x) => x.fId === this.fConnection.fOutputId);
4097
- }
4098
- getInput() {
4099
- return this.fComponentsStore.fInputs.find((x) => x.fId === this.fConnection.fInputId);
3777
+ this._fSnapConnection.fOutputId = this._fConnection.fOutputId;
3778
+ this._fSnapConnection.initialize();
4100
3779
  }
4101
3780
  onPointerMove(difference) {
4102
3781
  const fClosestInput = this._findClosestInput(difference);
4103
- this._drawConnection(this.toConnectorRect.addPoint(difference), fClosestInput?.fConnector.fConnectableSide || this.fInputWithRect.fConnector.fConnectableSide);
4104
- if (this.fSnapConnection) {
3782
+ this._drawConnection(this._toConnectorRect.addPoint(difference), fClosestInput?.fConnector.fConnectableSide || this._fInputWithRect.fConnector.fConnectableSide);
3783
+ if (this._fSnapConnection) {
4105
3784
  this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));
4106
3785
  }
4107
3786
  }
4108
- _drawConnection(fInputRect, fSide) {
4109
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fInputRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fSide));
4110
- this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);
4111
- this.fConnection.redraw();
3787
+ _drawConnection(difference, fSide) {
3788
+ const line = this._getLineToPointer(difference, fSide);
3789
+ this._fConnection.setLine(line.point1, this._fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);
3790
+ this._fConnection.redraw();
3791
+ }
3792
+ _getLineToPointer(difference, fSide) {
3793
+ return this._fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fOutputWithRect.fRect, RoundedRect.fromRect(RectExtensions.initialize(difference.x, difference.y)), this._fConnection.fBehavior, this._fOutputWithRect.fConnector.fConnectableSide, fSide));
4112
3794
  }
4113
3795
  _drawSnapConnection(fClosestInput) {
4114
3796
  if (fClosestInput) {
4115
- const line = this.fMediator.send(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, fClosestInput.fRect, this.fSnapConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
4116
- this.fSnapConnection.show();
4117
- this.fSnapConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);
4118
- this.fSnapConnection.redraw();
3797
+ const line = this._getLineToClosestInput(fClosestInput);
3798
+ this._fSnapConnection.show();
3799
+ this._fSnapConnection.setLine(line.point1, this._fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);
3800
+ this._fSnapConnection.redraw();
4119
3801
  }
4120
3802
  else {
4121
- this.fSnapConnection?.hide();
3803
+ this._fSnapConnection?.hide();
4122
3804
  }
4123
3805
  }
4124
- getClosetInput(difference) {
4125
- if (!this.fSnapConnection) {
4126
- return undefined;
4127
- }
4128
- return this._getClosestInputForSnapConnection(this._findClosestInput(difference));
3806
+ _getLineToClosestInput(fClosestInput) {
3807
+ return this._fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fOutputWithRect.fRect, fClosestInput.fRect, this._fSnapConnection.fBehavior, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
4129
3808
  }
4130
3809
  _findClosestInput(difference) {
4131
- return this.fMediator.send(new FindClosestInputRequest(Point.fromPoint(this.toConnectorRect).add(difference), this.canBeConnectedInputs));
3810
+ return this._fMediator.execute(new CalculateClosestInputRequest(this._toConnectorRect.addPoint(difference), this._canBeConnectedInputs));
4132
3811
  }
4133
3812
  _getClosestInputForSnapConnection(fClosestInput) {
4134
- return fClosestInput && fClosestInput.distance < this.fSnapConnection.fSnapThreshold ? fClosestInput : undefined;
3813
+ return fClosestInput && fClosestInput.distance < this._fSnapConnection.fSnapThreshold ? fClosestInput : undefined;
4135
3814
  }
4136
3815
  onPointerUp() {
4137
- this._drawConnection(this.fInputWithRect.fRect, this.fInputWithRect.fConnector.fConnectableSide);
4138
- this.fSnapConnection?.hide();
3816
+ this._drawConnection(this._fInputWithRect.fRect, this._fInputWithRect.fConnector.fConnectableSide);
3817
+ this._fSnapConnection?.hide();
3818
+ this._fMediator.execute(new UnmarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector)));
3819
+ }
3820
+ getData() {
3821
+ return {
3822
+ toConnectorRect: this._toConnectorRect,
3823
+ fOutputId: this._fConnection.fOutputId,
3824
+ canBeConnectedInputs: this._canBeConnectedInputs
3825
+ };
3826
+ }
3827
+ getConnection() {
3828
+ return this._fConnection;
4139
3829
  }
4140
3830
  }
4141
3831
 
@@ -4155,44 +3845,49 @@ class FReassignConnectionEvent {
4155
3845
  }
4156
3846
 
4157
3847
  let ReassignConnectionFinalizeExecution = class ReassignConnectionFinalizeExecution {
4158
- fComponentsStore;
4159
- fDraggableDataContext;
4160
- fMediator;
4161
- get fDraggable() {
4162
- return this.fComponentsStore.fDraggable;
4163
- }
4164
- get dragHandler() {
4165
- return this.fDraggableDataContext.draggableItems[0];
3848
+ _fMediator = inject(FMediator);
3849
+ _fComponentsStore = inject(FComponentsStore);
3850
+ _fDraggableDataContext = inject(FDraggableDataContext);
3851
+ get _fDraggable() {
3852
+ return this._fComponentsStore.fDraggable;
4166
3853
  }
4167
- constructor(fComponentsStore, fDraggableDataContext, fMediator) {
4168
- this.fComponentsStore = fComponentsStore;
4169
- this.fDraggableDataContext = fDraggableDataContext;
4170
- this.fMediator = fMediator;
3854
+ get _fDragHandler() {
3855
+ return this._fDraggableDataContext.draggableItems[0];
4171
3856
  }
4172
3857
  handle(request) {
4173
- if (!this._isValid()) {
3858
+ if (!this._isDroppedConnectionReassignEvent()) {
4174
3859
  return;
4175
3860
  }
4176
- this.emitEvent(request.event);
4177
- this.dragHandler.onPointerUp();
3861
+ this._applyReassignEvent(request.event);
3862
+ this._fDragHandler.onPointerUp();
4178
3863
  }
4179
- _isValid() {
4180
- return this.fDraggableDataContext.draggableItems.some((x) => x instanceof ReassignConnectionDragHandler);
3864
+ _isDroppedConnectionReassignEvent() {
3865
+ return this._fDraggableDataContext.draggableItems.some((x) => x instanceof ReassignConnectionDragHandler);
4181
3866
  }
4182
- emitEvent(event) {
4183
- const input = this.getInputUnderPointer(event);
4184
- if (!!input && !this.isReassignToDifferentInput(input)) {
3867
+ _applyReassignEvent(event) {
3868
+ const fInput = this._getInputUnderPointer(event);
3869
+ if (!!fInput && !this._isReassignToDifferentInput(fInput)) {
4185
3870
  return;
4186
3871
  }
4187
- this.fDraggable.fReassignConnection.emit(new FReassignConnectionEvent(this.dragHandler.fConnection.fId, this.dragHandler.fConnection.fOutputId, this.dragHandler.fConnection.fInputId, input?.fId, event.getPosition()));
3872
+ this._emitReassignConnectionEvent(event, fInput);
3873
+ }
3874
+ _getInputUnderPointer(event) {
3875
+ return this._fMediator.send(new FindInputAtPositionRequest(event.getPosition(), this._getDragHandlerData().toConnectorRect, this._getDragHandlerData().canBeConnectedInputs));
3876
+ }
3877
+ _isReassignToDifferentInput(fInput) {
3878
+ return this._fDragHandler.getConnection().fInputId !== fInput.fId;
3879
+ }
3880
+ _emitReassignConnectionEvent(event, fInput) {
3881
+ this._fDraggable.fReassignConnection.emit(this._getEventData(event, fInput));
4188
3882
  }
4189
- getInputUnderPointer(event) {
4190
- return this.fMediator.send(new GetInputUnderPointerRequest(event, this.dragHandler));
3883
+ _getEventData(event, fInput) {
3884
+ const fConnection = this._fDragHandler.getConnection();
3885
+ return new FReassignConnectionEvent(fConnection.fId, fConnection.fOutputId, fConnection.fInputId, fInput?.fId, event.getPosition());
4191
3886
  }
4192
- isReassignToDifferentInput(inputsUnderPointer) {
4193
- return this.dragHandler.fConnection.fInputId !== inputsUnderPointer.fId;
3887
+ _getDragHandlerData() {
3888
+ return this._fDragHandler.getData();
4194
3889
  }
4195
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionFinalizeExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
3890
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4196
3891
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionFinalizeExecution });
4197
3892
  };
4198
3893
  ReassignConnectionFinalizeExecution = __decorate([
@@ -4200,7 +3895,7 @@ ReassignConnectionFinalizeExecution = __decorate([
4200
3895
  ], ReassignConnectionFinalizeExecution);
4201
3896
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ReassignConnectionFinalizeExecution, decorators: [{
4202
3897
  type: Injectable
4203
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
3898
+ }] });
4204
3899
 
4205
3900
  class ReassignConnectionPreparationRequest {
4206
3901
  event;
@@ -4271,8 +3966,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
4271
3966
  }] });
4272
3967
 
4273
3968
  const CONNECTIONS_PROVIDERS = [
4274
- GetInputUnderPointerExecution,
4275
- GetInputUnderPointerValidator,
4276
3969
  CreateConnectionFinalizeExecution,
4277
3970
  CreateConnectionDragHandlerExecution,
4278
3971
  CreateConnectionFromOutletPreparationExecution,
@@ -4305,93 +3998,52 @@ let GetNormalizedParentNodeRectExecution = class GetNormalizedParentNodeRectExec
4305
3998
  if (parentNode) {
4306
3999
  result = this.getParentRect(parentNode);
4307
4000
  }
4308
- return result;
4309
- }
4310
- getNode(fId) {
4311
- return this.fComponentsStore.fNodes.find((x) => x.fId === fId);
4312
- }
4313
- getParentRect(node) {
4314
- const rect = this._getNodeRect(node);
4315
- const padding = this.getNodePadding(node, rect);
4316
- return RectExtensions.initialize(rect.x + padding[0], rect.y + padding[1], rect.width - padding[0] - padding[2], rect.height - padding[1] - padding[3]);
4317
- }
4318
- _getNodeRect(fNode) {
4319
- return this.fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement, false));
4320
- }
4321
- getNodePadding(node, rect) {
4322
- return this.fMediator.send(new GetNodePaddingRequest(node, rect));
4323
- }
4324
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedParentNodeRectExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4325
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedParentNodeRectExecution });
4326
- };
4327
- GetNormalizedParentNodeRectExecution = __decorate([
4328
- FExecutionRegister(GetNormalizedParentNodeRectRequest)
4329
- ], GetNormalizedParentNodeRectExecution);
4330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedParentNodeRectExecution, decorators: [{
4331
- type: Injectable
4332
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
4333
-
4334
- class IsArrayHasParentNodeRequest {
4335
- fNode;
4336
- fNodes;
4337
- constructor(fNode, fNodes) {
4338
- this.fNode = fNode;
4339
- this.fNodes = fNodes;
4340
- }
4341
- }
4342
-
4343
- class GetParentNodesRequest {
4344
- fNode;
4345
- constructor(fNode) {
4346
- this.fNode = fNode;
4347
- }
4348
- }
4349
-
4350
- let GetParentNodesExecution = class GetParentNodesExecution {
4351
- _fComponentsStore = inject(FComponentsStore);
4352
- handle(request) {
4353
- return this._getParentNodes(request.fNode, new Set(), []);
4354
- }
4355
- _getParentNodes(fNode, visited, result) {
4356
- if (visited.has(fNode.fId)) {
4357
- throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);
4358
- }
4359
- visited.add(fNode.fId);
4360
- const parent = this._fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);
4361
- if (!parent) {
4362
- return result;
4363
- }
4364
- result.push(parent);
4365
- return this._getParentNodes(parent, visited, result);
4001
+ return result;
4366
4002
  }
4367
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4368
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution });
4003
+ getNode(fId) {
4004
+ return this.fComponentsStore.fNodes.find((x) => x.fId === fId);
4005
+ }
4006
+ getParentRect(node) {
4007
+ const rect = this._getNodeRect(node);
4008
+ const padding = this.getNodePadding(node, rect);
4009
+ return RectExtensions.initialize(rect.x + padding[0], rect.y + padding[1], rect.width - padding[0] - padding[2], rect.height - padding[1] - padding[3]);
4010
+ }
4011
+ _getNodeRect(fNode) {
4012
+ return this.fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement, false));
4013
+ }
4014
+ getNodePadding(node, rect) {
4015
+ return this.fMediator.send(new GetNodePaddingRequest(node, rect));
4016
+ }
4017
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedParentNodeRectExecution, deps: [{ token: FComponentsStore }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4018
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedParentNodeRectExecution });
4369
4019
  };
4370
- GetParentNodesExecution = __decorate([
4371
- FExecutionRegister(GetParentNodesRequest)
4372
- ], GetParentNodesExecution);
4373
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, decorators: [{
4020
+ GetNormalizedParentNodeRectExecution = __decorate([
4021
+ FExecutionRegister(GetNormalizedParentNodeRectRequest)
4022
+ ], GetNormalizedParentNodeRectExecution);
4023
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedParentNodeRectExecution, decorators: [{
4374
4024
  type: Injectable
4375
- }] });
4025
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2$1.FMediator }] });
4376
4026
 
4377
- let IsArrayHasParentNodeExecution = class IsArrayHasParentNodeExecution {
4378
- fMediator;
4379
- constructor(fMediator) {
4380
- this.fMediator = fMediator;
4027
+ class IsArrayHasParentNodeRequest {
4028
+ fParentNodes;
4029
+ fDraggedNodes;
4030
+ constructor(fParentNodes, fDraggedNodes) {
4031
+ this.fParentNodes = fParentNodes;
4032
+ this.fDraggedNodes = fDraggedNodes;
4381
4033
  }
4034
+ }
4035
+
4036
+ let IsArrayHasParentNodeExecution = class IsArrayHasParentNodeExecution {
4382
4037
  handle(request) {
4383
- return this.isParentNodeInArray(this.getParentNodeIds(request.fNode), request.fNodes);
4384
- }
4385
- getParentNodeIds(fNode) {
4386
- return this.getParentNodes(fNode).map((x) => x.fId);
4038
+ return this._isParentNodeInArray(this._getParentNodeIds(request.fParentNodes), request.fDraggedNodes);
4387
4039
  }
4388
- getParentNodes(fNode) {
4389
- return this.fMediator.send(new GetParentNodesRequest(fNode));
4040
+ _getParentNodeIds(fParentNodes) {
4041
+ return fParentNodes.map((x) => x.fId);
4390
4042
  }
4391
- isParentNodeInArray(parentNodeIds, fNodes) {
4392
- return fNodes.some((x) => parentNodeIds.includes(x.fId));
4043
+ _isParentNodeInArray(parentNodeIds, fDraggedNodes) {
4044
+ return fDraggedNodes.some((x) => parentNodeIds.includes(x.fId));
4393
4045
  }
4394
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsArrayHasParentNodeExecution, deps: [{ token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4046
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsArrayHasParentNodeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4395
4047
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsArrayHasParentNodeExecution });
4396
4048
  };
4397
4049
  IsArrayHasParentNodeExecution = __decorate([
@@ -4399,7 +4051,7 @@ IsArrayHasParentNodeExecution = __decorate([
4399
4051
  ], IsArrayHasParentNodeExecution);
4400
4052
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsArrayHasParentNodeExecution, decorators: [{
4401
4053
  type: Injectable
4402
- }], ctorParameters: () => [{ type: i2.FMediator }] });
4054
+ }] });
4403
4055
 
4404
4056
  class FNodeIntersectedWithConnections {
4405
4057
  fNodeId;
@@ -4421,27 +4073,30 @@ let IsConnectionUnderNodeExecution = class IsConnectionUnderNodeExecution {
4421
4073
  _fMediator = inject(FMediator);
4422
4074
  _fComponentsStore = inject(FComponentsStore);
4423
4075
  handle(request) {
4424
- const fNode = request.fNode;
4425
- const fOutputConnectors = this._getNodeOutputConnectors(fNode);
4426
- const fInputConnectors = this._getNodeInputConnectors(fNode);
4427
- const canBeConnectedOutputs = fOutputConnectors.filter((x) => x.canBeConnected);
4428
- const canBeConnectedInputs = fInputConnectors.filter((x) => x.canBeConnected);
4429
- if (canBeConnectedOutputs.length && canBeConnectedInputs.length) {
4430
- const fOutputConnections = this._getOutputConnectionsId(canBeConnectedOutputs);
4431
- const fInputConnections = this._getInputConnectionsId(canBeConnectedInputs);
4432
- const fConnectionsUnderNode = this._calculateConnectionsUnderNode(fNode).filter((x) => {
4433
- return !fOutputConnections.includes(x.fId) && !fInputConnections.includes(x.fId);
4434
- });
4435
- if (fConnectionsUnderNode.length) {
4436
- this._fComponentsStore.fDraggable?.fNodeIntersectedWithConnections.emit(new FNodeIntersectedWithConnections(fNode.fId, fConnectionsUnderNode.map((x) => x.fId)));
4437
- }
4076
+ const fOutputConnectors = this._getOutputConnectors(request.fNode);
4077
+ const fInputConnectors = this._getInputConnectors(request.fNode);
4078
+ if (!fOutputConnectors.length || !fInputConnectors.length) {
4079
+ return;
4080
+ }
4081
+ const fOutputConnections = this._getOutputConnectionsId(fOutputConnectors);
4082
+ const fInputConnections = this._getInputConnectionsId(fInputConnectors);
4083
+ const fConnectionsUnderNode = this._calculateConnectionsUnderNode(request.fNode).filter((x) => {
4084
+ return !fOutputConnections.includes(x.fId) && !fInputConnections.includes(x.fId);
4085
+ });
4086
+ if (!fConnectionsUnderNode.length) {
4087
+ return;
4438
4088
  }
4089
+ this._emitNodeIntersectedWithConnections(request.fNode, fConnectionsUnderNode);
4439
4090
  }
4440
- _getNodeOutputConnectors(fNode) {
4441
- return this._fComponentsStore.fOutputs.filter((x) => fNode.isContains(x.hostElement));
4091
+ _getOutputConnectors(fNode) {
4092
+ return this._fComponentsStore.fOutputs.filter((x) => {
4093
+ return fNode.isContains(x.hostElement) && x.canBeConnected;
4094
+ });
4442
4095
  }
4443
- _getNodeInputConnectors(fNode) {
4444
- return this._fComponentsStore.fInputs.filter((x) => fNode.isContains(x.hostElement));
4096
+ _getInputConnectors(fNode) {
4097
+ return this._fComponentsStore.fInputs.filter((x) => {
4098
+ return fNode.isContains(x.hostElement) && x.canBeConnected;
4099
+ });
4445
4100
  }
4446
4101
  _getOutputConnectionsId(connectors) {
4447
4102
  const connectorsId = this._getConnectorsId(connectors);
@@ -4465,6 +4120,9 @@ let IsConnectionUnderNodeExecution = class IsConnectionUnderNodeExecution {
4465
4120
  _isConnectionHasIntersectionsWithNode(fConnection, fNodeRect) {
4466
4121
  return GetIntersections.getRoundedRectIntersectionsWithSVGPath(fConnection.fPath.hostElement, fNodeRect).length > 0;
4467
4122
  }
4123
+ _emitNodeIntersectedWithConnections(fNode, fConnections) {
4124
+ this._fComponentsStore.fDraggable?.fNodeIntersectedWithConnections.emit(new FNodeIntersectedWithConnections(fNode.fId, fConnections.map((x) => x.fId)));
4125
+ }
4468
4126
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsConnectionUnderNodeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4469
4127
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IsConnectionUnderNodeExecution });
4470
4128
  };
@@ -4499,6 +4157,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
4499
4157
  type: Injectable
4500
4158
  }] });
4501
4159
 
4160
+ class CalculateCommonNodeMoveRestrictionsRequest {
4161
+ restrictions;
4162
+ constructor(restrictions) {
4163
+ this.restrictions = restrictions;
4164
+ }
4165
+ }
4166
+
4167
+ let CalculateCommonNodeMoveRestrictionsExecution = class CalculateCommonNodeMoveRestrictionsExecution {
4168
+ handle(request) {
4169
+ return this._calculateCommonRestrictions(request.restrictions);
4170
+ }
4171
+ _calculateCommonRestrictions(restrictions) {
4172
+ return restrictions.reduce((result, x) => this._clampRestrictions(result, x), restrictions[0]);
4173
+ }
4174
+ _clampRestrictions(common, x) {
4175
+ common.min = this._clampMinRestrictions(common.min, x.min);
4176
+ common.max = this._clampMaxRestrictions(common.max, x.max);
4177
+ return common;
4178
+ }
4179
+ _clampMinRestrictions(common, node) {
4180
+ return {
4181
+ x: Math.max(common.x, node.x),
4182
+ y: Math.max(common.y, node.y),
4183
+ };
4184
+ }
4185
+ _clampMaxRestrictions(common, node) {
4186
+ return {
4187
+ x: Math.min(common.x, node.x),
4188
+ y: Math.min(common.y, node.y),
4189
+ };
4190
+ }
4191
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateCommonNodeMoveRestrictionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4192
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateCommonNodeMoveRestrictionsExecution });
4193
+ };
4194
+ CalculateCommonNodeMoveRestrictionsExecution = __decorate([
4195
+ FExecutionRegister(CalculateCommonNodeMoveRestrictionsRequest)
4196
+ ], CalculateCommonNodeMoveRestrictionsExecution);
4197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateCommonNodeMoveRestrictionsExecution, decorators: [{
4198
+ type: Injectable
4199
+ }] });
4200
+
4502
4201
  class PutInputConnectionHandlersToArrayRequest {
4503
4202
  nodeDragHandler;
4504
4203
  outputIds;
@@ -4522,8 +4221,8 @@ class ConnectionBaseDragHandler {
4522
4221
  this.connection = connection;
4523
4222
  }
4524
4223
  prepareDragSequence() {
4525
- this.fOutputWithRect = this.fMediator.send(new GetConnectorWithRectRequest(this.getOutput()));
4526
- this.fInputWithRect = this.fMediator.send(new GetConnectorWithRectRequest(this.getInput()));
4224
+ this.fOutputWithRect = this.fMediator.send(new GetConnectorAndRectRequest(this.getOutput()));
4225
+ this.fInputWithRect = this.fMediator.send(new GetConnectorAndRectRequest(this.getInput()));
4527
4226
  }
4528
4227
  getOutput() {
4529
4228
  const result = this.fComponentsStore.fOutputs.find((x) => x.fId === this.connection.fOutputId);
@@ -4552,12 +4251,12 @@ class ConnectionBaseDragHandler {
4552
4251
  this.connection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, this.fInputWithRect.fConnector.fConnectableSide);
4553
4252
  this.connection.redraw();
4554
4253
  }
4555
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ConnectionBaseDragHandler, deps: [{ token: i2.FMediator }, { token: FComponentsStore }, { token: FConnectionBase }], target: i0.ɵɵFactoryTarget.Directive });
4254
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ConnectionBaseDragHandler, deps: [{ token: i2$1.FMediator }, { token: FComponentsStore }, { token: FConnectionBase }], target: i0.ɵɵFactoryTarget.Directive });
4556
4255
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: ConnectionBaseDragHandler, ngImport: i0 });
4557
4256
  }
4558
4257
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ConnectionBaseDragHandler, decorators: [{
4559
4258
  type: Directive
4560
- }], ctorParameters: () => [{ type: i2.FMediator }, { type: FComponentsStore }, { type: FConnectionBase }] });
4259
+ }], ctorParameters: () => [{ type: i2$1.FMediator }, { type: FComponentsStore }, { type: FConnectionBase }] });
4561
4260
 
4562
4261
  class ConnectionDragHandler extends ConnectionBaseDragHandler {
4563
4262
  sourceRestrictions;
@@ -4565,11 +4264,11 @@ class ConnectionDragHandler extends ConnectionBaseDragHandler {
4565
4264
  constructor(fMediator, fComponentsStore, connection) {
4566
4265
  super(fMediator, fComponentsStore, connection);
4567
4266
  }
4568
- setOutputRestrictions(min, max) {
4569
- this.sourceRestrictions = { min, max };
4267
+ setOutputRestrictions(restrictions) {
4268
+ this.sourceRestrictions = restrictions;
4570
4269
  }
4571
- setInputRestrictions(min, max) {
4572
- this.targetRestrictions = { min, max };
4270
+ setInputRestrictions(restrictions) {
4271
+ this.targetRestrictions = restrictions;
4573
4272
  }
4574
4273
  onPointerMove(difference) {
4575
4274
  this.redrawConnection(this.getNewLineValue(difference));
@@ -4580,30 +4279,24 @@ class ConnectionDragHandler extends ConnectionBaseDragHandler {
4580
4279
  }
4581
4280
 
4582
4281
  class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {
4583
- minDistance;
4584
- maxDistance;
4585
- constructor(fMediator, fComponentsStore, connection, minDistance, maxDistance) {
4282
+ restrictions;
4283
+ constructor(fMediator, fComponentsStore, connection, restrictions) {
4586
4284
  super(fMediator, fComponentsStore, connection);
4587
- this.minDistance = minDistance;
4588
- this.maxDistance = maxDistance;
4285
+ this.restrictions = restrictions;
4589
4286
  }
4590
4287
  onPointerMove(difference) {
4591
4288
  this.redrawConnection(this.getNewLineValue(difference));
4592
4289
  }
4593
4290
  getNewLineValue(difference) {
4594
- 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));
4291
+ return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this.fOutputWithRect.fRect, RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, this.restrictions)), this.connection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, this.fInputWithRect.fConnector.fConnectableSide));
4595
4292
  }
4596
4293
  }
4597
4294
 
4598
4295
  let PutInputConnectionHandlersToArrayExecution = class PutInputConnectionHandlersToArrayExecution {
4599
- fComponentsStore;
4600
- fMediator;
4601
- get fConnections() {
4602
- return this.fComponentsStore.fConnections;
4603
- }
4604
- constructor(fComponentsStore, fMediator) {
4605
- this.fComponentsStore = fComponentsStore;
4606
- this.fMediator = fMediator;
4296
+ _fMediator = inject(FMediator);
4297
+ _fComponentsStore = inject(FComponentsStore);
4298
+ get _fConnections() {
4299
+ return this._fComponentsStore.fConnections;
4607
4300
  }
4608
4301
  handle(request) {
4609
4302
  this.getInputConnections(request.nodeDragHandler.fNode).forEach((connection) => {
@@ -4618,10 +4311,10 @@ let PutInputConnectionHandlersToArrayExecution = class PutInputConnectionHandler
4618
4311
  }
4619
4312
  getInputConnections(node) {
4620
4313
  const inputIds = new Set(this.getInputsForNode(node).map((x) => x.fId));
4621
- return this.fConnections.filter((x) => inputIds.has(x.fInputId));
4314
+ return this._fConnections.filter((x) => inputIds.has(x.fInputId));
4622
4315
  }
4623
4316
  getInputsForNode(node) {
4624
- return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
4317
+ return this._fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
4625
4318
  }
4626
4319
  getExistingConnectionHandlerIndex(result, connection) {
4627
4320
  return result.findIndex((x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId);
@@ -4637,17 +4330,17 @@ let PutInputConnectionHandlersToArrayExecution = class PutInputConnectionHandler
4637
4330
  return result;
4638
4331
  }
4639
4332
  getNewConnectionHandler(connection, nodeDragHandler) {
4640
- const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);
4641
- handler.setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4333
+ const handler = new ConnectionDragHandler(this._fMediator, this._fComponentsStore, connection);
4334
+ handler.setInputRestrictions(nodeDragHandler.restrictions);
4642
4335
  return handler;
4643
4336
  }
4644
4337
  updateExistingConnectionHandler(result, index, nodeDragHandler) {
4645
- result[index].setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4338
+ result[index].setInputRestrictions(nodeDragHandler.restrictions);
4646
4339
  }
4647
4340
  getNewSourceConnectionHandler(connection, nodeDragHandler) {
4648
- return new ConnectionTargetDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4341
+ return new ConnectionTargetDragHandler(this._fMediator, this._fComponentsStore, connection, nodeDragHandler.restrictions);
4649
4342
  }
4650
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutInputConnectionHandlersToArrayExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4343
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutInputConnectionHandlersToArrayExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4651
4344
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutInputConnectionHandlersToArrayExecution });
4652
4345
  };
4653
4346
  PutInputConnectionHandlersToArrayExecution = __decorate([
@@ -4655,7 +4348,7 @@ PutInputConnectionHandlersToArrayExecution = __decorate([
4655
4348
  ], PutInputConnectionHandlersToArrayExecution);
4656
4349
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutInputConnectionHandlersToArrayExecution, decorators: [{
4657
4350
  type: Injectable
4658
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
4351
+ }] });
4659
4352
 
4660
4353
  class PutOutputConnectionHandlersToArrayRequest {
4661
4354
  nodeDragHandler;
@@ -4669,18 +4362,16 @@ class PutOutputConnectionHandlersToArrayRequest {
4669
4362
  }
4670
4363
 
4671
4364
  class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {
4672
- minDistance;
4673
- maxDistance;
4674
- constructor(fMediator, fComponentsStore, connection, minDistance, maxDistance) {
4365
+ restrictions;
4366
+ constructor(fMediator, fComponentsStore, connection, restrictions) {
4675
4367
  super(fMediator, fComponentsStore, connection);
4676
- this.minDistance = minDistance;
4677
- this.maxDistance = maxDistance;
4368
+ this.restrictions = restrictions;
4678
4369
  }
4679
4370
  onPointerMove(difference) {
4680
4371
  this.redrawConnection(this.getNewLineValue(difference));
4681
4372
  }
4682
4373
  getNewLineValue(difference) {
4683
- 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));
4374
+ return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, this.restrictions)), this.fInputWithRect.fRect, this.connection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, this.fInputWithRect.fConnector.fConnectableSide));
4684
4375
  }
4685
4376
  }
4686
4377
 
@@ -4727,16 +4418,16 @@ let PutOutputConnectionHandlersToArrayExecution = class PutOutputConnectionHandl
4727
4418
  }
4728
4419
  getNewConnectionHandler(connection, nodeDragHandler) {
4729
4420
  const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);
4730
- handler.setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4421
+ handler.setOutputRestrictions(nodeDragHandler.restrictions);
4731
4422
  return handler;
4732
4423
  }
4733
4424
  updateExistingConnectionHandler(result, index, nodeDragHandler) {
4734
- result[index].setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4425
+ result[index].setOutputRestrictions(nodeDragHandler.restrictions);
4735
4426
  }
4736
4427
  getNewSourceConnectionHandler(connection, nodeDragHandler) {
4737
- return new ConnectionSourceDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);
4428
+ return new ConnectionSourceDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.restrictions);
4738
4429
  }
4739
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutOutputConnectionHandlersToArrayExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4430
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutOutputConnectionHandlersToArrayExecution, deps: [{ token: FComponentsStore }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4740
4431
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutOutputConnectionHandlersToArrayExecution });
4741
4432
  };
4742
4433
  PutOutputConnectionHandlersToArrayExecution = __decorate([
@@ -4744,9 +4435,9 @@ PutOutputConnectionHandlersToArrayExecution = __decorate([
4744
4435
  ], PutOutputConnectionHandlersToArrayExecution);
4745
4436
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PutOutputConnectionHandlersToArrayExecution, decorators: [{
4746
4437
  type: Injectable
4747
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
4438
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2$1.FMediator }] });
4748
4439
 
4749
- class GetNodeMoveRestrictionsRequest {
4440
+ class CalculateNodeMoveRestrictionsRequest {
4750
4441
  fNode;
4751
4442
  hasParentNodeInSelected;
4752
4443
  constructor(fNode, hasParentNodeInSelected) {
@@ -4755,32 +4446,32 @@ class GetNodeMoveRestrictionsRequest {
4755
4446
  }
4756
4447
  }
4757
4448
 
4758
- let GetNodeMoveRestrictionsExecution = class GetNodeMoveRestrictionsExecution {
4449
+ let CalculateNodeMoveRestrictionsExecution = class CalculateNodeMoveRestrictionsExecution {
4759
4450
  _fMediator = inject(FMediator);
4760
4451
  handle(request) {
4761
- if (request.fNode.fParentId && !request.hasParentNodeInSelected) {
4762
- const fParentNodeRect = this.getParentNodeRect(request.fNode);
4763
- const fCurrentNodeRect = this._getNodeRect(request.fNode);
4764
- return {
4765
- min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),
4766
- max: PointExtensions.initialize((fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width), (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height))
4767
- };
4452
+ if (!request.fNode.fParentId || request.hasParentNodeInSelected) {
4453
+ return { ...DEFAULT_RESTRICTIONS };
4768
4454
  }
4769
- return { ...DEFAULT_RESTRICTIONS };
4455
+ const fParentNodeRect = this._getParentNodeRect(request.fNode);
4456
+ const fCurrentNodeRect = this._getNodeRect(request.fNode);
4457
+ return {
4458
+ min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),
4459
+ max: PointExtensions.initialize((fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width), (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height))
4460
+ };
4770
4461
  }
4771
4462
  _getNodeRect(fNode) {
4772
- return this._fMediator.send(new GetNormalizedElementRectRequest(fNode.hostElement, false));
4463
+ return this._fMediator.execute(new GetNormalizedElementRectRequest(fNode.hostElement, false));
4773
4464
  }
4774
- getParentNodeRect(fNode) {
4775
- return this._fMediator.send(new GetNormalizedParentNodeRectRequest(fNode));
4465
+ _getParentNodeRect(fNode) {
4466
+ return this._fMediator.execute(new GetNormalizedParentNodeRectRequest(fNode));
4776
4467
  }
4777
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4778
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution });
4468
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateNodeMoveRestrictionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4469
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateNodeMoveRestrictionsExecution });
4779
4470
  };
4780
- GetNodeMoveRestrictionsExecution = __decorate([
4781
- FExecutionRegister(GetNodeMoveRestrictionsRequest)
4782
- ], GetNodeMoveRestrictionsExecution);
4783
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeMoveRestrictionsExecution, decorators: [{
4471
+ CalculateNodeMoveRestrictionsExecution = __decorate([
4472
+ FExecutionRegister(CalculateNodeMoveRestrictionsRequest)
4473
+ ], CalculateNodeMoveRestrictionsExecution);
4474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CalculateNodeMoveRestrictionsExecution, decorators: [{
4784
4475
  type: Injectable
4785
4476
  }] });
4786
4477
  const DEFAULT_RESTRICTIONS = {
@@ -4796,32 +4487,27 @@ class CreateMoveNodesDragModelFromSelectionRequest {
4796
4487
  }
4797
4488
 
4798
4489
  class NodeDragHandler {
4799
- fDraggableDataContext;
4800
- fComponentsStore;
4490
+ _fComponentsStore;
4801
4491
  fNode;
4802
- minDistance;
4803
- maxDistance;
4492
+ restrictions;
4804
4493
  _onPointerDownPosition = PointExtensions.initialize();
4805
- constructor(fDraggableDataContext, fComponentsStore, fNode, minDistance, maxDistance) {
4806
- this.fDraggableDataContext = fDraggableDataContext;
4807
- this.fComponentsStore = fComponentsStore;
4494
+ constructor(_fComponentsStore, fNode, restrictions) {
4495
+ this._fComponentsStore = _fComponentsStore;
4808
4496
  this.fNode = fNode;
4809
- this.minDistance = minDistance;
4810
- this.maxDistance = maxDistance;
4497
+ this.restrictions = restrictions;
4811
4498
  this._onPointerDownPosition = { ...fNode.position };
4812
4499
  }
4813
4500
  onPointerMove(difference) {
4814
- const restrictedDifference = this._getDifference(difference, { min: this.minDistance, max: this.maxDistance });
4501
+ const restrictedDifference = this._getDifference(difference);
4815
4502
  this._redraw(this._getPosition(restrictedDifference));
4816
- this.fDraggableDataContext.fLineAlignment?.handle(restrictedDifference);
4817
4503
  }
4818
4504
  _getPosition(difference) {
4819
4505
  return Point.fromPoint(this._onPointerDownPosition).add(difference);
4820
4506
  }
4821
- _getDifference(difference, restrictions) {
4507
+ _getDifference(difference) {
4822
4508
  return {
4823
- x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),
4824
- y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)
4509
+ x: Math.min(Math.max(difference.x, this.restrictions.min.x), this.restrictions.max.x),
4510
+ y: Math.min(Math.max(difference.y, this.restrictions.min.y), this.restrictions.max.y)
4825
4511
  };
4826
4512
  }
4827
4513
  _redraw(position) {
@@ -4832,13 +4518,12 @@ class NodeDragHandler {
4832
4518
  this.fNode.positionChange.emit(this.fNode.position);
4833
4519
  }
4834
4520
  getDifferenceWithCellSize(difference) {
4835
- const restrictedDifference = this._getDifference(difference, { min: this.minDistance, max: this.maxDistance });
4836
- const position = this._getPosition(restrictedDifference);
4521
+ const position = this._getPosition(this._getDifference(difference));
4837
4522
  return Point.fromPoint(this._applyCellSize(position)).sub(this._onPointerDownPosition);
4838
4523
  }
4839
4524
  _applyCellSize(position) {
4840
- const hCellSize = this.fComponentsStore.fDraggable.hCellSize;
4841
- const vCellSize = this.fComponentsStore.fDraggable.vCellSize;
4525
+ const hCellSize = this._fComponentsStore.fDraggable.hCellSize;
4526
+ const vCellSize = this._fComponentsStore.fDraggable.vCellSize;
4842
4527
  return {
4843
4528
  x: Math.round(position.x / hCellSize) * hCellSize,
4844
4529
  y: Math.round(position.y / vCellSize) * vCellSize
@@ -4866,10 +4551,10 @@ let CreateMoveNodesDragModelFromSelectionExecution = class CreateMoveNodesDragMo
4866
4551
  _fComponentsStore = inject(FComponentsStore);
4867
4552
  _fDraggableDataContext = inject(FDraggableDataContext);
4868
4553
  handle(request) {
4869
- const itemsToDrag = this._getNodesWithRestrictions(this._getSelectedNodes(request.nodeWithDisabledSelection));
4870
- return this.getDragHandlersWithConnections(this.getDragHandlersFromNodes(itemsToDrag), this.getAllOutputIds(itemsToDrag), this.getAllInputIds(itemsToDrag));
4554
+ const fItemsToDrag = this._getNodesWithRestrictions(this._getDraggedNodes(request.nodeWithDisabledSelection));
4555
+ return this.getDragHandlersWithConnections(this.getDragHandlersFromNodes(fItemsToDrag), this.getAllOutputIds(fItemsToDrag), this.getAllInputIds(fItemsToDrag));
4871
4556
  }
4872
- _getSelectedNodes(nodeWithDisabledSelection) {
4557
+ _getDraggedNodes(nodeWithDisabledSelection) {
4873
4558
  const result = this._getNodesFromSelection();
4874
4559
  if (nodeWithDisabledSelection) {
4875
4560
  result.push(nodeWithDisabledSelection);
@@ -4882,68 +4567,302 @@ let CreateMoveNodesDragModelFromSelectionExecution = class CreateMoveNodesDragMo
4882
4567
  .filter((x) => !!x);
4883
4568
  }
4884
4569
  _findNode(hostElement) {
4885
- return this._fComponentsStore.fNodes.find(n => n.isContains(hostElement));
4570
+ return this._fComponentsStore.fNodes
4571
+ .find(n => n.isContains(hostElement));
4886
4572
  }
4887
- _getNodesWithRestrictions(nodesToDrag) {
4573
+ _getNodesWithRestrictions(fDraggedNodes) {
4888
4574
  const result = [];
4889
- nodesToDrag.forEach((x) => {
4890
- const hasParentNodeInSelected = this._fMediator.send(new IsArrayHasParentNodeRequest(x, nodesToDrag));
4891
- const restrictions = this._fMediator.send(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));
4892
- const parentNodes = this._fMediator.send(new GetParentNodesRequest(x));
4893
- result.push({ node: x, parentNodes, ...restrictions }, ...this.getChildrenItemsToDrag(x, restrictions));
4575
+ fDraggedNodes.forEach((x) => {
4576
+ const fParentNodes = this._fMediator.execute(new GetParentNodesRequest(x));
4577
+ const restrictions = this._getNodeMoveRestrictions(x, fParentNodes, fDraggedNodes);
4578
+ result.push({ fDraggedNode: x, fParentNodes, ...restrictions }, ...this._getChildrenItemsToDrag(x, restrictions));
4579
+ });
4580
+ this._applyCommonRestrictions(result);
4581
+ return result;
4582
+ }
4583
+ _getNodeMoveRestrictions(fNode, fParentNodes, fDraggedNodes) {
4584
+ return this._fMediator.execute(new CalculateNodeMoveRestrictionsRequest(fNode, this._isParentNodeInArray(fParentNodes, fDraggedNodes)));
4585
+ }
4586
+ _isParentNodeInArray(fParentNodes, fDraggedNodes) {
4587
+ return this._fMediator.execute(new IsArrayHasParentNodeRequest(fParentNodes, fDraggedNodes));
4588
+ }
4589
+ _getChildrenItemsToDrag(node, restrictions) {
4590
+ return this._getChildrenNodes(node.fId).map((x) => ({ fDraggedNode: x, ...restrictions }));
4591
+ }
4592
+ _getChildrenNodes(fId) {
4593
+ return this._fMediator.execute(new GetDeepChildrenNodesAndGroupsRequest(fId));
4594
+ }
4595
+ _applyCommonRestrictions(restrictions) {
4596
+ const commonRestrictions = this._fMediator.execute(new CalculateCommonNodeMoveRestrictionsRequest(restrictions));
4597
+ restrictions.forEach((x) => {
4598
+ x.min = commonRestrictions.min;
4599
+ x.max = commonRestrictions.max;
4600
+ });
4601
+ }
4602
+ getAllOutputIds(items) {
4603
+ return flatMap(items, (item) => this.getOutputsForNode(item.fDraggedNode).map((x) => x.fId));
4604
+ }
4605
+ getOutputsForNode(node) {
4606
+ return this._fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));
4607
+ }
4608
+ getAllInputIds(items) {
4609
+ return flatMap(items, (item) => this.getInputsForNode(item.fDraggedNode).map((x) => x.fId));
4610
+ }
4611
+ getInputsForNode(node) {
4612
+ return this._fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
4613
+ }
4614
+ getDragHandlersFromNodes(items) {
4615
+ let result = [];
4616
+ items.forEach((node) => {
4617
+ result.push(new NodeDragHandler(this._fComponentsStore, node.fDraggedNode, { min: node.min, max: node.max }), ...(node.fParentNodes || []).map(() => new NodeResizeByChildDragHandler(this._fDraggableDataContext)));
4618
+ });
4619
+ return result;
4620
+ }
4621
+ getDragHandlersWithConnections(handlers, outputIds, inputIds) {
4622
+ let result = handlers;
4623
+ handlers.filter((x) => x instanceof NodeDragHandler).forEach((x) => {
4624
+ this._fMediator.execute(new PutOutputConnectionHandlersToArrayRequest(x, inputIds, result));
4625
+ this._fMediator.execute(new PutInputConnectionHandlersToArrayRequest(x, outputIds, result));
4894
4626
  });
4895
4627
  return result;
4896
4628
  }
4897
- getChildrenItemsToDrag(node, restrictions) {
4898
- return this.getChildrenNodes(node.fId).map((x) => ({ node: x, ...restrictions }));
4629
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4630
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution });
4631
+ };
4632
+ CreateMoveNodesDragModelFromSelectionExecution = __decorate([
4633
+ FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)
4634
+ ], CreateMoveNodesDragModelFromSelectionExecution);
4635
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution, decorators: [{
4636
+ type: Injectable
4637
+ }] });
4638
+
4639
+ const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [
4640
+ CalculateCommonNodeMoveRestrictionsExecution,
4641
+ CalculateNodeMoveRestrictionsExecution,
4642
+ PutInputConnectionHandlersToArrayExecution,
4643
+ PutOutputConnectionHandlersToArrayExecution,
4644
+ CreateMoveNodesDragModelFromSelectionExecution,
4645
+ ];
4646
+
4647
+ class LineAlignmentPreparationRequest {
4648
+ }
4649
+
4650
+ class LineAlignmentDragHandler {
4651
+ _fComponentsStore;
4652
+ _lineService;
4653
+ _size;
4654
+ _draggedNodeRect;
4655
+ _rects;
4656
+ _restrictions;
4657
+ _debounceTimer = null;
4658
+ _transform;
4659
+ constructor(_fComponentsStore, _lineService, _size, _draggedNodeRect, _rects, _restrictions) {
4660
+ this._fComponentsStore = _fComponentsStore;
4661
+ this._lineService = _lineService;
4662
+ this._size = _size;
4663
+ this._draggedNodeRect = _draggedNodeRect;
4664
+ this._rects = _rects;
4665
+ this._restrictions = _restrictions;
4666
+ this._transform = this._fComponentsStore.fCanvas?.transform;
4667
+ }
4668
+ onPointerMove(difference) {
4669
+ const restrictedDifference = this._getDifference(difference);
4670
+ if (this._debounceTimer) {
4671
+ clearTimeout(this._debounceTimer);
4672
+ }
4673
+ this._debounceTimer = setTimeout(() => this._drawIntersectingLines(restrictedDifference), 15);
4674
+ }
4675
+ _drawIntersectingLines(difference) {
4676
+ const intersect = this.findNearestCoordinate(difference);
4677
+ if (intersect.xResult.value !== undefined) {
4678
+ this._lineService.drawVerticalLine(intersect.xResult.value, this._size, this._transform);
4679
+ }
4680
+ else {
4681
+ this._lineService.hideVerticalLine();
4682
+ }
4683
+ if (intersect.yResult.value !== undefined) {
4684
+ this._lineService.drawHorizontalLine(intersect.yResult.value, this._size, this._transform);
4685
+ }
4686
+ else {
4687
+ this._lineService.hideHorizontalLine();
4688
+ }
4689
+ }
4690
+ _getDifference(difference) {
4691
+ return {
4692
+ x: Math.min(Math.max(difference.x, this._restrictions.min.x), this._restrictions.max.x),
4693
+ y: Math.min(Math.max(difference.y, this._restrictions.min.y), this._restrictions.max.y)
4694
+ };
4695
+ }
4696
+ findNearestCoordinate(difference) {
4697
+ const rect = RectExtensions.addPoint(this._draggedNodeRect, difference);
4698
+ return findClosestAlignment(this._rects, rect, this._fComponentsStore.fLineAlignment.fAlignThreshold);
4699
+ }
4700
+ onPointerUp() {
4701
+ this._lineService.hideVerticalLine();
4702
+ this._lineService.hideHorizontalLine();
4703
+ if (this._debounceTimer) {
4704
+ clearTimeout(this._debounceTimer);
4705
+ this._debounceTimer = null;
4706
+ }
4707
+ }
4708
+ }
4709
+
4710
+ class LineElement {
4711
+ hostElement;
4712
+ element;
4713
+ constructor(fBrowser, hostElement) {
4714
+ this.hostElement = hostElement;
4715
+ this.element = fBrowser.document.createElement('div');
4716
+ this.hostElement.appendChild(this.element);
4717
+ this.element.classList.add('f-line');
4718
+ }
4719
+ hide() {
4720
+ this.element.style.display = 'none';
4721
+ }
4722
+ show() {
4723
+ this.element.style.display = 'block';
4724
+ }
4725
+ draw(object) {
4726
+ this.element.style.position = 'absolute';
4727
+ Object.keys(object).forEach((key) => {
4728
+ // @ts-ignore
4729
+ this.element.style[key] = object[key] + 'px';
4730
+ });
4731
+ }
4732
+ }
4733
+
4734
+ class LineService {
4735
+ hostElement;
4736
+ fHorizontalLine;
4737
+ fVerticalLine;
4738
+ constructor(fBrowser, hostElement) {
4739
+ this.hostElement = hostElement;
4740
+ this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);
4741
+ this.fVerticalLine = new LineElement(fBrowser, this.hostElement);
4742
+ this.fHorizontalLine.hide();
4743
+ this.fVerticalLine.hide();
4744
+ }
4745
+ drawVerticalLine(x, size, transform) {
4746
+ this.fVerticalLine.show();
4747
+ this.fVerticalLine.draw({
4748
+ left: x * transform.scale + transform.position.x + transform.scaledPosition.x,
4749
+ top: 0,
4750
+ width: 1,
4751
+ height: size.height
4752
+ });
4753
+ }
4754
+ drawHorizontalLine(y, size, transform) {
4755
+ this.fHorizontalLine.show();
4756
+ this.fHorizontalLine.draw({
4757
+ left: 0,
4758
+ top: y * transform.scale + transform.position.y + transform.scaledPosition.y,
4759
+ width: size.width,
4760
+ height: 1
4761
+ });
4762
+ }
4763
+ hideVerticalLine() {
4764
+ this.fVerticalLine.hide();
4765
+ }
4766
+ hideHorizontalLine() {
4767
+ this.fHorizontalLine.hide();
4768
+ }
4769
+ }
4770
+
4771
+ const F_LINE_ALIGNMENT = new InjectionToken('F_LINE_ALIGNMENT');
4772
+ class FLineAlignmentBase {
4773
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4774
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FLineAlignmentBase, ngImport: i0 });
4775
+ }
4776
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentBase, decorators: [{
4777
+ type: Directive
4778
+ }] });
4779
+
4780
+ class FLineAlignmentComponent extends FLineAlignmentBase {
4781
+ fAlignThreshold = 10;
4782
+ _fMediator = inject(FMediator);
4783
+ _elementReference = inject(ElementRef);
4784
+ get hostElement() {
4785
+ return this._elementReference.nativeElement;
4786
+ }
4787
+ ngOnInit() {
4788
+ this._fMediator.execute(new AddLineAlignmentToStoreRequest(this));
4789
+ }
4790
+ ngOnDestroy() {
4791
+ this._fMediator.execute(new RemoveLineAlignmentFromStoreRequest());
4792
+ }
4793
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
4794
+ 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: [
4795
+ { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }
4796
+ ], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0, template: "", isInline: true, styles: [":host{display:block;position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}\n"] });
4797
+ }
4798
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentComponent, decorators: [{
4799
+ type: Component,
4800
+ args: [{ selector: "f-line-alignment", template: "", exportAs: "fComponent", host: {
4801
+ 'class': 'f-line-alignment f-component'
4802
+ }, providers: [
4803
+ { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }
4804
+ ], styles: [":host{display:block;position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}\n"] }]
4805
+ }], propDecorators: { fAlignThreshold: [{
4806
+ type: Input
4807
+ }] } });
4808
+
4809
+ const F_LINE_ALIGNMENT_PROVIDERS = [
4810
+ FLineAlignmentComponent
4811
+ ];
4812
+
4813
+ let LineAlignmentPreparationExecution = class LineAlignmentPreparationExecution {
4814
+ _fMediator = inject(FMediator);
4815
+ _fComponentsStore = inject(FComponentsStore);
4816
+ _fDraggableDataContext = inject(FDraggableDataContext);
4817
+ _fBrowser = inject(BrowserService);
4818
+ _lineService;
4819
+ handle(request) {
4820
+ this._addLineAlignmentDragHandler(this._getDraggedNodes());
4899
4821
  }
4900
- getChildrenNodes(fId) {
4901
- return this._fMediator.send(new GetDeepChildrenNodesAndGroupsRequest(fId));
4822
+ _getDraggedNodes() {
4823
+ return this._fDraggableDataContext.draggableItems
4824
+ .filter((x) => x instanceof NodeDragHandler)
4825
+ .map((x) => x.fNode);
4902
4826
  }
4903
- getAllOutputIds(items) {
4904
- return flatMap(items, (item) => this.getOutputsForNode(item.node).map((x) => x.fId));
4827
+ _addLineAlignmentDragHandler(fNodes) {
4828
+ this._fDraggableDataContext.draggableItems.push(new LineAlignmentDragHandler(this._fComponentsStore, this._lineService || this._createLineService(), this._getFlowHostSize(), this._getDraggedNodesBoundingRect(fNodes), this._getStaticNodeRects(fNodes), this._getCommonRestrictions()));
4905
4829
  }
4906
- getOutputsForNode(node) {
4907
- return this._fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));
4830
+ _getFlowHostSize() {
4831
+ return this._fMediator.send(new GetFlowHostElementRequest())
4832
+ .getBoundingClientRect();
4908
4833
  }
4909
- getAllInputIds(items) {
4910
- return flatMap(items, (item) => this.getInputsForNode(item.node).map((x) => x.fId));
4834
+ _createLineService() {
4835
+ this._lineService = new LineService(this._fBrowser, this._fComponentsStore.fLineAlignment.hostElement);
4836
+ return this._lineService;
4911
4837
  }
4912
- getInputsForNode(node) {
4913
- return this._fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));
4838
+ _getDraggedNodesBoundingRect(fNodes) {
4839
+ return RectExtensions.union(fNodes.map((x) => {
4840
+ return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
4841
+ })) || RectExtensions.initialize();
4914
4842
  }
4915
- getDragHandlersFromNodes(items) {
4916
- let result = [];
4917
- items.forEach((node) => {
4918
- result.push(new NodeDragHandler(this._fDraggableDataContext, this._fComponentsStore, node.node, node.min, node.max), ...(node.parentNodes || []).map(() => new NodeResizeByChildDragHandler(this._fDraggableDataContext)));
4843
+ _getStaticNodeRects(fNodes) {
4844
+ return this._getStaticNodes(fNodes).map((x) => {
4845
+ return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
4919
4846
  });
4920
- return result;
4921
4847
  }
4922
- getDragHandlersWithConnections(handlers, outputIds, inputIds) {
4923
- let result = handlers;
4924
- handlers.filter((x) => x instanceof NodeDragHandler).forEach((dragHandler) => {
4925
- this._fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler, inputIds, result));
4926
- this._fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler, outputIds, result));
4927
- });
4928
- return result;
4848
+ _getStaticNodes(fNodes) {
4849
+ return this._fComponentsStore.fNodes
4850
+ .filter((x) => !fNodes.includes(x));
4929
4851
  }
4930
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4931
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution });
4852
+ _getCommonRestrictions() {
4853
+ return this._fDraggableDataContext.draggableItems
4854
+ .filter((x) => x instanceof NodeDragHandler)[0].restrictions;
4855
+ }
4856
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: LineAlignmentPreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4857
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: LineAlignmentPreparationExecution });
4932
4858
  };
4933
- CreateMoveNodesDragModelFromSelectionExecution = __decorate([
4934
- FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)
4935
- ], CreateMoveNodesDragModelFromSelectionExecution);
4936
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: CreateMoveNodesDragModelFromSelectionExecution, decorators: [{
4859
+ LineAlignmentPreparationExecution = __decorate([
4860
+ FExecutionRegister(LineAlignmentPreparationRequest)
4861
+ ], LineAlignmentPreparationExecution);
4862
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: LineAlignmentPreparationExecution, decorators: [{
4937
4863
  type: Injectable
4938
4864
  }] });
4939
4865
 
4940
- const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [
4941
- GetNodeMoveRestrictionsExecution,
4942
- PutInputConnectionHandlersToArrayExecution,
4943
- PutOutputConnectionHandlersToArrayExecution,
4944
- CreateMoveNodesDragModelFromSelectionExecution,
4945
- ];
4946
-
4947
4866
  class NodeDragToParentFinalizeRequest {
4948
4867
  event;
4949
4868
  constructor(event) {
@@ -5134,7 +5053,7 @@ let NodeDragToParentPreparationExecution = class NodeDragToParentPreparationExec
5134
5053
  _getNotDraggedNodes(draggedNodes) {
5135
5054
  return this.fNodes.filter((x) => !draggedNodes.includes(x));
5136
5055
  }
5137
- 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 });
5056
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeDragToParentPreparationExecution, deps: [{ token: i2$1.FMediator }, { token: FDraggableDataContext }, { token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
5138
5057
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeDragToParentPreparationExecution });
5139
5058
  };
5140
5059
  NodeDragToParentPreparationExecution = __decorate([
@@ -5142,7 +5061,7 @@ NodeDragToParentPreparationExecution = __decorate([
5142
5061
  ], NodeDragToParentPreparationExecution);
5143
5062
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeDragToParentPreparationExecution, decorators: [{
5144
5063
  type: Injectable
5145
- }], ctorParameters: () => [{ type: i2.FMediator }, { type: FDraggableDataContext }, { type: FComponentsStore }] });
5064
+ }], ctorParameters: () => [{ type: i2$1.FMediator }, { type: FDraggableDataContext }, { type: FComponentsStore }] });
5146
5065
 
5147
5066
  let NodeDragToParentPreparationValidator = class NodeDragToParentPreparationValidator {
5148
5067
  fDraggableDataContext;
@@ -5184,27 +5103,38 @@ let NodeMovePreparationExecution = class NodeMovePreparationExecution {
5184
5103
  get _fHost() {
5185
5104
  return this._fComponentsStore.fFlow.hostElement;
5186
5105
  }
5106
+ _fNode;
5187
5107
  handle(request) {
5188
- const itemsToDrag = this._calculateDraggableItems(this._getNode(request.event.targetElement));
5189
- this._initializeLineAlignment(itemsToDrag);
5108
+ if (!this._isValid(request)) {
5109
+ return;
5110
+ }
5190
5111
  this._fDraggableDataContext.onPointerDownScale = this._transform.scale;
5191
5112
  this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
5192
5113
  .elementTransform(this._fHost).div(this._transform.scale);
5193
- this._fDraggableDataContext.draggableItems = itemsToDrag;
5194
- }
5195
- _getNode(targetElement) {
5196
- const result = this._fComponentsStore.fNodes.find(n => n.isContains(targetElement));
5197
- if (!result) {
5198
- throw new Error('Node not found');
5114
+ this._fDraggableDataContext.draggableItems = this._calculateDraggedItems(this._fNode);
5115
+ if (this._fComponentsStore.fLineAlignment) {
5116
+ this._fMediator.execute(new LineAlignmentPreparationRequest());
5199
5117
  }
5200
- return result;
5118
+ }
5119
+ _isValid(request) {
5120
+ return this._fDraggableDataContext.isEmpty()
5121
+ && this._isDragHandleElement(request.event.targetElement)
5122
+ && !!this._getNode(request.event.targetElement);
5123
+ }
5124
+ _isDragHandleElement(element) {
5125
+ return isClosestElementHasClass(element, '.f-drag-handle');
5126
+ }
5127
+ _getNode(element) {
5128
+ this._fNode = this._fComponentsStore.fNodes
5129
+ .find(x => x.isContains(element) && !x.fDraggingDisabled);
5130
+ return this._fNode;
5201
5131
  }
5202
5132
  //We drag nodes from selection model
5203
- _calculateDraggableItems(fNode) {
5133
+ _calculateDraggedItems(fNode) {
5204
5134
  let result = [];
5205
5135
  if (!fNode.fSelectionDisabled) {
5206
5136
  // Need to select node before drag
5207
- this._fMediator.send(new SelectAndUpdateNodeLayerRequest(fNode));
5137
+ this._fMediator.execute(new SelectAndUpdateNodeLayerRequest(fNode));
5208
5138
  result = this._dragModelFromSelection();
5209
5139
  }
5210
5140
  else {
@@ -5214,14 +5144,7 @@ let NodeMovePreparationExecution = class NodeMovePreparationExecution {
5214
5144
  return result;
5215
5145
  }
5216
5146
  _dragModelFromSelection(nodeWithDisabledSelection) {
5217
- return this._fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection));
5218
- }
5219
- _initializeLineAlignment(itemsToDrag) {
5220
- this._fDraggableDataContext.fLineAlignment?.initialize(this._fComponentsStore.fNodes, this._filterNodesFromDraggableItems(itemsToDrag));
5221
- }
5222
- _filterNodesFromDraggableItems(items) {
5223
- return items.filter((x) => x instanceof NodeDragHandler)
5224
- .map(x => x.fNode);
5147
+ return this._fMediator.execute(new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection));
5225
5148
  }
5226
5149
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5227
5150
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationExecution });
@@ -5233,39 +5156,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
5233
5156
  type: Injectable
5234
5157
  }] });
5235
5158
 
5236
- let NodeMovePreparationValidator = class NodeMovePreparationValidator {
5237
- _fComponentsStore = inject(FComponentsStore);
5238
- _fDraggableDataContext = inject(FDraggableDataContext);
5239
- handle(request) {
5240
- return this._isDragHandlesEmpty()
5241
- && this._isDragHandleElement(request.event.targetElement)
5242
- && this._isNodeCanBeDragged(this._getNode(request.event.targetElement));
5243
- }
5244
- _isDragHandlesEmpty() {
5245
- return !this._fDraggableDataContext.draggableItems.length;
5246
- }
5247
- _isDragHandleElement(element) {
5248
- return isClosestElementHasClass(element, '.f-drag-handle');
5249
- }
5250
- _isNodeCanBeDragged(fNode) {
5251
- return !!fNode && !fNode.fDraggingDisabled;
5252
- }
5253
- _getNode(element) {
5254
- return this._fComponentsStore.fNodes.find(x => x.isContains(element));
5255
- }
5256
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5257
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationValidator });
5258
- };
5259
- NodeMovePreparationValidator = __decorate([
5260
- FValidatorRegister(NodeMovePreparationRequest)
5261
- ], NodeMovePreparationValidator);
5262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeMovePreparationValidator, decorators: [{
5263
- type: Injectable
5264
- }] });
5265
-
5266
5159
  const NODE_MOVE_PREPARATION_PROVIDERS = [
5267
5160
  NodeMovePreparationExecution,
5268
- NodeMovePreparationValidator,
5269
5161
  ];
5270
5162
 
5271
5163
  class NodeMoveFinalizeRequest {
@@ -5291,7 +5183,6 @@ let NodeMoveFinalizeExecution = class NodeMoveFinalizeExecution {
5291
5183
  .find((x) => x instanceof NodeDragHandler);
5292
5184
  const differenceWithCellSize = firstNodeOrGroup.getDifferenceWithCellSize(difference);
5293
5185
  this._finalizeMove(differenceWithCellSize);
5294
- this._fDraggableDataContext.fLineAlignment?.complete();
5295
5186
  this._applyConnectionUnderDroppedNode();
5296
5187
  }
5297
5188
  _isValid() {
@@ -5316,7 +5207,9 @@ let NodeMoveFinalizeExecution = class NodeMoveFinalizeExecution {
5316
5207
  return this._applyLineAlignmentDifference(difference, this._getLineAlignmentDifference(difference));
5317
5208
  }
5318
5209
  _getLineAlignmentDifference(difference) {
5319
- return this._fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);
5210
+ return this._fDraggableDataContext.draggableItems
5211
+ .find((x) => x instanceof LineAlignmentDragHandler)
5212
+ ?.findNearestCoordinate(difference);
5320
5213
  }
5321
5214
  _applyLineAlignmentDifference(difference, intersection) {
5322
5215
  if (intersection) {
@@ -5344,6 +5237,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
5344
5237
 
5345
5238
  const NODE_PROVIDERS = [
5346
5239
  ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,
5240
+ LineAlignmentPreparationExecution,
5347
5241
  NodeMoveFinalizeExecution,
5348
5242
  ...NODE_MOVE_PREPARATION_PROVIDERS,
5349
5243
  ...NODE_DRAG_TO_PARENT_PREPARATION_PROVIDERS,
@@ -5556,7 +5450,7 @@ let GetNormalizedChildrenNodesRectExecution = class GetNormalizedChildrenNodesRe
5556
5450
  concatRectWithParentPadding(rect, padding) {
5557
5451
  return RectExtensions.initialize(rect.x - padding[0], rect.y - padding[1], rect.width + padding[0] + padding[2], rect.height + +padding[1] + padding[3]);
5558
5452
  }
5559
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedChildrenNodesRectExecution, deps: [{ token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5453
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedChildrenNodesRectExecution, deps: [{ token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5560
5454
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedChildrenNodesRectExecution });
5561
5455
  };
5562
5456
  GetNormalizedChildrenNodesRectExecution = __decorate([
@@ -5564,7 +5458,7 @@ GetNormalizedChildrenNodesRectExecution = __decorate([
5564
5458
  ], GetNormalizedChildrenNodesRectExecution);
5565
5459
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNormalizedChildrenNodesRectExecution, decorators: [{
5566
5460
  type: Injectable
5567
- }], ctorParameters: () => [{ type: i2.FMediator }] });
5461
+ }], ctorParameters: () => [{ type: i2$1.FMediator }] });
5568
5462
 
5569
5463
  class GetNodeResizeRestrictionsRequest {
5570
5464
  fNode;
@@ -5593,7 +5487,7 @@ let GetNodeResizeRestrictionsExecution = class GetNodeResizeRestrictionsExecutio
5593
5487
  getNodePaddings(node, rect) {
5594
5488
  return this.fMediator.send(new GetNodePaddingRequest(node, rect));
5595
5489
  }
5596
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeResizeRestrictionsExecution, deps: [{ token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5490
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeResizeRestrictionsExecution, deps: [{ token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5597
5491
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeResizeRestrictionsExecution });
5598
5492
  };
5599
5493
  GetNodeResizeRestrictionsExecution = __decorate([
@@ -5601,7 +5495,7 @@ GetNodeResizeRestrictionsExecution = __decorate([
5601
5495
  ], GetNodeResizeRestrictionsExecution);
5602
5496
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetNodeResizeRestrictionsExecution, decorators: [{
5603
5497
  type: Injectable
5604
- }], ctorParameters: () => [{ type: i2.FMediator }] });
5498
+ }], ctorParameters: () => [{ type: i2$1.FMediator }] });
5605
5499
 
5606
5500
  class NodeResizeFinalizeRequest {
5607
5501
  event;
@@ -5727,7 +5621,7 @@ let NodeResizePreparationExecution = class NodeResizePreparationExecution {
5727
5621
  return this.fComponentsStore
5728
5622
  .fNodes.find(n => n.isContains(targetElement));
5729
5623
  }
5730
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeResizePreparationExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5624
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeResizePreparationExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5731
5625
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeResizePreparationExecution });
5732
5626
  };
5733
5627
  NodeResizePreparationExecution = __decorate([
@@ -5735,7 +5629,7 @@ NodeResizePreparationExecution = __decorate([
5735
5629
  ], NodeResizePreparationExecution);
5736
5630
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NodeResizePreparationExecution, decorators: [{
5737
5631
  type: Injectable
5738
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
5632
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2$1.FMediator }] });
5739
5633
 
5740
5634
  let NodeResizePreparationValidator = class NodeResizePreparationValidator {
5741
5635
  fComponentsStore;
@@ -5879,7 +5773,7 @@ let SingleSelectExecution = class SingleSelectExecution {
5879
5773
  });
5880
5774
  this.fDraggableDataContext.selectedItems = [];
5881
5775
  }
5882
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SingleSelectExecution, deps: [{ token: i1.PlatformService }, { token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5776
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SingleSelectExecution, deps: [{ token: i1.PlatformService }, { token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5883
5777
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SingleSelectExecution });
5884
5778
  };
5885
5779
  SingleSelectExecution = __decorate([
@@ -5887,7 +5781,7 @@ SingleSelectExecution = __decorate([
5887
5781
  ], SingleSelectExecution);
5888
5782
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SingleSelectExecution, decorators: [{
5889
5783
  type: Injectable
5890
- }], ctorParameters: () => [{ type: i1.PlatformService }, { type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
5784
+ }], ctorParameters: () => [{ type: i1.PlatformService }, { type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2$1.FMediator }] });
5891
5785
 
5892
5786
  const SINGLE_SELECT_PROVIDERS = [
5893
5787
  SingleSelectExecution,
@@ -6002,7 +5896,7 @@ let ExternalItemFinalizeExecution = class ExternalItemFinalizeExecution {
6002
5896
  getRectInCanvas() {
6003
5897
  return this.fMediator.send(new GetNormalizedElementRectRequest(this.dragHandler.placeholder, false));
6004
5898
  }
6005
- 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 });
5899
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ExternalItemFinalizeExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2$1.FMediator }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
6006
5900
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ExternalItemFinalizeExecution });
6007
5901
  };
6008
5902
  ExternalItemFinalizeExecution = __decorate([
@@ -6010,7 +5904,7 @@ ExternalItemFinalizeExecution = __decorate([
6010
5904
  ], ExternalItemFinalizeExecution);
6011
5905
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ExternalItemFinalizeExecution, decorators: [{
6012
5906
  type: Injectable
6013
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }, { type: i1.BrowserService }] });
5907
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2$1.FMediator }, { type: i1.BrowserService }] });
6014
5908
 
6015
5909
  const EXTERNAL_ITEM_FINALIZE_PROVIDERS = [
6016
5910
  ExternalItemFinalizeExecution,
@@ -6479,7 +6373,7 @@ let MinimapDragPreparationExecution = class MinimapDragPreparationExecution {
6479
6373
  getFlowRect() {
6480
6374
  return RectExtensions.fromElement(this.flowHost);
6481
6375
  }
6482
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MinimapDragPreparationExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
6376
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MinimapDragPreparationExecution, deps: [{ token: FComponentsStore }, { token: i2$1.FMediator }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
6483
6377
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MinimapDragPreparationExecution });
6484
6378
  };
6485
6379
  MinimapDragPreparationExecution = __decorate([
@@ -6487,7 +6381,7 @@ MinimapDragPreparationExecution = __decorate([
6487
6381
  ], MinimapDragPreparationExecution);
6488
6382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MinimapDragPreparationExecution, decorators: [{
6489
6383
  type: Injectable
6490
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }, { type: FDraggableDataContext }] });
6384
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2$1.FMediator }, { type: FDraggableDataContext }] });
6491
6385
 
6492
6386
  let MinimapDragPreparationValidator = class MinimapDragPreparationValidator {
6493
6387
  fComponentsStore;
@@ -6864,7 +6758,7 @@ let SelectionAreaPreparationExecution = class SelectionAreaPreparationExecution
6864
6758
  this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
6865
6759
  .elementTransform(this.flowHost);
6866
6760
  }
6867
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectionAreaPreparationExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
6761
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectionAreaPreparationExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
6868
6762
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectionAreaPreparationExecution });
6869
6763
  };
6870
6764
  SelectionAreaPreparationExecution = __decorate([
@@ -6872,7 +6766,7 @@ SelectionAreaPreparationExecution = __decorate([
6872
6766
  ], SelectionAreaPreparationExecution);
6873
6767
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectionAreaPreparationExecution, decorators: [{
6874
6768
  type: Injectable
6875
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }] });
6769
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2$1.FMediator }] });
6876
6770
 
6877
6771
  let SelectionAreaPreparationValidator = class SelectionAreaPreparationValidator {
6878
6772
  fDraggableDataContext;
@@ -6942,38 +6836,360 @@ class FSelectionAreaComponent extends FSelectionAreaBase {
6942
6836
  onPointerDown(event) {
6943
6837
  this._fMediator.send(new SelectionAreaPreparationRequest(event, this));
6944
6838
  }
6945
- onPointerUp(event) {
6946
- this._fMediator.send(new SelectionAreaFinalizeRequest(event));
6839
+ onPointerUp(event) {
6840
+ this._fMediator.send(new SelectionAreaFinalizeRequest(event));
6841
+ }
6842
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FSelectionAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
6843
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: FSelectionAreaComponent, selector: "f-selection-area", host: { classAttribute: "f-selection-area f-component" }, providers: [
6844
+ { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },
6845
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true, styles: [":host{position:absolute}\n"] });
6846
+ }
6847
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FSelectionAreaComponent, decorators: [{
6848
+ type: Component,
6849
+ args: [{ selector: "f-selection-area", template: ``, host: {
6850
+ 'class': 'f-selection-area f-component'
6851
+ }, providers: [
6852
+ { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },
6853
+ ], styles: [":host{position:absolute}\n"] }]
6854
+ }] });
6855
+
6856
+ const F_SELECTION_AREA_PROVIDERS = [
6857
+ FSelectionAreaComponent
6858
+ ];
6859
+
6860
+ const F_DRAGGABLE_PROVIDERS = [
6861
+ ...CANVAS_PROVIDERS,
6862
+ ...CONNECTIONS_PROVIDERS,
6863
+ ...DRAG_AND_DROP_COMMON_PROVIDERS,
6864
+ ...SINGLE_SELECT_PROVIDERS,
6865
+ ...F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS,
6866
+ ...NODE_PROVIDERS,
6867
+ ...NODE_RESIZE_PROVIDERS,
6868
+ ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,
6869
+ ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS
6870
+ ];
6871
+
6872
+ let FindInputAtPositionExecution = class FindInputAtPositionExecution {
6873
+ _fMediator = inject(FMediator);
6874
+ _fComponentsStore = inject(FComponentsStore);
6875
+ _fDraggableDataContext = inject(FDraggableDataContext);
6876
+ _fBrowser = inject(BrowserService);
6877
+ get _fNodes() {
6878
+ return this._fComponentsStore.fNodes;
6879
+ }
6880
+ get _fSnapConnection() {
6881
+ return this._fComponentsStore.fSnapConnection;
6882
+ }
6883
+ handle(payload) {
6884
+ const fInputs = this._findInputsAtPosition(payload);
6885
+ return fInputs.length > 0 ? fInputs[0] : undefined;
6886
+ }
6887
+ _findInputsAtPosition(request) {
6888
+ const result = [];
6889
+ result.push(...this._getConnectableInputsAtPosition(request));
6890
+ const fClosestInput = this._calculateClosetInput(request);
6891
+ if (fClosestInput) {
6892
+ result.unshift(fClosestInput.fConnector);
6893
+ }
6894
+ const fInput = this._getFirstConnectableInputOfNodeAtPosition(request);
6895
+ if (fInput) {
6896
+ result.push(fInput);
6897
+ }
6898
+ return result;
6899
+ }
6900
+ _getConnectableInputsAtPosition(request) {
6901
+ return request.canBeConnectedInputs.filter((x) => {
6902
+ return RectExtensions.isIncludePoint(x.fRect, this._calculateDifference(request.pointerPosition));
6903
+ }).map((x) => x.fConnector);
6904
+ }
6905
+ _calculateDifference(position) {
6906
+ return Point.fromPoint(position)
6907
+ .elementTransform(this._fComponentsStore.flowHost)
6908
+ .div(this._fDraggableDataContext.onPointerDownScale)
6909
+ .sub(this._fDraggableDataContext.onPointerDownPosition);
6910
+ }
6911
+ //if the closest input is valid, return it
6912
+ _calculateClosetInput(request) {
6913
+ if (!this._fSnapConnection) {
6914
+ return undefined;
6915
+ }
6916
+ const position = Point.fromPoint(request.toConnectorRect).add(this._calculateDifference(request.pointerPosition));
6917
+ const fClosestInput = this._fMediator.send(new CalculateClosestInputRequest(position, request.canBeConnectedInputs));
6918
+ return this._isValidClosestInput(fClosestInput) ? fClosestInput : undefined;
6919
+ }
6920
+ _isValidClosestInput(fClosestInput) {
6921
+ return !!fClosestInput && fClosestInput.distance < this._fSnapConnection.fSnapThreshold;
6922
+ }
6923
+ //if node placed in position and fConnectOnNode is true, return the first connectable input of the node
6924
+ _getFirstConnectableInputOfNodeAtPosition(request) {
6925
+ return this._getElementsFromPoint(request.pointerPosition)
6926
+ .map((x) => this._findConnectableNode(x))
6927
+ .filter((x) => !!x)
6928
+ .map((x) => this._findFirstConnectableInputOfNode(request.canBeConnectedInputs, x))
6929
+ .find((x) => !!x);
6930
+ }
6931
+ _getElementsFromPoint(position) {
6932
+ return this._fBrowser.document.elementsFromPoint(position.x, position.y);
6933
+ }
6934
+ _findConnectableNode(element) {
6935
+ return this._fNodes.find((x) => x.isContains(element) && x.fConnectOnNode);
6936
+ }
6937
+ _findFirstConnectableInputOfNode(connectableInputs, fNode) {
6938
+ return connectableInputs.find((x) => x.fConnector.fNodeId === fNode.fId)?.fConnector;
6939
+ }
6940
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindInputAtPositionExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6941
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindInputAtPositionExecution });
6942
+ };
6943
+ FindInputAtPositionExecution = __decorate([
6944
+ FExecutionRegister(FindInputAtPositionRequest)
6945
+ ], FindInputAtPositionExecution);
6946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindInputAtPositionExecution, decorators: [{
6947
+ type: Injectable
6948
+ }] });
6949
+
6950
+ class GetAllCanBeConnectedInputsAndRectsRequest {
6951
+ fOutput;
6952
+ constructor(fOutput) {
6953
+ this.fOutput = fOutput;
6954
+ }
6955
+ }
6956
+
6957
+ class GetConnectorAndRectRequest {
6958
+ fConnector;
6959
+ constructor(fConnector) {
6960
+ this.fConnector = fConnector;
6961
+ }
6962
+ }
6963
+
6964
+ let GetConnectorAndRectExecution = class GetConnectorAndRectExecution {
6965
+ _fMediator = inject(FMediator);
6966
+ handle(request) {
6967
+ return {
6968
+ fConnector: request.fConnector,
6969
+ fRect: this._getConnectorRect(request.fConnector)
6970
+ };
6971
+ }
6972
+ _getConnectorRect(fConnector) {
6973
+ return this._fMediator.send(new GetNormalizedElementRectRequest(fConnector.hostElement, true));
6974
+ }
6975
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetConnectorAndRectExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6976
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetConnectorAndRectExecution });
6977
+ };
6978
+ GetConnectorAndRectExecution = __decorate([
6979
+ FExecutionRegister(GetConnectorAndRectRequest)
6980
+ ], GetConnectorAndRectExecution);
6981
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetConnectorAndRectExecution, decorators: [{
6982
+ type: Injectable
6983
+ }] });
6984
+
6985
+ let GetAllCanBeConnectedInputsAndRectsExecution = class GetAllCanBeConnectedInputsAndRectsExecution {
6986
+ _fMediator = inject(FMediator);
6987
+ _fComponentsStore = inject(FComponentsStore);
6988
+ get _fInputs() {
6989
+ return this._fComponentsStore.fInputs;
6990
+ }
6991
+ handle(payload) {
6992
+ return this._getCanBeConnectedInputs(payload.fOutput).map((x) => {
6993
+ return this._fMediator.execute(new GetConnectorAndRectRequest(x));
6994
+ });
6995
+ }
6996
+ _getCanBeConnectedInputs(fOutput) {
6997
+ let fInputs = [];
6998
+ if (fOutput.canBeConnectedInputs?.length) {
6999
+ fInputs = this._fInputs.filter((x) => fOutput.canBeConnectedInputs.includes(x.fId));
7000
+ }
7001
+ else {
7002
+ fInputs = this._fInputs.filter((x) => x.canBeConnected);
7003
+ if (!fOutput.isSelfConnectable) {
7004
+ fInputs = this._filterSelfConnectable(fInputs, fOutput);
7005
+ }
7006
+ }
7007
+ return fInputs;
7008
+ }
7009
+ _filterSelfConnectable(fInputs, fOutput) {
7010
+ return fInputs.filter((x) => fOutput.fNodeId !== x.fNodeId);
7011
+ }
7012
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetAllCanBeConnectedInputsAndRectsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7013
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetAllCanBeConnectedInputsAndRectsExecution });
7014
+ };
7015
+ GetAllCanBeConnectedInputsAndRectsExecution = __decorate([
7016
+ FExecutionRegister(GetAllCanBeConnectedInputsAndRectsRequest)
7017
+ ], GetAllCanBeConnectedInputsAndRectsExecution);
7018
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetAllCanBeConnectedInputsAndRectsExecution, decorators: [{
7019
+ type: Injectable
7020
+ }] });
7021
+
7022
+ class MarkAllCanBeConnectedInputsRequest {
7023
+ fInputs;
7024
+ constructor(fInputs) {
7025
+ this.fInputs = fInputs;
7026
+ }
7027
+ }
7028
+
7029
+ const F_CSS_CLASS = {
7030
+ DRAG_AND_DROP: {
7031
+ DRAGGING: 'f-dragging',
7032
+ CONNECTIONS_DRAGGING: 'f-connections-dragging',
7033
+ },
7034
+ CONNECTOR: {
7035
+ OUTPUT_CONNECTED: 'f-node-output-connected',
7036
+ OUTPUT_NOT_CONNECTABLE: 'f-node-output-not-connectable',
7037
+ INPUT_CONNECTED: 'f-node-input-connected',
7038
+ INPUT_NOT_CONNECTABLE: 'f-node-input-not-connectable',
7039
+ INPUT_CAN_BE_CONNECTED_TO: 'f-node-input-can-be-connected-to',
7040
+ }
7041
+ };
7042
+
7043
+ let MarkAllCanBeConnectedInputsExecution = class MarkAllCanBeConnectedInputsExecution {
7044
+ _fComponentsStore = inject(FComponentsStore);
7045
+ handle(payload) {
7046
+ this._fComponentsStore.flowHost.classList.add(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);
7047
+ payload.fInputs.forEach((fInput) => this._markCanBeConnectedTo(fInput));
7048
+ }
7049
+ _markCanBeConnectedTo(fInput) {
7050
+ fInput.hostElement.classList.add(F_CSS_CLASS.CONNECTOR.INPUT_CAN_BE_CONNECTED_TO);
7051
+ }
7052
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkAllCanBeConnectedInputsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7053
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkAllCanBeConnectedInputsExecution });
7054
+ };
7055
+ MarkAllCanBeConnectedInputsExecution = __decorate([
7056
+ FExecutionRegister(MarkAllCanBeConnectedInputsRequest)
7057
+ ], MarkAllCanBeConnectedInputsExecution);
7058
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkAllCanBeConnectedInputsExecution, decorators: [{
7059
+ type: Injectable
7060
+ }] });
7061
+
7062
+ class RemoveInputFromStoreRequest {
7063
+ fComponent;
7064
+ constructor(fComponent) {
7065
+ this.fComponent = fComponent;
7066
+ }
7067
+ }
7068
+
7069
+ let RemoveInputFromStoreExecution = class RemoveInputFromStoreExecution {
7070
+ _fComponentsStore = inject(FComponentsStore);
7071
+ handle(request) {
7072
+ this._fComponentsStore.removeComponent(this._fComponentsStore.fInputs, request.fComponent);
7073
+ }
7074
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveInputFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7075
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveInputFromStoreExecution });
7076
+ };
7077
+ RemoveInputFromStoreExecution = __decorate([
7078
+ FExecutionRegister(RemoveInputFromStoreRequest)
7079
+ ], RemoveInputFromStoreExecution);
7080
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveInputFromStoreExecution, decorators: [{
7081
+ type: Injectable
7082
+ }] });
7083
+
7084
+ class RemoveOutletFromStoreRequest {
7085
+ fComponent;
7086
+ constructor(fComponent) {
7087
+ this.fComponent = fComponent;
7088
+ }
7089
+ }
7090
+
7091
+ let RemoveOutletFromStoreExecution = class RemoveOutletFromStoreExecution {
7092
+ _fComponentsStore = inject(FComponentsStore);
7093
+ handle(request) {
7094
+ this._fComponentsStore.removeComponent(this._fComponentsStore.fOutlets, request.fComponent);
7095
+ }
7096
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutletFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7097
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutletFromStoreExecution });
7098
+ };
7099
+ RemoveOutletFromStoreExecution = __decorate([
7100
+ FExecutionRegister(RemoveOutletFromStoreRequest)
7101
+ ], RemoveOutletFromStoreExecution);
7102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutletFromStoreExecution, decorators: [{
7103
+ type: Injectable
7104
+ }] });
7105
+
7106
+ class RemoveOutputFromStoreRequest {
7107
+ fComponent;
7108
+ constructor(fComponent) {
7109
+ this.fComponent = fComponent;
7110
+ }
7111
+ }
7112
+
7113
+ let RemoveOutputFromStoreExecution = class RemoveOutputFromStoreExecution {
7114
+ _fComponentsStore = inject(FComponentsStore);
7115
+ handle(request) {
7116
+ this._fComponentsStore.removeComponent(this._fComponentsStore.fOutputs, request.fComponent);
7117
+ }
7118
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutputFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7119
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutputFromStoreExecution });
7120
+ };
7121
+ RemoveOutputFromStoreExecution = __decorate([
7122
+ FExecutionRegister(RemoveOutputFromStoreRequest)
7123
+ ], RemoveOutputFromStoreExecution);
7124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveOutputFromStoreExecution, decorators: [{
7125
+ type: Injectable
7126
+ }] });
7127
+
7128
+ class UnmarkAllCanBeConnectedInputsRequest {
7129
+ fInputs;
7130
+ constructor(fInputs) {
7131
+ this.fInputs = fInputs;
6947
7132
  }
6948
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FSelectionAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
6949
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: FSelectionAreaComponent, selector: "f-selection-area", host: { classAttribute: "f-selection-area f-component" }, providers: [
6950
- { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },
6951
- ], usesInheritance: true, ngImport: i0, template: ``, isInline: true, styles: [":host{position:absolute}\n"] });
6952
7133
  }
6953
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FSelectionAreaComponent, decorators: [{
6954
- type: Component,
6955
- args: [{ selector: "f-selection-area", template: ``, host: {
6956
- 'class': 'f-selection-area f-component'
6957
- }, providers: [
6958
- { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },
6959
- ], styles: [":host{position:absolute}\n"] }]
7134
+
7135
+ let UnmarkAllCanBeConnectedInputsExecution = class UnmarkAllCanBeConnectedInputsExecution {
7136
+ _fComponentsStore = inject(FComponentsStore);
7137
+ handle(payload) {
7138
+ this._fComponentsStore.flowHost.classList.remove(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);
7139
+ payload.fInputs.forEach((fInput) => this._unmarkCanBeConnectedTo(fInput));
7140
+ }
7141
+ _unmarkCanBeConnectedTo(fInput) {
7142
+ fInput.hostElement.classList.remove(F_CSS_CLASS.CONNECTOR.INPUT_CAN_BE_CONNECTED_TO);
7143
+ }
7144
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UnmarkAllCanBeConnectedInputsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7145
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UnmarkAllCanBeConnectedInputsExecution });
7146
+ };
7147
+ UnmarkAllCanBeConnectedInputsExecution = __decorate([
7148
+ FExecutionRegister(UnmarkAllCanBeConnectedInputsRequest)
7149
+ ], UnmarkAllCanBeConnectedInputsExecution);
7150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UnmarkAllCanBeConnectedInputsExecution, decorators: [{
7151
+ type: Injectable
6960
7152
  }] });
6961
7153
 
6962
- const F_SELECTION_AREA_PROVIDERS = [
6963
- FSelectionAreaComponent
7154
+ const F_CONNECTORS_FEATURES = [
7155
+ AddInputToStoreExecution,
7156
+ AddOutletToStoreExecution,
7157
+ AddOutputToStoreExecution,
7158
+ CalculateClosestInputExecution,
7159
+ FindInputAtPositionExecution,
7160
+ GetAllCanBeConnectedInputsAndRectsExecution,
7161
+ GetConnectorAndRectExecution,
7162
+ MarkAllCanBeConnectedInputsExecution,
7163
+ RemoveInputFromStoreExecution,
7164
+ RemoveOutletFromStoreExecution,
7165
+ RemoveOutputFromStoreExecution,
7166
+ UnmarkAllCanBeConnectedInputsExecution
6964
7167
  ];
6965
7168
 
6966
- const F_DRAGGABLE_PROVIDERS = [
6967
- ...CANVAS_PROVIDERS,
6968
- ...CONNECTIONS_PROVIDERS,
6969
- ...DRAG_AND_DROP_COMMON_PROVIDERS,
6970
- ...SINGLE_SELECT_PROVIDERS,
6971
- ...F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS,
6972
- ...NODE_PROVIDERS,
6973
- ...NODE_RESIZE_PROVIDERS,
6974
- ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,
6975
- ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS
6976
- ];
7169
+ class AddDndToStoreRequest {
7170
+ fComponent;
7171
+ constructor(fComponent) {
7172
+ this.fComponent = fComponent;
7173
+ }
7174
+ }
7175
+
7176
+ let AddDndToStoreExecution = class AddDndToStoreExecution {
7177
+ _fComponentsStore = inject(FComponentsStore);
7178
+ handle(request) {
7179
+ this._fComponentsStore.fDraggable = request.fComponent;
7180
+ }
7181
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddDndToStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7182
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddDndToStoreExecution });
7183
+ };
7184
+ AddDndToStoreExecution = __decorate([
7185
+ FExecutionRegister(AddDndToStoreRequest)
7186
+ ], AddDndToStoreExecution);
7187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddDndToStoreExecution, decorators: [{
7188
+ type: Injectable
7189
+ }] });
7190
+
7191
+ class EmitSelectionChangeEventRequest {
7192
+ }
6977
7193
 
6978
7194
  class ClearSelectionRequest {
6979
7195
  }
@@ -7095,34 +7311,30 @@ class SelectRequest {
7095
7311
  }
7096
7312
 
7097
7313
  let SelectExecution = class SelectExecution {
7098
- fDataContext;
7099
- fDraggableDataContext;
7100
- constructor(fDataContext, fDraggableDataContext) {
7101
- this.fDataContext = fDataContext;
7102
- this.fDraggableDataContext = fDraggableDataContext;
7103
- }
7314
+ _fDraggableDataContext = inject(FDraggableDataContext);
7315
+ _fComponentsStore = inject(FComponentsStore);
7104
7316
  handle(request) {
7105
- this.fDraggableDataContext.selectedItems.forEach((x) => {
7317
+ this._fDraggableDataContext.selectedItems.forEach((x) => {
7106
7318
  x.deselect();
7107
7319
  });
7108
- this.fDraggableDataContext.selectedItems = [];
7320
+ this._fDraggableDataContext.selectedItems = [];
7109
7321
  request.nodes.forEach((key) => {
7110
- const node = this.fDataContext.fNodes.find((x) => x.fId === key);
7322
+ const node = this._fComponentsStore.fNodes.find((x) => x.fId === key);
7111
7323
  if (node) {
7112
7324
  node.select();
7113
- this.fDraggableDataContext.selectedItems.push(node);
7325
+ this._fDraggableDataContext.selectedItems.push(node);
7114
7326
  }
7115
7327
  });
7116
7328
  request.connections.forEach((key) => {
7117
- const connection = this.fDataContext.fConnections.find((x) => x.fId === key);
7329
+ const connection = this._fComponentsStore.fConnections.find((x) => x.fId === key);
7118
7330
  if (connection) {
7119
7331
  connection.select();
7120
- this.fDraggableDataContext.selectedItems.push(connection);
7332
+ this._fDraggableDataContext.selectedItems.push(connection);
7121
7333
  }
7122
7334
  });
7123
- this.fDraggableDataContext.isSelectedChanged = true;
7335
+ this._fDraggableDataContext.isSelectedChanged = true;
7124
7336
  }
7125
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
7337
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7126
7338
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectExecution });
7127
7339
  };
7128
7340
  SelectExecution = __decorate([
@@ -7130,34 +7342,30 @@ SelectExecution = __decorate([
7130
7342
  ], SelectExecution);
7131
7343
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectExecution, decorators: [{
7132
7344
  type: Injectable
7133
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }] });
7345
+ }] });
7134
7346
 
7135
7347
  class SelectAllRequest {
7136
7348
  }
7137
7349
 
7138
7350
  let SelectAllExecution = class SelectAllExecution {
7139
- fDataContext;
7140
- fDraggableDataContext;
7141
- constructor(fDataContext, fDraggableDataContext) {
7142
- this.fDataContext = fDataContext;
7143
- this.fDraggableDataContext = fDraggableDataContext;
7144
- }
7351
+ _fDraggableDataContext = inject(FDraggableDataContext);
7352
+ _fComponentsStore = inject(FComponentsStore);
7145
7353
  handle(request) {
7146
- this.fDraggableDataContext.selectedItems.forEach((x) => {
7354
+ this._fDraggableDataContext.selectedItems.forEach((x) => {
7147
7355
  x.deselect();
7148
7356
  });
7149
- this.fDraggableDataContext.selectedItems = [];
7150
- this.fDataContext.fNodes.forEach((x) => {
7357
+ this._fDraggableDataContext.selectedItems = [];
7358
+ this._fComponentsStore.fNodes.forEach((x) => {
7151
7359
  x.select();
7152
- this.fDraggableDataContext.selectedItems.push(x);
7360
+ this._fDraggableDataContext.selectedItems.push(x);
7153
7361
  });
7154
- this.fDataContext.fConnections.forEach((x) => {
7362
+ this._fComponentsStore.fConnections.forEach((x) => {
7155
7363
  x.select();
7156
- this.fDraggableDataContext.selectedItems.push(x);
7364
+ this._fDraggableDataContext.selectedItems.push(x);
7157
7365
  });
7158
- this.fDraggableDataContext.isSelectedChanged = true;
7366
+ this._fDraggableDataContext.isSelectedChanged = true;
7159
7367
  }
7160
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectAllExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
7368
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectAllExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7161
7369
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectAllExecution });
7162
7370
  };
7163
7371
  SelectAllExecution = __decorate([
@@ -7165,7 +7373,7 @@ SelectAllExecution = __decorate([
7165
7373
  ], SelectAllExecution);
7166
7374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectAllExecution, decorators: [{
7167
7375
  type: Injectable
7168
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: FDraggableDataContext }] });
7376
+ }] });
7169
7377
 
7170
7378
  class SelectAndUpdateNodeLayerRequest {
7171
7379
  fNode;
@@ -7333,7 +7541,7 @@ let UpdateItemAndChildrenLayersExecution = class UpdateItemAndChildrenLayersExec
7333
7541
  getChildrenNodesAndGroups(fId) {
7334
7542
  return this.fMediator.send(new GetDeepChildrenNodesAndGroupsRequest(fId)).map((x) => x.hostElement);
7335
7543
  }
7336
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UpdateItemAndChildrenLayersExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
7544
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UpdateItemAndChildrenLayersExecution, deps: [{ token: FComponentsStore }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
7337
7545
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UpdateItemAndChildrenLayersExecution });
7338
7546
  };
7339
7547
  UpdateItemAndChildrenLayersExecution = __decorate([
@@ -7341,7 +7549,7 @@ UpdateItemAndChildrenLayersExecution = __decorate([
7341
7549
  ], UpdateItemAndChildrenLayersExecution);
7342
7550
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UpdateItemAndChildrenLayersExecution, decorators: [{
7343
7551
  type: Injectable
7344
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
7552
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2$1.FMediator }] });
7345
7553
 
7346
7554
  let SelectAndUpdateNodeLayerExecution = class SelectAndUpdateNodeLayerExecution {
7347
7555
  fDraggableDataContext;
@@ -7361,7 +7569,7 @@ let SelectAndUpdateNodeLayerExecution = class SelectAndUpdateNodeLayerExecution
7361
7569
  this.fDraggableDataContext.isSelectedChanged = true;
7362
7570
  }
7363
7571
  }
7364
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectAndUpdateNodeLayerExecution, deps: [{ token: FDraggableDataContext }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
7572
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectAndUpdateNodeLayerExecution, deps: [{ token: FDraggableDataContext }, { token: i2$1.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
7365
7573
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectAndUpdateNodeLayerExecution });
7366
7574
  };
7367
7575
  SelectAndUpdateNodeLayerExecution = __decorate([
@@ -7369,7 +7577,7 @@ SelectAndUpdateNodeLayerExecution = __decorate([
7369
7577
  ], SelectAndUpdateNodeLayerExecution);
7370
7578
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SelectAndUpdateNodeLayerExecution, decorators: [{
7371
7579
  type: Injectable
7372
- }], ctorParameters: () => [{ type: FDraggableDataContext }, { type: i2.FMediator }] });
7580
+ }], ctorParameters: () => [{ type: FDraggableDataContext }, { type: i2$1.FMediator }] });
7373
7581
 
7374
7582
  const F_SELECTION_FEATURES = [
7375
7583
  ClearSelectionExecution,
@@ -7421,7 +7629,7 @@ let EndDragSequenceExecution = class EndDragSequenceExecution {
7421
7629
  }
7422
7630
  _fDraggableDataContext = inject(FDraggableDataContext);
7423
7631
  handle(request) {
7424
- this._hostElement.classList.remove('f-dragging');
7632
+ this._hostElement.classList.remove(F_CSS_CLASS.DRAG_AND_DROP.DRAGGING);
7425
7633
  this._fDraggableDataContext.reset();
7426
7634
  }
7427
7635
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: EndDragSequenceExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -7506,7 +7714,7 @@ let StartDragSequenceExecution = class StartDragSequenceExecution {
7506
7714
  _fDraggableDataContext = inject(FDraggableDataContext);
7507
7715
  handle(request) {
7508
7716
  if (this._fDraggableDataContext.draggableItems.length > 0) {
7509
- this._hostElement.classList.add('f-dragging');
7717
+ this._hostElement.classList.add(F_CSS_CLASS.DRAG_AND_DROP.DRAGGING);
7510
7718
  this._fMediator.send(new EmitSelectionChangeEventRequest());
7511
7719
  }
7512
7720
  }
@@ -7638,23 +7846,21 @@ class GetFlowStateConnectionsRequest {
7638
7846
  }
7639
7847
 
7640
7848
  let GetFlowStateConnectionsExecution = class GetFlowStateConnectionsExecution {
7641
- fComponentsStore;
7642
- constructor(fComponentsStore) {
7643
- this.fComponentsStore = fComponentsStore;
7644
- }
7849
+ _fComponentsStore = inject(FComponentsStore);
7645
7850
  handle(request) {
7646
- return this.fComponentsStore.fConnections.map((x) => {
7647
- return {
7648
- id: x.fId,
7649
- fOutputId: x.fOutputId,
7650
- fInputId: x.fInputId,
7651
- fType: x.fType,
7652
- fBehavior: x.fBehavior,
7653
- isSelected: x.isSelected()
7654
- };
7655
- });
7851
+ return this._fComponentsStore.fConnections.map(this._mapToConnectionState);
7852
+ }
7853
+ _mapToConnectionState(x) {
7854
+ return {
7855
+ id: x.fId,
7856
+ fOutputId: x.fOutputId,
7857
+ fInputId: x.fInputId,
7858
+ fType: x.fType,
7859
+ fBehavior: x.fBehavior,
7860
+ isSelected: x.isSelected()
7861
+ };
7656
7862
  }
7657
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateConnectionsExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
7863
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateConnectionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7658
7864
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateConnectionsExecution });
7659
7865
  };
7660
7866
  GetFlowStateConnectionsExecution = __decorate([
@@ -7662,7 +7868,7 @@ GetFlowStateConnectionsExecution = __decorate([
7662
7868
  ], GetFlowStateConnectionsExecution);
7663
7869
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateConnectionsExecution, decorators: [{
7664
7870
  type: Injectable
7665
- }], ctorParameters: () => [{ type: FComponentsStore }] });
7871
+ }] });
7666
7872
 
7667
7873
  class GetFlowStateNodesRequest {
7668
7874
  type;
@@ -7683,13 +7889,13 @@ let GetFlowStateNodesExecution = class GetFlowStateNodesExecution {
7683
7889
  parent: x.fParentId,
7684
7890
  position: x.position,
7685
7891
  size: x.size,
7686
- fOutputs: this.getOutputs(x.hostElement),
7687
- fInputs: this.getInputs(x.hostElement),
7892
+ fOutputs: this._getOutputs(x.hostElement),
7893
+ fInputs: this._getInputs(x.hostElement),
7688
7894
  isSelected: x.isSelected()
7689
7895
  };
7690
7896
  });
7691
7897
  }
7692
- getOutputs(hostElement) {
7898
+ _getOutputs(hostElement) {
7693
7899
  return this.fComponentsStore.fOutputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {
7694
7900
  return {
7695
7901
  id: x.fId,
@@ -7697,7 +7903,7 @@ let GetFlowStateNodesExecution = class GetFlowStateNodesExecution {
7697
7903
  };
7698
7904
  });
7699
7905
  }
7700
- getInputs(hostElement) {
7906
+ _getInputs(hostElement) {
7701
7907
  return this.fComponentsStore.fInputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {
7702
7908
  return {
7703
7909
  id: x.fId,
@@ -7719,25 +7925,21 @@ class GetFlowStateRequest {
7719
7925
  }
7720
7926
 
7721
7927
  let GetFlowStateExecution = class GetFlowStateExecution {
7722
- fComponentsStore;
7723
- fMediator;
7724
- constructor(fComponentsStore, fMediator) {
7725
- this.fComponentsStore = fComponentsStore;
7726
- this.fMediator = fMediator;
7727
- }
7928
+ _fMediator = inject(FMediator);
7929
+ _fComponentsStore = inject(FComponentsStore);
7728
7930
  handle(payload) {
7729
7931
  return {
7730
- position: this.getCanvasPosition(this.fComponentsStore.fCanvas.transform),
7731
- scale: this.fComponentsStore.fCanvas.transform.scale,
7732
- nodes: this.fMediator.send(new GetFlowStateNodesRequest(FNodeDirective)),
7733
- groups: this.fMediator.send(new GetFlowStateNodesRequest(FGroupDirective)),
7734
- connections: this.fMediator.send(new GetFlowStateConnectionsRequest())
7932
+ position: this._getCanvasPosition(this._fComponentsStore.fCanvas.transform),
7933
+ scale: this._fComponentsStore.fCanvas.transform.scale,
7934
+ nodes: this._fMediator.send(new GetFlowStateNodesRequest(FNodeDirective)),
7935
+ groups: this._fMediator.send(new GetFlowStateNodesRequest(FGroupDirective)),
7936
+ connections: this._fMediator.send(new GetFlowStateConnectionsRequest())
7735
7937
  };
7736
7938
  }
7737
- getCanvasPosition(transform) {
7939
+ _getCanvasPosition(transform) {
7738
7940
  return PointExtensions.sum(transform.position, transform.scaledPosition);
7739
7941
  }
7740
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
7942
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7741
7943
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateExecution });
7742
7944
  };
7743
7945
  GetFlowStateExecution = __decorate([
@@ -7745,7 +7947,7 @@ GetFlowStateExecution = __decorate([
7745
7947
  ], GetFlowStateExecution);
7746
7948
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetFlowStateExecution, decorators: [{
7747
7949
  type: Injectable
7748
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }] });
7950
+ }] });
7749
7951
 
7750
7952
  const GET_FLOW_STATE_PROVIDERS = [
7751
7953
  GetFlowStateExecution,
@@ -7789,7 +7991,7 @@ class AddLineAlignmentToStoreRequest {
7789
7991
  let AddLineAlignmentToStoreExecution = class AddLineAlignmentToStoreExecution {
7790
7992
  _fComponentsStore = inject(FComponentsStore);
7791
7993
  handle(request) {
7792
- //this._fComponentsStore.fFlow = request.fComponent;
7994
+ this._fComponentsStore.fLineAlignment = request.fComponent;
7793
7995
  }
7794
7996
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddLineAlignmentToStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7795
7997
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddLineAlignmentToStoreExecution });
@@ -7807,7 +8009,7 @@ class RemoveLineAlignmentFromStoreRequest {
7807
8009
  let RemoveLineAlignmentFromStoreExecution = class RemoveLineAlignmentFromStoreExecution {
7808
8010
  _fComponentsStore = inject(FComponentsStore);
7809
8011
  handle(request) {
7810
- this._fComponentsStore.fFlow = undefined;
8012
+ this._fComponentsStore.fLineAlignment = undefined;
7811
8013
  }
7812
8014
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveLineAlignmentFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7813
8015
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveLineAlignmentFromStoreExecution });
@@ -7873,15 +8075,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
7873
8075
  }] });
7874
8076
 
7875
8077
  class CalculateNodesBoundingBoxNormalizedPositionRequest {
8078
+ fNodes;
8079
+ constructor(fNodes) {
8080
+ this.fNodes = fNodes;
8081
+ }
7876
8082
  }
7877
8083
 
7878
8084
  let CalculateNodesBoundingBoxNormalizedPositionExecution = class CalculateNodesBoundingBoxNormalizedPositionExecution {
7879
8085
  _fComponentsStore = inject(FComponentsStore);
7880
8086
  handle(request) {
7881
- return RectExtensions.union(this._getNodesRects());
8087
+ return RectExtensions.union(this._getNodesRects(request.fNodes || this._fComponentsStore.fNodes));
7882
8088
  }
7883
- _getNodesRects() {
7884
- return this._fComponentsStore.fNodes.map((x) => {
8089
+ _getNodesRects(fNodes) {
8090
+ return fNodes.map((x) => {
7885
8091
  return this._getElementRect(x, RectExtensions.fromElement(x.hostElement));
7886
8092
  });
7887
8093
  }
@@ -7952,6 +8158,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
7952
8158
  type: Injectable
7953
8159
  }] });
7954
8160
 
8161
+ class GetParentNodesRequest {
8162
+ fNode;
8163
+ constructor(fNode) {
8164
+ this.fNode = fNode;
8165
+ }
8166
+ }
8167
+
8168
+ let GetParentNodesExecution = class GetParentNodesExecution {
8169
+ _fComponentsStore = inject(FComponentsStore);
8170
+ handle(request) {
8171
+ return this._getParentNodes(request.fNode, new Set(), []);
8172
+ }
8173
+ _getParentNodes(fNode, visited, result) {
8174
+ if (visited.has(fNode.fId)) {
8175
+ throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);
8176
+ }
8177
+ visited.add(fNode.fId);
8178
+ const parent = this._fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);
8179
+ if (!parent) {
8180
+ return result;
8181
+ }
8182
+ result.push(parent);
8183
+ return this._getParentNodes(parent, visited, result);
8184
+ }
8185
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8186
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution });
8187
+ };
8188
+ GetParentNodesExecution = __decorate([
8189
+ FExecutionRegister(GetParentNodesRequest)
8190
+ ], GetParentNodesExecution);
8191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: GetParentNodesExecution, decorators: [{
8192
+ type: Injectable
8193
+ }] });
8194
+
7955
8195
  class UpdateNodeWhenStateOrSizeChangedRequest {
7956
8196
  fComponent;
7957
8197
  destroyRef;
@@ -7970,52 +8210,214 @@ let UpdateNodeWhenStateOrSizeChangedExecution = class UpdateNodeWhenStateOrSizeC
7970
8210
  this._fMediator.send(new NotifyDataChangedRequest());
7971
8211
  });
7972
8212
  }
7973
- _calculateConnectorsConnectableSide(fConnectors, hostElement) {
7974
- fConnectors.forEach((fConnector) => {
7975
- fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(new CalculateConnectorConnectableSideRequest(fConnector, hostElement));
7976
- });
8213
+ _calculateConnectorsConnectableSide(fConnectors, fNodeHost) {
8214
+ fConnectors.forEach((x) => {
8215
+ x.fConnectableSide = this._calculateConnectorConnectableSide(x, fNodeHost);
8216
+ });
8217
+ }
8218
+ _calculateConnectorConnectableSide(fConnector, fNodeHost) {
8219
+ let result;
8220
+ if (fConnector.userFConnectableSide === EFConnectableSide.AUTO) {
8221
+ result = this._getSideByDelta(fConnector.hostElement, fNodeHost);
8222
+ }
8223
+ else {
8224
+ result = fConnector.userFConnectableSide;
8225
+ }
8226
+ return result;
8227
+ }
8228
+ _getSideByDelta(fConnectorHost, fNodeHost) {
8229
+ let result;
8230
+ const childRect = RectExtensions.fromElement(fConnectorHost);
8231
+ const parentRect = fNodeHost.getBoundingClientRect();
8232
+ const deltaLeft = childRect.gravityCenter.x - parentRect.left;
8233
+ const deltaRight = parentRect.right - childRect.gravityCenter.x;
8234
+ const deltaTop = childRect.gravityCenter.y - parentRect.top;
8235
+ const deltaBottom = parentRect.bottom - childRect.gravityCenter.y;
8236
+ const minDelta = Math.min(deltaLeft, deltaRight, deltaTop, deltaBottom);
8237
+ if (minDelta === deltaLeft) {
8238
+ result = EFConnectableSide.LEFT;
8239
+ }
8240
+ else if (minDelta === deltaRight) {
8241
+ result = EFConnectableSide.RIGHT;
8242
+ }
8243
+ else if (minDelta === deltaTop) {
8244
+ result = EFConnectableSide.TOP;
8245
+ }
8246
+ else {
8247
+ result = EFConnectableSide.BOTTOM;
8248
+ }
8249
+ return result;
8250
+ }
8251
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UpdateNodeWhenStateOrSizeChangedExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8252
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UpdateNodeWhenStateOrSizeChangedExecution });
8253
+ };
8254
+ UpdateNodeWhenStateOrSizeChangedExecution = __decorate([
8255
+ FExecutionRegister(UpdateNodeWhenStateOrSizeChangedRequest)
8256
+ ], UpdateNodeWhenStateOrSizeChangedExecution);
8257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UpdateNodeWhenStateOrSizeChangedExecution, decorators: [{
8258
+ type: Injectable
8259
+ }] });
8260
+
8261
+ class RemoveNodeFromStoreRequest {
8262
+ fComponent;
8263
+ constructor(fComponent) {
8264
+ this.fComponent = fComponent;
8265
+ }
8266
+ }
8267
+
8268
+ let RemoveNodeFromStoreExecution = class RemoveNodeFromStoreExecution {
8269
+ _fComponentsStore = inject(FComponentsStore);
8270
+ handle(request) {
8271
+ this._fComponentsStore.removeComponent(this._fComponentsStore.fNodes, request.fComponent);
8272
+ }
8273
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveNodeFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8274
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveNodeFromStoreExecution });
8275
+ };
8276
+ RemoveNodeFromStoreExecution = __decorate([
8277
+ FExecutionRegister(RemoveNodeFromStoreRequest)
8278
+ ], RemoveNodeFromStoreExecution);
8279
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveNodeFromStoreExecution, decorators: [{
8280
+ type: Injectable
8281
+ }] });
8282
+
8283
+ const F_NODE_FEATURES = [
8284
+ AddNodeToStoreExecution,
8285
+ CalculateNodesBoundingBoxExecution,
8286
+ CalculateNodesBoundingBoxNormalizedPositionExecution,
8287
+ GetNodePaddingExecution,
8288
+ GetNodesExecution,
8289
+ GetParentNodesExecution,
8290
+ UpdateNodeWhenStateOrSizeChangedExecution,
8291
+ RemoveNodeFromStoreExecution
8292
+ ];
8293
+
8294
+ class AddZoomToStoreRequest {
8295
+ fComponent;
8296
+ constructor(fComponent) {
8297
+ this.fComponent = fComponent;
8298
+ }
8299
+ }
8300
+
8301
+ const F_ZOOM_TAG = 'F_ZOOM';
8302
+
8303
+ let AddZoomToStoreExecution = class AddZoomToStoreExecution {
8304
+ _fComponentsStore = inject(FComponentsStore);
8305
+ handle(request) {
8306
+ this._fComponentsStore.fComponents = {
8307
+ [F_ZOOM_TAG]: request.fComponent
8308
+ };
8309
+ }
8310
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddZoomToStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8311
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddZoomToStoreExecution });
8312
+ };
8313
+ AddZoomToStoreExecution = __decorate([
8314
+ FExecutionRegister(AddZoomToStoreRequest)
8315
+ ], AddZoomToStoreExecution);
8316
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AddZoomToStoreExecution, decorators: [{
8317
+ type: Injectable
8318
+ }] });
8319
+
8320
+ class RemoveZoomFromStoreRequest {
8321
+ }
8322
+
8323
+ let RemoveZoomFromStoreExecution = class RemoveZoomFromStoreExecution {
8324
+ _fComponentsStore = inject(FComponentsStore);
8325
+ handle(request) {
8326
+ this._fComponentsStore.fComponents = {
8327
+ [F_ZOOM_TAG]: undefined
8328
+ };
8329
+ }
8330
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveZoomFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8331
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveZoomFromStoreExecution });
8332
+ };
8333
+ RemoveZoomFromStoreExecution = __decorate([
8334
+ FExecutionRegister(RemoveZoomFromStoreRequest)
8335
+ ], RemoveZoomFromStoreExecution);
8336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveZoomFromStoreExecution, decorators: [{
8337
+ type: Injectable
8338
+ }] });
8339
+
8340
+ class ResetZoomRequest {
8341
+ }
8342
+
8343
+ let ResetZoomExecution = class ResetZoomExecution {
8344
+ _fComponentsStore = inject(FComponentsStore);
8345
+ get _fCanvas() {
8346
+ return this._fComponentsStore.fCanvas;
8347
+ }
8348
+ handle(request) {
8349
+ this._fCanvas.resetScale();
8350
+ this._fCanvas.redraw();
8351
+ this._fCanvas.emitCanvasChangeEvent();
7977
8352
  }
7978
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UpdateNodeWhenStateOrSizeChangedExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7979
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UpdateNodeWhenStateOrSizeChangedExecution });
8353
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ResetZoomExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8354
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ResetZoomExecution });
7980
8355
  };
7981
- UpdateNodeWhenStateOrSizeChangedExecution = __decorate([
7982
- FExecutionRegister(UpdateNodeWhenStateOrSizeChangedRequest)
7983
- ], UpdateNodeWhenStateOrSizeChangedExecution);
7984
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: UpdateNodeWhenStateOrSizeChangedExecution, decorators: [{
8356
+ ResetZoomExecution = __decorate([
8357
+ FExecutionRegister(ResetZoomRequest)
8358
+ ], ResetZoomExecution);
8359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ResetZoomExecution, decorators: [{
7985
8360
  type: Injectable
7986
8361
  }] });
7987
8362
 
7988
- class RemoveNodeFromStoreRequest {
7989
- fComponent;
7990
- constructor(fComponent) {
7991
- this.fComponent = fComponent;
8363
+ class SetZoomRequest {
8364
+ position;
8365
+ step;
8366
+ direction;
8367
+ animate;
8368
+ constructor(position, step, direction, animate = false) {
8369
+ this.position = position;
8370
+ this.step = step;
8371
+ this.direction = direction;
8372
+ this.animate = animate;
7992
8373
  }
7993
8374
  }
7994
8375
 
7995
- let RemoveNodeFromStoreExecution = class RemoveNodeFromStoreExecution {
8376
+ let SetZoomExecution = class SetZoomExecution {
8377
+ _fMediator = inject(FMediator);
7996
8378
  _fComponentsStore = inject(FComponentsStore);
8379
+ get _fHost() {
8380
+ return this._fComponentsStore.fFlow?.hostElement;
8381
+ }
8382
+ get _fCanvas() {
8383
+ return this._fComponentsStore.fCanvas;
8384
+ }
8385
+ get _fZoomComponent() {
8386
+ return this._fComponentsStore.fComponents[F_ZOOM_TAG];
8387
+ }
8388
+ get _isDragStarted() {
8389
+ return this._fMediator.execute(new IsDragStartedRequest());
8390
+ }
7997
8391
  handle(request) {
7998
- this._fComponentsStore.removeComponent(this._fComponentsStore.fNodes, request.fComponent);
8392
+ if (this._isDragStarted || !this._fZoomComponent) {
8393
+ return;
8394
+ }
8395
+ const result = this._fCanvas.transform.scale + request.step * request.direction;
8396
+ this._fCanvas.setScale(this._clamp(result), this._castPositionToFlow(request.position));
8397
+ request.animate ? this._fCanvas.redrawWithAnimation() : this._fCanvas.redraw();
8398
+ this._fCanvas.emitCanvasChangeEvent();
7999
8399
  }
8000
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveNodeFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8001
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveNodeFromStoreExecution });
8400
+ _clamp(value) {
8401
+ return Math.max(this._fZoomComponent.minimum, Math.min(value, this._fZoomComponent.maximum));
8402
+ }
8403
+ _castPositionToFlow(position) {
8404
+ return Point.fromPoint(position).elementTransform(this._fHost);
8405
+ }
8406
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SetZoomExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8407
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SetZoomExecution });
8002
8408
  };
8003
- RemoveNodeFromStoreExecution = __decorate([
8004
- FExecutionRegister(RemoveNodeFromStoreRequest)
8005
- ], RemoveNodeFromStoreExecution);
8006
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RemoveNodeFromStoreExecution, decorators: [{
8409
+ SetZoomExecution = __decorate([
8410
+ FExecutionRegister(SetZoomRequest)
8411
+ ], SetZoomExecution);
8412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SetZoomExecution, decorators: [{
8007
8413
  type: Injectable
8008
8414
  }] });
8009
8415
 
8010
- const F_NODE_FEATURES = [
8011
- AddNodeToStoreExecution,
8012
- CalculateNodesBoundingBoxExecution,
8013
- CalculateNodesBoundingBoxNormalizedPositionExecution,
8014
- GetNodePaddingExecution,
8015
- GetNodesExecution,
8016
- GetParentNodesExecution,
8017
- UpdateNodeWhenStateOrSizeChangedExecution,
8018
- RemoveNodeFromStoreExecution
8416
+ const F_ZOOM_FEATURES = [
8417
+ AddZoomToStoreExecution,
8418
+ RemoveZoomFromStoreExecution,
8419
+ ResetZoomExecution,
8420
+ SetZoomExecution
8019
8421
  ];
8020
8422
 
8021
8423
  class GetNormalizedPointRequest {
@@ -8089,7 +8491,7 @@ let SortNodeLayersExecution = class SortNodeLayersExecution {
8089
8491
  });
8090
8492
  this.fNodesContainer.appendChild(fragment);
8091
8493
  }
8092
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortNodeLayersExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
8494
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortNodeLayersExecution, deps: [{ token: FComponentsStore }, { token: i2$1.FMediator }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
8093
8495
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortNodeLayersExecution });
8094
8496
  };
8095
8497
  SortNodeLayersExecution = __decorate([
@@ -8097,7 +8499,7 @@ SortNodeLayersExecution = __decorate([
8097
8499
  ], SortNodeLayersExecution);
8098
8500
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortNodeLayersExecution, decorators: [{
8099
8501
  type: Injectable
8100
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }, { type: i1.BrowserService }] });
8502
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2$1.FMediator }, { type: i1.BrowserService }] });
8101
8503
 
8102
8504
  class SortItemsByParentRequest {
8103
8505
  fItemsContainer;
@@ -8148,7 +8550,7 @@ let SortItemsByParentExecution = class SortItemsByParentExecution {
8148
8550
  });
8149
8551
  this.fItemsContainer.insertBefore(fragment, nextSibling);
8150
8552
  }
8151
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortItemsByParentExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
8553
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortItemsByParentExecution, deps: [{ token: FComponentsStore }, { token: i2$1.FMediator }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
8152
8554
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortItemsByParentExecution });
8153
8555
  };
8154
8556
  SortItemsByParentExecution = __decorate([
@@ -8156,7 +8558,7 @@ SortItemsByParentExecution = __decorate([
8156
8558
  ], SortItemsByParentExecution);
8157
8559
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortItemsByParentExecution, decorators: [{
8158
8560
  type: Injectable
8159
- }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2.FMediator }, { type: i1.BrowserService }] });
8561
+ }], ctorParameters: () => [{ type: FComponentsStore }, { type: i2$1.FMediator }, { type: i1.BrowserService }] });
8160
8562
 
8161
8563
  class SortItemLayersRequest {
8162
8564
  }
@@ -8176,7 +8578,7 @@ let SortItemLayersExecution = class SortItemLayersExecution {
8176
8578
  this.fMediator.send(new SortNodeLayersRequest());
8177
8579
  this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas.fNodesContainer.nativeElement));
8178
8580
  }
8179
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortItemLayersExecution, deps: [{ token: i2.FMediator }, { token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
8581
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortItemLayersExecution, deps: [{ token: i2$1.FMediator }, { token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
8180
8582
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortItemLayersExecution });
8181
8583
  };
8182
8584
  SortItemLayersExecution = __decorate([
@@ -8184,17 +8586,55 @@ SortItemLayersExecution = __decorate([
8184
8586
  ], SortItemLayersExecution);
8185
8587
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SortItemLayersExecution, decorators: [{
8186
8588
  type: Injectable
8187
- }], ctorParameters: () => [{ type: i2.FMediator }, { type: FComponentsStore }] });
8589
+ }], ctorParameters: () => [{ type: i2$1.FMediator }, { type: FComponentsStore }] });
8188
8590
 
8189
8591
  function createSVGElement(tag, fBrowser) {
8190
8592
  return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);
8191
8593
  }
8192
8594
 
8595
+ var EFTriggerEvent;
8596
+ (function (EFTriggerEvent) {
8597
+ EFTriggerEvent["WHEEL"] = "wheel";
8598
+ EFTriggerEvent["DOUBLE_CLICK"] = "dblclick";
8599
+ EFTriggerEvent["MOUSE_DOWN"] = "mousedown";
8600
+ EFTriggerEvent["MOUSE_UP"] = "mouseup";
8601
+ EFTriggerEvent["MOUSE_MOVE"] = "mousemove";
8602
+ EFTriggerEvent["KEY_DOWN"] = "keydown";
8603
+ EFTriggerEvent["KEY_UP"] = "keyup";
8604
+ })(EFTriggerEvent || (EFTriggerEvent = {}));
8605
+
8193
8606
  function isMobile() {
8194
8607
  // @ts-ignore
8195
8608
  return /android|iPad|iPhone|iPod/i.test(navigator.userAgent || navigator.vendor || window['opera']);
8196
8609
  }
8197
8610
 
8611
+ function Deprecated(newMethodName, removalVersion = '18.0.0') {
8612
+ return function (target, propertyKey, descriptor) {
8613
+ const originalMethod = descriptor.value;
8614
+ descriptor.value = function (...args) {
8615
+ console.warn(`Method "${String(propertyKey)}" is deprecated. Use "${newMethodName}" instead. This method will be removed in version ${removalVersion}.`);
8616
+ return originalMethod.apply(this, args);
8617
+ };
8618
+ return descriptor;
8619
+ };
8620
+ }
8621
+
8622
+ function LogExecutionTime(label) {
8623
+ return function (target, propertyKey, descriptor) {
8624
+ const originalMethod = descriptor.value;
8625
+ descriptor.value = function (...args) {
8626
+ console.time(label || String(propertyKey));
8627
+ const result = originalMethod.apply(this, args);
8628
+ if (result instanceof Promise) {
8629
+ return result.finally(() => console.timeEnd(label || String(propertyKey)));
8630
+ }
8631
+ console.timeEnd(label || String(propertyKey));
8632
+ return result;
8633
+ };
8634
+ return descriptor;
8635
+ };
8636
+ }
8637
+
8198
8638
  const COMMON_PROVIDERS = [
8199
8639
  ...F_CANVAS_FEATURES,
8200
8640
  ...F_CONNECTION_FEATURES,
@@ -8206,6 +8646,7 @@ const COMMON_PROVIDERS = [
8206
8646
  ...F_NODE_FEATURES,
8207
8647
  GetElementRoundedRectExecution,
8208
8648
  ...F_SELECTION_FEATURES,
8649
+ ...F_ZOOM_FEATURES,
8209
8650
  GetDeepChildrenNodesAndGroupsExecution,
8210
8651
  GetNormalizedElementRectExecution,
8211
8652
  GetNormalizedPointExecution,
@@ -8528,10 +8969,25 @@ class FCanvasComponent extends FCanvasBase {
8528
8969
  resetScaleAndCenter(animated = true) {
8529
8970
  this._fMediator.send(new ResetScaleAndCenterRequest(animated));
8530
8971
  }
8972
+ getScale() {
8973
+ return this.transform.scale || 1;
8974
+ }
8975
+ /**
8976
+ * @deprecated Method "setZoom" is deprecated. Use "setScale" instead. This method will be removed in version 18.0.0.`,
8977
+ */
8531
8978
  setZoom(scale, toPosition = PointExtensions.initialize()) {
8979
+ this.setScale(scale, toPosition);
8980
+ }
8981
+ setScale(scale, toPosition = PointExtensions.initialize()) {
8532
8982
  this._fMediator.send(new UpdateScaleRequest(scale, toPosition));
8533
8983
  }
8984
+ /**
8985
+ * @deprecated Method "resetZoom" is deprecated. Use "resetScale" instead. This method will be removed in version 18.0.0.`,
8986
+ */
8534
8987
  resetZoom() {
8988
+ this.resetScale();
8989
+ }
8990
+ resetScale() {
8535
8991
  this._fMediator.send(new ResetScaleRequest());
8536
8992
  }
8537
8993
  ngOnDestroy() {
@@ -8542,6 +8998,12 @@ class FCanvasComponent extends FCanvasBase {
8542
8998
  { provide: F_CANVAS, useExisting: FCanvasComponent }
8543
8999
  ], viewQueries: [{ propertyName: "fGroupsContainer", first: true, predicate: ["fGroupsContainer"], descendants: true, static: true }, { propertyName: "fNodesContainer", first: true, predicate: ["fNodesContainer"], descendants: true, static: true }, { propertyName: "fConnectionsContainer", first: true, predicate: ["fConnectionsContainer"], descendants: true, static: true }], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0, template: "<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup]\"></ng-content>\n </div>\n <div #fConnectionsContainer>\n <ng-content select=\"f-snap-connection\"></ng-content>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode]\"></ng-content>\n </div>\n</ng-container>\n", styles: [":host{position:absolute;overflow:visible;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host.f-scaled-animate{transition:transform .09s}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8544
9000
  }
9001
+ __decorate([
9002
+ Deprecated('setScale')
9003
+ ], FCanvasComponent.prototype, "setZoom", null);
9004
+ __decorate([
9005
+ Deprecated('resetScale')
9006
+ ], FCanvasComponent.prototype, "resetZoom", null);
8545
9007
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FCanvasComponent, decorators: [{
8546
9008
  type: Component,
8547
9009
  args: [{ selector: 'f-canvas', exportAs: 'fComponent', host: {
@@ -8564,177 +9026,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
8564
9026
  }], fConnectionsContainer: [{
8565
9027
  type: ViewChild,
8566
9028
  args: ['fConnectionsContainer', { static: true }]
8567
- }] } });
9029
+ }], setZoom: [], resetZoom: [] } });
8568
9030
 
8569
9031
  const F_CANVAS_PROVIDERS = [
8570
9032
  FCanvasComponent,
8571
9033
  ];
8572
9034
 
8573
- class LineElement {
8574
- hostElement;
8575
- element;
8576
- constructor(fBrowser, hostElement) {
8577
- this.hostElement = hostElement;
8578
- this.element = fBrowser.document.createElement('div');
8579
- this.hostElement.appendChild(this.element);
8580
- this.element.classList.add('f-line');
8581
- }
8582
- hide() {
8583
- this.element.style.display = 'none';
8584
- }
8585
- show() {
8586
- this.element.style.display = 'block';
8587
- }
8588
- draw(object) {
8589
- this.element.style.position = 'absolute';
8590
- Object.keys(object).forEach((key) => {
8591
- // @ts-ignore
8592
- this.element.style[key] = object[key] + 'px';
8593
- });
8594
- }
8595
- }
8596
-
8597
- class LineService {
8598
- hostElement;
8599
- fHorizontalLine;
8600
- fVerticalLine;
8601
- constructor(fBrowser, hostElement) {
8602
- this.hostElement = hostElement;
8603
- this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);
8604
- this.fVerticalLine = new LineElement(fBrowser, this.hostElement);
8605
- this.fHorizontalLine.hide();
8606
- this.fVerticalLine.hide();
8607
- }
8608
- drawVerticalLine(x, size, transform) {
8609
- this.fVerticalLine.show();
8610
- this.fVerticalLine.draw({
8611
- left: x * transform.scale + transform.position.x + transform.scaledPosition.x,
8612
- top: 0,
8613
- width: 1,
8614
- height: size.height
8615
- });
8616
- }
8617
- drawHorizontalLine(y, size, transform) {
8618
- this.fHorizontalLine.show();
8619
- this.fHorizontalLine.draw({
8620
- left: 0,
8621
- top: y * transform.scale + transform.position.y + transform.scaledPosition.y,
8622
- width: size.width,
8623
- height: 1
8624
- });
8625
- }
8626
- hideVerticalLine() {
8627
- this.fVerticalLine.hide();
8628
- }
8629
- hideHorizontalLine() {
8630
- this.fHorizontalLine.hide();
8631
- }
8632
- }
8633
-
8634
- const F_LINE_ALIGNMENT = new InjectionToken('F_LINE_ALIGNMENT');
8635
- class FLineAlignmentBase {
8636
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
8637
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FLineAlignmentBase, ngImport: i0 });
8638
- }
8639
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentBase, decorators: [{
8640
- type: Directive
8641
- }] });
8642
-
8643
- class FLineAlignmentComponent extends FLineAlignmentBase {
8644
- elementReference;
8645
- fDraggableDataContext;
8646
- DEBOUNCE_TIME = 10;
8647
- fAlignThreshold = 10;
8648
- get hostElement() {
8649
- return this.elementReference.nativeElement;
8650
- }
8651
- lineService;
8652
- size = SizeExtensions.initialize();
8653
- draggedNodeRect = RectExtensions.initialize();
8654
- rects = [];
8655
- _fMediator = inject(FMediator);
8656
- _fCanvas;
8657
- _debounceTimer = null;
8658
- get _transform() {
8659
- return this._fCanvas.transform;
8660
- }
8661
- constructor(elementReference, fDraggableDataContext, fBrowser) {
8662
- super();
8663
- this.elementReference = elementReference;
8664
- this.fDraggableDataContext = fDraggableDataContext;
8665
- this.lineService = new LineService(fBrowser, this.hostElement);
8666
- }
8667
- ngAfterViewInit() {
8668
- this._fCanvas = this._fMediator.send(new GetCanvasRequest());
8669
- this.fDraggableDataContext.fLineAlignment = this;
8670
- }
8671
- initialize(allNodes, currentNodes) {
8672
- this.size = this._fMediator.send(new GetFlowHostElementRequest()).getBoundingClientRect();
8673
- this.rects = [];
8674
- const draggedNodeRects = currentNodes.map((x) => {
8675
- return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
8676
- });
8677
- this.draggedNodeRect = RectExtensions.union(draggedNodeRects) || RectExtensions.initialize();
8678
- const allNodesExcludeCurrents = allNodes.filter((x) => {
8679
- return !currentNodes.includes(x);
8680
- });
8681
- this.rects = allNodesExcludeCurrents.map((x) => {
8682
- return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
8683
- });
8684
- }
8685
- handle(difference) {
8686
- if (this._debounceTimer) {
8687
- clearTimeout(this._debounceTimer);
8688
- }
8689
- this._debounceTimer = setTimeout(() => this.drawIntersectingLines(difference), this.DEBOUNCE_TIME);
8690
- }
8691
- drawIntersectingLines(difference) {
8692
- const intersect = this.findNearestCoordinate(difference);
8693
- if (intersect.xResult.value !== undefined) {
8694
- this.lineService.drawVerticalLine(intersect.xResult.value, this.size, this._transform);
8695
- }
8696
- else {
8697
- this.lineService.hideVerticalLine();
8698
- }
8699
- if (intersect.yResult.value !== undefined) {
8700
- this.lineService.drawHorizontalLine(intersect.yResult.value, this.size, this._transform);
8701
- }
8702
- else {
8703
- this.lineService.hideHorizontalLine();
8704
- }
8705
- }
8706
- findNearestCoordinate(difference) {
8707
- const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);
8708
- return findClosestAlignment(this.rects, rect, this.fAlignThreshold);
8709
- }
8710
- complete() {
8711
- this.lineService.hideVerticalLine();
8712
- this.lineService.hideHorizontalLine();
8713
- if (this._debounceTimer) {
8714
- clearTimeout(this._debounceTimer);
8715
- this._debounceTimer = null;
8716
- }
8717
- }
8718
- 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 });
8719
- 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: [
8720
- { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }
8721
- ], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0, template: "", isInline: true, styles: [":host{display:block;position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}\n"] });
8722
- }
8723
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentComponent, decorators: [{
8724
- type: Component,
8725
- args: [{ selector: "f-line-alignment", template: "", exportAs: "fComponent", host: {
8726
- 'class': 'f-line-alignment f-component'
8727
- }, providers: [
8728
- { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }
8729
- ], styles: [":host{display:block;position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}\n"] }]
8730
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: FDraggableDataContext }, { type: i1.BrowserService }], propDecorators: { fAlignThreshold: [{
8731
- type: Input
8732
- }] } });
8733
-
8734
- const F_LINE_ALIGNMENT_PROVIDERS = [
8735
- FLineAlignmentComponent
8736
- ];
8737
-
8738
9035
  class FMinimapData {
8739
9036
  element;
8740
9037
  scale;
@@ -8992,124 +9289,156 @@ const F_FLOW_PROVIDERS = [
8992
9289
  FFlowComponent
8993
9290
  ];
8994
9291
 
9292
+ var EFZoomAction;
9293
+ (function (EFZoomAction) {
9294
+ EFZoomAction["WHEEL"] = "wheel";
9295
+ EFZoomAction["DOUBLE_CLICK"] = "dbl-click";
9296
+ })(EFZoomAction || (EFZoomAction = {}));
9297
+
9298
+ var EFZoomDirection;
9299
+ (function (EFZoomDirection) {
9300
+ EFZoomDirection[EFZoomDirection["ZOOM_IN"] = 1] = "ZOOM_IN";
9301
+ EFZoomDirection[EFZoomDirection["ZOOM_OUT"] = -1] = "ZOOM_OUT";
9302
+ })(EFZoomDirection || (EFZoomDirection = {}));
9303
+
8995
9304
  const F_ZOOM = new InjectionToken('F_ZOOM');
8996
9305
  class FZoomBase {
8997
- isEnabled = false;
8998
- _listeners = EventExtensions.emptyListener();
9306
+ }
9307
+
9308
+ class FZoomDirective extends FZoomBase {
8999
9309
  _fMediator = inject(FMediator);
9000
- get _fFlowHostElement() {
9001
- return this._fMediator.send(new GetFlowHostElementRequest());
9310
+ _rendered = inject(Renderer2);
9311
+ _triggersListener = [];
9312
+ _isEnabled = false;
9313
+ set fZoom(isEnabled) {
9314
+ if (isEnabled !== this._isEnabled) {
9315
+ this._isEnabled = isEnabled;
9316
+ this._listenTriggers();
9317
+ }
9318
+ }
9319
+ fZoomTriggers = [
9320
+ { event: EFTriggerEvent.WHEEL, action: EFZoomAction.WHEEL },
9321
+ { event: EFTriggerEvent.DOUBLE_CLICK, action: EFZoomAction.DOUBLE_CLICK }
9322
+ ];
9323
+ minimum = 0.1;
9324
+ maximum = 4;
9325
+ step = 0.1;
9326
+ dblClickStep = 0.5;
9327
+ get _fHost() {
9328
+ return this._fMediator.execute(new GetFlowHostElementRequest());
9002
9329
  }
9003
9330
  get _fCanvas() {
9004
- return this._fMediator.send(new GetCanvasRequest());
9331
+ return this._fMediator.execute(new GetCanvasRequest());
9005
9332
  }
9006
- get _isDragStarted() {
9007
- return this._fMediator.send(new IsDragStartedRequest());
9333
+ ngOnInit() {
9334
+ this._fMediator.execute(new AddZoomToStoreRequest(this));
9008
9335
  }
9009
- toggleZoom() {
9010
- if (this.isEnabled) {
9011
- this._subscribe();
9012
- }
9013
- else {
9014
- this.dispose();
9336
+ ngAfterViewInit() {
9337
+ this._listenTriggers();
9338
+ }
9339
+ ngOnChanges(changes) {
9340
+ if (changes['fZoomTriggers']) {
9341
+ this._listenTriggers();
9015
9342
  }
9016
9343
  }
9017
- _subscribe() {
9018
- this._listeners();
9019
- if (!this._fFlowHostElement) {
9344
+ _listenTriggers() {
9345
+ if (!this._fHost) {
9020
9346
  return;
9021
9347
  }
9022
- this._fFlowHostElement.addEventListener('wheel', this._onWheel);
9023
- this._fFlowHostElement.addEventListener('dblclick', this._onDoubleClick);
9024
- this._listeners = () => {
9025
- this._fFlowHostElement.removeEventListener('wheel', this._onWheel);
9026
- this._fFlowHostElement.removeEventListener('dblclick', this._onDoubleClick);
9027
- };
9348
+ this._disposeListeners();
9349
+ this._validateTriggers();
9350
+ this.fZoomTriggers.forEach((x) => {
9351
+ this._triggersListener.push(this._rendered.listen(this._fHost, x.event, this._getAction(x)));
9352
+ });
9028
9353
  }
9029
- getScale() {
9030
- return this._fCanvas.transform.scale || 1;
9354
+ _validateTriggers() {
9355
+ const SUPPORTED_EVENTS = Object.values(EFTriggerEvent);
9356
+ const SUPPORTED_ACTIONS = Object.values(EFZoomAction);
9357
+ this.fZoomTriggers.forEach((trigger) => {
9358
+ if (!SUPPORTED_EVENTS.includes(trigger.event)) {
9359
+ throw new Error(`Unsupported event: ${trigger.event}`);
9360
+ }
9361
+ if (!SUPPORTED_ACTIONS.includes(trigger.action)) {
9362
+ throw new Error(`Unsupported action: ${trigger.action}`);
9363
+ }
9364
+ });
9365
+ }
9366
+ _getAction(trigger) {
9367
+ switch (trigger.action) {
9368
+ case EFZoomAction.WHEEL:
9369
+ return (event) => this._onWheel(event, trigger);
9370
+ case EFZoomAction.DOUBLE_CLICK:
9371
+ return (event) => this._onDoubleClick(event, trigger);
9372
+ default:
9373
+ throw new Error(`Unknown action: ${trigger.action}`);
9374
+ }
9031
9375
  }
9032
- _onWheel = (event) => {
9376
+ _onWheel = (event, trigger) => {
9377
+ if (trigger.validator && !trigger.validator(event)) {
9378
+ return;
9379
+ }
9033
9380
  event.preventDefault();
9034
9381
  const targetElement = event.target;
9035
- if (this._isDragStarted || targetElement?.closest('[fLockedContext]')) {
9382
+ if (targetElement?.closest('[fLockedContext]')) {
9036
9383
  return;
9037
9384
  }
9038
- let result = this.getScale();
9039
- const direction = event.deltaY > 0 ? -1 : 1;
9040
- const step = this.step;
9041
- result = result + step * direction;
9042
- result = Math.max(this.minimum, Math.min(result, this.maximum));
9043
- const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this._fFlowHostElement);
9044
- this._fCanvas.setZoom(result, pointerPositionInFlow);
9045
- this._fCanvas.redraw();
9046
- this._fCanvas.emitCanvasChangeEvent();
9385
+ this.setZoom(PointExtensions.initialize(event.clientX, event.clientY), this.step, this._calculateDirection(event.deltaY), false);
9047
9386
  };
9048
- _onDoubleClick = (event) => {
9387
+ _calculateDirection(deltaY) {
9388
+ return deltaY > 0 ? EFZoomDirection.ZOOM_OUT : EFZoomDirection.ZOOM_IN;
9389
+ }
9390
+ _onDoubleClick = (event, trigger) => {
9391
+ if (trigger.validator && !trigger.validator(event)) {
9392
+ return;
9393
+ }
9049
9394
  event.preventDefault();
9050
9395
  const targetElement = event.target;
9051
- if (this._isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {
9396
+ if (isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {
9052
9397
  return;
9053
9398
  }
9054
- let result = this.getScale();
9055
- const direction = 1;
9056
- const step = this.dblClickStep;
9057
- result = result + step * direction;
9058
- result = Math.max(this.minimum, Math.min(result, this.maximum));
9059
- const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this._fFlowHostElement);
9060
- this._fCanvas.setZoom(result, pointerPositionInFlow);
9061
- this._fCanvas.redrawWithAnimation();
9062
- this._fCanvas.emitCanvasChangeEvent();
9399
+ this.setZoom(PointExtensions.initialize(event.clientX, event.clientY), this.dblClickStep, EFZoomDirection.ZOOM_IN, true);
9063
9400
  };
9064
- _onZoomToCenter(deltaY, position) {
9065
- const preventDefault = () => {
9066
- };
9067
- const rect = RectExtensions.fromElement(this._fFlowHostElement);
9068
- this._onWheel({
9069
- deltaY, preventDefault, clientX: position?.x || rect.gravityCenter.x, clientY: position?.y || rect.gravityCenter.y
9070
- });
9401
+ _getToCenterPosition(position, rect) {
9402
+ return PointExtensions.initialize(position?.x || rect.gravityCenter.x, position?.y || rect.gravityCenter.y);
9071
9403
  }
9072
9404
  zoomIn(position) {
9073
- this._onZoomToCenter(-1, position);
9405
+ this._onZoomToCenter(EFZoomDirection.ZOOM_IN, position);
9074
9406
  }
9075
9407
  zoomOut(position) {
9076
- this._onZoomToCenter(1, position);
9408
+ this._onZoomToCenter(EFZoomDirection.ZOOM_OUT, position);
9077
9409
  }
9078
- reset() {
9079
- this._fCanvas.resetZoom();
9080
- this._fCanvas.redraw();
9081
- this._fCanvas.emitCanvasChangeEvent();
9410
+ _onZoomToCenter(direction, position) {
9411
+ this.setZoom(this._getToCenterPosition(position, RectExtensions.fromElement(this._fHost)), this.step, direction, false);
9082
9412
  }
9083
- dispose() {
9084
- this._listeners();
9085
- this._listeners = EventExtensions.emptyListener();
9413
+ setZoom(position, step, direction, animated) {
9414
+ this._fMediator.execute(new SetZoomRequest(position, step, direction, animated));
9086
9415
  }
9087
- }
9088
-
9089
- class FZoomDirective extends FZoomBase {
9090
- get fFlowZoom() {
9091
- return this.isEnabled;
9416
+ /**
9417
+ * @deprecated Method "getScale" is deprecated. Use "getZoomValue" instead. This method will be removed in version 18.0.0.`,
9418
+ */
9419
+ getScale() {
9420
+ return this.getZoomValue();
9092
9421
  }
9093
- set fFlowZoom(isEnabled) {
9094
- const value = castToBoolean(isEnabled);
9095
- if (value !== this.isEnabled) {
9096
- this.isEnabled = value;
9097
- this.toggleZoom();
9098
- }
9422
+ getZoomValue() {
9423
+ return this._fCanvas.transform.scale || 1;
9099
9424
  }
9100
- minimum = 0.1;
9101
- maximum = 4;
9102
- step = 0.1;
9103
- dblClickStep = 0.5;
9104
- ngAfterViewInit() {
9105
- super.toggleZoom();
9425
+ reset() {
9426
+ this._fMediator.execute(new ResetZoomRequest());
9427
+ }
9428
+ _disposeListeners() {
9429
+ this._triggersListener.forEach((listener) => listener());
9430
+ this._triggersListener = [];
9106
9431
  }
9107
9432
  ngOnDestroy() {
9108
- super.dispose();
9433
+ this._disposeListeners();
9434
+ this._fMediator.execute(new RemoveZoomFromStoreRequest());
9109
9435
  }
9110
9436
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FZoomDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
9111
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FZoomDirective, selector: "f-canvas[fZoom]", inputs: { fFlowZoom: ["fZoom", "fFlowZoom"], minimum: ["fZoomMinimum", "minimum"], maximum: ["fZoomMaximum", "maximum"], step: ["fZoomStep", "step"], dblClickStep: ["fZoomDblClickStep", "dblClickStep"] }, host: { classAttribute: "f-zoom f-component" }, providers: [{ provide: F_ZOOM, useExisting: FZoomDirective }], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0 });
9437
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.4", type: FZoomDirective, selector: "f-canvas[fZoom]", inputs: { fZoom: ["fZoom", "fZoom", booleanAttribute], fZoomTriggers: "fZoomTriggers", minimum: ["fZoomMinimum", "minimum", numberAttribute], maximum: ["fZoomMaximum", "maximum", numberAttribute], step: ["fZoomStep", "step", numberAttribute], dblClickStep: ["fZoomDblClickStep", "dblClickStep", numberAttribute] }, host: { classAttribute: "f-zoom f-component" }, providers: [{ provide: F_ZOOM, useExisting: FZoomDirective }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
9112
9438
  }
9439
+ __decorate([
9440
+ Deprecated('getZoomValue')
9441
+ ], FZoomDirective.prototype, "getScale", null);
9113
9442
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FZoomDirective, decorators: [{
9114
9443
  type: Directive,
9115
9444
  args: [{
@@ -9120,22 +9449,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
9120
9449
  },
9121
9450
  providers: [{ provide: F_ZOOM, useExisting: FZoomDirective }],
9122
9451
  }]
9123
- }], propDecorators: { fFlowZoom: [{
9452
+ }], propDecorators: { fZoom: [{
9124
9453
  type: Input,
9125
- args: ['fZoom']
9454
+ args: [{ alias: 'fZoom', transform: booleanAttribute }]
9455
+ }], fZoomTriggers: [{
9456
+ type: Input
9126
9457
  }], minimum: [{
9127
9458
  type: Input,
9128
- args: ['fZoomMinimum']
9459
+ args: [{ alias: 'fZoomMinimum', transform: numberAttribute }]
9129
9460
  }], maximum: [{
9130
9461
  type: Input,
9131
- args: ['fZoomMaximum']
9462
+ args: [{ alias: 'fZoomMaximum', transform: numberAttribute }]
9132
9463
  }], step: [{
9133
9464
  type: Input,
9134
- args: ['fZoomStep']
9465
+ args: [{ alias: 'fZoomStep', transform: numberAttribute }]
9135
9466
  }], dblClickStep: [{
9136
9467
  type: Input,
9137
- args: ['fZoomDblClickStep']
9138
- }] } });
9468
+ args: [{ alias: 'fZoomDblClickStep', transform: numberAttribute }]
9469
+ }], getScale: [] } });
9139
9470
 
9140
9471
  const F_ZOOM_PROVIDERS = [
9141
9472
  FZoomDirective
@@ -9187,5 +9518,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
9187
9518
  * Generated bundle index. Do not edit.
9188
9519
  */
9189
9520
 
9190
- export { AddBackgroundToStoreExecution, AddBackgroundToStoreRequest, AddCanvasToStoreExecution, AddCanvasToStoreRequest, AddConnectionForCreateToStoreExecution, AddConnectionForCreateToStoreRequest, AddConnectionMarkerToStoreExecution, AddConnectionMarkerToStoreRequest, AddConnectionToStoreExecution, AddConnectionToStoreRequest, AddDndToStoreExecution, AddDndToStoreRequest, AddFlowToStoreExecution, AddFlowToStoreRequest, AddInputToStoreExecution, AddInputToStoreRequest, AddLineAlignmentToStoreExecution, AddLineAlignmentToStoreRequest, AddNodeToStoreExecution, AddNodeToStoreRequest, AddOutletToStoreExecution, AddOutletToStoreRequest, AddOutputToStoreExecution, AddOutputToStoreRequest, AddPatternToBackgroundExecution, AddPatternToBackgroundRequest, AddSnapConnectionToStoreExecution, AddSnapConnectionToStoreRequest, ApplyChildResizeRestrictionsExecution, ApplyChildResizeRestrictionsRequest, ApplyParentResizeRestrictionsExecution, ApplyParentResizeRestrictionsRequest, CANVAS_MOVE_FINALIZE_PROVIDERS, CANVAS_MOVE_PREPARATION_PROVIDERS, CANVAS_PROVIDERS, COMMON_PROVIDERS, CONNECTIONS_PROVIDERS, CONNECTION_GRADIENT, CONNECTION_PATH, CONNECTION_TEXT, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest, CalculateChangedPositionExecution, CalculateChangedPositionRequest, CalculateChangedSizeExecution, CalculateChangedSizeRequest, CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, CalculateConnectionLineByBehaviorExecution, CalculateConnectionLineByBehaviorRequest, CalculateConnectorConnectableSideHandler, CalculateConnectorConnectableSideRequest, CalculateFlowPointFromMinimapPointExecution, CalculateFlowPointFromMinimapPointRequest, CalculateNodesBoundingBoxExecution, CalculateNodesBoundingBoxNormalizedPositionExecution, CalculateNodesBoundingBoxNormalizedPositionRequest, CalculateNodesBoundingBoxRequest, CanvasDragHandler, CanvasMoveFinalizeExecution, CanvasMoveFinalizeRequest, CanvasMovePreparationExecution, CanvasMovePreparationRequest, CanvasMovePreparationValidator, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, ConnectionBaseDragHandler, ConnectionDragHandler, ConnectionSourceDragHandler, ConnectionTargetDragHandler, CreateConnectionDragHandler, CreateConnectionDragHandlerExecution, CreateConnectionDragHandlerRequest, CreateConnectionFinalizeExecution, CreateConnectionFinalizeRequest, CreateConnectionFromOutletPreparationExecution, CreateConnectionFromOutletPreparationRequest, CreateConnectionFromOutputPreparationExecution, CreateConnectionFromOutputPreparationRequest, CreateConnectionFromOutputPreparationValidator, CreateConnectionMarkersExecution, CreateConnectionMarkersRequest, CreateConnectionPreparationExecution, CreateConnectionPreparationRequest, CreateMoveNodesDragModelFromSelectionExecution, CreateMoveNodesDragModelFromSelectionRequest, DRAG_AND_DROP_COMMON_PROVIDERS, EFConnectableSide, EFConnectionBehavior, EFConnectionType, EFMarkerType, EFResizeHandleType, EXTERNAL_ITEM_FINALIZE_PROVIDERS, EXTERNAL_ITEM_PREPARATION_PROVIDERS, EmitSelectionChangeEventExecution, EmitSelectionChangeEventRequest, EndDragSequenceExecution, EndDragSequenceRequest, ExternalItemDragHandler, ExternalItemFinalizeExecution, ExternalItemFinalizeRequest, ExternalItemPreparationExecution, ExternalItemPreparationRequest, ExternalItemPreparationValidator, FBackgroundBase, FBackgroundComponent, FBezierPathBuilder, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FChannel, FChannelHub, FCirclePatternComponent, FComponentsStore, FConnectionBase, FConnectionCenterDirective, FConnectionComponent, FConnectionDragHandleComponent, FConnectionFactory, FConnectionForCreateComponent, FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, FConnectionTextPathDirective, FConnectorBase, FCreateConnectionEvent, FCreateNodeEvent, FDragHandleDirective, FDraggableBase, FDraggableDataContext, FDraggableDirective, FDropToGroupEvent, FExternalItemBase, FExternalItemDirective, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FGroupDirective, FLineAlignmentBase, FLineAlignmentComponent, FMarkerBase, FMarkerDirective, FMinimapCanvasDirective, FMinimapComponent, FMinimapData, FMinimapDragHandler, FMinimapFlowDirective, FMinimapViewDirective, FNodeBase, FNodeDirective, FNodeInputBase, FNodeInputDirective, FNodeIntersectedWithConnections, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FReassignConnectionEvent, FRectPatternComponent, FResizeChannel, FResizeHandleDirective, FRotateHandleDirective, FSegmentPathBuilder, FSelectionAreaBase, FSelectionAreaComponent, FSelectionChangeEvent, FSnapConnectionComponent, FStraightPathBuilder, FZoomBase, FZoomDirective, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_CANVAS, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_DRAG_HANDLE_CLASS, F_CONNECTION_FEATURES, F_CONNECTION_IDENTIFIERS, F_CONNECTION_PROVIDERS, F_CONNECTORS_FEATURES, F_CONNECTORS_PROVIDERS, F_DRAGGABLE_FEATURES, F_DRAGGABLE_PROVIDERS, F_DRAG_AND_DROP_PLUGIN, F_DRAG_HANDLE, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_FEATURES, F_FLOW_PROVIDERS, F_LINE_ALIGNMENT, F_LINE_ALIGNMENT_FEATURES, F_LINE_ALIGNMENT_PROVIDERS, F_MARKER, F_MINIMAP_DRAG_AND_DROP_PROVIDERS, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_FEATURES, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_RESIZE_HANDLE, F_SELECTED_CLASS, F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_STORAGE_PROVIDERS, F_ZOOM, F_ZOOM_PROVIDERS, FindClosestInputExecution, FindClosestInputRequest, FitToFlowExecution, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetAllCanBeConnectedInputPositionsExecution, GetAllCanBeConnectedInputPositionsRequest, GetCanBeConnectedOutputByOutletExecution, GetCanBeConnectedOutputByOutletRequest, GetCanBeConnectedOutputByOutletValidator, GetCanBeSelectedItemsExecution, GetCanBeSelectedItemsRequest, GetCanvasExecution, GetCanvasRequest, GetConnectorWithRectExecution, GetConnectorWithRectRequest, GetCurrentSelectionExecution, GetCurrentSelectionRequest, GetDeepChildrenNodesAndGroupsExecution, GetDeepChildrenNodesAndGroupsRequest, GetElementRoundedRectExecution, GetElementRoundedRectRequest, GetFlowExecution, GetFlowHostElementExecution, GetFlowHostElementRequest, GetFlowRequest, GetFlowStateConnectionsExecution, GetFlowStateConnectionsRequest, GetFlowStateExecution, GetFlowStateNodesExecution, GetFlowStateNodesRequest, GetFlowStateRequest, GetInputUnderPointerExecution, GetInputUnderPointerRequest, GetInputUnderPointerValidator, GetNodeMoveRestrictionsExecution, GetNodeMoveRestrictionsRequest, GetNodePaddingExecution, GetNodePaddingRequest, GetNodeResizeRestrictionsExecution, GetNodeResizeRestrictionsRequest, GetNodesExecution, GetNodesRequest, GetNormalizedChildrenNodesRectExecution, GetNormalizedChildrenNodesRectRequest, GetNormalizedElementRectExecution, GetNormalizedElementRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetNormalizedPointExecution, GetNormalizedPointRequest, GetParentNodesExecution, GetParentNodesRequest, InitializeDragSequenceExecution, InitializeDragSequenceRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, IsConnectionUnderNodeRequest, IsDragStartedExecution, IsDragStartedRequest, LineElement, LineService, ListenCountChangesExecution, ListenCountChangesRequest, ListenDataChangesExecution, ListenDataChangesRequest, ListenTransformChangesExecution, ListenTransformChangesRequest, MINIMAP_DRAG_FINALIZE_PROVIDERS, MINIMAP_DRAG_PREPARATION_PROVIDERS, MinimapCalculateSvgScaleAndViewBoxExecution, MinimapCalculateSvgScaleAndViewBoxRequest, MinimapCalculateViewBoxExecution, MinimapCalculateViewBoxRequest, MinimapDragFinalizeExecution, MinimapDragFinalizeRequest, MinimapDragFinalizeValidator, MinimapDragPreparationExecution, MinimapDragPreparationRequest, MinimapDragPreparationValidator, MinimapDrawNodesExecution, MinimapDrawNodesRequest, MoveFrontElementsBeforeTargetElementExecution, MoveFrontElementsBeforeTargetElementRequest, NODE_DRAG_TO_PARENT_FINALIZE_PROVIDERS, NODE_DRAG_TO_PARENT_PREPARATION_PROVIDERS, NODE_MOVE_PREPARATION_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_FINALIZE_PROVIDERS, NODE_RESIZE_PREPARATION_PROVIDERS, NODE_RESIZE_PROVIDERS, NodeDragHandler, NodeDragToParentDragHandler, NodeDragToParentFinalizeExecution, NodeDragToParentFinalizeRequest, NodeDragToParentPreparationExecution, NodeDragToParentPreparationRequest, NodeDragToParentPreparationValidator, NodeMoveFinalizeExecution, NodeMoveFinalizeRequest, NodeMovePreparationExecution, NodeMovePreparationRequest, NodeMovePreparationValidator, NodeResizeByChildDragHandler, NodeResizeDragHandler, NodeResizeFinalizeExecution, NodeResizeFinalizeRequest, NodeResizePreparationExecution, NodeResizePreparationRequest, NodeResizePreparationValidator, NotifyDataChangedExecution, NotifyDataChangedRequest, NotifyTransformChangedExecution, NotifyTransformChangedRequest, OnPointerMoveExecution, OnPointerMoveRequest, PrepareDragSequenceExecution, PrepareDragSequenceRequest, PreventDefaultIsExternalItemExecution, PreventDefaultIsExternalItemRequest, PutInputConnectionHandlersToArrayExecution, PutInputConnectionHandlersToArrayRequest, PutOutputConnectionHandlersToArrayExecution, PutOutputConnectionHandlersToArrayRequest, RESIZE_DIRECTIONS, ReassignConnectionDragHandler, ReassignConnectionFinalizeExecution, ReassignConnectionFinalizeRequest, ReassignConnectionPreparationExecution, ReassignConnectionPreparationRequest, RedrawCanvasWithAnimationExecution, RedrawCanvasWithAnimationRequest, RedrawConnectionsExecution, RedrawConnectionsRequest, RemoveBackgroundFromStoreExecution, RemoveBackgroundFromStoreRequest, RemoveCanvasFromStoreExecution, RemoveCanvasFromStoreRequest, RemoveConnectionForCreateFromStoreExecution, RemoveConnectionForCreateFromStoreRequest, RemoveConnectionFromStoreExecution, RemoveConnectionFromStoreRequest, RemoveConnectionMarkerFromStoreExecution, RemoveConnectionMarkerFromStoreRequest, RemoveDndFromStoreExecution, RemoveDndFromStoreRequest, RemoveFlowFromStoreExecution, RemoveFlowFromStoreRequest, RemoveInputFromStoreExecution, RemoveInputFromStoreRequest, RemoveLineAlignmentFromStoreExecution, RemoveLineAlignmentFromStoreRequest, RemoveNodeFromStoreExecution, RemoveNodeFromStoreRequest, RemoveOutletFromStoreExecution, RemoveOutletFromStoreRequest, RemoveOutputFromStoreExecution, RemoveOutputFromStoreRequest, RemoveSnapConnectionFromStoreExecution, RemoveSnapConnectionFromStoreRequest, ResetScaleAndCenterExecution, ResetScaleAndCenterRequest, ResetScaleExecution, ResetScaleRequest, SELECTION_AREA_FINALIZE_PROVIDERS, SELECTION_AREA_PREPARATION_PROVIDERS, SINGLE_SELECT_PROVIDERS, SelectAllExecution, SelectAllRequest, SelectAndUpdateNodeLayerExecution, SelectAndUpdateNodeLayerRequest, SelectExecution, SelectRequest, SelectionAreaDragHandle, SelectionAreaFinalizeExecution, SelectionAreaFinalizeRequest, SelectionAreaFinalizeValidator, SelectionAreaPreparationExecution, SelectionAreaPreparationRequest, SelectionAreaPreparationValidator, SetBackgroundTransformExecution, SetBackgroundTransformRequest, SingleSelectExecution, SingleSelectRequest, SortItemLayersExecution, SortItemLayersRequest, SortItemsByParentExecution, SortItemsByParentRequest, SortNodeLayersExecution, SortNodeLayersRequest, StartDragSequenceExecution, StartDragSequenceRequest, UpdateItemAndChildrenLayersExecution, UpdateItemAndChildrenLayersRequest, UpdateNodeWhenStateOrSizeChangedExecution, UpdateNodeWhenStateOrSizeChangedRequest, UpdateScaleExecution, UpdateScaleRequest, createSVGElement, debounceTime, fixedCenterBehavior, fixedOutboundBehavior, floatingBehavior, getExternalItem, getMarkerEndId, getMarkerSelectedEndId, getMarkerSelectedStartId, getMarkerStartId, isExternalItem, isMobile, isNode, isNodeOutlet, isNodeOutput, mixinChangeSelection, mixinChangeVisibility, notifyOnStart, transitionEnd };
9521
+ 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, AddZoomToStoreExecution, AddZoomToStoreRequest, ApplyChildResizeRestrictionsExecution, ApplyChildResizeRestrictionsRequest, ApplyParentResizeRestrictionsExecution, ApplyParentResizeRestrictionsRequest, 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, CalculateClosestInputExecution, CalculateClosestInputRequest, CalculateCommonNodeMoveRestrictionsExecution, CalculateCommonNodeMoveRestrictionsRequest, CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, CalculateConnectionLineByBehaviorExecution, CalculateConnectionLineByBehaviorRequest, CalculateFlowPointFromMinimapPointExecution, CalculateFlowPointFromMinimapPointRequest, CalculateNodeMoveRestrictionsExecution, CalculateNodeMoveRestrictionsRequest, CalculateNodesBoundingBoxExecution, CalculateNodesBoundingBoxNormalizedPositionExecution, CalculateNodesBoundingBoxNormalizedPositionRequest, CalculateNodesBoundingBoxRequest, CanvasDragHandler, CanvasMoveFinalizeExecution, CanvasMoveFinalizeRequest, CanvasMovePreparationExecution, CanvasMovePreparationRequest, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, ConnectionBaseDragHandler, ConnectionDragHandler, ConnectionSourceDragHandler, ConnectionTargetDragHandler, CreateConnectionDragHandler, CreateConnectionDragHandlerExecution, CreateConnectionDragHandlerRequest, CreateConnectionFinalizeExecution, CreateConnectionFinalizeRequest, CreateConnectionFromOutletPreparationExecution, CreateConnectionFromOutletPreparationRequest, CreateConnectionFromOutputPreparationExecution, CreateConnectionFromOutputPreparationRequest, CreateConnectionFromOutputPreparationValidator, CreateConnectionMarkersExecution, CreateConnectionMarkersRequest, CreateConnectionPreparationExecution, CreateConnectionPreparationRequest, CreateMoveNodesDragModelFromSelectionExecution, CreateMoveNodesDragModelFromSelectionRequest, DRAG_AND_DROP_COMMON_PROVIDERS, Deprecated, EFConnectableSide, EFConnectionBehavior, EFConnectionType, EFMarkerType, EFResizeHandleType, EFTriggerEvent, EFZoomAction, EFZoomDirection, EXTERNAL_ITEM_FINALIZE_PROVIDERS, EXTERNAL_ITEM_PREPARATION_PROVIDERS, EmitSelectionChangeEventExecution, EmitSelectionChangeEventRequest, EndDragSequenceExecution, EndDragSequenceRequest, ExternalItemDragHandler, ExternalItemFinalizeExecution, ExternalItemFinalizeRequest, ExternalItemPreparationExecution, ExternalItemPreparationRequest, ExternalItemPreparationValidator, FBackgroundBase, FBackgroundComponent, FBezierPathBuilder, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FChannel, FChannelHub, FCirclePatternComponent, FComponentsStore, FConnectionBase, FConnectionCenterDirective, FConnectionComponent, FConnectionDragHandleComponent, FConnectionFactory, FConnectionForCreateComponent, FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, FConnectionTextPathDirective, FConnectorBase, FCreateConnectionEvent, FCreateNodeEvent, FDragHandleDirective, FDraggableBase, FDraggableDataContext, FDraggableDirective, FDropToGroupEvent, FExternalItemBase, FExternalItemDirective, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FGroupDirective, FLineAlignmentBase, FLineAlignmentComponent, FMarkerBase, FMarkerDirective, FMinimapCanvasDirective, FMinimapComponent, FMinimapData, FMinimapDragHandler, FMinimapFlowDirective, FMinimapViewDirective, FNodeBase, FNodeDirective, FNodeInputBase, FNodeInputDirective, FNodeIntersectedWithConnections, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FReassignConnectionEvent, FRectPatternComponent, FResizeChannel, FResizeHandleDirective, FRotateHandleDirective, FSegmentPathBuilder, FSelectionAreaBase, FSelectionAreaComponent, FSelectionChangeEvent, FSnapConnectionComponent, FStraightPathBuilder, FZoomBase, FZoomDirective, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_CANVAS, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_DRAG_HANDLE_CLASS, F_CONNECTION_FEATURES, F_CONNECTION_IDENTIFIERS, F_CONNECTION_PROVIDERS, F_CONNECTORS_FEATURES, F_CONNECTORS_PROVIDERS, F_CSS_CLASS, 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_FEATURES, F_ZOOM_PROVIDERS, F_ZOOM_TAG, FindInputAtPositionExecution, FindInputAtPositionRequest, FitToFlowExecution, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetAllCanBeConnectedInputsAndRectsExecution, GetAllCanBeConnectedInputsAndRectsRequest, GetCanBeConnectedOutputByOutletExecution, GetCanBeConnectedOutputByOutletRequest, GetCanBeConnectedOutputByOutletValidator, GetCanBeSelectedItemsExecution, GetCanBeSelectedItemsRequest, GetCanvasExecution, GetCanvasRequest, GetConnectorAndRectExecution, GetConnectorAndRectRequest, GetCurrentSelectionExecution, GetCurrentSelectionRequest, GetDeepChildrenNodesAndGroupsExecution, GetDeepChildrenNodesAndGroupsRequest, GetElementRoundedRectExecution, GetElementRoundedRectRequest, GetFlowExecution, GetFlowHostElementExecution, GetFlowHostElementRequest, GetFlowRequest, GetFlowStateConnectionsExecution, GetFlowStateConnectionsRequest, GetFlowStateExecution, GetFlowStateNodesExecution, GetFlowStateNodesRequest, GetFlowStateRequest, GetNodePaddingExecution, GetNodePaddingRequest, GetNodeResizeRestrictionsExecution, GetNodeResizeRestrictionsRequest, GetNodesExecution, GetNodesRequest, GetNormalizedChildrenNodesRectExecution, GetNormalizedChildrenNodesRectRequest, GetNormalizedElementRectExecution, GetNormalizedElementRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetNormalizedPointExecution, GetNormalizedPointRequest, GetParentNodesExecution, GetParentNodesRequest, InitializeDragSequenceExecution, InitializeDragSequenceRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, IsConnectionUnderNodeRequest, IsDragStartedExecution, IsDragStartedRequest, LineAlignmentDragHandler, LineAlignmentPreparationExecution, LineAlignmentPreparationRequest, LineElement, LineService, ListenCountChangesExecution, ListenCountChangesRequest, ListenDataChangesExecution, ListenDataChangesRequest, ListenTransformChangesExecution, ListenTransformChangesRequest, LogExecutionTime, MINIMAP_DRAG_FINALIZE_PROVIDERS, MINIMAP_DRAG_PREPARATION_PROVIDERS, MarkAllCanBeConnectedInputsExecution, MarkAllCanBeConnectedInputsRequest, MinimapCalculateSvgScaleAndViewBoxExecution, MinimapCalculateSvgScaleAndViewBoxRequest, MinimapCalculateViewBoxExecution, MinimapCalculateViewBoxRequest, MinimapDragFinalizeExecution, MinimapDragFinalizeRequest, MinimapDragFinalizeValidator, MinimapDragPreparationExecution, MinimapDragPreparationRequest, MinimapDragPreparationValidator, MinimapDrawNodesExecution, MinimapDrawNodesRequest, MoveFrontElementsBeforeTargetElementExecution, MoveFrontElementsBeforeTargetElementRequest, NODE_DRAG_TO_PARENT_FINALIZE_PROVIDERS, NODE_DRAG_TO_PARENT_PREPARATION_PROVIDERS, NODE_MOVE_PREPARATION_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_FINALIZE_PROVIDERS, NODE_RESIZE_PREPARATION_PROVIDERS, NODE_RESIZE_PROVIDERS, NodeDragHandler, NodeDragToParentDragHandler, NodeDragToParentFinalizeExecution, NodeDragToParentFinalizeRequest, NodeDragToParentPreparationExecution, NodeDragToParentPreparationRequest, NodeDragToParentPreparationValidator, NodeMoveFinalizeExecution, NodeMoveFinalizeRequest, NodeMovePreparationExecution, NodeMovePreparationRequest, NodeResizeByChildDragHandler, NodeResizeDragHandler, NodeResizeFinalizeExecution, NodeResizeFinalizeRequest, NodeResizePreparationExecution, NodeResizePreparationRequest, NodeResizePreparationValidator, NotifyDataChangedExecution, NotifyDataChangedRequest, NotifyTransformChangedExecution, NotifyTransformChangedRequest, OnPointerMoveExecution, OnPointerMoveRequest, PrepareDragSequenceExecution, PrepareDragSequenceRequest, PreventDefaultIsExternalItemExecution, PreventDefaultIsExternalItemRequest, PutInputConnectionHandlersToArrayExecution, PutInputConnectionHandlersToArrayRequest, PutOutputConnectionHandlersToArrayExecution, PutOutputConnectionHandlersToArrayRequest, RESIZE_DIRECTIONS, ReassignConnectionDragHandler, ReassignConnectionFinalizeExecution, ReassignConnectionFinalizeRequest, ReassignConnectionPreparationExecution, ReassignConnectionPreparationRequest, RedrawCanvasWithAnimationExecution, RedrawCanvasWithAnimationRequest, RedrawConnectionsExecution, RedrawConnectionsRequest, RemoveBackgroundFromStoreExecution, RemoveBackgroundFromStoreRequest, RemoveCanvasFromStoreExecution, RemoveCanvasFromStoreRequest, RemoveConnectionForCreateFromStoreExecution, RemoveConnectionForCreateFromStoreRequest, RemoveConnectionFromStoreExecution, RemoveConnectionFromStoreRequest, RemoveConnectionMarkerFromStoreExecution, RemoveConnectionMarkerFromStoreRequest, RemoveDndFromStoreExecution, RemoveDndFromStoreRequest, RemoveFlowFromStoreExecution, RemoveFlowFromStoreRequest, RemoveInputFromStoreExecution, RemoveInputFromStoreRequest, RemoveLineAlignmentFromStoreExecution, RemoveLineAlignmentFromStoreRequest, RemoveNodeFromStoreExecution, RemoveNodeFromStoreRequest, RemoveOutletFromStoreExecution, RemoveOutletFromStoreRequest, RemoveOutputFromStoreExecution, RemoveOutputFromStoreRequest, RemoveSnapConnectionFromStoreExecution, RemoveSnapConnectionFromStoreRequest, RemoveZoomFromStoreExecution, RemoveZoomFromStoreRequest, ResetScaleAndCenterExecution, ResetScaleAndCenterRequest, ResetScaleExecution, ResetScaleRequest, ResetZoomExecution, ResetZoomRequest, 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, SetZoomExecution, SetZoomRequest, SingleSelectExecution, SingleSelectRequest, SortItemLayersExecution, SortItemLayersRequest, SortItemsByParentExecution, SortItemsByParentRequest, SortNodeLayersExecution, SortNodeLayersRequest, StartDragSequenceExecution, StartDragSequenceRequest, UnmarkAllCanBeConnectedInputsExecution, UnmarkAllCanBeConnectedInputsRequest, 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 };
9191
9522
  //# sourceMappingURL=foblex-flow.mjs.map