@foblex/flow 17.1.0 → 17.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/domain/css-cls.d.ts +13 -0
  2. package/domain/f-background/providers.d.ts +1 -1
  3. package/domain/f-canvas/providers.d.ts +1 -1
  4. package/domain/f-connection/index.d.ts +0 -3
  5. package/domain/f-connection/providers.d.ts +1 -4
  6. package/domain/f-connection/redraw-connections/redraw-connections.execution.d.ts +2 -2
  7. package/domain/f-connectors/calculate-closest-input/calculate-closest-input.execution.d.ts +11 -0
  8. package/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.d.ts +7 -0
  9. package/domain/f-connectors/calculate-closest-input/index.d.ts +2 -0
  10. package/domain/f-connectors/find-input-at-position/find-input-at-position.execution.d.ts +24 -0
  11. package/domain/f-connectors/find-input-at-position/find-input-at-position.request.d.ts +8 -0
  12. package/domain/f-connectors/find-input-at-position/index.d.ts +2 -0
  13. 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
  14. 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
  15. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/index.d.ts +2 -0
  16. package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.d.ts +5 -0
  17. package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.d.ts +11 -0
  18. package/domain/f-connectors/get-connector-and-rect/index.d.ts +2 -0
  19. package/domain/{f-connection/find-closest-input → f-connectors}/i-closest-input.d.ts +1 -1
  20. package/domain/{f-connection/get-connector-with-rect/i-connector-with-rect.d.ts → f-connectors/i-connector-and-rect.d.ts} +2 -2
  21. package/domain/f-connectors/index.d.ts +8 -0
  22. package/domain/f-connectors/mark-all-can-be-connected-inputs/index.d.ts +2 -0
  23. package/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.execution.d.ts +10 -0
  24. package/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.d.ts +5 -0
  25. package/domain/f-connectors/providers.d.ts +7 -1
  26. package/domain/f-connectors/unmark-all-can-be-connected-inputs/index.d.ts +2 -0
  27. package/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.execution.d.ts +10 -0
  28. package/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.d.ts +5 -0
  29. package/domain/f-draggable/end-drag-sequence/end-drag-sequence.execution.d.ts +1 -0
  30. package/domain/f-draggable/providers.d.ts +1 -1
  31. package/domain/f-draggable/start-drag-sequence/start-drag-sequence.execution.d.ts +1 -0
  32. package/domain/f-event-trigger.d.ts +4 -0
  33. package/domain/f-flow/get-flow-state/providers.d.ts +1 -1
  34. package/domain/f-flow/providers.d.ts +1 -1
  35. package/domain/f-node/providers.d.ts +1 -1
  36. package/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.execution.d.ts +2 -0
  37. package/domain/f-selection/clear-selection/clear-selection.execution.d.ts +1 -3
  38. package/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.d.ts +4 -6
  39. package/domain/f-selection/get-can-be-selected-items/i-can-be-selected-element-and-rect.d.ts +6 -0
  40. package/domain/f-selection/get-can-be-selected-items/index.d.ts +1 -1
  41. package/domain/f-selection/providers.d.ts +1 -1
  42. package/domain/f-selection/select/select.execution.d.ts +2 -5
  43. package/domain/f-selection/select-all/select-all.execution.d.ts +2 -5
  44. package/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.d.ts +5 -0
  45. package/domain/f-zoom/add-zoom-to-store/add-zoom-to-store.execution.d.ts +9 -0
  46. package/domain/f-zoom/add-zoom-to-store/index.d.ts +2 -0
  47. package/domain/f-zoom/f-zoom-tag.d.ts +1 -0
  48. package/domain/f-zoom/index.d.ts +6 -0
  49. package/domain/f-zoom/providers.d.ts +5 -0
  50. package/domain/f-zoom/remove-zoom-from-store/index.d.ts +2 -0
  51. package/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.d.ts +2 -0
  52. package/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.d.ts +9 -0
  53. package/domain/f-zoom/reset-zoom/index.d.ts +2 -0
  54. package/domain/f-zoom/reset-zoom/reset-zoom-request.d.ts +2 -0
  55. package/domain/f-zoom/reset-zoom/reset-zoom.execution.d.ts +10 -0
  56. package/domain/f-zoom/set-zoom/index.d.ts +2 -0
  57. package/domain/f-zoom/set-zoom/set-zoom-request.d.ts +8 -0
  58. package/domain/f-zoom/set-zoom/set-zoom.execution.d.ts +16 -0
  59. package/domain/i-f-action-trigger.d.ts +14 -0
  60. package/domain/index.d.ts +5 -0
  61. package/domain/log-deprecated.d.ts +1 -0
  62. package/domain/providers.d.ts +1 -1
  63. package/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.d.ts +4 -4
  64. package/domain/update-item-and-children-layers/update-item-and-children-layers.request.d.ts +3 -3
  65. package/esm2022/domain/css-cls.mjs +14 -0
  66. package/esm2022/domain/f-canvas/center-group-or-node/center-group-or-node.execution.mjs +2 -2
  67. package/esm2022/domain/f-canvas/fit-to-flow/fit-to-flow.execution.mjs +3 -3
  68. package/esm2022/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.mjs +3 -3
  69. package/esm2022/domain/f-connection/index.mjs +1 -4
  70. package/esm2022/domain/f-connection/providers.mjs +1 -7
  71. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +11 -11
  72. package/esm2022/domain/f-connectors/calculate-closest-input/calculate-closest-input.execution.mjs +42 -0
  73. package/esm2022/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.mjs +9 -0
  74. package/esm2022/domain/f-connectors/calculate-closest-input/index.mjs +3 -0
  75. package/esm2022/domain/f-connectors/find-input-at-position/find-input-at-position.execution.mjs +89 -0
  76. package/esm2022/domain/f-connectors/find-input-at-position/find-input-at-position.request.mjs +11 -0
  77. package/esm2022/domain/f-connectors/find-input-at-position/index.mjs +3 -0
  78. 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
  79. 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
  80. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/index.mjs +3 -0
  81. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.mjs +7 -0
  82. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.mjs +28 -0
  83. package/esm2022/domain/f-connectors/get-connector-and-rect/index.mjs +3 -0
  84. package/esm2022/domain/f-connectors/i-closest-input.mjs +2 -0
  85. package/esm2022/domain/f-connectors/i-connector-and-rect.mjs +2 -0
  86. package/esm2022/domain/f-connectors/index.mjs +9 -1
  87. package/esm2022/domain/f-connectors/mark-all-can-be-connected-inputs/index.mjs +3 -0
  88. package/esm2022/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.execution.mjs +27 -0
  89. package/esm2022/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.mjs +7 -0
  90. package/esm2022/domain/f-connectors/providers.mjs +14 -2
  91. package/esm2022/domain/f-connectors/unmark-all-can-be-connected-inputs/index.mjs +3 -0
  92. package/esm2022/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.execution.mjs +27 -0
  93. package/esm2022/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.mjs +7 -0
  94. package/esm2022/domain/f-draggable/emit-selection-change-event/emit-selection-change-event.execution.mjs +3 -3
  95. package/esm2022/domain/f-draggable/end-drag-sequence/end-drag-sequence.execution.mjs +7 -2
  96. package/esm2022/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence.execution.mjs +2 -2
  97. package/esm2022/domain/f-draggable/start-drag-sequence/start-drag-sequence.execution.mjs +8 -3
  98. package/esm2022/domain/f-event-trigger.mjs +7 -0
  99. package/esm2022/domain/f-flow/get-flow-state/get-flow-state.execution.mjs +4 -4
  100. package/esm2022/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.execution.mjs +40 -6
  101. package/esm2022/domain/f-selection/clear-selection/clear-selection.execution.mjs +9 -12
  102. package/esm2022/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.mjs +8 -11
  103. package/esm2022/domain/f-selection/get-can-be-selected-items/i-can-be-selected-element-and-rect.mjs +2 -0
  104. package/esm2022/domain/f-selection/get-can-be-selected-items/index.mjs +2 -2
  105. package/esm2022/domain/f-selection/select/select.execution.mjs +18 -22
  106. package/esm2022/domain/f-selection/select-all/select-all.execution.mjs +18 -22
  107. package/esm2022/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.mjs +3 -3
  108. package/esm2022/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.mjs +7 -0
  109. package/esm2022/domain/f-zoom/add-zoom-to-store/add-zoom-to-store.execution.mjs +25 -0
  110. package/esm2022/domain/f-zoom/add-zoom-to-store/index.mjs +3 -0
  111. package/esm2022/domain/f-zoom/f-zoom-tag.mjs +2 -0
  112. package/esm2022/domain/f-zoom/index.mjs +7 -0
  113. package/esm2022/domain/f-zoom/providers.mjs +11 -0
  114. package/esm2022/domain/f-zoom/remove-zoom-from-store/index.mjs +3 -0
  115. package/esm2022/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.mjs +3 -0
  116. package/esm2022/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.mjs +25 -0
  117. package/esm2022/domain/f-zoom/reset-zoom/index.mjs +3 -0
  118. package/esm2022/domain/f-zoom/reset-zoom/reset-zoom-request.mjs +3 -0
  119. package/esm2022/domain/f-zoom/reset-zoom/reset-zoom.execution.mjs +27 -0
  120. package/esm2022/domain/f-zoom/set-zoom/index.mjs +3 -0
  121. package/esm2022/domain/f-zoom/set-zoom/set-zoom-request.mjs +13 -0
  122. package/esm2022/domain/f-zoom/set-zoom/set-zoom.execution.mjs +50 -0
  123. package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect.execution.mjs +2 -2
  124. package/esm2022/domain/i-f-action-trigger.mjs +11 -0
  125. package/esm2022/domain/index.mjs +6 -1
  126. package/esm2022/domain/log-deprecated.mjs +11 -0
  127. package/esm2022/domain/providers.mjs +3 -1
  128. package/esm2022/domain/sort-item-layers/sort-item-layers.execution.mjs +4 -4
  129. package/esm2022/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.mjs +14 -14
  130. package/esm2022/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.mjs +2 -2
  131. package/esm2022/domain/update-item-and-children-layers/update-item-and-children-layers.execution.mjs +3 -3
  132. package/esm2022/domain/update-item-and-children-layers/update-item-and-children-layers.request.mjs +1 -1
  133. package/esm2022/f-backgroud/f-background.component.mjs +4 -4
  134. package/esm2022/f-canvas/domain/f-canvas-change.event.mjs +1 -1
  135. package/esm2022/f-canvas/f-canvas-base.mjs +1 -1
  136. package/esm2022/f-canvas/f-canvas.component.mjs +37 -14
  137. package/esm2022/f-connection/common/f-connection-base.mjs +3 -3
  138. package/esm2022/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +4 -2
  139. package/esm2022/f-connection/common/f-connection-text/f-connection-text.component.mjs +2 -1
  140. package/esm2022/f-connection/f-connection/f-connection.component.mjs +10 -8
  141. package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +10 -8
  142. package/esm2022/f-connection/f-marker/f-marker.directive.mjs +3 -3
  143. package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +12 -9
  144. package/esm2022/f-connectors/f-connector-base.mjs +9 -5
  145. package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +25 -25
  146. package/esm2022/f-connectors/f-node-outlet/f-node-outlet-base.mjs +1 -1
  147. package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +18 -19
  148. package/esm2022/f-connectors/f-node-output/f-node-output-base.mjs +1 -1
  149. package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +30 -26
  150. package/esm2022/f-connectors/index.mjs +1 -2
  151. package/esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.mjs +8 -11
  152. package/esm2022/f-draggable/canvas/canvas-move-finalize/index.mjs +1 -2
  153. package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.mjs +36 -19
  154. package/esm2022/f-draggable/canvas/canvas-move-preparation/index.mjs +1 -3
  155. package/esm2022/f-draggable/canvas/canvas.drag-handler.mjs +8 -8
  156. package/esm2022/f-draggable/canvas/providers.mjs +5 -5
  157. package/esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.mjs +14 -11
  158. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler-preparation/create-connection-drag-handler-preparation.execution.mjs +40 -0
  159. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler-preparation/create-connection-drag-handler-preparation.request.mjs +9 -0
  160. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler-preparation/index.mjs +3 -0
  161. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.mjs +36 -38
  162. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.mjs +4 -2
  163. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.mjs +32 -24
  164. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.mjs +4 -2
  165. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.mjs +1 -2
  166. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.mjs +8 -12
  167. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.mjs +4 -2
  168. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/index.mjs +2 -2
  169. package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +56 -51
  170. package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.mjs +27 -24
  171. package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.mjs +4 -4
  172. package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.mjs +1 -2
  173. package/esm2022/f-draggable/connections/i-create-reassign-connection-drag-data.mjs +2 -0
  174. package/esm2022/f-draggable/connections/index.mjs +2 -2
  175. package/esm2022/f-draggable/connections/providers.mjs +3 -8
  176. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.mjs +9 -5
  177. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.mjs +2 -2
  178. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.mjs +4 -2
  179. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +71 -53
  180. package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.mjs +3 -3
  181. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +2 -2
  182. package/esm2022/f-draggable/f-draggable-base.mjs +1 -1
  183. package/esm2022/f-draggable/f-draggable-data-context.mjs +1 -1
  184. package/esm2022/f-draggable/f-draggable.directive.mjs +55 -24
  185. package/esm2022/f-draggable/f-injector.mjs +19 -0
  186. package/esm2022/f-draggable/i-draggable-item.mjs +1 -1
  187. package/esm2022/f-draggable/index.mjs +2 -1
  188. package/esm2022/f-draggable/node/connection-drag-handlers/base-connection.drag-handler.mjs +56 -0
  189. package/esm2022/f-draggable/node/connection-drag-handlers/index.mjs +5 -0
  190. package/esm2022/f-draggable/node/connection-drag-handlers/source-connection.drag-handler.mjs +11 -0
  191. package/esm2022/f-draggable/node/connection-drag-handlers/source-target-connection.drag-handler.mjs +22 -0
  192. package/esm2022/f-draggable/node/connection-drag-handlers/target-connection.drag-handler.mjs +11 -0
  193. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.mjs +47 -45
  194. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.execution.mjs +69 -0
  195. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.request.mjs +7 -0
  196. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/index.mjs +3 -0
  197. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.execution.mjs +49 -0
  198. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.request.mjs +9 -0
  199. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/index.mjs +3 -0
  200. 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 +27 -35
  201. 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.request.mjs +4 -4
  202. 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 +33 -46
  203. 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.request.mjs +4 -4
  204. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-move-limits-and-position.mjs +2 -0
  205. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-move-limits.mjs +2 -0
  206. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/index.mjs +5 -4
  207. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.mjs +5 -5
  208. package/esm2022/f-draggable/node/index.mjs +4 -6
  209. package/esm2022/f-draggable/node/line-alignment-preparation/line-alignment-preparation.execution.mjs +7 -18
  210. package/esm2022/f-draggable/node/line-alignment-preparation/line-alignment-preparation.request.mjs +7 -1
  211. package/esm2022/f-draggable/node/line-alignment.drag-handler.mjs +5 -4
  212. package/esm2022/f-draggable/node/node-drag-to-parent-finalize/node-drag-to-parent-finalize.execution.mjs +3 -3
  213. package/esm2022/f-draggable/node/node-drag-to-parent-preparation/index.mjs +1 -3
  214. package/esm2022/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.mjs +13 -6
  215. package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +13 -9
  216. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.execution.mjs +5 -4
  217. package/esm2022/f-draggable/node/node.drag-handler.mjs +12 -29
  218. package/esm2022/f-draggable/node/point-bounds-limiter.mjs +41 -0
  219. package/esm2022/f-draggable/node/providers.mjs +3 -3
  220. package/esm2022/f-draggable/node/summary-node.drag-handler.mjs +36 -0
  221. package/esm2022/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.mjs +26 -22
  222. package/esm2022/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.mjs +1 -1
  223. package/esm2022/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.mjs +18 -18
  224. package/esm2022/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.mjs +1 -1
  225. package/esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.mjs +3 -3
  226. package/esm2022/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.mjs +8 -11
  227. package/esm2022/f-draggable/node-resize/node-resize-preparation/index.mjs +1 -3
  228. package/esm2022/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.mjs +46 -34
  229. package/esm2022/f-draggable/node-resize/node-resize.drag-handler.mjs +47 -34
  230. package/esm2022/f-draggable/node-resize/providers.mjs +3 -3
  231. package/esm2022/f-draggable/node-resize/resize-direction.mjs +5 -1
  232. package/esm2022/f-draggable/single-select/single-select.execution.mjs +101 -70
  233. package/esm2022/f-draggable/single-select/single-select.request.mjs +4 -2
  234. package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.execution.mjs +2 -2
  235. package/esm2022/f-external-item/domain/external-item-preparation/external-item-preparation.execution.mjs +27 -27
  236. package/esm2022/f-external-item/domain/external-item-preparation/index.mjs +1 -2
  237. package/esm2022/f-external-item/domain/external-item-preparation/providers.mjs +1 -3
  238. package/esm2022/f-external-item/domain/external-item.drag-handler.mjs +9 -8
  239. package/esm2022/f-flow/f-flow.component.mjs +15 -15
  240. package/esm2022/f-minimap/domain/f-minimap.drag-handler.mjs +2 -2
  241. package/esm2022/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.execution.mjs +2 -2
  242. package/esm2022/f-minimap/domain/minimap-drag-finalize/index.mjs +1 -2
  243. package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.mjs +8 -1
  244. package/esm2022/f-minimap/domain/minimap-drag-finalize/providers.mjs +1 -3
  245. package/esm2022/f-minimap/domain/minimap-drag-preparation/index.mjs +1 -2
  246. package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.mjs +10 -2
  247. package/esm2022/f-minimap/domain/minimap-drag-preparation/providers.mjs +1 -3
  248. package/esm2022/f-minimap/f-minimap-canvas.directive.mjs +2 -2
  249. package/esm2022/f-minimap/f-minimap-flow.directive.mjs +2 -2
  250. package/esm2022/f-minimap/f-minimap-view.directive.mjs +2 -2
  251. package/esm2022/f-minimap/f-minimap.component.mjs +4 -4
  252. package/esm2022/f-node/f-group.directive.mjs +24 -16
  253. package/esm2022/f-node/f-node-base.mjs +1 -1
  254. package/esm2022/f-node/f-node.directive.mjs +25 -17
  255. package/esm2022/f-node/f-resize-handle/e-f-resize-handle-type.mjs +6 -2
  256. package/esm2022/f-node/f-resize-handle/f-resize-handle.directive.mjs +3 -3
  257. package/esm2022/f-selection-area/domain/providers.mjs +5 -5
  258. package/esm2022/f-selection-area/domain/selection-area-finalize/index.mjs +1 -3
  259. package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.mjs +14 -10
  260. package/esm2022/f-selection-area/domain/selection-area-preparation/index.mjs +1 -3
  261. package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.mjs +25 -23
  262. package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.mjs +4 -2
  263. package/esm2022/f-selection-area/domain/selection-area.drag-handle.mjs +32 -29
  264. package/esm2022/f-selection-area/f-selection-area.component.mjs +11 -6
  265. package/esm2022/f-storage/f-components-store.mjs +2 -1
  266. package/esm2022/f-zoom/e-f-zoom-action.mjs +6 -0
  267. package/esm2022/f-zoom/e-f-zoom-direction.mjs +6 -0
  268. package/esm2022/f-zoom/f-zoom-base.mjs +2 -98
  269. package/esm2022/f-zoom/f-zoom.directive.mjs +139 -21
  270. package/esm2022/f-zoom/index.mjs +3 -1
  271. package/esm2022/mixins/change-selection/change-selection.mjs +7 -7
  272. package/esm2022/mixins/change-selection/i-selectable.mjs +2 -0
  273. package/esm2022/mixins/change-selection/index.mjs +2 -2
  274. package/f-backgroud/providers.d.ts +1 -1
  275. package/f-canvas/f-canvas-base.d.ts +2 -2
  276. package/f-canvas/f-canvas.component.d.ts +9 -0
  277. package/f-connection/common/f-connection-base.d.ts +5 -5
  278. package/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +1 -0
  279. package/f-connection/f-connection/f-connection.component.d.ts +2 -0
  280. package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +2 -0
  281. package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +3 -0
  282. package/f-connection/providers.d.ts +1 -1
  283. package/f-connectors/f-connector-base.d.ts +4 -2
  284. package/f-connectors/f-node-input/f-node-input.directive.d.ts +6 -6
  285. package/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +1 -0
  286. package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +6 -6
  287. package/f-connectors/f-node-output/f-node-output-base.d.ts +1 -0
  288. package/f-connectors/f-node-output/f-node-output.directive.d.ts +8 -7
  289. package/f-connectors/index.d.ts +0 -1
  290. package/f-connectors/providers.d.ts +1 -1
  291. package/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.d.ts +1 -3
  292. package/f-draggable/canvas/canvas-move-finalize/index.d.ts +0 -1
  293. package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.d.ts +7 -6
  294. package/f-draggable/canvas/canvas-move-preparation/index.d.ts +0 -2
  295. package/f-draggable/canvas/canvas.drag-handler.d.ts +2 -2
  296. package/f-draggable/canvas/providers.d.ts +3 -1
  297. package/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.d.ts +3 -2
  298. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler-preparation/create-connection-drag-handler-preparation.execution.d.ts +12 -0
  299. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler-preparation/create-connection-drag-handler-preparation.request.d.ts +7 -0
  300. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler-preparation/index.d.ts +2 -0
  301. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.d.ts +6 -6
  302. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.d.ts +3 -1
  303. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.d.ts +6 -6
  304. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.d.ts +3 -1
  305. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.d.ts +0 -1
  306. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.d.ts +1 -2
  307. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.d.ts +3 -1
  308. package/f-draggable/connections/create-connection/create-connection-preparation/index.d.ts +1 -1
  309. package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +14 -17
  310. package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.d.ts +7 -7
  311. package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.d.ts +2 -2
  312. package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.d.ts +0 -1
  313. package/f-draggable/connections/i-create-reassign-connection-drag-data.d.ts +7 -0
  314. package/f-draggable/connections/index.d.ts +1 -1
  315. package/f-draggable/connections/providers.d.ts +2 -3
  316. package/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.d.ts +1 -0
  317. package/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.d.ts +3 -1
  318. package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +17 -17
  319. package/f-draggable/f-draggable-base.d.ts +4 -1
  320. package/f-draggable/f-draggable-data-context.d.ts +2 -2
  321. package/f-draggable/f-draggable.directive.d.ts +16 -3
  322. package/f-draggable/f-injector.d.ts +8 -0
  323. package/f-draggable/i-draggable-item.d.ts +2 -1
  324. package/f-draggable/index.d.ts +1 -0
  325. package/f-draggable/node/connection-drag-handlers/base-connection.drag-handler.d.ts +21 -0
  326. package/f-draggable/node/connection-drag-handlers/index.d.ts +4 -0
  327. package/f-draggable/node/connection-drag-handlers/source-connection.drag-handler.d.ts +7 -0
  328. package/f-draggable/node/connection-drag-handlers/source-target-connection.drag-handler.d.ts +10 -0
  329. package/f-draggable/node/connection-drag-handlers/target-connection.drag-handler.d.ts +7 -0
  330. package/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.d.ts +14 -13
  331. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.execution.d.ts +19 -0
  332. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.request.d.ts +5 -0
  333. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/index.d.ts +2 -0
  334. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.execution.d.ts +15 -0
  335. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/{calculate-node-move-restrictions/calculate-node-move-restrictions.request.d.ts → calculate-node-move-limits/calculate-node-move-limits.request.d.ts} +1 -1
  336. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/index.d.ts +2 -0
  337. 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 +5 -10
  338. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.d.ts +4 -4
  339. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.d.ts +8 -13
  340. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.d.ts +4 -4
  341. package/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-move-limits-and-position.d.ts +5 -0
  342. package/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-move-limits.d.ts +3 -0
  343. package/f-draggable/node/create-move-nodes-drag-model-from-selection/index.d.ts +4 -3
  344. package/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.d.ts +3 -3
  345. package/f-draggable/node/index.d.ts +3 -5
  346. package/f-draggable/node/line-alignment-preparation/line-alignment-preparation.execution.d.ts +0 -2
  347. package/f-draggable/node/line-alignment-preparation/line-alignment-preparation.request.d.ts +5 -0
  348. package/f-draggable/node/line-alignment.drag-handler.d.ts +2 -3
  349. package/f-draggable/node/node-drag-to-parent-preparation/index.d.ts +0 -2
  350. package/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.d.ts +1 -0
  351. package/f-draggable/node/node-move-finalize/node-move-finalize.execution.d.ts +2 -0
  352. package/f-draggable/node/node.drag-handler.d.ts +6 -9
  353. package/f-draggable/node/point-bounds-limiter.d.ts +15 -0
  354. package/f-draggable/node/providers.d.ts +2 -1
  355. package/f-draggable/node/summary-node.drag-handler.d.ts +14 -0
  356. package/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.d.ts +5 -5
  357. package/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.d.ts +5 -4
  358. package/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.d.ts +3 -3
  359. package/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.d.ts +1 -3
  360. package/f-draggable/node-resize/node-resize-preparation/index.d.ts +0 -2
  361. package/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.d.ts +13 -11
  362. package/f-draggable/node-resize/node-resize.drag-handler.d.ts +16 -12
  363. package/f-draggable/node-resize/providers.d.ts +2 -1
  364. package/f-draggable/node-resize/resize-direction.d.ts +16 -0
  365. package/f-draggable/providers.d.ts +1 -1
  366. package/f-draggable/single-select/single-select.execution.d.ts +54 -20
  367. package/f-draggable/single-select/single-select.request.d.ts +3 -1
  368. package/f-external-item/domain/external-item-preparation/external-item-preparation.execution.d.ts +7 -11
  369. package/f-external-item/domain/external-item-preparation/index.d.ts +0 -1
  370. package/f-external-item/domain/external-item-preparation/providers.d.ts +1 -2
  371. package/f-external-item/domain/external-item.drag-handler.d.ts +2 -3
  372. package/f-external-item/domain/providers.d.ts +1 -1
  373. package/f-minimap/domain/minimap-drag-finalize/index.d.ts +0 -1
  374. package/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.d.ts +1 -0
  375. package/f-minimap/domain/minimap-drag-finalize/providers.d.ts +1 -2
  376. package/f-minimap/domain/minimap-drag-preparation/index.d.ts +0 -1
  377. package/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.d.ts +1 -0
  378. package/f-minimap/domain/minimap-drag-preparation/providers.d.ts +1 -2
  379. package/f-minimap/domain/providers.d.ts +1 -1
  380. package/f-minimap/providers.d.ts +1 -1
  381. package/f-node/f-group.directive.d.ts +4 -0
  382. package/f-node/f-node-base.d.ts +3 -3
  383. package/f-node/f-node.directive.d.ts +4 -0
  384. package/f-node/f-resize-handle/e-f-resize-handle-type.d.ts +6 -2
  385. package/f-node/providers.d.ts +1 -1
  386. package/f-selection-area/domain/providers.d.ts +3 -1
  387. package/f-selection-area/domain/selection-area-finalize/index.d.ts +0 -2
  388. package/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.d.ts +2 -3
  389. package/f-selection-area/domain/selection-area-preparation/index.d.ts +0 -2
  390. package/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.d.ts +6 -8
  391. package/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.d.ts +3 -1
  392. package/f-selection-area/domain/selection-area.drag-handle.d.ts +7 -6
  393. package/f-selection-area/f-selection-area.component.d.ts +3 -1
  394. package/f-storage/f-components-store.d.ts +2 -0
  395. package/f-zoom/e-f-zoom-action.d.ts +4 -0
  396. package/f-zoom/e-f-zoom-direction.d.ts +4 -0
  397. package/f-zoom/f-zoom-base.d.ts +0 -17
  398. package/f-zoom/f-zoom.directive.d.ts +40 -5
  399. package/f-zoom/index.d.ts +2 -0
  400. package/fesm2022/foblex-flow.mjs +2232 -1991
  401. package/fesm2022/foblex-flow.mjs.map +1 -1
  402. package/mixins/change-selection/change-selection.d.ts +2 -2
  403. package/mixins/change-selection/i-selectable.d.ts +10 -0
  404. package/mixins/change-selection/index.d.ts +1 -1
  405. package/package.json +2 -2
  406. package/domain/f-connection/find-closest-input/find-closest-input.execution.d.ts +0 -11
  407. package/domain/f-connection/find-closest-input/find-closest-input.request.d.ts +0 -7
  408. package/domain/f-connection/find-closest-input/index.d.ts +0 -3
  409. package/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.d.ts +0 -21
  410. package/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.d.ts +0 -4
  411. package/domain/f-connection/get-all-can-be-connected-input-positions/index.d.ts +0 -2
  412. package/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.d.ts +0 -5
  413. package/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.d.ts +0 -10
  414. package/domain/f-connection/get-connector-with-rect/index.d.ts +0 -3
  415. package/domain/f-selection/get-can-be-selected-items/i-can-be-selected.d.ts +0 -6
  416. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.execution.mjs +0 -42
  417. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.request.mjs +0 -9
  418. package/esm2022/domain/f-connection/find-closest-input/i-closest-input.mjs +0 -2
  419. package/esm2022/domain/f-connection/find-closest-input/index.mjs +0 -4
  420. package/esm2022/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.mjs +0 -57
  421. package/esm2022/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.mjs +0 -7
  422. package/esm2022/domain/f-connection/get-all-can-be-connected-input-positions/index.mjs +0 -3
  423. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.mjs +0 -7
  424. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.mjs +0 -25
  425. package/esm2022/domain/f-connection/get-connector-with-rect/i-connector-with-rect.mjs +0 -2
  426. package/esm2022/domain/f-connection/get-connector-with-rect/index.mjs +0 -4
  427. package/esm2022/domain/f-selection/get-can-be-selected-items/i-can-be-selected.mjs +0 -2
  428. package/esm2022/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.mjs +0 -9
  429. package/esm2022/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.mjs +0 -38
  430. package/esm2022/f-connectors/domain/calculate-connector-connectable-side/index.mjs +0 -3
  431. package/esm2022/f-connectors/domain/index.mjs +0 -2
  432. package/esm2022/f-draggable/canvas/canvas-move-finalize/providers.mjs +0 -5
  433. package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.mjs +0 -46
  434. package/esm2022/f-draggable/canvas/canvas-move-preparation/providers.mjs +0 -7
  435. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.mjs +0 -47
  436. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.mjs +0 -9
  437. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.mjs +0 -3
  438. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.mjs +0 -36
  439. package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.mjs +0 -28
  440. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.mjs +0 -88
  441. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.mjs +0 -9
  442. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.mjs +0 -36
  443. package/esm2022/f-draggable/connections/get-input-under-pointer/index.mjs +0 -4
  444. package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +0 -55
  445. package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +0 -17
  446. package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +0 -17
  447. package/esm2022/f-draggable/node/connection.drag-handler.mjs +0 -23
  448. 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 +0 -40
  449. 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 +0 -7
  450. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/index.mjs +0 -3
  451. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.execution.mjs +0 -42
  452. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.request.mjs +0 -9
  453. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/index.mjs +0 -3
  454. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.mjs +0 -2
  455. package/esm2022/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.validator.mjs +0 -26
  456. package/esm2022/f-draggable/node/node-drag-to-parent-preparation/providers.mjs +0 -7
  457. package/esm2022/f-draggable/node/node-resize-by-child.drag-handler.mjs +0 -16
  458. package/esm2022/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.mjs +0 -44
  459. package/esm2022/f-draggable/node-resize/node-resize-preparation/providers.mjs +0 -7
  460. package/esm2022/f-external-item/domain/external-item-preparation/external-item-preparation.validator.mjs +0 -30
  461. package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.mjs +0 -26
  462. package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.mjs +0 -30
  463. package/esm2022/f-selection-area/domain/selection-area-finalize/providers.mjs +0 -7
  464. package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.mjs +0 -26
  465. package/esm2022/f-selection-area/domain/selection-area-preparation/providers.mjs +0 -7
  466. package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.mjs +0 -32
  467. package/esm2022/mixins/change-selection/i-can-change-selection.mjs +0 -2
  468. package/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.d.ts +0 -6
  469. package/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.d.ts +0 -7
  470. package/f-connectors/domain/calculate-connector-connectable-side/index.d.ts +0 -2
  471. package/f-connectors/domain/index.d.ts +0 -1
  472. package/f-draggable/canvas/canvas-move-finalize/providers.d.ts +0 -2
  473. package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.d.ts +0 -17
  474. package/f-draggable/canvas/canvas-move-preparation/providers.d.ts +0 -3
  475. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.d.ts +0 -17
  476. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.d.ts +0 -7
  477. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.d.ts +0 -2
  478. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.d.ts +0 -14
  479. package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.d.ts +0 -12
  480. package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.d.ts +0 -27
  481. package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.d.ts +0 -8
  482. package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.d.ts +0 -13
  483. package/f-draggable/connections/get-input-under-pointer/index.d.ts +0 -3
  484. package/f-draggable/node/connection-base-drag-handler.d.ts +0 -24
  485. package/f-draggable/node/connection-source.drag-handler.d.ts +0 -11
  486. package/f-draggable/node/connection-target.drag-handler.d.ts +0 -11
  487. package/f-draggable/node/connection.drag-handler.d.ts +0 -14
  488. 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 +0 -13
  489. 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 +0 -5
  490. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/index.d.ts +0 -2
  491. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.execution.d.ts +0 -12
  492. package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/index.d.ts +0 -2
  493. package/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.d.ts +0 -6
  494. package/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.validator.d.ts +0 -11
  495. package/f-draggable/node/node-drag-to-parent-preparation/providers.d.ts +0 -3
  496. package/f-draggable/node/node-resize-by-child.drag-handler.d.ts +0 -11
  497. package/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.d.ts +0 -17
  498. package/f-draggable/node-resize/node-resize-preparation/providers.d.ts +0 -3
  499. package/f-external-item/domain/external-item-preparation/external-item-preparation.validator.d.ts +0 -12
  500. package/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.d.ts +0 -11
  501. package/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.d.ts +0 -13
  502. package/f-selection-area/domain/selection-area-finalize/providers.d.ts +0 -3
  503. package/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.d.ts +0 -11
  504. package/f-selection-area/domain/selection-area-preparation/providers.d.ts +0 -3
  505. package/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.d.ts +0 -13
  506. package/mixins/change-selection/i-can-change-selection.d.ts +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"foblex-flow.mjs","sources":["../../../projects/f-flow/src/f-backgroud/domain/i-f-background-pattern.ts","../../../projects/f-flow/src/domain/get-element-rounded-rect/get-element-rounded-rect-request.ts","../../../projects/f-flow/src/domain/get-element-rounded-rect/get-element-rounded-rect.execution.ts","../../../projects/f-flow/src/domain/f-background/add-background-to-store/add-background-to-store-request.ts","../../../projects/f-flow/src/f-storage/features/notify-data-changed/notify-data-changed-request.ts","../../../projects/f-flow/src/f-storage/features/notify-data-changed/notify-data-changed.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-components-data-changed/listen-data-changes-request.ts","../../../projects/f-flow/src/reactivity/debounce-time.ts","../../../projects/f-flow/src/reactivity/f-channel.ts","../../../projects/f-flow/src/reactivity/f-resize-channel.ts","../../../projects/f-flow/src/reactivity/f-channel-hub.ts","../../../projects/f-flow/src/reactivity/notify-on-start.ts","../../../projects/f-flow/src/f-storage/features/listen-components-data-changed/listen-data-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-count-changes/listen-count-changes-request.ts","../../../projects/f-flow/src/f-storage/features/listen-count-changes/listen-count-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-transform-changes/listen-transform-changes.request.ts","../../../projects/f-flow/src/f-storage/features/listen-transform-changes/listen-transform-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/notify-transform-changed/notify-transform-changed.request.ts","../../../projects/f-flow/src/f-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/features/notify-transform-changed/notify-transform-changed.execution.ts","../../../projects/f-flow/src/f-storage/providers.ts","../../../projects/f-flow/src/domain/f-background/add-background-to-store/add-background-to-store.execution.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.ts","../../../projects/f-flow/src/domain/f-background/remove-background-from-store/remove-background-from-store-request.ts","../../../projects/f-flow/src/domain/f-background/remove-background-from-store/remove-background-from-store.execution.ts","../../../projects/f-flow/src/domain/f-background/set-background-transform/set-background-transform-request.ts","../../../projects/f-flow/src/domain/f-background/set-background-transform/set-background-transform.execution.ts","../../../projects/f-flow/src/domain/f-background/providers.ts","../../../projects/f-flow/src/domain/f-canvas/add-canvas-to-store/add-canvas-to-store-request.ts","../../../projects/f-flow/src/domain/f-canvas/add-canvas-to-store/add-canvas-to-store.execution.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node-request.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node.execution.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow-request.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow.execution.ts","../../../projects/f-flow/src/domain/f-canvas/get-canvas/get-canvas-request.ts","../../../projects/f-flow/src/domain/f-canvas/get-canvas/get-canvas.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation-request.ts","../../../projects/f-flow/src/domain/transition-end.ts","../../../projects/f-flow/src/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation.execution.ts","../../../projects/f-flow/src/domain/f-canvas/remove-canvas-from-store/remove-canvas-from-store-request.ts","../../../projects/f-flow/src/domain/f-canvas/remove-canvas-from-store/remove-canvas-from-store.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/providers.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/domain/f-connection/create-connection-markers/create-connection-markers.execution.ts","../../../projects/f-flow/src/domain/f-connection/find-closest-input/find-closest-input.request.ts","../../../projects/f-flow/src/domain/f-connection/find-closest-input/find-closest-input.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.ts","../../../projects/f-flow/src/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.ts","../../../projects/f-flow/src/domain/get-normalized-element-rect/get-normalized-element-rect-request.ts","../../../projects/f-flow/src/domain/get-normalized-element-rect/get-normalized-element-rect.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.ts","../../../projects/f-flow/src/f-connectors/e-f-connectable-side.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.ts","../../../projects/f-flow/src/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/f-node/f-resize-handle/e-f-resize-handle-type.ts","../../../projects/f-flow/src/f-node/f-resize-handle/f-resize-handle.directive.ts","../../../projects/f-flow/src/f-node/f-rotate-handle/f-rotate-handle.directive.ts","../../../projects/f-flow/src/f-node/f-drag-handle.directive.ts","../../../projects/f-flow/src/mixins/change-selection/change-selection.ts","../../../projects/f-flow/src/mixins/change-visibility/change-visibility.ts","../../../projects/f-flow/src/f-node/f-node-base.ts","../../../projects/f-flow/src/f-node/f-group.directive.ts","../../../projects/f-flow/src/f-node/f-node.directive.ts","../../../projects/f-flow/src/f-node/is-node.ts","../../../projects/f-flow/src/f-node/providers.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/f-connectors/providers.ts","../../../projects/f-flow/src/f-connection/common/domain/f-bezier.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-segment.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-straight.path-builder.ts","../../../projects/f-flow/src/f-connection/common/f-connection-identifiers.ts","../../../projects/f-flow/src/f-connection/common/f-connection.injection-token.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text-path.directive.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/i-connection-text.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.html","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/i-connection-gradient.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.html","../../../projects/f-flow/src/f-connection/common/f-path/i-connection-path.ts","../../../projects/f-flow/src/f-connection/common/f-path/get-path-marker-id.ts","../../../projects/f-flow/src/f-connection/common/f-path/f-connection-path.component.ts","../../../projects/f-flow/src/f-connection/common/f-selection/f-connection-selection.component.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-builders.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-factory.ts","../../../projects/f-flow/src/f-connection/common/f-connection-base.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-behavior.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-type.ts","../../../projects/f-flow/src/f-connection/f-connection-center/f-connection-center.directive.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.html","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.ts","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.html","../../../projects/f-flow/src/f-connection/f-marker/e-f-marker-type.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker-base.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker.directive.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.html","../../../projects/f-flow/src/f-connection/providers.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.execution.ts","../../../projects/f-flow/src/domain/f-connection/redraw-connections/redraw-connections-request.ts","../../../projects/f-flow/src/domain/f-connection/redraw-connections/redraw-connections.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-for-create-from-store/remove-connection-for-create-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-for-create-from-store/remove-connection-for-create-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-snap-connection-from-store/remove-snap-connection-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-snap-connection-from-store/remove-snap-connection-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/providers.ts","../../../projects/f-flow/src/domain/f-connectors/add-input-to-store/add-input-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-input-to-store/add-input-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/add-output-to-store/add-output-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-output-to-store/add-output-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-input-from-store/remove-input-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-output-from-store/remove-output-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-output-from-store/remove-output-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/providers.ts","../../../projects/f-flow/src/domain/f-draggable/add-dnd-to-store/add-dnd-to-store-request.ts","../../../projects/f-flow/src/domain/f-draggable/add-dnd-to-store/add-dnd-to-store.execution.ts","../../../projects/f-flow/src/domain/f-draggable/emit-selection-change-event/emit-selection-change-event-request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-draggable-data-context.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.ts","../../../projects/f-flow/src/errors/create-error-class.ts","../../../projects/f-flow/src/errors/not-found-error.ts","../../../projects/f-flow/src/errors/conflict-error.ts","../../../projects/f-flow/src/errors/errors.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/f-create-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/f-reassign-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/providers.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/is-connection-under-node/f-node-intersected-with-connections.ts","../../../projects/f-flow/src/f-draggable/domain/is-connection-under-node/is-connection-under-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/providers.ts","../../../projects/f-flow/src/domain/f-draggable/is-drag-started/is-drag-started-request.ts","../../../projects/f-flow/src/domain/f-draggable/is-drag-started/is-drag-started.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/calculate-common-node-move-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-restrictions/calculate-common-node-move-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-base-drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-target.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-source.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-restrictions/calculate-node-move-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.ts","../../../projects/f-flow/src/f-draggable/node/node.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/node-resize-by-child.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.ts","../../../projects/f-flow/src/f-draggable/node/line-alignment-preparation/line-alignment-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/line-alignment.drag-handler.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-element.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-service.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment-base.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment.component.ts","../../../projects/f-flow/src/f-line-alignment/providers.ts","../../../projects/f-flow/src/f-draggable/node/line-alignment-preparation/line-alignment-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-finalize/node-drag-to-parent-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/f-drop-to-group.event.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-finalize/node-drag-to-parent-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/resize-direction.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/providers.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.request.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.execution.ts","../../../projects/f-flow/src/f-draggable/single-select/providers.ts","../../../projects/f-flow/src/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.request.ts","../../../projects/f-flow/src/f-external-item/domain/external-item.drag-handler.ts","../../../projects/f-flow/src/f-external-item/domain/f-create-node.event.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/providers.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/providers.ts","../../../projects/f-flow/src/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.request.ts","../../../projects/f-flow/src/f-external-item/is-external-item.ts","../../../projects/f-flow/src/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.execution.ts","../../../projects/f-flow/src/f-external-item/domain/providers.ts","../../../projects/f-flow/src/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/f-external-item/providers.ts","../../../projects/f-flow/src/f-draggable/i-f-drag-and-drop-plugin.ts","../../../projects/f-flow/src/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/f-draggable/f-selection-change-event.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap.drag-handler.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.execution.ts","../../../projects/f-flow/src/f-minimap/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area.drag-handle.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area-base.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area.component.ts","../../../projects/f-flow/src/f-selection-area/providers.ts","../../../projects/f-flow/src/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items-request.ts","../../../projects/f-flow/src/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-current-selection/get-current-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/get-current-selection/get-current-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/select/select.request.ts","../../../projects/f-flow/src/domain/f-selection/select/select.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.ts","../../../projects/f-flow/src/domain/f-selection/providers.ts","../../../projects/f-flow/src/domain/f-draggable/emit-selection-change-event/emit-selection-change-event.execution.ts","../../../projects/f-flow/src/domain/f-draggable/end-drag-sequence/end-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/end-drag-sequence/end-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/on-pointer-move/on-pointer-move-request.ts","../../../projects/f-flow/src/domain/f-draggable/on-pointer-move/on-pointer-move.execution.ts","../../../projects/f-flow/src/domain/f-draggable/initialize-drag-sequence/initialize-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/initialize-drag-sequence/initialize-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/start-drag-sequence/start-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/start-drag-sequence/start-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/remove-dnd-from-store/remove-dnd-from-store-request.ts","../../../projects/f-flow/src/domain/f-draggable/remove-dnd-from-store/remove-dnd-from-store.execution.ts","../../../projects/f-flow/src/domain/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-flow/add-flow-to-store/add-flow-to-store-request.ts","../../../projects/f-flow/src/domain/f-flow/add-flow-to-store/add-flow-to-store.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow/get-flow-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow/get-flow.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-host-element/get-flow-host-element.request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-host-element/get-flow-host-element.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state.request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/providers.ts","../../../projects/f-flow/src/domain/f-flow/remove-flow-from-store/remove-flow-from-store-request.ts","../../../projects/f-flow/src/domain/f-flow/remove-flow-from-store/remove-flow-from-store.execution.ts","../../../projects/f-flow/src/domain/f-flow/providers.ts","../../../projects/f-flow/src/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store-request.ts","../../../projects/f-flow/src/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store.execution.ts","../../../projects/f-flow/src/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store-request.ts","../../../projects/f-flow/src/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store.execution.ts","../../../projects/f-flow/src/domain/f-line-alignment/providers.ts","../../../projects/f-flow/src/domain/f-node/add-node-to-store/add-node-to-store-request.ts","../../../projects/f-flow/src/domain/f-node/add-node-to-store/add-node-to-store.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.request.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.request.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.execution.ts","../../../projects/f-flow/src/domain/f-node/get-node-padding/get-node-padding.request.ts","../../../projects/f-flow/src/domain/f-node/get-node-padding/get-node-padding.execution.ts","../../../projects/f-flow/src/domain/f-node/get-nodes/get-nodes-request.ts","../../../projects/f-flow/src/domain/f-node/get-nodes/get-nodes.execution.ts","../../../projects/f-flow/src/domain/f-node/get-parent-nodes/get-parent-nodes.request.ts","../../../projects/f-flow/src/domain/f-node/get-parent-nodes/get-parent-nodes.execution.ts","../../../projects/f-flow/src/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed-request.ts","../../../projects/f-flow/src/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.execution.ts","../../../projects/f-flow/src/domain/f-node/remove-node-from-store/remove-node-from-store-request.ts","../../../projects/f-flow/src/domain/f-node/remove-node-from-store/remove-node-from-store.execution.ts","../../../projects/f-flow/src/domain/f-node/providers.ts","../../../projects/f-flow/src/domain/get-normalized-point/get-normalized-point-request.ts","../../../projects/f-flow/src/domain/get-normalized-point/get-normalized-point.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.execution.ts","../../../projects/f-flow/src/domain/create-dom-element.ts","../../../projects/f-flow/src/domain/is-mobile.ts","../../../projects/f-flow/src/domain/log-execution-time.ts","../../../projects/f-flow/src/domain/providers.ts","../../../projects/f-flow/src/f-backgroud/f-rect-pattern/f-rect-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-circle-pattern/f-circle-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/f-backgroud/f-background.component.ts","../../../projects/f-flow/src/f-backgroud/providers.ts","../../../projects/f-flow/src/f-canvas/domain/f-canvas-change.event.ts","../../../projects/f-flow/src/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.html","../../../projects/f-flow/src/f-canvas/providers.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap-data.ts","../../../projects/f-flow/src/f-minimap/f-minimap-flow.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-canvas.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-view.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.html","../../../projects/f-flow/src/f-minimap/providers.ts","../../../projects/f-flow/src/f-flow/f-flow-base.ts","../../../projects/f-flow/src/f-flow/f-flow.component.ts","../../../projects/f-flow/src/f-flow/f-flow.component.html","../../../projects/f-flow/src/f-flow/providers.ts","../../../projects/f-flow/src/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/f-zoom/providers.ts","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["import { ITransformModel } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\n\n hostElement: HTMLElement | SVGElement;\n\n setTransform(transform: ITransformModel): void;\n}\n","export class GetElementRoundedRectRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetElementRoundedRectRequest } from './get-element-rounded-rect-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { RoundedRect, RectExtensions, IRect } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetElementRoundedRectRequest)\nexport class GetElementRoundedRectExecution implements IExecution<GetElementRoundedRectRequest, RoundedRect> {\n\n private _fBrowser = inject(BrowserService);\n\n public handle(request: GetElementRoundedRectRequest): RoundedRect {\n return this._getRoundedRect(\n RectExtensions.fromElement(request.element), request.element, this._getComputedStyle(request.element)\n );\n }\n\n private _getRoundedRect(rect: IRect, element: HTMLElement | SVGElement, styles: CSSStyleDeclaration): RoundedRect {\n return new RoundedRect(\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n this._toPixels(styles.borderTopLeftRadius, element, styles.fontSize),\n this._toPixels(styles.borderTopRightRadius, element, styles.fontSize),\n this._toPixels(styles.borderBottomRightRadius, element, styles.fontSize),\n this._toPixels(styles.borderBottomLeftRadius, element, styles.fontSize)\n );\n }\n\n private _getComputedStyle(element: HTMLElement | SVGElement): CSSStyleDeclaration {\n return this._fBrowser.window.getComputedStyle(element);\n }\n\n private _toPixels(value: string, element: HTMLElement | SVGElement, fontSize: string): number {\n return this._fBrowser.toPixels(value, element.clientWidth, element.clientHeight, fontSize) || 0\n }\n}\n","import { FBackgroundBase } from '../../../f-backgroud';\n\nexport class AddBackgroundToStoreRequest {\n\n constructor(\n public fBackground: FBackgroundBase\n ) {\n }\n}\n","export class NotifyDataChangedRequest {\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { NotifyDataChangedRequest } from './notify-data-changed-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(NotifyDataChangedRequest)\nexport class NotifyDataChangedExecution implements IExecution<NotifyDataChangedRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: NotifyDataChangedRequest): void {\n this._fComponentsStore.dataChanged();\n }\n}\n","export class ListenDataChangesRequest {\n\n}\n","import { FChannelOperator } from './types';\n\nexport function debounceTime(delay: number): FChannelOperator {\n let timeoutId: any;\n return callback => {\n return () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => callback(), delay);\n };\n };\n}\n","import { FChannelListener } from './types';\n\nexport class FChannel {\n\n protected _listeners = new Set<FChannelListener>();\n\n public notify(): void {\n this._listeners.forEach((callback) => callback());\n }\n\n public listen(callback: FChannelListener): () => void {\n this._listeners.add(callback);\n return () => this.stop(callback);\n }\n\n public stop(callback: FChannelListener): void {\n this._listeners.delete(callback);\n }\n}\n\n","import { FChannelListener } from './types';\nimport { FChannel } from './f-channel';\n\nexport class FResizeChannel extends FChannel {\n\n private _observer = new ResizeObserver(() => this.notify());\n\n private _isObserving = false;\n\n constructor(private _htmlElement: HTMLElement | SVGElement) {\n super();\n }\n\n public override listen(callback: FChannelListener): () => void {\n if (!this._isObserving) {\n this._observer.observe(this._htmlElement);\n this._isObserving = true;\n }\n return super.listen(callback);\n }\n\n public override stop(callback: FChannelListener): void {\n super.stop(callback);\n if (this._listeners.size === 0) {\n this._disconnect();\n }\n }\n\n private _disconnect(): void {\n this._observer.unobserve(this._htmlElement);\n this._observer.disconnect();\n this._isObserving = false;\n }\n}\n","import { FChannel } from './f-channel';\nimport { FChannelListener, FChannelOperator } from './types';\nimport { DestroyRef } from '@angular/core';\n\nexport class FChannelHub {\n\n private readonly _channels: FChannel[] = [];\n\n private _operators: FChannelOperator[] = [];\n\n constructor(...channels: FChannel[]) {\n this._channels = [...channels];\n }\n\n public pipe(...operators: FChannelOperator[]): FChannelHub {\n const result = new FChannelHub(...this._channels);\n result._operators = [...this._operators, ...operators];\n return result;\n }\n\n public listen(destroyRef: DestroyRef, callback: FChannelListener): void {\n let modifiedCallback = callback;\n\n this._operators.forEach(operator => {\n modifiedCallback = operator(modifiedCallback);\n });\n\n const unsubscribeCallbacks = this._channels.map(channel =>\n channel.listen(() => modifiedCallback())\n );\n\n destroyRef.onDestroy(() => {\n unsubscribeCallbacks.forEach(unsubscribe => unsubscribe());\n });\n }\n}\n","import { FChannelOperator } from './types';\n\nexport function notifyOnStart(): FChannelOperator {\n return callback => {\n callback();\n return callback;\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ListenDataChangesRequest } from './listen-data-changes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenDataChangesRequest)\nexport class ListenDataChangesExecution implements IExecution<ListenDataChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenDataChangesRequest): FChannelHub {\n return new FChannelHub(this._fComponentsStore.dataChanges$)\n .pipe(notifyOnStart(), debounceTime(1));\n }\n}\n","export class ListenCountChangesRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ListenCountChangesRequest } from './listen-count-changes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenCountChangesRequest)\nexport class ListenCountChangesExecution implements IExecution<ListenCountChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenCountChangesRequest): FChannelHub {\n return new FChannelHub(this._fComponentsStore.countChanges$)\n .pipe(notifyOnStart(), debounceTime(1));\n }\n}\n\n","export class ListenTransformChangesRequest {\n\n}\n","import { ListenTransformChangesRequest } from './listen-transform-changes.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../index';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FChannelHub } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenTransformChangesRequest)\nexport class ListenTransformChangesExecution\n implements IExecution<ListenTransformChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenTransformChangesRequest): FChannelHub {\n return new FChannelHub(\n this._fComponentsStore.transformChanges$,\n this._fComponentsStore.dataChanges$,\n this._fComponentsStore.countChanges$\n );\n }\n}\n","export class NotifyTransformChangedRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { ITransformModel } from '@foblex/2d';\nimport { FConnectionBase, FMarkerBase } from '../f-connection';\nimport { FFlowBase } from '../f-flow';\nimport { FCanvasBase } from '../f-canvas';\nimport { FBackgroundBase } from '../f-backgroud';\nimport { FNodeBase } from '../f-node';\nimport { FConnectorBase } from '../f-connectors';\nimport { FDraggableBase } from '../f-draggable';\nimport { FChannel } from '../reactivity';\nimport { FLineAlignmentBase } from '../f-line-alignment';\n\n@Injectable()\nexport class FComponentsStore {\n\n public readonly transformChanges$ = new FChannel();\n\n public readonly dataChanges$ = new FChannel();\n\n public readonly countChanges$ = new FChannel();\n\n public get flowHost(): HTMLElement {\n return this.fFlow?.hostElement!;\n }\n\n public fFlow: FFlowBase | undefined;\n\n public fCanvas: FCanvasBase | undefined;\n\n public fBackground: FBackgroundBase | undefined;\n\n public fNodes: FNodeBase[] = [];\n\n public fConnections: FConnectionBase[] = [];\n\n public fTempConnection: FConnectionBase | undefined;\n\n public fSnapConnection: FConnectionBase | undefined;\n\n public fMarkers: FMarkerBase[] = [];\n\n public fOutputs: FConnectorBase[] = [];\n\n public fInputs: FConnectorBase[] = [];\n\n public fOutlets: FConnectorBase[] = [];\n\n public fDraggable: FDraggableBase | undefined;\n\n public fLineAlignment: FLineAlignmentBase | undefined;\n\n public addComponent<T>(collection: T[], component: T): void {\n collection.push(component);\n this.countChanged();\n }\n\n public removeComponent<T>(collection: T[], component: T): void {\n const index = collection.indexOf(component);\n if (index > -1) {\n collection.splice(index, 1);\n this.countChanged();\n }\n }\n\n public countChanged(): void {\n this.countChanges$.notify();\n }\n\n public dataChanged(): void {\n this.dataChanges$.notify();\n }\n\n public transformChanged(): void {\n this.transformChanges$.notify();\n }\n}\n","import { NotifyTransformChangedRequest } from './notify-transform-changed.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-components-store';\n\n@Injectable()\n@FExecutionRegister(NotifyTransformChangedRequest)\nexport class NotifyTransformChangedExecution\n implements IExecution<NotifyTransformChangedRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: NotifyTransformChangedRequest): void {\n this._fComponentsStore.transformChanged();\n }\n}\n","import { NotifyDataChangedExecution } from './features/notify-data-changed';\nimport { ListenDataChangesExecution } from './features/listen-components-data-changed';\nimport { FComponentsStore } from './f-components-store';\nimport { ListenCountChangesExecution } from './features/listen-count-changes';\nimport { ListenTransformChangesExecution } from './features/listen-transform-changes';\nimport { NotifyTransformChangedExecution } from './features/notify-transform-changed';\n\nexport const F_STORAGE_PROVIDERS = [\n\n NotifyDataChangedExecution,\n\n ListenCountChangesExecution,\n\n ListenDataChangesExecution,\n\n ListenTransformChangesExecution,\n\n NotifyTransformChangedExecution,\n\n FComponentsStore,\n];\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddBackgroundToStoreRequest } from './add-background-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddBackgroundToStoreRequest)\nexport class AddBackgroundToStoreExecution implements IExecution<AddBackgroundToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddBackgroundToStoreRequest): void {\n this._fComponentsStore.fBackground = request.fBackground;\n }\n}\n","import { IFBackgroundPattern } from '../../../f-backgroud';\n\nexport class AddPatternToBackgroundRequest {\n constructor(\n public fPattern: IFBackgroundPattern | undefined\n ) {\n }\n}\n","import { TransformModelExtensions } from '@foblex/2d';\nimport { AddPatternToBackgroundRequest } from './add-pattern-to-background.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FBackgroundBase } from '../../../f-backgroud';\n\nlet uniqueId: number = 0;\n\n@Injectable()\n@FExecutionRegister(AddPatternToBackgroundRequest)\nexport class AddPatternToBackgroundExecution implements IExecution<AddPatternToBackgroundRequest, void> {\n\n private get fBackground(): FBackgroundBase {\n return this.fComponentsStore.fBackground!;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: AddPatternToBackgroundRequest): void {\n const children = request.fPattern?.hostElement.getElementsByTagName('pattern') || [];\n const pattern = children.length ? children[ 0 ] : undefined;\n if (pattern) {\n const defs = createSVGElement('defs', this.fBrowser);\n pattern.id = 'f-background-pattern-' + uniqueId++;\n request.fPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this.fBackground.hostElement?.firstChild?.appendChild(defs);\n const rect = createSVGElement('rect', this.fBrowser);\n rect.setAttribute('fill', 'url(#' + pattern.id + ')');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n this.fBackground.hostElement.firstChild?.appendChild(rect);\n const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n request.fPattern?.setTransform(transform);\n }\n }\n}\n","import { FBackgroundBase } from '../../../f-backgroud';\n\nexport class RemoveBackgroundFromStoreRequest {\n\n constructor(\n public fConnection: FBackgroundBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveBackgroundFromStoreRequest } from './remove-background-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveBackgroundFromStoreRequest)\nexport class RemoveBackgroundFromStoreExecution implements IExecution<RemoveBackgroundFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveBackgroundFromStoreRequest): void {\n this._fComponentsStore.fBackground = undefined;\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class SetBackgroundTransformRequest {\n\n constructor(\n public fTransform: ITransformModel\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { SetBackgroundTransformRequest } from './set-background-transform-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SetBackgroundTransformRequest)\nexport class SetBackgroundTransformExecution implements IExecution<SetBackgroundTransformRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: SetBackgroundTransformRequest): void {\n this._fComponentsStore.fBackground?.setTransform(request.fTransform);\n }\n}\n","import { AddPatternToBackgroundExecution } from './add-pattern-to-background';\nimport { AddBackgroundToStoreExecution } from './add-background-to-store';\nimport { RemoveBackgroundFromStoreExecution } from './remove-background-from-store';\nimport { SetBackgroundTransformExecution } from './set-background-transform';\n\nexport const F_BACKGROUND_FEATURES = [\n\n AddBackgroundToStoreExecution,\n\n AddPatternToBackgroundExecution,\n\n RemoveBackgroundFromStoreExecution,\n\n SetBackgroundTransformExecution\n];\n","import { FCanvasBase } from '../../../f-canvas';\n\nexport class AddCanvasToStoreRequest {\n\n constructor(\n public fCanvas: FCanvasBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddCanvasToStoreRequest } from './add-canvas-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddCanvasToStoreRequest)\nexport class AddCanvasToStoreExecution implements IExecution<AddCanvasToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddCanvasToStoreRequest): void {\n this._fComponentsStore.fCanvas = request.fCanvas;\n }\n}\n","export class CenterGroupOrNodeRequest {\n\n constructor(\n public id: string,\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CenterGroupOrNodeRequest } from './center-group-or-node-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { RedrawCanvasWithAnimationRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(CenterGroupOrNodeRequest)\nexport class CenterGroupOrNodeExecution implements IExecution<CenterGroupOrNodeRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _fMediator = inject(FMediator);\n\n public handle(request: CenterGroupOrNodeRequest): void {\n const fNode = this.getNode(request.id);\n if (!fNode) {\n return;\n }\n\n this.toCenter(this.getNodeRect(fNode), this.getFlowRect(), fNode.position);\n\n this._fMediator.send(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public toCenter(fNodeRect: IRect, fFlowRect: IRect, position: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = PointExtensions.initialize(\n (fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale,\n (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale\n );\n }\n\n private getNode(id: string): FNodeBase | undefined {\n return this._fComponentsStore.fNodes.find((x) => x.fId === id);\n }\n\n private getNodeRect(fNode: FNodeBase): IRect {\n return RectExtensions.fromElement(fNode.hostElement);\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FitToFlowRequest {\n\n constructor(\n public toCenter: IPoint,\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FitToFlowRequest } from './fit-to-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { CalculateNodesBoundingBoxRequest, RedrawCanvasWithAnimationRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FitToFlowRequest)\nexport class FitToFlowExecution implements IExecution<FitToFlowRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _fMediator = inject(FMediator);\n\n public handle(request: FitToFlowRequest): void {\n const fNodesRect = this._fMediator.send<IRect | null>(new CalculateNodesBoundingBoxRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n\n this.fitToParent(\n fNodesRect,\n RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement),\n this._fComponentsStore.fNodes.map((x) => x.position),\n request.toCenter\n );\n\n this._fMediator.send(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[], toCenter: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x;\n const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y;\n if (\n (itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||\n itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height\n ) {\n this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);\n }\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale)\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","export class GetCanvasRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetCanvasRequest } from './get-canvas-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(GetCanvasRequest)\nexport class GetCanvasExecution implements IExecution<GetCanvasRequest, FCanvasBase> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetCanvasRequest): FCanvasBase {\n const result = this._fComponentsStore.fCanvas;\n if (!result) {\n throw new Error(`Canvas not found in store`);\n }\n return result;\n }\n}\n","import { IPoint, ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasPositionRequest {\n\n constructor(\n public transform: ITransformModel,\n public position: IPoint | undefined\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { InputCanvasPositionRequest } from './input-canvas-position-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasPositionRequest)\nexport class InputCanvasPositionExecution implements IExecution<InputCanvasPositionRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: InputCanvasPositionRequest): void {\n if (!request.position) {\n return;\n }\n const position = PointExtensions.sum(request.transform.position, request.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, request.position)) {\n request.transform.position = request.position;\n request.transform.scaledPosition = PointExtensions.initialize();\n this._fComponentsStore.fCanvas?.redraw();\n }\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasScaleRequest {\n\n constructor(\n public transform: ITransformModel,\n public scale: number | undefined\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { InputCanvasScaleRequest } from './input-canvas-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasScaleRequest)\nexport class InputCanvasScaleExecution implements IExecution<InputCanvasScaleRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: InputCanvasScaleRequest): void {\n if (!request.scale) {\n return;\n }\n request.transform.scale = request.scale;\n this._fComponentsStore.fCanvas?.redraw();\n }\n}\n","export class RedrawCanvasWithAnimationRequest {\n\n constructor(\n public animated: boolean\n ) {\n }\n}\n","export function transitionEnd(element: HTMLElement, callback: (event: TransitionEvent) => void): void {\n const onTransitionEnd = (event: TransitionEvent) => {\n if (event.propertyName === 'transform') {\n element.removeEventListener('transitionend', onTransitionEnd);\n callback(event);\n }\n };\n\n element.addEventListener('transitionend', onTransitionEnd);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { RedrawCanvasWithAnimationRequest } from './redraw-canvas-with-animation-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { transitionEnd } from '../../transition-end';\n\n@Injectable()\n@FExecutionRegister(RedrawCanvasWithAnimationRequest)\nexport class RedrawCanvasWithAnimationExecution implements IExecution<RedrawCanvasWithAnimationRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvasElement(): HTMLElement {\n return this._fComponentsStore.fCanvas!.hostElement;\n }\n\n public handle(request: RedrawCanvasWithAnimationRequest): void {\n request.animated ? this._redrawWithAnimation() : this._redraw();\n this._fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n\n private _redrawWithAnimation(): void {\n this._fComponentsStore.fCanvas!.redrawWithAnimation();\n transitionEnd(this._fCanvasElement, () => this._fComponentsStore.dataChanged());\n }\n\n private _redraw(): void {\n this._fComponentsStore.fCanvas!.redraw();\n this._fComponentsStore.dataChanged();\n }\n}\n","export class RemoveCanvasFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveCanvasFromStoreRequest } from './remove-canvas-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveCanvasFromStoreRequest)\nexport class RemoveCanvasFromStoreExecution implements IExecution<RemoveCanvasFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveCanvasFromStoreRequest): void {\n this._fComponentsStore.fCanvas = undefined;\n }\n}\n","export class ResetScaleRequest {\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ResetScaleRequest } from './reset-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(ResetScaleRequest)\nexport class ResetScaleExecution implements IExecution<ResetScaleRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: ResetScaleRequest): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n}\n","export class ResetScaleAndCenterRequest {\n\n constructor(\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ResetScaleAndCenterRequest } from './reset-scale-and-center-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxRequest, RedrawCanvasWithAnimationRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(ResetScaleAndCenterRequest)\nexport class ResetScaleAndCenterExecution implements IExecution<ResetScaleAndCenterRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _fMediator = inject(FMediator);\n\n public handle(request: ResetScaleAndCenterRequest): void {\n const fNodesRect = this._fMediator.send<IRect | null>(new CalculateNodesBoundingBoxRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n this.oneToOneCentering(\n fNodesRect,\n RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement),\n this._fComponentsStore.fNodes.map((x) => x.position)\n );\n\n this._fMediator.send(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public oneToOneCentering(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n\n const newX = (parentRect.width - rect.width / this.transform.scale) / 2 - this.transform.position.x;\n const newY = (parentRect.height - rect.height / this.transform.scale) / 2 - this.transform.position.y;\n\n this.transform.scale = 1;\n this.transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class UpdateScaleRequest {\n\n constructor(\n public scale: number,\n public toPosition: IPoint\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { UpdateScaleRequest } from './update-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(UpdateScaleRequest)\nexport class UpdateScaleExecution implements IExecution<UpdateScaleRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: UpdateScaleRequest): void {\n if (request.scale !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = request.toPosition.x - (request.toPosition.x - summaryPosition.x) * request.scale / this.transform.scale;\n const newY = request.toPosition.y - (request.toPosition.y - summaryPosition.y) * request.scale / this.transform.scale;\n\n this.transform.scale = request.scale;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n}\n","import { CenterGroupOrNodeExecution } from './center-group-or-node';\nimport { FitToFlowExecution } from './fit-to-flow';\nimport { ResetScaleAndCenterExecution } from './reset-scale-and-center';\nimport { ResetScaleExecution } from './reset-scale';\nimport { UpdateScaleExecution } from './update-scale';\nimport { InputCanvasPositionExecution } from './input-canvas-position';\nimport { InputCanvasScaleExecution } from './input-canvas-scale';\nimport { AddCanvasToStoreExecution } from './add-canvas-to-store';\nimport { RemoveCanvasFromStoreExecution } from './remove-canvas-from-store';\nimport { GetCanvasExecution } from './get-canvas';\nimport { RedrawCanvasWithAnimationExecution } from './redraw-canvas-with-animation';\n\nexport const F_CANVAS_FEATURES = [\n\n AddCanvasToStoreExecution,\n\n CenterGroupOrNodeExecution,\n\n FitToFlowExecution,\n\n GetCanvasExecution,\n\n InputCanvasPositionExecution,\n\n InputCanvasScaleExecution,\n\n RedrawCanvasWithAnimationExecution,\n\n RemoveCanvasFromStoreExecution,\n\n ResetScaleExecution,\n\n ResetScaleAndCenterExecution,\n\n UpdateScaleExecution\n];\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddConnectionForCreateToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionForCreateToStoreRequest } from './add-connection-for-create-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionForCreateToStoreRequest)\nexport class AddConnectionForCreateToStoreExecution implements IExecution<AddConnectionForCreateToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionForCreateToStoreRequest): void {\n this._fComponentsStore.fTempConnection = request.fConnection;\n }\n}\n","import { FMarkerBase } from '../../../f-connection';\n\nexport class AddConnectionMarkerToStoreRequest {\n\n constructor(\n public fComponent: FMarkerBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionMarkerToStoreRequest } from './add-connection-marker-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionMarkerToStoreRequest)\nexport class AddConnectionMarkerToStoreExecution implements IExecution<AddConnectionMarkerToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionMarkerToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fMarkers, request.fComponent);\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddConnectionToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest } from './add-connection-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionToStoreRequest)\nexport class AddConnectionToStoreExecution implements IExecution<AddConnectionToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionToStoreRequest): void {\n this._fComponentsStore.fConnections.push(request.fConnection);\n this._fComponentsStore.dataChanged();\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddSnapConnectionToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddSnapConnectionToStoreRequest } from './add-snap-connection-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddSnapConnectionToStoreRequest)\nexport class AddSnapConnectionToStoreExecution implements IExecution<AddSnapConnectionToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddSnapConnectionToStoreRequest): void {\n this._fComponentsStore.fSnapConnection = request.fConnection;\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class CreateConnectionMarkersRequest {\n constructor(\n public fConnection: FConnectionBase,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionMarkersRequest } from './create-connection-markers-request';\nimport { FConnectionBase, FMarkerBase } from '../../../f-connection';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { normalizeDomElementId } from '@foblex/utils';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n this.getMarkers(fConnection).forEach((marker) => {\n\n const markerElement = this.createMarkerElement(marker, fConnection.fId);\n\n const clone = marker.hostElement.cloneNode(true) as HTMLElement;\n clone.setAttribute('height', `${ marker.height }`);\n clone.setAttribute('width', `${ marker.width }`);\n clone.removeAttribute('markerUnits');\n clone.style.display = 'unset';\n markerElement.append(clone);\n\n element.append(markerElement);\n });\n\n fConnection.fDefs.nativeElement.innerHTML = element.innerHTML;\n\n this.makeSafariCompatible(fConnection);\n }\n\n public getMarkers(fConnection: FConnectionBase): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => fConnection.hostElement.contains(x.hostElement));\n }\n\n // Safari does not support markers on path elements if markers are defined after the path element\n private makeSafariCompatible(fConnection: FConnectionBase): void {\n fConnection.fPath.hostElement.replaceWith(fConnection.fPath.hostElement);\n }\n\n private createMarkerElement(marker: FMarkerBase, fConnectionId: string): SVGElement {\n const markerElement = createSVGElement('marker', this.fBrowser);\n\n markerElement.setAttribute('id', normalizeDomElementId(marker.type + '-' + fConnectionId));\n\n markerElement.setAttribute('markerHeight', `${ marker.height }`);\n markerElement.setAttribute('markerWidth', `${ marker.width }`);\n markerElement.setAttribute('orient', `${ marker.orient }`);\n markerElement.setAttribute('refX', `${ marker.refX }`);\n markerElement.setAttribute('refY', `${ marker.refY }`);\n markerElement.setAttribute('markerUnits', `${ marker.markerUnits }`);\n\n return markerElement;\n }\n}\n\nfunction createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","import { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\nexport class FindClosestInputRequest {\n\n constructor(\n public position: IPoint,\n public canBeConnectedInputs: IConnectorWithRect[],\n ) {\n }\n}\n","import { FindClosestInputRequest } from './find-closest-input.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\nimport { IClosestInput } from './i-closest-input';\n\n@Injectable()\n@FExecutionRegister(FindClosestInputRequest)\nexport class FindClosestInputExecution\n implements IExecution<FindClosestInputRequest, IClosestInput | undefined> {\n\n public handle(payload: FindClosestInputRequest): IClosestInput | undefined {\n let result: IConnectorWithRect | undefined;\n let minDistance = Infinity;\n\n for (const element of payload.canBeConnectedInputs) {\n const distance = this.distanceToRectangle(payload.position, element);\n\n if (distance < minDistance) {\n minDistance = distance;\n result = element;\n }\n }\n\n return result ? {\n ...result,\n distance: minDistance,\n } : undefined;\n }\n\n private distanceToRectangle(point: IPoint, inputWithRect: IConnectorWithRect): number {\n const closestX = this.clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);\n const closestY = this.clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);\n\n const dx = point.x - closestX;\n const dy = point.y - closestY;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n private clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n }\n}\n","export class GetAllCanBeConnectedInputPositionsRequest {\n\n constructor(\n public fOutputId: string,\n ) {\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class GetConnectorWithRectRequest {\n\n constructor(\n public connector: FConnectorBase\n ) {\n }\n}\n","export class GetNormalizedElementRectRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n public isRoundedRect: boolean = true\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetNormalizedElementRectRequest } from './get-normalized-element-rect-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport {\n IRoundedRect,\n RoundedRect,\n IPoint,\n ISize,\n Point,\n SizeExtensions,\n ITransformModel,\n RectExtensions\n} from '@foblex/2d';\nimport { GetElementRoundedRectRequest } from '../get-element-rounded-rect';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedElementRectRequest)\nexport class GetNormalizedElementRectExecution implements IExecution<GetNormalizedElementRectRequest, IRoundedRect> {\n\n private _fComponentsStore = inject(FComponentsStore);\n private _fMediator = inject(FMediator);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: GetNormalizedElementRectRequest): IRoundedRect {\n const systemRect = this._getElementRoundedRect(request);\n const position = this._normalizePosition(systemRect);\n const size = this._normalizeSize(systemRect);\n\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4\n );\n }\n\n private _getElementRoundedRect(request: GetNormalizedElementRectRequest): IRoundedRect {\n return request.isRoundedRect ? this._fMediator.send<IRoundedRect>(\n new GetElementRoundedRectRequest(request.element)\n ) : RoundedRect.fromRect(RectExtensions.fromElement(request.element));\n }\n\n private _normalizePosition(rect: IRoundedRect): IPoint {\n return Point.fromPoint(rect).elementTransform(this._fComponentsStore.flowHost).sub(this._transform.scaledPosition).sub(this._transform.position).div(this._transform.scale);\n }\n\n private _normalizeSize(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this._transform.scale, rect.height / this._transform.scale);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorWithRectRequest } from './get-connector-with-rect-request';\nimport { IRoundedRect } from '@foblex/2d';\nimport { IConnectorWithRect } from './i-connector-with-rect';\nimport { GetNormalizedElementRectRequest } from '../../get-normalized-element-rect';\n\n@Injectable()\n@FExecutionRegister(GetConnectorWithRectRequest)\nexport class GetConnectorWithRectExecution implements IExecution<GetConnectorWithRectRequest, IConnectorWithRect> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: GetConnectorWithRectRequest): IConnectorWithRect {\n return {\n fConnector: request.connector,\n fRect: this._fMediator.send<IRoundedRect>(new GetNormalizedElementRectRequest(request.connector.hostElement, true))\n }\n }\n}\n","import { GetAllCanBeConnectedInputPositionsRequest } from './get-all-can-be-connected-input-positions.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorWithRectRequest, IConnectorWithRect } from '../get-connector-with-rect';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetAllCanBeConnectedInputPositionsRequest)\nexport class GetAllCanBeConnectedInputPositionsExecution\n implements IExecution<GetAllCanBeConnectedInputPositionsRequest, IConnectorWithRect[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(payload: GetAllCanBeConnectedInputPositionsRequest): IConnectorWithRect[] {\n return this.getCanBeConnectedInputs(this.getOutput(payload.fOutputId)!).map((x) => {\n return this.fMediator.send(new GetConnectorWithRectRequest(x));\n });\n }\n\n private getOutput(fId: string): FConnectorBase | undefined {\n return this.findOutputById(fId) || this.findOutletById(fId);\n }\n\n private findOutputById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.fId === fId);\n }\n\n private findOutletById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.fId === fId);\n }\n\n private getCanBeConnectedInputs(output: FConnectorBase): FConnectorBase[] {\n return output.isSelfConnectable ?\n this.fInputs.filter((x) => x.canBeConnected) :\n this.filterSelfConnectable(this.fInputs.filter((x) => x.canBeConnected), output);\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], output: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => this.getNodeOfConnector(output)?.hostElement !== this.getNodeOfConnector(x)?.hostElement);\n }\n\n private getNodeOfConnector(connector: FConnectorBase): FNodeBase | undefined {\n return this.fNodes.find((x) => x.isContains(connector.hostElement));\n }\n}\n","import { EFConnectionBehavior } from '../../../f-connection';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class CalculateConnectionLineByBehaviorRequest {\n\n constructor(\n public outputRect: IRoundedRect,\n public inputRect: IRoundedRect,\n public behavior: EFConnectionBehavior | string,\n public outputSide: EFConnectableSide,\n public inputSide: EFConnectableSide,\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint, PointExtensions } from '@foblex/2d';\nimport { CalculateCenterBetweenPointsRequest } from './calculate-center-between-points-request';\n\nexport class CalculateCenterBetweenPointsHandler\n implements IHandler<CalculateCenterBetweenPointsRequest, IPoint> {\n\n public handle(request: CalculateCenterBetweenPointsRequest): IPoint {\n const { source, target } = request;\n\n const offsetX = Math.abs(target.x - source.x) / 2;\n const centerX = (target.x < source.x) ? target.x + offsetX : target.x - offsetX;\n\n const offsetY = Math.abs(target.y - source.y) / 2;\n const centerY = (target.y < source.y) ? target.y + offsetY : target.y - offsetY;\n\n return PointExtensions.initialize(centerX, centerY);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateCenterBetweenPointsRequest {\n\n constructor(\n public source: IPoint,\n public target: IPoint,\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectionCenterRequest } from './calculate-connection-center-request';\n\nexport class CalculateConnectionCenterHandler\n implements IHandler<CalculateConnectionCenterRequest, IPoint> {\n\n public handle(request: CalculateConnectionCenterRequest): IPoint {\n\n const { points } = request;\n let totalDistance = 0;\n let distances: number[] = [];\n\n for (let i = 0; i < points.length - 1; i++) {\n const distance = this.calculateDistance(points[ i ], points[ i + 1 ]);\n distances.push(distance);\n totalDistance += distance;\n }\n\n let accumulatedDistance = 0;\n let centerIndex = 0;\n const halfTotalDistance = totalDistance / 2;\n for (let i = 0; i < distances.length; i++) {\n accumulatedDistance += distances[ i ];\n if (accumulatedDistance >= halfTotalDistance) {\n centerIndex = i;\n break;\n }\n }\n\n const remainingDistanceToCenter = halfTotalDistance - (accumulatedDistance - distances[ centerIndex ]);\n\n return this.findPointAtDistance(points[ centerIndex ], points[ centerIndex + 1 ], remainingDistanceToCenter);\n }\n\n private calculateDistance(pointA: IPoint, pointB: IPoint): number {\n return Math.sqrt(Math.pow(pointB.x - pointA.x, 2) + Math.pow(pointB.y - pointA.y, 2));\n }\n\n private findPointAtDistance(startPoint: IPoint, endPoint: IPoint, distance: number): IPoint {\n const totalDistance = this.calculateDistance(startPoint, endPoint);\n const ratio = distance / totalDistance;\n const x = (1 - ratio) * startPoint.x + ratio * endPoint.x;\n const y = (1 - ratio) * startPoint.y + ratio * endPoint.y;\n return { x, y };\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateConnectionCenterRequest {\n\n constructor(\n public points: IPoint[],\n ) {\n }\n}\n","export enum EFConnectableSide {\n\n LEFT = 'left',\n\n TOP = 'top',\n\n RIGHT = 'right',\n\n BOTTOM = 'bottom',\n\n AUTO = 'auto',\n}\n","import { RectExtensions } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectorConnectableSideRequest } from './calculate-connector-connectable-side-request';\nimport { EFConnectableSide } from '../../e-f-connectable-side';\n\nexport class CalculateConnectorConnectableSideHandler\n implements IHandler<CalculateConnectorConnectableSideRequest, EFConnectableSide> {\n\n public handle(request: CalculateConnectorConnectableSideRequest): EFConnectableSide {\n let result: EFConnectableSide;\n\n if (request.fConnector.userFConnectableSide === EFConnectableSide.AUTO) {\n result = this.getSideByDelta(request.fConnector.hostElement, request.fNodeHost);\n } else {\n result = request.fConnector.userFConnectableSide;\n }\n return result;\n }\n\n private getSideByDelta(fConnectorHost: HTMLElement | SVGElement, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide;\n\n const childRect = RectExtensions.fromElement(fConnectorHost);\n const parentRect = fNodeHost.getBoundingClientRect();\n\n const deltaLeft = childRect.gravityCenter.x - parentRect.left;\n const deltaRight = parentRect.right - childRect.gravityCenter.x;\n const deltaTop = childRect.gravityCenter.y - parentRect.top;\n const deltaBottom = parentRect.bottom - childRect.gravityCenter.y;\n\n const minDelta = Math.min(deltaLeft, deltaRight, deltaTop, deltaBottom);\n\n if (minDelta === deltaLeft) {\n result = EFConnectableSide.LEFT;\n } else if (minDelta === deltaRight) {\n result = EFConnectableSide.RIGHT;\n } else if (minDelta === deltaTop) {\n result = EFConnectableSide.TOP;\n } else {\n result = EFConnectableSide.BOTTOM;\n }\n\n return result;\n }\n}\n","import { FConnectorBase } from '../../f-connector-base';\n\nexport class CalculateConnectorConnectableSideRequest {\n\n constructor(\n public fConnector: FConnectorBase,\n public fNodeHost: HTMLElement | SVGElement\n ) {\n }\n}\n","import { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport abstract class FConnectorBase implements IHasHostElement {\n\n public abstract fId: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract canBeConnected: boolean;\n\n private _isConnected: boolean = false;\n\n public get isConnected(): boolean {\n return this._isConnected;\n }\n\n public toConnector: FConnectorBase | undefined;\n\n public isSelfConnectable: boolean = true;\n\n public fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setConnected(isConnected: boolean, toConnector?: FConnectorBase): void {\n this._isConnected = isConnected;\n this.toConnector = toConnector;\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_INPUT = new InjectionToken<FNodeInputBase>('F_NODE_INPUT');\n\n@Directive()\nexport abstract class FNodeInputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export enum EFResizeHandleType {\n\n LEFT_TOP = 'left-top',\n\n RIGHT_TOP = 'right-top',\n\n LEFT_BOTTOM = 'left-bottom',\n\n RIGHT_BOTTOM = 'right-bottom',\n}\n","import {\n Directive, ElementRef, HostBinding, inject, InjectionToken, Input\n} from \"@angular/core\";\nimport { EFResizeHandleType } from './e-f-resize-handle-type';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { castToEnum } from '@foblex/utils';\n\nexport const F_RESIZE_HANDLE = new InjectionToken<FResizeHandleDirective>('F_RESIZE_HANDLE');\n\n@Directive({\n selector: \"[fResizeHandle]\",\n host: {\n class: `f-resize-handle f-component`,\n '[attr.data-f-resize-handle-type]': 'type',\n },\n providers: [ { provide: F_RESIZE_HANDLE, useExisting: FResizeHandleDirective } ],\n})\nexport class FResizeHandleDirective implements IHasHostElement {\n\n private _elementReference = inject(ElementRef);\n\n @Input({\n alias: 'fResizeHandleType',\n transform: (x: unknown) => castToEnum(x, 'fResizeHandleType', EFResizeHandleType)\n })\n public type: EFResizeHandleType = EFResizeHandleType.LEFT_TOP;\n\n @HostBinding('class')\n public get typeClass(): string {\n return `f-resize-handle-${ EFResizeHandleType[ this.type.toUpperCase() as keyof typeof EFResizeHandleType ] }`;\n }\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n}\n","import {\n Directive, ElementRef, InjectionToken, Input\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\n// export const F_ROTATE_HANDLE: InjectionToken<FRotateHandleDirective> = new InjectionToken<FRotateHandleDirective>('F_ROTATE_HANDLE');\n//\n// @Directive({\n// selector: \"[fRotateHandle]\",\n// host: {\n// class: `f-rotate-handle f-component`,\n// '[class.f-rotate-handle-disabled]': 'disabled',\n// },\n// providers: [ { provide: F_ROTATE_HANDLE, useExisting: FRotateHandleDirective } ],\n// })\nexport class FRotateHandleDirective implements IHasHostElement {\n\n private isDisabled: boolean = false;\n // @Input('fRotateHandleDisabled')\n // public set disabled(isDisabled: boolean | undefined | string) {\n // this.isDisabled = BooleanExtensions.castToBoolean(isDisabled);\n // }\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import {\n Directive, ElementRef, inject, InjectionToken\n} from \"@angular/core\";\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_DRAG_HANDLE = new InjectionToken<FDragHandleDirective>('F_DRAG_HANDLE');\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\"\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement {\n\n private _elementReference = inject(ElementRef);\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { ICanChangeSelection } from './i-can-change-selection';\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeSelectionConstructor = Constructor<ICanChangeSelection> & AbstractConstructor<ICanChangeSelection>;\n\nexport function mixinChangeSelection<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T;\nexport function mixinChangeSelection<T extends Constructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T {\n return class extends base {\n\n public fId: string = '';\n\n public fSelectionDisabled: boolean = false;\n\n public deselect(): void {\n this.deselectChild?.();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.selectChild?.();\n if (!this.isSelected()) {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public selectChild(): void {\n }\n\n public deselectChild(): void {\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { ICanChangeVisibility } from './i-can-change-visibility';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { AbstractConstructor, Constructor } from '../constructor';\n\ntype CanChangeVisibilityConstructor = Constructor<ICanChangeVisibility> & AbstractConstructor<ICanChangeVisibility>;\n\nexport function mixinChangeVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T;\nexport function mixinChangeVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T {\n return class extends base {\n\n public show(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public hide(): void {\n this.hostElement.style.display = \"none\";\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport {\n FConnectorBase\n} from '../f-connectors';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { ICanChangeSelection, mixinChangeSelection } from '../mixins';\nimport { FChannel } from '../reactivity';\n\nexport const F_NODE = new InjectionToken<FNodeBase>('F_NODE');\n\nconst MIXIN_BASE = mixinChangeSelection(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n });\n\nexport abstract class FNodeBase extends MIXIN_BASE implements ICanChangeSelection, IHasHostElement {\n\n public abstract override fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public readonly stateChanges = new FChannel();\n\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n\n public abstract sizeChange: EventEmitter<IRect>;\n\n public abstract size: ISize;\n\n protected _size: ISize | undefined;\n\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract fConnectOnNode: boolean;\n\n public fCanBeResizedByChild: boolean = true;\n\n public abstract fIncludePadding: boolean;\n\n public abstract refresh(): void;\n\n public connectors: FConnectorBase[] = [];\n\n protected abstract setStyle(name: string, value: string): void;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n if (this.size) {\n this.setStyle('width', '' + this.size.width + 'px');\n this.setStyle('height', '' + this.size.height + 'px');\n }\n\n this.setStyle('transform', `translate(${ this.position.x }px,${ this.position.y }px)`);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public updateSize(value: ISize): void {\n this._size = value;\n }\n\n public setClass(className: string): void {\n this.hostElement.classList.add(className);\n }\n\n public removeClass(className: string): void {\n this.hostElement.classList.remove(className);\n }\n\n public addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.refresh();\n }\n\n public removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.refresh();\n }\n}\n","import {\n AfterViewInit, DestroyRef,\n Directive,\n ElementRef,\n EventEmitter, inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { AddNodeToStoreRequest, UpdateNodeWhenStateOrSizeChangedRequest, RemoveNodeFromStoreRequest } from '../domain';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fGroup]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-group-id]': 'fId',\n class: \"f-group f-component\",\n '[class.f-group-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-group-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FGroupDirective }\n ],\n})\nexport class FGroupDirective extends FNodeBase\n implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n @Input('fGroupId')\n public override fId: string = `f-group-${ uniqueId++ }`;\n\n @Input('fGroupParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fGroupPosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n public override get position(): IPoint {\n return this._position;\n }\n @Output('fGroupPositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fGroupSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n public override get size(): ISize {\n return this._size!;\n }\n @Output('fGroupSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fGroupDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fGroupSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n @Input()\n public override fConnectOnNode: boolean = true;\n\n private _destroyRef = inject(DestroyRef);\n private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n\n this._fMediator.send<void>(new AddNodeToStoreRequest(this));\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this._fMediator.send(new NotifyTransformChangedRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this._listenStateSizeChanges();\n }\n\n private _listenStateSizeChanges(): void {\n this._fMediator.send<void>(new UpdateNodeWhenStateOrSizeChangedRequest(this, this._destroyRef));\n }\n\n public refresh(): void {\n this.stateChanges.notify();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.send<void>(new RemoveNodeFromStoreRequest(this));\n }\n}\n","import {\n AfterViewInit, DestroyRef,\n Directive,\n ElementRef,\n EventEmitter, inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { AddNodeToStoreRequest, UpdateNodeWhenStateOrSizeChangedRequest, RemoveNodeFromStoreRequest } from '../domain';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNode]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-node-id]': 'fId',\n class: \"f-node f-component\",\n '[class.f-node-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-node-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FNodeDirective }\n ],\n})\nexport class FNodeDirective extends FNodeBase implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n @Input('fNodeId')\n public override fId: string = `f-node-${ uniqueId++ }`;\n\n @Input('fNodeParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fNodePosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n\n public override get position(): IPoint {\n return this._position;\n }\n\n @Output('fNodePositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fNodeSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n\n public override get size(): ISize {\n return this._size!;\n }\n\n @Output('fNodeSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fNodeDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fNodeSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n //TODO: Add ability to connect to first connectable input if node is under pointer\n @Input()\n public override fConnectOnNode: boolean = true;\n\n private _destroyRef = inject(DestroyRef);\n private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n\n this._fMediator.send<void>(new AddNodeToStoreRequest(this));\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this._fMediator.send(new NotifyTransformChangedRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this._listenStateSizeChanges();\n }\n\n private _listenStateSizeChanges(): void {\n this._fMediator.send<void>(new UpdateNodeWhenStateOrSizeChangedRequest(this, this._destroyRef));\n }\n\n public override refresh(): void {\n this.stateChanges.notify();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.send<void>(new RemoveNodeFromStoreRequest(this));\n }\n}\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import { FNodeDirective } from './f-node.directive';\nimport { FResizeHandleDirective } from './f-resize-handle';\nimport { FGroupDirective } from './f-group.directive';\nimport { FDragHandleDirective } from './f-drag-handle.directive';\n\nexport const F_NODE_PROVIDERS = [\n\n FGroupDirective,\n\n FNodeDirective,\n\n FDragHandleDirective,\n\n FResizeHandleDirective,\n];\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit, SimpleChanges\n} from '@angular/core';\nimport { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { FNodeBase, F_NODE } from '../../f-node';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddInputToStoreRequest, RemoveInputFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n exportAs: 'fNodeInput',\n host: {\n '[attr.data-f-input-id]': 'fId',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_INPUT, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnInit, OnChanges, OnDestroy {\n\n @Input('fInputId')\n public override fId: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fInputMultiple')\n public override multiple: boolean = true;\n\n @Input({ alias: 'fInputDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n @Input({\n alias: 'fInputConnectableSide',\n transform: (value: unknown) => castToEnum(value, 'fInputConnectableSide', EFConnectableSide)\n })\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n\n constructor(\n @Inject(F_NODE) private fNode: FNodeBase,\n ) {\n super();\n }\n\n public ngOnInit() {\n this._fMediator.send(new AddInputToStoreRequest(this));\n this.fNode.addConnector(this);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'userFConnectableSide' ]) {\n this.fNode.refresh();\n }\n }\n\n public override setConnected(isConnected: boolean, toConnector?: FConnectorBase): void {\n super.setConnected(isConnected, toConnector);\n this.hostElement.classList.toggle('f-node-input-connected', isConnected);\n this.hostElement.classList.toggle('f-node-input-not-connectable', !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this._fMediator.send(new RemoveInputFromStoreRequest(this));\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTLET = new InjectionToken<FNodeOutletBase>('F_NODE_OUTLET');\n\n@Directive()\nexport abstract class FNodeOutletBase extends FConnectorBase {\n\n public abstract isConnectionFromOutlet: boolean;\n\n private outputs: FConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled && this.outputs.some((output) => output.canBeConnected);\n }\n\n public setOutputs(outputs: FConnectorBase[]): void {\n this.outputs = outputs;\n }\n}\n","export function isNodeOutlet(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutlet]');\n}\n","import { booleanAttribute, Directive, ElementRef, inject, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { FMediator } from '@foblex/mediator';\nimport { AddOutletToStoreRequest, RemoveOutletFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n exportAs: 'fNodeOutlet',\n host: {\n '[attr.data-f-outlet-id]': 'fId',\n class: \"f-component f-node-outlet\",\n '[class.f-node-outlet-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective } ],\n})\nexport class FNodeOutletDirective extends FNodeOutletBase implements OnInit, OnDestroy {\n\n @Input('fOutletId')\n public override fId: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input({ alias: 'fOutletDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n public override fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n\n /// Inject FNodeBase to check if the outlet inside the node\n constructor(\n @Inject(F_NODE) private fNode: FNodeBase\n ) {\n super();\n }\n\n public ngOnInit() {\n this._fMediator.send(new AddOutletToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.send(new RemoveOutletFromStoreRequest(this));\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTPUT = new InjectionToken<FNodeOutputBase>('F_NODE_OUTPUT');\n\n@Directive()\nexport abstract class FNodeOutputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit, SimpleChanges\n} from '@angular/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT } from './f-node-output-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddOutputToStoreRequest, RemoveOutputFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n exportAs: 'fNodeOutput',\n host: {\n '[attr.data-f-output-id]': 'fId',\n class: \"f-component f-node-output\",\n '[class.f-node-output-multiple]': 'multiple',\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-self-connectable]': 'isSelfConnectable',\n },\n providers: [ { provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnChanges, OnDestroy {\n\n @Input('fOutputId')\n public override fId: string = `f-node-output-${ uniqueId++ }`;\n\n @Input('fOutputMultiple')\n public override multiple: boolean = false;\n\n @Input({ alias: 'fOutputDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n @Input({\n alias: 'fOutputConnectableSide',\n transform: (value: unknown) => castToEnum(value, 'fOutputConnectableSide', EFConnectableSide)\n })\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isSelfConnectable: boolean = true;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n\n constructor(\n @Inject(F_NODE) private fNode: FNodeBase\n ) {\n super();\n }\n\n public ngOnInit() {\n this._fMediator.send(new AddOutputToStoreRequest(this));\n this.fNode.addConnector(this);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'userFConnectableSide' ]) {\n this.fNode.refresh();\n }\n }\n\n public override setConnected(isConnected: boolean, toConnector?: FConnectorBase): void {\n super.setConnected(isConnected, toConnector);\n this.hostElement.classList.toggle('f-node-output-connected', isConnected);\n this.hostElement.classList.toggle('f-node-output-not-connectable', !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this._fMediator.send(new RemoveOutputFromStoreRequest(this));\n }\n}\n","import { FNodeInputDirective } from './f-node-input';\nimport { FNodeOutletDirective } from './f-node-outlet';\nimport { FNodeOutputDirective } from './f-node-output';\n\nexport const F_CONNECTORS_PROVIDERS = [\n\n FNodeInputDirective,\n\n FNodeOutletDirective,\n\n FNodeOutputDirective\n];\n","import { IPoint } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FBezierPathBuilder implements IFConnectionBuilder {\n\n private static getConnectorOffset(distance: number, offset: number): number {\n if (distance >= offset) {\n return distance;\n }\n return offset * Math.sqrt(offset - distance);\n }\n\n private static getAnglePoint(side: EFConnectableSide, source: IPoint, target: IPoint, offset: number): IPoint {\n\n let result: IPoint = { x: source.x, y: source.y };\n\n switch (side) {\n case EFConnectableSide.LEFT:\n result.x -= FBezierPathBuilder.getConnectorOffset(source.x - target.x, offset);\n break;\n case EFConnectableSide.RIGHT:\n result.x += FBezierPathBuilder.getConnectorOffset(target.x - source.x, offset);\n break;\n case EFConnectableSide.TOP:\n result.y -= FBezierPathBuilder.getConnectorOffset(source.y - target.y, offset);\n break;\n case EFConnectableSide.BOTTOM:\n result.y += FBezierPathBuilder.getConnectorOffset(target.y - source.y, offset);\n break;\n }\n\n return result;\n }\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide, offset } = request;\n\n const sourceAnglePoint = FBezierPathBuilder.getAnglePoint(sourceSide, source, target, offset);\n\n const targetAnglePoint = FBezierPathBuilder.getAnglePoint(targetSide, target, source, offset);\n\n const path = `M ${ source.x } ${ source.y } C ${ sourceAnglePoint.x } ${ sourceAnglePoint.y }, ${ targetAnglePoint.x } ${ targetAnglePoint.y }, ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([ source, sourceAnglePoint, targetAnglePoint, target ])\n );\n\n return { path, connectionCenter, penultimatePoint: targetAnglePoint };\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport {\n CalculateCenterBetweenPointsHandler,\n CalculateCenterBetweenPointsRequest\n} from './calculate-center-between-points';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\nimport { IMap } from '../../../domain';\n\nconst CONNECTOR_SIDE_POINT: IMap<IPoint> = {\n\n [ EFConnectableSide.LEFT ]: PointExtensions.initialize(-1, 0),\n\n [ EFConnectableSide.RIGHT ]: PointExtensions.initialize(1, 0),\n\n [ EFConnectableSide.TOP ]: PointExtensions.initialize(0, -1),\n\n [ EFConnectableSide.BOTTOM ]: PointExtensions.initialize(0, 1),\n\n [ EFConnectableSide.AUTO ]: PointExtensions.initialize(0, 0),\n};\n\nexport class FSegmentPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide } = request;\n\n const { points, center } = this.getPathPoints(\n source,\n sourceSide,\n target,\n targetSide,\n request.offset\n );\n\n const path = this.buildPath(points, request.radius);\n\n const penultimatePoint = points.length > 1 ? points[ points.length - 2 ] : source;\n\n return { path, connectionCenter: center, penultimatePoint };\n }\n\n private getPathPoints(\n source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide, offset: number\n ): { points: IPoint[], center: IPoint } {\n\n const sourceDirection = CONNECTOR_SIDE_POINT[ sourceSide ];\n const targetDirection = CONNECTOR_SIDE_POINT[ targetSide ];\n\n const sourceGap: IPoint = { x: source.x + sourceDirection.x * offset, y: source.y + sourceDirection.y * offset };\n const targetGap: IPoint = { x: target.x + targetDirection.x * offset, y: target.y + targetDirection.y * offset };\n\n const direction = this.getDirection(sourceGap, sourceSide, targetGap);\n const directionAccessor = direction.x !== 0 ? 'x' : 'y';\n const currentDirection = direction[ directionAccessor ];\n\n let points: IPoint[] = [];\n const sourceGapOffset = PointExtensions.initialize();\n const targetGapOffset = PointExtensions.initialize();\n\n const centerBetweenPoints = new CalculateCenterBetweenPointsHandler().handle(\n new CalculateCenterBetweenPointsRequest(source, target)\n );\n\n if (sourceDirection[ directionAccessor ] * targetDirection[ directionAccessor ] === -1) {\n const verticalSplit: IPoint[] = [\n { x: centerBetweenPoints.x, y: sourceGap.y },\n { x: centerBetweenPoints.x, y: targetGap.y },\n ];\n const horizontalSplit: IPoint[] = [\n { x: sourceGap.x, y: centerBetweenPoints.y },\n { x: targetGap.x, y: centerBetweenPoints.y },\n ];\n\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n points = directionAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = directionAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget: IPoint[] = [ { x: sourceGap.x, y: targetGap.y } ];\n const targetSource: IPoint[] = [ { x: targetGap.x, y: sourceGap.y } ];\n\n if (directionAccessor === 'x') {\n points = sourceDirection.x === currentDirection ? targetSource : sourceTarget;\n } else {\n points = sourceDirection.y === currentDirection ? sourceTarget : targetSource;\n }\n\n if (sourceSide === targetSide) {\n const diff = Math.abs(source[ directionAccessor ] - target[ directionAccessor ]);\n\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n sourceGapOffset[ directionAccessor ] = (sourceGap[ directionAccessor ] > source[ directionAccessor ] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[ directionAccessor ] = (targetGap[ directionAccessor ] > target[ directionAccessor ] ? -1 : 1) * gapOffset;\n }\n }\n }\n\n if (sourceSide !== targetSide) {\n const dirAccessorOpposite = directionAccessor === 'x' ? 'y' : 'x';\n const isSameDir = sourceDirection[ directionAccessor ] === targetDirection[ dirAccessorOpposite ];\n const sourceGtTargetOppo = sourceGap[ dirAccessorOpposite ] > targetGap[ dirAccessorOpposite ];\n const sourceLtTargetOppo = sourceGap[ dirAccessorOpposite ] < targetGap[ dirAccessorOpposite ];\n const flipSourceTarget =\n (sourceDirection[ directionAccessor ] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n (sourceDirection[ directionAccessor ] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = directionAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n }\n\n const pathPoints = [\n source,\n { x: sourceGap.x + sourceGapOffset.x, y: sourceGap.y + sourceGapOffset.y },\n ...points,\n { x: targetGap.x + targetGapOffset.x, y: targetGap.y + targetGapOffset.y },\n target,\n ];\n\n const center = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest(pathPoints)\n );\n\n return { points: pathPoints, center: center };\n }\n\n private getDirection(source: IPoint, sourceSide: EFConnectableSide, target: IPoint): IPoint {\n if (sourceSide === EFConnectableSide.LEFT || sourceSide === EFConnectableSide.RIGHT) {\n return source.x < target.x ? PointExtensions.initialize(1, 0) : PointExtensions.initialize(-1, 0);\n }\n return source.y < target.y ? PointExtensions.initialize(0, 1) : PointExtensions.initialize(0, -1);\n }\n\n private distance(a: IPoint, b: IPoint): number {\n return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n }\n\n private buildPath(points: IPoint[], borderRadius: number): string {\n let path = '';\n for (let i = 0; i < points.length; i++) {\n const p = points[ i ];\n let segment = '';\n\n if (i > 0 && i < points.length - 1) {\n segment = this.getBend(points[ i - 1 ], p, points[ i + 1 ], borderRadius);\n } else if (i === points.length - 1) {\n segment = this.buildLastLineSegment(i, p);\n } else {\n segment = this.buildMoveOrLineSegment(i, p);\n }\n path += segment;\n }\n\n return path;\n }\n\n private getBend(a: IPoint, b: IPoint, c: IPoint, size: number): string {\n const bendSize = Math.min(this.distance(a, b) / 2, this.distance(b, c) / 2, size);\n const { x, y } = b;\n\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${ x } ${ y }`;\n }\n\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${ x + bendSize * xDir },${ y }Q ${ x },${ y } ${ x },${ y + bendSize * yDir }`;\n }\n\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${ x },${ y + bendSize * yDir }Q ${ x },${ y } ${ x + bendSize * xDir },${ y }`;\n }\n\n private buildMoveOrLineSegment(index: number, point: IPoint): string {\n return `${ index === 0 ? 'M' : 'L' }${ point.x } ${ point.y }`;\n }\n\n private buildLastLineSegment(index: number, point: IPoint): string {\n return `L${ point.x + 0.0002 } ${ point.y + 0.0002 }`;\n }\n}\n","import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FStraightPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, target } = request;\n const path = `M ${ source.x } ${ source.y } L ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([source, target])\n );\n\n return { path, connectionCenter, penultimatePoint: source };\n }\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return normalizeDomElementId('connection_text_' + connectionId);\n },\n connectionForSelectionId(connectionId: string): string {\n return normalizeDomElementId('connection_for_selection_' + connectionId);\n },\n connectionId(connectionId: string): string {\n return normalizeDomElementId('connection_' + connectionId);\n },\n gradientId(connectionId: string): string {\n return normalizeDomElementId('connection_gradient_' + connectionId);\n },\n linkToGradient(connectionId: string): string {\n return `url(#${ F_CONNECTION_IDENTIFIERS.gradientId(connectionId) })`;\n },\n linkToConnection(connectionId: string): string {\n return `#${ F_CONNECTION_IDENTIFIERS.connectionId(connectionId) }`;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_CONNECTION = new InjectionToken('F_CONNECTION');\n","import { Directive, ElementRef, Inject, OnInit } from '@angular/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Directive({\n selector: 'textPath[f-connection-text-path]',\n host: {\n '[attr.href]': 'linkToConnection'\n }\n})\nexport class FConnectionTextPathDirective implements IHasHostElement, OnInit {\n\n public get linkToConnection(): string {\n return F_CONNECTION_IDENTIFIERS.linkToConnection(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextPathElement {\n return this.elementReference.nativeElement;\n }\n\n public symbolWidth: number = 8;\n public fontSize: string = '12px';\n\n constructor(\n private elementReference: ElementRef<SVGTextPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n private fBrowser: BrowserService\n ) {\n }\n\n public ngOnInit(): void {\n this.hostElement.setAttribute('startOffset', this.base.fTextStartOffset || '50%');\n this.hostElement.setAttribute('text-anchor', `middle`);\n this.symbolWidth = this.getSymbolWidth(this.base.fText || '');\n }\n\n public getBBox(): DOMRect {\n return this.hostElement.getBBox();\n }\n\n private getFontStyles(element: SVGTextPathElement): { fontSize: string, fontFamily: string } {\n const computedStyles = this.fBrowser.window.getComputedStyle(element);\n return {\n fontSize: computedStyles.fontSize,\n fontFamily: computedStyles.fontFamily\n };\n }\n\n private getSymbolWidth(name: string): number {\n const text = name || 'connection';\n const { fontFamily, fontSize } = this.getFontStyles(this.hostElement);\n this.fontSize = fontSize || '12px';\n const canvas = this.fBrowser.document.createElement('canvas');\n let context;\n\n try {\n context = canvas.getContext('2d');\n } catch (e) {\n context = null;\n }\n if (!context) {\n return 0;\n }\n\n context.font = `${ fontSize } ${ fontFamily }`;\n\n const metrics = context.measureText(text);\n const symbolWidth = metrics.width / text.length;\n return symbolWidth;\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_TEXT = new InjectionToken<IConnectionText>('CONNECTION_TEXT');\n\nexport interface IConnectionText extends IHasHostElement {\n\n redraw(line: ILine): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, ViewChild\n} from \"@angular/core\";\nimport { ILine, PointExtensions } from '@foblex/2d';\nimport { FConnectionTextPathDirective } from './f-connection-text-path.directive';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_TEXT, IConnectionText } from './i-connection-text';\n\n@Component({\n selector: \"text[f-connection-text]\",\n templateUrl: \"./f-connection-text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-text\",\n '[attr.id]': 'textId',\n },\n providers: [ { provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent } ],\n})\nexport class FConnectionTextComponent implements IConnectionText {\n\n public get textId(): string {\n return F_CONNECTION_IDENTIFIERS.textId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n public get text(): string {\n return this.base.fText || '';\n }\n\n @ViewChild(FConnectionTextPathDirective, { static: true })\n public textPathDirective!: FConnectionTextPathDirective;\n\n constructor(\n private elementReference: ElementRef<SVGTextElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n ) {\n }\n\n public redraw(line: ILine): void {\n\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(line);\n const dyValue = this.calculateDy(this.textPathDirective.fontSize, isTextReverse);\n\n this.hostElement.setAttribute('dy', dyValue);\n\n const textRect = this.textPathDirective.getBBox();\n const textRectCenter = [ textRect.x + textRect.width / 2, textRect.y + textRect.height / 2 ];\n this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${ textRectCenter })` : '');\n const startOffset = FConnectionTextComponent.getTextStartOffset(line, this.base.fText || '', this.textPathDirective.symbolWidth);\n if (startOffset < 0) {\n\n this.hostElement.style.display = 'none';\n } else {\n\n this.hostElement.style.display = 'unset';\n }\n }\n\n private calculateDy(fontSize: string, isTextReverse: boolean): string {\n const fontSizeNumber = parseFloat(fontSize);\n\n const dyValue = isTextReverse ? fontSizeNumber * 1.5 : fontSizeNumber * -0.8;\n\n return dyValue.toString();\n }\n\n private static isTextReverse(line: ILine): boolean {\n return line.point1.x > line.point2.x;\n }\n\n private static getTextStartOffset(line: ILine, name: string, symbolWidth: number): number {\n const vectorLength: number = PointExtensions.hypotenuse(line.point1, line.point2);\n return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:textPath f-connection-text-path>\n {{ text }}\n </svg:textPath>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef\n} from \"@angular/core\";\nimport { IPoint } from '@foblex/2d';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const F_CONNECTION_DRAG_HANDLE_CLASS = 'f-connection-drag-handle';\n\n@Component({\n selector: \"circle[f-connection-drag-handle]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleComponent implements IHasHostElement {\n\n public point!: IPoint;\n public radius: number = 8;\n\n public readonly class: string = F_CONNECTION_DRAG_HANDLE_CLASS;\n\n public get hostElement(): SVGCircleElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGCircleElement>\n ) {\n }\n\n public redraw(penultimatePoint: IPoint, endPoint: IPoint): void {\n this.point = this._calculateCircleCenter(penultimatePoint, endPoint, 8);\n this.hostElement.setAttribute('cx', this.point.x.toString());\n this.hostElement.setAttribute('cy', this.point.y.toString());\n }\n\n private _calculateCircleCenter(start: IPoint, end: IPoint, radius: number): IPoint {\n const direction = { x: end.x - start.x, y: end.y - start.y };\n const length = Math.sqrt(direction.x * direction.x + direction.y * direction.y) || 1;\n const unitDirection = { x: direction.x / length, y: direction.y / length };\n const scaledDirection = { x: unitDirection.x * radius, y: unitDirection.y * radius };\n return { x: end.x - scaledDirection.x, y: end.y - scaledDirection.y };\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_GRADIENT = new InjectionToken<IConnectionGradient>('CONNECTION_GRADIENT');\n\nexport interface IConnectionGradient extends IHasHostElement {\n\n initialize(): void;\n\n redraw(line: ILine): void;\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { ILine, Point } from '@foblex/2d';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_GRADIENT, IConnectionGradient } from './i-connection-gradient';\n\n@Component({\n selector: \"linearGradient[fConnectionGradient]\",\n templateUrl: \"./f-connection-gradient.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-gradient\",\n '[attr.id]': 'gradientId'\n },\n providers: [ { provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent } ],\n})\nexport class FConnectionGradientComponent implements IConnectionGradient {\n\n public get gradientId(): string {\n return F_CONNECTION_IDENTIFIERS.gradientId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGLinearGradientElement {\n return this.elementReference.nativeElement;\n }\n\n public get stop1Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(0) as SVGStopElement;\n }\n\n public get stop2Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(1) as SVGStopElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGLinearGradientElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo,\n ) {\n }\n\n public initialize(): void {\n this.stop1Element.setAttribute('offset', '0%');\n this.stop2Element.setAttribute('offset', '100%');\n }\n\n private updateGradient(): void {\n this.setFromColor(this.base.fStartColor);\n this.setToColor(this.base.fEndColor);\n }\n\n private setFromColor(color: string | undefined): void {\n this.stop1Element.setAttribute('stop-color', color || 'transparent');\n }\n\n private setToColor(color: string | undefined): void {\n this.stop2Element.setAttribute('stop-color', color || 'transparent');\n }\n\n public redraw(line: ILine): void {\n const x: number = line.point2.x - line.point1.x;\n const y: number = line.point2.y - line.point1.y;\n const distance: number = Math.sqrt(x * x + y * y) || 0.01;\n\n const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);\n\n this.hostElement.setAttribute('x1', from.x.toString());\n this.hostElement.setAttribute('y1', from.y.toString());\n\n const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);\n this.hostElement.setAttribute('x2', to.x.toString());\n this.hostElement.setAttribute('y2', to.y.toString());\n this.updateGradient();\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_PATH = new InjectionToken<IConnectionPath>('CONNECTION_PATH');\n\nexport interface IConnectionPath extends IHasHostElement<SVGPathElement> {\n\n initialize(): void;\n\n setPath(path: string): void;\n\n select(): void;\n\n deselect(): void;\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport function getMarkerStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-end-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-end-${ fConnectionId }`);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_PATH, IConnectionPath } from './i-connection-path';\nimport {\n getMarkerEndId,\n getMarkerSelectedEndId,\n getMarkerSelectedStartId,\n getMarkerStartId,\n} from './get-path-marker-id';\n\n@Component({\n selector: \"path[f-connection-path]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-path\",\n '[attr.id]': 'attrConnectionId',\n '[attr.data-f-path-id]': 'fPathId',\n '[attr.stroke]': 'linkToGradient',\n },\n providers: [ { provide: CONNECTION_PATH, useExisting: FConnectionPathComponent } ],\n})\nexport class FConnectionPathComponent implements IConnectionPath {\n\n public get fPathId(): string {\n return this.base.fId;\n }\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo\n ) {\n }\n\n public initialize(): void {\n this.deselect();\n }\n\n public setPath(path: string): void {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n\n public select(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerSelectedStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerSelectedEndId(this.base.fId) })`);\n }\n\n public deselect(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerEndId(this.base.fId) })`);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject\n} from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Component({\n selector: \"path[fConnectionSelection]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-selection\",\n '[attr.id]': 'connectionForSelectionId',\n },\n})\nexport class FConnectionSelectionComponent implements IHasHostElement {\n\n public get connectionForSelectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionFromTo,\n ) {\n }\n\n public setPath(path: string) {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\n\nexport const F_CONNECTION_BUILDERS = new InjectionToken<IFConnectionBuilders>('F_CONNECTION_BUILDERS');\n\nexport interface IFConnectionBuilders {\n [key: string]: IFConnectionBuilder;\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\nimport { EFConnectionType, FBezierPathBuilder, FSegmentPathBuilder, FStraightPathBuilder } from '../common';\nimport { F_CONNECTION_BUILDERS, IFConnectionBuilders } from './f-connection-builders';\nimport { IFConnectionFactoryRequest } from './i-f-connection-factory-request';\nimport { IFConnectionBuilderResponse } from './i-f-connection-builder-response';\nimport { IMap } from '../../domain';\n\n@Injectable()\nexport class FConnectionFactory {\n\n private readonly builders: IMap<IFConnectionBuilder> = {\n\n [ EFConnectionType.STRAIGHT ]: new FStraightPathBuilder(),\n\n [ EFConnectionType.BEZIER ]: new FBezierPathBuilder(),\n\n [ EFConnectionType.SEGMENT ]: new FSegmentPathBuilder(),\n }\n\n constructor(\n @Optional() @Inject(F_CONNECTION_BUILDERS) builders: IFConnectionBuilders\n ) {\n if (builders) {\n this.builders = { ...this.builders, ...builders };\n }\n }\n\n public handle(request: IFConnectionFactoryRequest): IFConnectionBuilderResponse {\n const builder = this.builders[ request.type ];\n if (!builder) {\n throw new Error(`FConnectionBuilder not found for type ${ request.type }`);\n }\n\n return builder.handle(request.payload);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ILine, IPoint, LineExtensions, PointExtensions } from '@foblex/2d';\nimport { EFConnectionBehavior } from './e-f-connection-behavior';\nimport { EFConnectionType } from './e-f-connection-type';\nimport { IHasConnectionColor } from './i-has-connection-color';\nimport { IHasConnectionFromTo } from './i-has-connection-from-to';\nimport { IHasConnectionText } from './i-has-connection-text';\nimport { IConnectionPath } from './f-path';\nimport { IConnectionGradient } from './f-gradient';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection';\nimport { IConnectionText } from './f-connection-text';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport {\n ICanChangeSelection, ICanChangeVisibility,\n mixinChangeSelection, mixinChangeVisibility\n} from '../../mixins';\n\nconst MIXIN_BASE = mixinChangeSelection(\n mixinChangeVisibility(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n }));\n\n@Directive()\nexport abstract class FConnectionBase extends MIXIN_BASE\n implements IHasHostElement, ICanChangeSelection,\n ICanChangeVisibility,\n IHasConnectionColor,\n IHasConnectionFromTo, IHasConnectionText {\n\n public abstract override fId: string;\n\n public abstract fStartColor: string;\n\n public abstract fEndColor: string;\n\n public abstract fOutputId: string;\n\n public abstract fInputId: string;\n\n public abstract fRadius: number;\n\n public abstract fOffset: number;\n\n public path: string = '';\n\n public line: ILine = LineExtensions.initialize();\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract boundingElement: HTMLElement | SVGElement;\n\n public abstract fBehavior: EFConnectionBehavior;\n\n public abstract fType: EFConnectionType | string;\n\n public abstract fDefs: ElementRef<SVGDefsElement>;\n\n public abstract fPath: IConnectionPath;\n\n public abstract fGradient: IConnectionGradient;\n\n public abstract fDragHandle: FConnectionDragHandleComponent;\n\n public abstract fSelection: FConnectionSelectionComponent;\n\n public abstract fTextComponent: IConnectionText;\n\n public abstract fText: string;\n\n public abstract fTextStartOffset: string;\n\n public abstract fConnectionCenter: ElementRef<HTMLDivElement>;\n\n private penultimatePoint: IPoint = PointExtensions.initialize();\n\n protected constructor(\n elementReference: ElementRef<HTMLElement>,\n private cFactory: FConnectionFactory\n ) {\n super(elementReference.nativeElement);\n }\n\n public initialize(): void {\n this.fPath.initialize();\n this.fGradient.initialize();\n this.redraw();\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return (this.hostElement.firstChild?.lastChild as HTMLElement).contains(element);\n }\n\n public setLine(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): void {\n this.line = LineExtensions.initialize(source, target);\n const pathResult = this.getPathResult(source, sourceSide, target, targetSide);\n this.path = pathResult.path;\n this.penultimatePoint = pathResult.penultimatePoint || source;\n this.fConnectionCenter?.nativeElement?.setAttribute('style', this.getTransform(pathResult.connectionCenter));\n }\n\n private getPathResult(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): any {\n const radius = this.fRadius > 0 ? this.fRadius : 0;\n const offset = this.fOffset > 0 ? this.fOffset : 1;\n return this.cFactory.handle(\n {\n type: this.fType,\n payload: { source, sourceSide, target, targetSide, radius, offset }\n }\n );\n }\n\n private getTransform(position: IPoint): string {\n return `position: absolute; pointerEvents: all; transform: translate(-50%, -50%); left: ${ position.x }px; top: ${ position.y }px`;\n }\n\n public override selectChild(): void {\n this.fPath.select();\n }\n\n public override deselectChild(): void {\n this.fPath.deselect();\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.line);\n this.fDragHandle.redraw(this.penultimatePoint, this.line.point2);\n this.fTextComponent.redraw(this.line);\n }\n}\n","export enum EFConnectionBehavior {\n\n FIXED = 'fixed',\n\n FIXED_CENTER = 'fixed_center',\n\n FLOATING = 'floating',\n}\n","export enum EFConnectionType {\n\n SEGMENT = 'segment',\n\n STRAIGHT = 'straight',\n\n BEZIER = 'bezier',\n}\n","import {\n Directive\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fConnectionCenter]\"\n})\nexport class FConnectionCenterDirective {\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, inject, Input, OnChanges, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { NotifyDataChangedRequest } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionForCreateToStoreRequest, RemoveConnectionForCreateFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection-for-create\",\n templateUrl: \"./f-connection-for-create.component.html\",\n styleUrls: [ \"./f-connection-for-create.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-connection-for-create\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionForCreateComponent } ],\n})\nexport class FConnectionForCreateComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnChanges, OnDestroy {\n\n public override fId: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n @Input()\n public override fRadius: number = 8;\n\n @Input()\n public override fOffset: number = 32\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.send(new AddConnectionForCreateToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnChanges(): void {\n this._fMediator.send(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.send(new RemoveConnectionForCreateFromStoreRequest());\n }\n}\n","<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","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component, ContentChildren,\n ElementRef, inject,\n Input, OnChanges,\n OnDestroy,\n OnInit, QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH,\n CONNECTION_TEXT,\n FConnectionDragHandleComponent,\n FConnectionSelectionComponent,\n IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { NotifyDataChangedRequest } from '../../f-storage';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest } from '../../domain';\nimport { RemoveConnectionFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection\",\n exportAs: 'fComponent',\n templateUrl: \"./f-connection.component.html\",\n styleUrls: [ \"./f-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-connection\",\n '[class.f-connection-selection-disabled]': 'fSelectionDisabled',\n '[class.f-connection-reassign-disabled]': 'fDraggingDisabled',\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent\n extends FConnectionBase implements OnInit, OnChanges, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-${ uniqueId++ }`;\n\n @Input()\n public override fText: string = '';\n\n @Input()\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n @Input()\n public override fOutputId: any = '';\n\n @Input()\n public override fInputId: any = '';\n\n @Input()\n public override fRadius: number = 8;\n\n @Input()\n public override fOffset: number = 32\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n @Input({ alias: 'fReassignDisabled', transform: booleanAttribute })\n public override fDraggingDisabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.send(new AddConnectionToStoreRequest(this));\n }\n\n public ngOnChanges(): void {\n this._fMediator.send(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.send(new RemoveConnectionFromStoreRequest(this));\n }\n}\n","<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","export enum EFMarkerType {\n\n START = 'f-connection-marker-start',\n\n END = 'f-connection-marker-end',\n\n SELECTED_START = 'f-connection-selected-marker-start',\n\n SELECTED_END = 'f-connection-selected-marker-end',\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_MARKER = new InjectionToken('F_MARKER');\n\n@Directive()\nexport abstract class FMarkerBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract width: number;\n\n public abstract height: number;\n\n public abstract refX: number;\n\n public abstract refY: number;\n\n public abstract type: string;\n\n public abstract orient: 'auto' | 'auto-start-reverse' | string;\n\n public abstract markerUnits: 'strokeWidth' | 'userSpaceOnUse';\n}\n","import {\n Directive, ElementRef, inject, Input, OnDestroy, OnInit\n} from \"@angular/core\";\nimport { F_MARKER, FMarkerBase } from './f-marker-base';\nimport { EFMarkerType } from './e-f-marker-type';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionMarkerToStoreRequest, RemoveConnectionMarkerFromStoreRequest } from '../../domain';\n\n@Directive({\n selector: \"svg[fMarker]\",\n host: {\n class: \"f-component f-marker\"\n },\n providers: [ { provide: F_MARKER, useExisting: FMarkerDirective } ],\n})\nexport class FMarkerDirective extends FMarkerBase implements OnInit, OnDestroy {\n\n @Input()\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override width: number = 0;\n\n @Input()\n public override height: number = 0;\n\n @Input()\n public override refX: number = 0;\n\n @Input()\n public override refY: number = 0;\n\n @Input()\n public override type: string = EFMarkerType.START;\n\n @Input()\n public override orient: 'auto' | 'auto-start-reverse' | 'calculated' | string = 'auto';\n\n @Input()\n public override markerUnits: 'strokeWidth' | 'userSpaceOnUse' = 'strokeWidth';\n\n private _fMediator = inject(FMediator);\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n ) {\n super();\n this.hostElement.style.display = 'none';\n }\n\n public ngOnInit(): void {\n this._fMediator.send(new AddConnectionMarkerToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.send(new RemoveConnectionMarkerFromStoreRequest(this));\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, inject, Input, OnChanges, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { NotifyDataChangedRequest } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddSnapConnectionToStoreRequest, RemoveSnapConnectionFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-snap-connection\",\n templateUrl: \"./f-snap-connection.component.html\",\n styleUrls: [ \"./f-snap-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-snap-connection\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FSnapConnectionComponent } ],\n})\nexport class FSnapConnectionComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnChanges, OnDestroy {\n\n public override fId: string = `f-snap-connection-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n @Input()\n public fSnapThreshold: number = 20;\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n @Input()\n public override fRadius: number = 8;\n\n @Input()\n public override fOffset: number = 32\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.send(new AddSnapConnectionToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnChanges(): void {\n this._fMediator.send(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.send(new RemoveSnapConnectionFromStoreRequest());\n }\n}\n","<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","import {\n FConnectionDragHandleComponent,\n FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective\n} from './common';\nimport { FConnectionComponent } from './f-connection';\nimport { FConnectionCenterDirective } from './f-connection-center';\nimport { FConnectionForCreateComponent } from './f-connection-for-create';\nimport { FMarkerDirective } from './f-marker';\nimport { FSnapConnectionComponent } from './f-snap-connection';\n\nexport const F_CONNECTION_PROVIDERS = [\n\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionSelectionComponent,\n\n FConnectionComponent,\n FConnectionCenterDirective,\n FConnectionForCreateComponent,\n FMarkerDirective,\n FSnapConnectionComponent\n];\n","import { GetIntersections, ILine, IPoint } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\n\nexport function floatingBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return _getIntersectionsLine(\n _fromRoundedRectIntersections(payload),\n _toRoundedRectIntersections(payload),\n payload\n );\n}\n\nfunction _fromRoundedRectIntersections(payload: CalculateConnectionLineByBehaviorRequest) {\n return GetIntersections.getRoundedRectIntersections(\n payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect\n )[ 0 ];\n}\n\nfunction _toRoundedRectIntersections(payload: CalculateConnectionLineByBehaviorRequest) {\n return GetIntersections.getRoundedRectIntersections(\n payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect\n )[ 0 ];\n}\n\nfunction _getIntersectionsLine(from: IPoint, to: IPoint, payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: from ? from : payload.outputRect.gravityCenter,\n point2: to ? to : payload.inputRect.gravityCenter\n };\n}\n","import { ILine, Line } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\n\nexport function fixedCenterBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: payload.outputRect.gravityCenter,\n point2: payload.inputRect.gravityCenter\n };\n}\n","import { ILine, IPoint, IRect } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\nimport { EFConnectableSide } from '../../../f-connectors';\n\nexport function fixedOutboundBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: _getPosition(\n payload.outputRect,\n payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide\n ),\n point2: _getPosition(\n payload.inputRect,\n payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide\n )\n };\n}\n\nfunction _getPosition(rect: IRect, side: EFConnectableSide): IPoint {\n switch (side) {\n case EFConnectableSide.TOP:\n return { x: rect.x + rect.width / 2, y: rect.y };\n case EFConnectableSide.BOTTOM:\n return { x: rect.x + rect.width / 2, y: rect.y + rect.height };\n case EFConnectableSide.LEFT:\n return { x: rect.x, y: rect.y + rect.height / 2 };\n case EFConnectableSide.RIGHT:\n return { x: rect.x + rect.width, y: rect.y + rect.height / 2 };\n default:\n throw new Error(`Unknown side: ${ side }`);\n }\n}\n\n\n\n\n","import { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\nimport { Injectable } from '@angular/core';\nimport { EFConnectionBehavior } from '../../../f-connection';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ILine } from '@foblex/2d';\nimport { floatingBehavior } from './floating-behavior';\nimport { fixedCenterBehavior } from './fixed-center-behavior';\nimport { fixedOutboundBehavior } from './fixed-outbound-behavior';\n\n@Injectable()\n@FExecutionRegister(CalculateConnectionLineByBehaviorRequest)\nexport class CalculateConnectionLineByBehaviorExecution implements IExecution<CalculateConnectionLineByBehaviorRequest, ILine> {\n\n private _handlers = {\n\n [ EFConnectionBehavior.FLOATING.toString() ]: floatingBehavior,\n\n [ EFConnectionBehavior.FIXED_CENTER.toString() ]: fixedCenterBehavior,\n\n [ EFConnectionBehavior.FIXED.toString() ]: fixedOutboundBehavior,\n }\n\n public handle(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return this._handlers[ payload.behavior ](payload);\n }\n}\n\n","export class RedrawConnectionsRequest {\n}\n","import { ILine } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { RedrawConnectionsRequest } from './redraw-connections-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { CalculateConnectionLineByBehaviorRequest } from '../calculate-connection-line-by-behavior';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FConnectionBase } from '../../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedElementRectRequest } from '../../get-normalized-element-rect';\nimport { CreateConnectionMarkersRequest } from '../create-connection-markers';\n\n@Injectable()\n@FExecutionRegister(RedrawConnectionsRequest)\nexport class RedrawConnectionsExecution implements IExecution<RedrawConnectionsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: RedrawConnectionsRequest): void {\n this.resetConnectors();\n\n if (this.fComponentsStore.fTempConnection) {\n this.setMarkers(this.fComponentsStore.fTempConnection);\n }\n\n if (this.fComponentsStore.fSnapConnection) {\n this.setMarkers(this.fComponentsStore.fSnapConnection);\n }\n\n this.fComponentsStore.fConnections.forEach((connection) => {\n const output = this.fComponentsStore.fOutputs.find((x) => x.fId === connection.fOutputId);\n const input = this.fComponentsStore.fInputs.find((x) => x.fId === connection.fInputId);\n if (output && input) {\n this.setupConnection(output, input, connection);\n }\n });\n }\n\n private resetConnectors(): void {\n this.fComponentsStore.fOutputs.forEach((output) => output.setConnected(false, undefined));\n this.fComponentsStore.fInputs.forEach((input) => input.setConnected(false, undefined));\n }\n\n private setupConnection(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): void {\n output.setConnected(true, input);\n input.setConnected(true, output);\n\n const line = this.getLine(output, input, connection);\n\n this.setMarkers(connection);\n\n connection.setLine(line.point1, output.fConnectableSide, line.point2, input.fConnectableSide);\n\n connection.initialize();\n connection.isSelected() ? connection.select() : null;\n }\n\n private getLine(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): ILine {\n return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(\n this.fMediator.execute(new GetNormalizedElementRectRequest(output.hostElement, true)),\n this.fMediator.execute(new GetNormalizedElementRectRequest(input.hostElement, true)),\n connection.fBehavior,\n output.fConnectableSide,\n input.fConnectableSide\n )\n );\n }\n\n private setMarkers(connection: FConnectionBase): void {\n this.fMediator.send(\n new CreateConnectionMarkersRequest(connection)\n );\n }\n}\n","export class RemoveConnectionForCreateFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionForCreateFromStoreRequest } from './remove-connection-for-create-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionForCreateFromStoreRequest)\nexport class RemoveConnectionForCreateFromStoreExecution implements IExecution<RemoveConnectionForCreateFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionForCreateFromStoreRequest): void {\n this._fComponentsStore.fTempConnection = undefined;\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class RemoveConnectionFromStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionFromStoreRequest } from './remove-connection-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FConnectionBase } from '../../../f-connection/common';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionFromStoreRequest)\nexport class RemoveConnectionFromStoreExecution implements IExecution<RemoveConnectionFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionFromStoreRequest): void {\n this._fComponentsStore.fConnections.splice(this._getIndexOfConnection(request.fConnection), 1);\n this._fComponentsStore.dataChanged();\n }\n\n private _getIndexOfConnection(fConnection: FConnectionBase): number {\n const result = this._fComponentsStore.fConnections.indexOf(fConnection);\n if (result === -1) {\n throw new Error(`Connection not found in store`);\n }\n return result;\n }\n}\n","import { FMarkerBase } from '../../../f-connection';\n\nexport class RemoveConnectionMarkerFromStoreRequest {\n\n constructor(\n public fComponent: FMarkerBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionMarkerFromStoreRequest } from './remove-connection-marker-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionMarkerFromStoreRequest)\nexport class RemoveConnectionMarkerFromStoreExecution implements IExecution<RemoveConnectionMarkerFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionMarkerFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fMarkers, request.fComponent);\n }\n}\n","export class RemoveSnapConnectionFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveSnapConnectionFromStoreRequest } from './remove-snap-connection-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveSnapConnectionFromStoreRequest)\nexport class RemoveSnapConnectionFromStoreExecution implements IExecution<RemoveSnapConnectionFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveSnapConnectionFromStoreRequest): void {\n this._fComponentsStore.fSnapConnection = undefined;\n }\n}\n","import { FindClosestInputExecution } from './find-closest-input';\nimport { GetAllCanBeConnectedInputPositionsExecution } from './get-all-can-be-connected-input-positions';\nimport { GetConnectorWithRectExecution } from './get-connector-with-rect';\nimport { CreateConnectionMarkersExecution } from './create-connection-markers';\nimport { AddConnectionForCreateToStoreExecution } from './add-connection-for-create-to-store';\nimport { AddConnectionToStoreExecution } from './add-connection-to-store';\nimport { AddSnapConnectionToStoreExecution } from './add-snap-connection-to-store';\nimport { RemoveConnectionForCreateFromStoreExecution } from './remove-connection-for-create-from-store';\nimport { RemoveConnectionFromStoreExecution } from './remove-connection-from-store';\nimport { RemoveSnapConnectionFromStoreExecution } from './remove-snap-connection-from-store';\nimport { AddConnectionMarkerToStoreExecution } from './add-connection-marker-to-store';\nimport { RemoveConnectionMarkerFromStoreExecution } from './remove-connection-marker-from-store';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { CalculateConnectionLineByBehaviorExecution } from './calculate-connection-line-by-behavior';\n\nexport const F_CONNECTION_FEATURES = [\n\n AddConnectionForCreateToStoreExecution,\n\n AddConnectionMarkerToStoreExecution,\n\n AddConnectionToStoreExecution,\n\n AddSnapConnectionToStoreExecution,\n\n CreateConnectionMarkersExecution,\n\n FindClosestInputExecution,\n\n GetAllCanBeConnectedInputPositionsExecution,\n\n CalculateConnectionLineByBehaviorExecution,\n\n GetConnectorWithRectExecution,\n\n RedrawConnectionsExecution,\n\n RemoveConnectionForCreateFromStoreExecution,\n\n RemoveConnectionFromStoreExecution,\n\n RemoveConnectionMarkerFromStoreExecution,\n\n RemoveSnapConnectionFromStoreExecution\n];\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddInputToStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddInputToStoreRequest } from './add-input-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddInputToStoreRequest)\nexport class AddInputToStoreExecution implements IExecution<AddInputToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddInputToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fInputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddOutletToStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddOutletToStoreRequest } from './add-outlet-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddOutletToStoreRequest)\nexport class AddOutletToStoreExecution implements IExecution<AddOutletToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddOutletToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fOutlets, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddOutputToStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddOutputToStoreRequest } from './add-output-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddOutputToStoreRequest)\nexport class AddOutputToStoreExecution implements IExecution<AddOutputToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddOutputToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fOutputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveInputFromStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveInputFromStoreRequest } from './remove-input-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveInputFromStoreRequest)\nexport class RemoveInputFromStoreExecution implements IExecution<RemoveInputFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveInputFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fInputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveOutletFromStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveOutletFromStoreRequest } from './remove-outlet-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveOutletFromStoreRequest)\nexport class RemoveOutletFromStoreExecution implements IExecution<RemoveOutletFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveOutletFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fOutlets, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveOutputFromStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveOutputFromStoreRequest } from './remove-output-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveOutputFromStoreRequest)\nexport class RemoveOutputFromStoreExecution implements IExecution<RemoveOutputFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveOutputFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fOutputs, request.fComponent);\n }\n}\n","import { AddInputToStoreExecution } from './add-input-to-store';\nimport { AddOutletToStoreExecution } from './add-outlet-to-store';\nimport { AddOutputToStoreExecution } from './add-output-to-store';\nimport { RemoveInputFromStoreExecution } from './remove-input-from-store';\nimport { RemoveOutletFromStoreExecution } from './remove-outlet-from-store';\nimport { RemoveOutputFromStoreExecution } from './remove-output-from-store';\n\nexport const F_CONNECTORS_FEATURES = [\n\n AddInputToStoreExecution,\n\n AddOutletToStoreExecution,\n\n AddOutputToStoreExecution,\n\n RemoveInputFromStoreExecution,\n\n RemoveOutletFromStoreExecution,\n\n RemoveOutputFromStoreExecution\n];\n","import { FDraggableBase } from '../../../f-draggable';\n\nexport class AddDndToStoreRequest {\n\n constructor(\n public fComponent: FDraggableBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddDndToStoreRequest } from './add-dnd-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddDndToStoreRequest)\nexport class AddDndToStoreExecution implements IExecution<AddDndToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddDndToStoreRequest): void {\n this._fComponentsStore.fDraggable = request.fComponent;\n }\n}\n","export class EmitSelectionChangeEventRequest {\n\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class CanvasDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public prepareDragSequence(): void {\n this.onPointerDownPosition = this.fComponentsStore.fCanvas!.transform.position;\n }\n\n public onPointerMove(difference: IPoint): void {\n this.fComponentsStore.fCanvas!.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n public onPointerUp(): void {\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/2d';\nimport { IDraggableItem } from './i-draggable-item';\nimport { ICanChangeSelection } from '../mixins';\n\n@Injectable()\nexport class FDraggableDataContext {\n\n public selectedItems: ICanChangeSelection[] = [];\n\n public isSelectedChanged: boolean = false;\n\n public onPointerDownScale: number = 1;\n\n public onPointerDownPosition: Point = new Point(0, 0);\n\n public draggableItems: IDraggableItem[] = [];\n\n public reset(): void {\n this.draggableItems = [];\n this.onPointerDownScale = 1;\n this.onPointerDownPosition = new Point(0, 0);\n }\n\n public markSelectionAsChanged(): void {\n this.isSelectedChanged = true;\n }\n\n public isEmpty(): boolean {\n return !this.draggableItems.length;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeExecution implements IExecution<CanvasMoveFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this.fDraggableDataContext.draggableItems.forEach((x) => x.onPointerUp?.());\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CanvasDragHandler\n );\n }\n}\n","import { CanvasMoveFinalizeExecution } from './canvas-move-finalize.execution';\n\nexport const CANVAS_MOVE_FINALIZE_PROVIDERS = [\n\n CanvasMoveFinalizeExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationExecution implements IExecution<CanvasMovePreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new CanvasDragHandler(this.fComponentsStore)\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FValidatorRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationValidator implements IValidator<CanvasMovePreparationRequest> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n (this.isBackgroundElement(request.event.targetElement) || this.isDragOnHost(request.event.targetElement));\n }\n\n private isBackgroundElement(targetElement: HTMLElement): boolean | undefined {\n return this.fComponentsStore.fBackground?.hostElement.contains(targetElement);\n }\n\n private isDragOnHost(targetElement: HTMLElement): boolean {\n return this.flowHost.contains(targetElement) && !this.getNode(targetElement);\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n let result = this.fComponentsStore.fNodes\n .find(n => n.isContains(targetElement));\n if (result && result.fDraggingDisabled) {\n result = undefined;\n }\n return result;\n }\n}\n","import { CanvasMovePreparationExecution } from './canvas-move-preparation.execution';\nimport { CanvasMovePreparationValidator } from './canvas-move-preparation.validator';\n\nexport const CANVAS_MOVE_PREPARATION_PROVIDERS = [\n\n CanvasMovePreparationExecution,\n\n CanvasMovePreparationValidator,\n];\n","import { CANVAS_MOVE_PREPARATION_PROVIDERS } from './canvas-move-preparation';\nimport { CANVAS_MOVE_FINALIZE_PROVIDERS } from './canvas-move-finalize';\n\nexport const CANVAS_PROVIDERS = [\n\n ...CANVAS_MOVE_FINALIZE_PROVIDERS,\n\n ...CANVAS_MOVE_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export function createErrorClass<T>(impl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n };\n\n const constructor = impl(_super);\n constructor.prototype = Object.create(Error.prototype);\n constructor.prototype.constructor = constructor;\n return constructor;\n}\n","import { createErrorClass } from './create-error-class';\n\nexport interface NotFoundError extends Error {\n}\n\nexport interface NotFoundCtor {\n\n new(message?: string): NotFoundError;\n}\n\nexport const NotFoundError: NotFoundCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'The requested resource was not found.';\n this.code = 404;\n }\n);\n","import { createErrorClass } from './create-error-class';\n\nexport interface ConflictError extends Error {\n}\n\nexport interface ConflictErrorCtor {\n\n new(message?: string): ConflictError;\n}\n\nexport const ConflictError: ConflictErrorCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'Conflict error occurred.';\n this.code = 409;\n }\n);\n","import { NotFoundError } from './not-found-error';\nimport { ConflictError } from './conflict-error';\n\nexport function OutputNotFound(id: string): Error {\n return new NotFoundError(`Output with fOutputId ${ id } not found. Make sure there is no f-connection to a non-existent fOutput.`);\n}\n\nexport function InputNotFound(id: string): Error {\n return new NotFoundError(`Input with fInputId ${ id } not found. Make sure there is no f-connection to a non-existent fInput.`);\n}\n\nexport function RequiredOutput(): Error {\n return new ConflictError(`The fNode must contain at least one fOutput if there is an fOutlet`);\n}\n","import { FNodeOutletBase } from '../../../../f-connectors';\n\nexport class GetCanBeConnectedOutputByOutletRequest {\n\n constructor(\n public outlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { RequiredOutput } from '../../../../errors';\nimport { FExecutionRegister } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletExecution\n implements IHandler<GetCanBeConnectedOutputByOutletRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fOutputs(): FConnectorBase[] {\n return this.fComponentsStore.fOutputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): FConnectorBase | undefined {\n const outputs = this.getConnectableOutputs(this.getNode(request.outlet));\n if (!outputs.length) {\n throw RequiredOutput();\n }\n return outputs.length > 0 ? outputs[ 0 ] : undefined;\n }\n\n private getConnectableOutputs(node: FNodeBase): FConnectorBase[] {\n return this.fOutputs.filter((x) => {\n return node.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private getNode(outlet: FNodeOutletBase): FNodeBase {\n return this.fNodes.find((x) => x.isContains(outlet.hostElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletValidator implements IValidator<GetCanBeConnectedOutputByOutletRequest> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): boolean {\n return !!this.fNodes.find((x) => x.isContains(request.outlet.hostElement));\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FCreateConnectionEvent {\n\n constructor(\n public fOutputId: string,\n public fInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n FindClosestInputRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n CalculateConnectionLineByBehaviorRequest,\n GetConnectorWithRectRequest,\n IConnectorWithRect, IClosestInput\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { EFConnectableSide, FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { RoundedRect, ILine, IPoint, PointExtensions, RectExtensions, Point, } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\nexport class CreateConnectionDragHandler implements IDraggableItem {\n\n private toConnectorRect: RoundedRect = new RoundedRect();\n\n public get fConnection(): FConnectionBase {\n return this.fComponentsStore.fTempConnection!;\n }\n\n private get fSnapConnection(): FSnapConnectionComponent | undefined {\n return this.fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private fOutputWithRect!: IConnectorWithRect;\n\n private canBeConnectedInputs: IConnectorWithRect[] = [];\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n private fOutput: FConnectorBase,\n private onPointerDownPosition: IPoint,\n ) {\n }\n\n public prepareDragSequence(): void {\n this._initializeSnapConnection();\n this._initializeConnectionForCreate();\n\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fOutput.fId)\n );\n\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.fOutput));\n\n this.toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.onPointerDownPosition.x, this.onPointerDownPosition.y)\n );\n\n this.fConnection.show();\n this.onPointerMove(PointExtensions.initialize());\n }\n\n private _initializeSnapConnection(): void {\n if (!this.fSnapConnection) {\n return;\n }\n this.fSnapConnection.fOutputId = this.fOutput.fId;\n this.fSnapConnection.initialize();\n }\n\n private _initializeConnectionForCreate(): void {\n this.fConnection.fOutputId = this.fOutput.fId;\n this.fConnection.initialize();\n }\n\n public onPointerMove(difference: IPoint): void {\n const fClosestInput = this._findClosestInput(difference);\n\n this._drawConnectionForCreate(this.toConnectorRect.addPoint(difference), fClosestInput?.fConnector.fConnectableSide || EFConnectableSide.TOP);\n\n if (this.fSnapConnection) {\n this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));\n }\n }\n\n private _drawConnectionForCreate(fInputRect: RoundedRect, fSide: EFConnectableSide): void {\n const line = this.fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this.fOutputWithRect.fRect,\n fInputRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fSide\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);\n this.fConnection.redraw();\n }\n\n private _drawSnapConnection(fClosestInput: IClosestInput | undefined): void {\n if (fClosestInput) {\n const line = this.fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this.fOutputWithRect.fRect,\n fClosestInput.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fClosestInput.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IClosestInput | undefined {\n if (!this.fSnapConnection) {\n return undefined;\n }\n\n return this._getClosestInputForSnapConnection(this._findClosestInput(difference));\n }\n\n private _findClosestInput(difference: IPoint): IClosestInput | undefined {\n return this.fMediator.send<IClosestInput | undefined>(\n new FindClosestInputRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n )\n );\n }\n\n private _getClosestInputForSnapConnection(fClosestInput: IClosestInput | undefined): IClosestInput | undefined {\n return fClosestInput && fClosestInput.distance < this.fSnapConnection!.fSnapThreshold ? fClosestInput : undefined;\n }\n\n public onPointerUp(): void {\n this.fConnection.redraw();\n this.fConnection.hide();\n this.fSnapConnection?.hide();\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\nexport class GetInputUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler\n ) {\n }\n}\n","import { IPoint, Point } from '@foblex/2d';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { Injectable } from '@angular/core';\nimport { BrowserService } from '@foblex/platform';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\n\n@Injectable()\n@FExecutionRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerExecution\n implements IExecution<GetInputUnderPointerRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(payload: GetInputUnderPointerRequest): FConnectorBase | undefined {\n const output = (this.getOutput(payload.dragHandler) || this.getOutlet(payload.dragHandler))!;\n const inputsUnderPointer = this.getInputsUnderPointer(payload.event.getPosition(), payload.dragHandler);\n\n const connectors = output.isSelfConnectable ?\n inputsUnderPointer :\n this.filterSelfConnectable(inputsUnderPointer, output);\n return connectors.length > 0 ? connectors[0] : undefined;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.fId === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.fId === dragHandler.fConnection.fOutputId);\n }\n\n private getInputsUnderPointer(position: IPoint, dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase[] {\n const result = this.getInputsInPosition(position);\n const closestInput = dragHandler.getClosetInput(this.getDifference(position));\n if (closestInput) {\n result.push(closestInput.fConnector);\n }\n const input = this.getFirstConnectableInputOfNodeInPosition(position);\n if (input) {\n result.push(input);\n }\n return result;\n }\n\n private getDifference(position: IPoint): IPoint {\n return Point.fromPoint(position).elementTransform(this.fComponentsStore.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getInputsInPosition(position: IPoint): FConnectorBase[] {\n return this.getElementsFromPoint(position).map((element) =>\n this.fInputs.find(x => x.isContains(element) && x.canBeConnected)\n ).filter((x) => !!x) as FConnectorBase[];\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n private getFirstConnectableInputOfNodeInPosition(position: IPoint): FConnectorBase | undefined {\n return this.getNodesInPosition(position).map((x) => {\n return this.fInputs.find((i) => x.isContains(i.hostElement) && i.canBeConnected);\n }).find((x) => !!x);\n }\n\n private getNodesInPosition(position: IPoint): FNodeBase[] {\n return this.getElementsFromPoint(position).map((element) => {\n return this.fNodes.find((x) => x.isContains(element) && x.fConnectOnNode)\n }).filter((x) => !!x) as FNodeBase[];\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], connector: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => {\n const targetNode = this.fNodes.find((k) => k.isContains(x.hostElement));\n const sourceNode = this.fNodes.find((k) => k.isContains(connector!.hostElement));\n return sourceNode?.hostElement !== targetNode?.hostElement;\n })\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { OutputNotFound } from '../../../errors';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\nimport { FConnectorBase } from '../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerValidator implements IValidator<GetInputUnderPointerRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetInputUnderPointerRequest): boolean {\n let output = this.getOutput(request.dragHandler) || this.getOutlet(request.dragHandler);\n if (!output) {\n throw OutputNotFound(request.dragHandler.fConnection.fOutputId);\n }\n return true;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.fId === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.fId === dragHandler.fConnection.fOutputId);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../f-connectors';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { OutputNotFound } from '../../../../errors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../get-can-be-connected-output-by-outlet';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeExecution\n implements IHandler<CreateConnectionFinalizeRequest, void> {\n\n private get dragHandler(): CreateConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as CreateConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this.emitEvent(request.event);\n this.dragHandler.onPointerUp();\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CreateConnectionDragHandler\n );\n }\n\n private getTargetOutput(output: FConnectorBase | undefined): FConnectorBase {\n if (!output) {\n throw OutputNotFound(this.dragHandler.fConnection.fOutputId);\n }\n return isNodeOutlet(output.hostElement) ? this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(output as FNodeOutletBase)\n ) : output;\n }\n\n private getOutput(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.fId === this.dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.fId === this.dragHandler.fConnection.fOutputId);\n }\n\n private emitEvent(event: IPointerEvent): void {\n this.fComponentsStore.fDraggable?.fCreateConnection.emit(\n new FCreateConnectionEvent(\n this.getTargetOutput(this.getOutput() || this.getOutlet()).fId,\n this.getInputUnderPointer(event)?.fId,\n event.getPosition()\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { FConnectorBase } from '../../../../../f-connectors';\n\nexport class CreateConnectionDragHandlerRequest {\n\n constructor(\n public onPointerDownPosition: IPoint,\n public connector: FConnectorBase\n ) {\n }\n}\n","import { ITransformModel, Point } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionDragHandlerRequest } from './create-connection-drag-handler.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../../create-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionDragHandlerRequest)\nexport class CreateConnectionDragHandlerExecution\n implements IHandler<CreateConnectionDragHandlerRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionDragHandlerRequest): void {\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition)\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.onPointerDownPosition = positionRelativeToFlowComponent;\n\n const positionRelativeToCanvasComponent = Point.fromPoint(positionRelativeToFlowComponent).mult(this.transform.scale)\n .sub(this.transform.position).sub(this.transform.scaledPosition).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new CreateConnectionDragHandler(this.fMediator, this.fComponentsStore, request.connector, positionRelativeToCanvasComponent)\n ];\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFromOutletPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase } from '../../../../../f-connectors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../../get-can-be-connected-output-by-outlet';\nimport { RequiredOutput } from '../../../../../errors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutletPreparationRequest)\nexport class CreateConnectionFromOutletPreparationExecution\n implements IHandler<CreateConnectionFromOutletPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutletPreparationRequest): void {\n const { event } = request;\n const node = this.fComponentsStore\n .fNodes.find(n => n.isContains(event.targetElement))!;\n\n const outlet = this.fComponentsStore.fOutlets.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!outlet) {\n throw new Error('Outlet not found');\n }\n const nodeOutputs = this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n (outlet as FNodeOutletBase).setOutputs(nodeOutputs);\n\n if (outlet.canBeConnected) {\n\n if ((outlet as FNodeOutletBase).isConnectionFromOutlet) {\n\n this.createDragHandler(event.getPosition(), outlet);\n } else {\n const output = this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(outlet as FNodeOutletBase)\n );\n if (!output) {\n throw RequiredOutput();\n }\n this.createDragHandler(event.getPosition(), output);\n }\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFromOutputPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationExecution\n implements IHandler<CreateConnectionFromOutputPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): void {\n const { event } = request;\n\n const output = this.fComponentsStore.fOutputs.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!output) {\n throw new Error('Output not found');\n }\n if (output.canBeConnected) {\n this.createDragHandler(event.getPosition(), output);\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectorBase, isNodeOutput } from '../../../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationValidator implements IValidator<CreateConnectionFromOutputPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): boolean {\n return this.isNodeOutput(request.event.targetElement, this.getNode(request.event));\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore\n .fNodes.find(n => n.isContains(event.targetElement))!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, isNodeOutlet, isNodeOutput } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationExecution\n implements IHandler<CreateConnectionPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: CreateConnectionPreparationRequest): void {\n if (!this._isValid(request)) {\n return;\n }\n\n if (isNodeOutlet(request.event.targetElement)) {\n this._fMediator.send<void>(new CreateConnectionFromOutletPreparationRequest(request.event));\n } else if (this.isNodeOutput(request.event.targetElement, this._getNode(request.event)!)) {\n this._fMediator.send<void>(new CreateConnectionFromOutputPreparationRequest(request.event));\n }\n }\n\n private _isValid(request: CreateConnectionPreparationRequest): boolean {\n return !!this._getNode(request.event) && this._isValidConditions();\n }\n\n private _getNode(event: IPointerEvent): FNodeBase | undefined {\n return this._fComponentsStore\n .fNodes.find(n => n.isContains(event.targetElement));\n }\n\n private _isValidConditions(): boolean {\n return !this._fDraggableDataContext.draggableItems.length && !!this._fComponentsStore.fTempConnection;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n FindClosestInputRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n CalculateConnectionLineByBehaviorRequest, GetConnectorWithRectRequest,\n IConnectorWithRect, IClosestInput\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { EFConnectableSide, FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { ILine, IPoint, IRoundedRect, Point, RectExtensions, RoundedRect } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\nexport class ReassignConnectionDragHandler implements IDraggableItem {\n\n public toConnectorRect: RoundedRect = new RoundedRect();\n\n private get fSnapConnection(): FSnapConnectionComponent | undefined {\n return this.fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private fOutputWithRect!: IConnectorWithRect;\n private fInputWithRect!: IConnectorWithRect;\n\n private canBeConnectedInputs: IConnectorWithRect[] = [];\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n public fConnection: FConnectionBase,\n ) {\n }\n\n public prepareDragSequence(): void {\n this._initializeSnapConnection();\n\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fConnection.fOutputId)\n );\n\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getOutput()));\n this.fInputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getInput()));\n this.toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.fConnection.line.point2.x, this.fConnection.line.point2.y)\n );\n }\n\n private _initializeSnapConnection(): void {\n if (!this.fSnapConnection) {\n return;\n }\n this.fSnapConnection.fOutputId = this.fConnection.fOutputId;\n this.fSnapConnection.initialize();\n }\n\n private getOutput(): FConnectorBase {\n return this.fComponentsStore.fOutputs.find((x) => x.fId === this.fConnection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.fId === this.fConnection.fInputId)!\n }\n\n public onPointerMove(difference: IPoint): void {\n const fClosestInput = this._findClosestInput(difference);\n\n this._drawConnection(\n this.toConnectorRect.addPoint(difference),\n fClosestInput?.fConnector.fConnectableSide || this.fInputWithRect.fConnector.fConnectableSide\n );\n if (this.fSnapConnection) {\n this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));\n }\n }\n\n private _drawConnection(fInputRect: IRoundedRect, fSide: EFConnectableSide): void {\n const line = this._getLineToPointer(fInputRect, fSide);\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);\n this.fConnection.redraw();\n }\n\n private _getLineToPointer(fInputRect: IRoundedRect, fSide: EFConnectableSide): ILine {\n return this.fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this.fOutputWithRect.fRect,\n fInputRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fSide\n )\n );\n }\n\n private _drawSnapConnection(fClosestInput: IClosestInput | undefined): void {\n if (fClosestInput) {\n const line = this._getLineToClosestInput(fClosestInput);\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n private _getLineToClosestInput(fClosestInput: IClosestInput): ILine {\n return this.fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this.fOutputWithRect.fRect,\n fClosestInput.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fClosestInput.fConnector.fConnectableSide\n ));\n }\n\n public getClosetInput(difference: IPoint): IClosestInput | undefined {\n if (!this.fSnapConnection) {\n return undefined;\n }\n return this._getClosestInputForSnapConnection(this._findClosestInput(difference));\n }\n\n private _findClosestInput(difference: IPoint): IClosestInput | undefined {\n return this.fMediator.send<IClosestInput | undefined>(\n new FindClosestInputRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n )\n );\n }\n\n private _getClosestInputForSnapConnection(fClosestInput: IClosestInput | undefined): IClosestInput | undefined {\n return fClosestInput && fClosestInput.distance < this.fSnapConnection!.fSnapThreshold ? fClosestInput : undefined;\n }\n\n public onPointerUp(): void {\n this._drawConnection(this.fInputWithRect.fRect, this.fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection?.hide();\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FReassignConnectionEvent {\n\n constructor(\n public fConnectionId: string,\n public fOutputId: string,\n public oldFInputId: string,\n public newFInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { FDraggableBase } from '../../../f-draggable-base';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectorBase } from '../../../../f-connectors';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeExecution implements IExecution<ReassignConnectionFinalizeRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fDraggable(): FDraggableBase {\n return this._fComponentsStore.fDraggable!;\n }\n\n private get _fDragHandler(): ReassignConnectionDragHandler {\n return this._fDraggableDataContext.draggableItems[ 0 ] as ReassignConnectionDragHandler;\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): void {\n if (!this._isDroppedConnectionReassignEvent()) {\n return;\n }\n this._applyReassignEvent(request.event);\n this._fDragHandler.onPointerUp();\n }\n\n private _isDroppedConnectionReassignEvent(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ReassignConnectionDragHandler\n );\n }\n\n private _applyReassignEvent(event: IPointerEvent): void {\n const fInput = this._getInputUnderPointer(event);\n if (\n !!fInput && !this._isReassignToDifferentInput(fInput)\n ) {\n return;\n }\n this._emitReassignConnectionEvent(event, fInput);\n }\n\n private _getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this._fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this._fDragHandler));\n }\n\n private _isReassignToDifferentInput(fInput: FConnectorBase): boolean {\n return this._fDragHandler.fConnection.fInputId !== fInput.fId;\n }\n\n private _emitReassignConnectionEvent(event: IPointerEvent, fInput?: FConnectorBase): void {\n this._fDraggable.fReassignConnection.emit(this._getEventData(event, fInput));\n }\n\n private _getEventData(event: IPointerEvent, fInput?: FConnectorBase): FReassignConnectionEvent {\n return new FReassignConnectionEvent(\n this._fDragHandler.fConnection.fId,\n this._fDragHandler.fConnection.fOutputId,\n this._fDragHandler.fConnection.fInputId,\n fInput?.fId, event.getPosition()\n );\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { UpdateItemAndChildrenLayersRequest } from '../../../../domain';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FConnectionBase } from '../../../../f-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationExecution implements IExecution<ReassignConnectionPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private _fConnection: FConnectionBase | undefined;\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: ReassignConnectionPreparationRequest): void {\n if (!this._isValid(request)) {\n return;\n }\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.draggableItems = [\n new ReassignConnectionDragHandler(this._fMediator, this._fComponentsStore, this._fConnection!)\n ];\n\n setTimeout(() => this._updateConnectionLayer());\n }\n\n private _isValid(request: ReassignConnectionPreparationRequest): boolean {\n this._fConnection = this._getConnectionToReassign(this._getPointInFlow(request));\n return !!this._fConnection && !this._fDraggableDataContext.draggableItems.length;\n }\n\n private _getPointInFlow(request: ReassignConnectionPreparationRequest): IPoint {\n return Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost)\n .sub(this._transform.scaledPosition).sub(this._transform.position)\n .div(this._transform.scale);\n }\n\n private _getConnectionToReassign(position: IPoint): FConnectionBase | undefined {\n const connections = this._getConnectionsFromPoint(position);\n return connections.length ? connections[0] : undefined;\n }\n\n private _getConnectionsFromPoint(position: IPoint): FConnectionBase[] {\n return this._fConnections.filter((x) => {\n return this._isPointInsideCircle(position, x.fDragHandle.point) && !x.fDraggingDisabled;\n });\n }\n\n private _isPointInsideCircle(point: IPoint, circleCenter: IPoint): boolean {\n return (point.x - circleCenter.x) ** 2 + (point.y - circleCenter.y) ** 2 <= 8 ** 2;\n }\n\n private _updateConnectionLayer(): void {\n this._fMediator.execute<void>(\n new UpdateItemAndChildrenLayersRequest(\n this._fConnection!, this._fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement\n )\n );\n }\n}\n","import {\n CreateConnectionDragHandlerExecution,\n CreateConnectionFinalizeExecution,\n CreateConnectionFromOutletPreparationExecution,\n CreateConnectionFromOutputPreparationExecution,\n CreateConnectionFromOutputPreparationValidator,\n CreateConnectionPreparationExecution,\n GetCanBeConnectedOutputByOutletExecution,\n GetCanBeConnectedOutputByOutletValidator\n} from './create-connection';\nimport {\n ReassignConnectionFinalizeExecution,\n ReassignConnectionPreparationExecution,\n} from './reassign-connection';\nimport { GetInputUnderPointerExecution, GetInputUnderPointerValidator } from './get-input-under-pointer';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n GetInputUnderPointerExecution,\n\n GetInputUnderPointerValidator,\n\n CreateConnectionFinalizeExecution,\n\n CreateConnectionDragHandlerExecution,\n\n CreateConnectionFromOutletPreparationExecution,\n\n GetCanBeConnectedOutputByOutletExecution,\n\n GetCanBeConnectedOutputByOutletValidator,\n\n CreateConnectionFromOutputPreparationExecution,\n\n CreateConnectionFromOutputPreparationValidator,\n\n CreateConnectionPreparationExecution,\n\n ReassignConnectionFinalizeExecution,\n\n ReassignConnectionPreparationExecution,\n];\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedParentNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedParentNodeRectRequest } from './get-normalized-parent-node-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { GetNodePaddingRequest } from '../../../domain';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedParentNodeRectRequest)\nexport class GetNormalizedParentNodeRectExecution\n implements IExecution<GetNormalizedParentNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedParentNodeRectRequest): IRect {\n let result = RectExtensions.initialize(-Infinity, -Infinity, Infinity, Infinity);\n const parentNode = this.getNode(request.fNode.fParentId);\n if (parentNode) {\n result = this.getParentRect(parentNode);\n }\n return result;\n }\n\n private getNode(fId?: string | null): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === fId);\n }\n\n private getParentRect(node: FNodeBase): IRect {\n const rect = this._getNodeRect(node);\n const padding = this.getNodePadding(node, rect);\n return RectExtensions.initialize(\n rect.x + padding[ 0 ],\n rect.y + padding[ 1 ],\n rect.width - padding[ 0 ] - padding[ 2 ],\n rect.height - padding[ 1 ] - padding[ 3 ]\n );\n }\n\n private _getNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement, false));\n }\n\n private getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsArrayHasParentNodeRequest {\n\n constructor(\n public fParentNodes: FNodeBase[],\n public fDraggedNodes: FNodeBase[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IsArrayHasParentNodeRequest } from './is-array-has-parent-node.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(IsArrayHasParentNodeRequest)\nexport class IsArrayHasParentNodeExecution\n implements IExecution<IsArrayHasParentNodeRequest, boolean> {\n\n public handle(request: IsArrayHasParentNodeRequest): boolean {\n return this._isParentNodeInArray(this._getParentNodeIds(request.fParentNodes), request.fDraggedNodes);\n }\n\n private _getParentNodeIds(fParentNodes: FNodeBase[]): string[] {\n return fParentNodes.map((x) => x.fId);\n }\n\n private _isParentNodeInArray(parentNodeIds: string[], fDraggedNodes: FNodeBase[]): boolean {\n return fDraggedNodes.some((x) => parentNodeIds.includes(x.fId));\n }\n}\n\n\n","export class FNodeIntersectedWithConnections {\n\n constructor(\n public fNodeId: string,\n public fConnectionIds: string[],\n ) {\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsConnectionUnderNodeRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { GetIntersections, IRoundedRect } from '@foblex/2d';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IsConnectionUnderNodeRequest } from './is-connection-under-node.request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeIntersectedWithConnections } from '../../index';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FConnectionBase } from '../../../f-connection';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(IsConnectionUnderNodeRequest)\nexport class IsConnectionUnderNodeExecution implements IExecution<IsConnectionUnderNodeRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: IsConnectionUnderNodeRequest): void {\n\n const fOutputConnectors = this._getOutputConnectors(request.fNode);\n const fInputConnectors = this._getInputConnectors(request.fNode);\n\n if (!fOutputConnectors.length || !fInputConnectors.length) {\n return;\n }\n\n const fOutputConnections = this._getOutputConnectionsId(fOutputConnectors);\n const fInputConnections = this._getInputConnectionsId(fInputConnectors);\n\n const fConnectionsUnderNode = this._calculateConnectionsUnderNode(request.fNode).filter((x) => {\n return !fOutputConnections.includes(x.fId) && !fInputConnections.includes(x.fId);\n });\n\n if (!fConnectionsUnderNode.length) {\n return;\n }\n\n this._emitNodeIntersectedWithConnections(request.fNode, fConnectionsUnderNode);\n }\n\n private _getOutputConnectors(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutputs.filter((x) => {\n return fNode.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private _getInputConnectors(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fInputs.filter((x) => {\n return fNode.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private _getOutputConnectionsId(connectors: FConnectorBase[]): string[] {\n const connectorsId = this._getConnectorsId(connectors);\n return this._fComponentsStore.fConnections\n .filter((x) => connectorsId.includes(x.fOutputId))\n .map((x) => x.fId);\n }\n\n private _getInputConnectionsId(connectors: FConnectorBase[]): string[] {\n const connectorsId = this._getConnectorsId(connectors);\n return this._fComponentsStore.fConnections\n .filter((x) => connectorsId.includes(x.fInputId))\n .map((x) => x.fId);\n }\n\n private _getConnectorsId(connectors: FConnectorBase[]): string[] {\n return connectors.map((x) => x.fId);\n }\n\n private _calculateConnectionsUnderNode(fNode: FNodeBase): FConnectionBase[] {\n const fNodeRect = this._fMediator.send<IRoundedRect>(new GetNormalizedElementRectRequest(fNode.hostElement, true));\n return this._fComponentsStore.fConnections.filter((x) => this._isConnectionHasIntersectionsWithNode(x, fNodeRect));\n }\n\n private _isConnectionHasIntersectionsWithNode(fConnection: FConnectionBase, fNodeRect: IRoundedRect): boolean {\n return GetIntersections.getRoundedRectIntersectionsWithSVGPath(fConnection.fPath.hostElement, fNodeRect).length > 0;\n }\n\n private _emitNodeIntersectedWithConnections(fNode: FNodeBase, fConnections: FConnectionBase[]): void {\n this._fComponentsStore.fDraggable?.fNodeIntersectedWithConnections.emit(\n new FNodeIntersectedWithConnections(\n fNode.fId,\n fConnections.map((x) => x.fId)\n )\n );\n }\n}\n","import { IsArrayHasParentNodeExecution } from './is-array-has-parent-node';\nimport { GetNormalizedParentNodeRectExecution } from './get-normalized-parent-node-rect';\nimport { IsConnectionUnderNodeExecution } from './is-connection-under-node';\n\nexport const DRAG_AND_DROP_COMMON_PROVIDERS = [\n\n GetNormalizedParentNodeRectExecution,\n\n IsArrayHasParentNodeExecution,\n\n IsConnectionUnderNodeExecution,\n];\n","export class IsDragStartedRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IsDragStartedRequest } from './is-drag-started-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(IsDragStartedRequest)\nexport class IsDragStartedExecution implements IExecution<IsDragStartedRequest, boolean> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: IsDragStartedRequest): boolean {\n return !!this._fComponentsStore.fDraggable?.isDragStarted;\n }\n}\n","import { INodeWithDistanceRestrictions } from '../../i-node-with-distance-restrictions';\n\nexport class CalculateCommonNodeMoveRestrictionsRequest {\n\n constructor(\n public restrictions: INodeWithDistanceRestrictions[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CalculateCommonNodeMoveRestrictionsRequest } from './calculate-common-node-move-restrictions.request';\nimport { IMinMaxPoint, IPoint } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { INodeWithDistanceRestrictions } from '../../i-node-with-distance-restrictions';\n\n@Injectable()\n@FExecutionRegister(CalculateCommonNodeMoveRestrictionsRequest)\nexport class CalculateCommonNodeMoveRestrictionsExecution\n implements IExecution<CalculateCommonNodeMoveRestrictionsRequest, IMinMaxPoint> {\n\n public handle(request: CalculateCommonNodeMoveRestrictionsRequest): IMinMaxPoint {\n return this._calculateCommonRestrictions(request.restrictions);\n }\n\n private _calculateCommonRestrictions(restrictions: INodeWithDistanceRestrictions[]): IMinMaxPoint {\n return restrictions.reduce((result: IMinMaxPoint, x) =>\n this._clampRestrictions(result, x), restrictions[0]\n );\n }\n\n private _clampRestrictions(common: IMinMaxPoint, x: INodeWithDistanceRestrictions): IMinMaxPoint {\n common.min = this._clampMinRestrictions(common.min, x.min);\n common.max = this._clampMaxRestrictions(common.max, x.max);\n return common;\n }\n\n private _clampMinRestrictions(common: IPoint, node: IPoint): IPoint {\n return {\n x: Math.max(common.x, node.x),\n y: Math.max(common.y, node.y),\n }\n }\n\n private _clampMaxRestrictions(common: IPoint, node: IPoint): IPoint {\n return {\n x: Math.min(common.x, node.x),\n y: Math.min(common.y, node.y),\n }\n }\n}\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutInputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public outputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { IDraggableItem } from '../i-draggable-item';\nimport { FConnectionBase } from '../../f-connection';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { Directive } from '@angular/core';\nimport { ILine, IMinMaxPoint, IPoint } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetConnectorWithRectRequest, IConnectorWithRect } from '../../domain';\n\n@Directive()\nexport abstract class ConnectionBaseDragHandler implements IDraggableItem {\n\n protected fOutputWithRect!: IConnectorWithRect;\n protected fInputWithRect!: IConnectorWithRect;\n\n protected constructor(\n protected fMediator: FMediator,\n protected fComponentsStore: FComponentsStore,\n public connection: FConnectionBase,\n ) {\n }\n\n public prepareDragSequence(): void {\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getOutput()));\n this.fInputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getInput()));\n }\n\n private getOutput(): FConnectorBase {\n const result = this.fComponentsStore.fOutputs.find((x) => x.fId === this.connection.fOutputId)!;\n if (!result) {\n throw new Error(this.connectorNotFoundPrefix(`fOutput with id ${ this.connection.fOutputId } not found`));\n }\n return result;\n }\n\n private getInput(): FConnectorBase {\n const result = this.fComponentsStore.fInputs.find((x) => x.fId === this.connection.fInputId)!;\n if (!result) {\n throw new Error(this.connectorNotFoundPrefix(`fInput with id ${ this.connection.fInputId } not found`));\n }\n return result;\n }\n\n private connectorNotFoundPrefix(message: string): string {\n return `ConnectionDragHandler Error: Connection From (fOutput)${ this.connection.fOutputId } To (fInput)${ this.connection.fInputId }. ${ message }. Please ensure that all f-connections are associated with existing connectors`;\n }\n\n public abstract onPointerMove(difference: IPoint): void;\n\n protected getRestrictedDifference(difference: IPoint, restrictions: IMinMaxPoint): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n protected redrawConnection(line: ILine): void {\n this.connection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, this.fInputWithRect.fConnector.fConnectableSide);\n this.connection.redraw();\n }\n}\n","import { ILine, IMinMaxPoint, IPoint, RoundedRect } from '@foblex/2d';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport {\n CalculateConnectionLineByBehaviorRequest,\n} from '../../domain';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionDragHandler extends ConnectionBaseDragHandler {\n\n private sourceRestrictions!: IMinMaxPoint;\n private targetRestrictions!: IMinMaxPoint;\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public setOutputRestrictions(restrictions: IMinMaxPoint) {\n this.sourceRestrictions = restrictions;\n }\n\n public setInputRestrictions(restrictions: IMinMaxPoint) {\n this.targetRestrictions = restrictions;\n }\n\n public override onPointerMove(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, this.sourceRestrictions)),\n RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, this.targetRestrictions)),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { ILine, IMinMaxPoint, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n CalculateConnectionLineByBehaviorRequest,\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n public restrictions: IMinMaxPoint,\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override onPointerMove(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this.fOutputWithRect.fRect,\n RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, this.restrictions)),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { PutInputConnectionHandlersToArrayRequest } from './put-input-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { ConnectionTargetDragHandler } from '../../../connection-target.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutInputConnectionHandlersToArrayRequest)\nexport class PutInputConnectionHandlersToArrayExecution\n implements IExecution<PutInputConnectionHandlersToArrayRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: PutInputConnectionHandlersToArrayRequest): void {\n this.getInputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.outputIds, connection));\n }\n });\n }\n\n public getInputConnections(node: FNodeBase): FConnectionBase[] {\n const inputIds = new Set(this.getInputsForNode(node).map((x) => x.fId));\n return this._fConnections.filter((x) => inputIds.has(x.fInputId));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, outputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem | undefined;\n if (outputIds.includes(connection.fOutputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this._fMediator, this._fComponentsStore, connection);\n handler.setInputRestrictions(nodeDragHandler.restrictions);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setInputRestrictions(nodeDragHandler.restrictions);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionTargetDragHandler {\n return new ConnectionTargetDragHandler(this._fMediator, this._fComponentsStore, connection, nodeDragHandler.restrictions);\n }\n}\n\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutOutputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public inputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { ILine, IMinMaxPoint, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n CalculateConnectionLineByBehaviorRequest\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n public restrictions: IMinMaxPoint,\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override onPointerMove(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getRestrictedDifference({ ...difference }, this.restrictions)),\n this.fInputWithRect.fRect,\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutOutputConnectionHandlersToArrayRequest } from './put-output-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { ConnectionSourceDragHandler } from '../../../connection-source.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(PutOutputConnectionHandlersToArrayRequest)\nexport class PutOutputConnectionHandlersToArrayExecution\n implements IExecution<PutOutputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: PutOutputConnectionHandlersToArrayRequest): void {\n this.getOutputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.inputIds, connection));\n }\n });\n }\n\n public getOutputConnections(node: FNodeBase): FConnectionBase[] {\n const outputsIds = new Set(this.getOutputsForNode(node).map((x) => x.fId));\n return this.fConnections.filter((x) => outputsIds.has(x.fOutputId));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, inputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (inputIds.includes(connection.fInputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);\n handler.setOutputRestrictions(nodeDragHandler.restrictions);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setOutputRestrictions(nodeDragHandler.restrictions);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionSourceDragHandler {\n return new ConnectionSourceDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.restrictions);\n }\n}\n\n","import { FNodeBase } from '../../../../../f-node';\n\nexport class CalculateNodeMoveRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public hasParentNodeInSelected: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CalculateNodeMoveRestrictionsRequest } from './calculate-node-move-restrictions.request';\nimport { IMinMaxPoint, IRect, PointExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedParentNodeRectRequest } from '../../../../domain';\nimport { FNodeBase } from '../../../../../f-node';\nimport { GetNormalizedElementRectRequest } from '../../../../../domain';\n\n@Injectable()\n@FExecutionRegister(CalculateNodeMoveRestrictionsRequest)\nexport class CalculateNodeMoveRestrictionsExecution\n implements IExecution<CalculateNodeMoveRestrictionsRequest, IMinMaxPoint> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: CalculateNodeMoveRestrictionsRequest): IMinMaxPoint {\n if(!request.fNode.fParentId || request.hasParentNodeInSelected) {\n return { ...DEFAULT_RESTRICTIONS };\n }\n\n const fParentNodeRect = this._getParentNodeRect(request.fNode);\n const fCurrentNodeRect = this._getNodeRect(request.fNode);\n\n return {\n min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),\n max: PointExtensions.initialize(\n (fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width),\n (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height),\n )\n };\n }\n\n private _getNodeRect(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement, false));\n }\n\n private _getParentNodeRect(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n}\n\nconst DEFAULT_RESTRICTIONS: IMinMaxPoint = {\n min: PointExtensions.initialize(-Infinity, -Infinity),\n max: PointExtensions.initialize(Infinity, Infinity)\n};\n","import { FNodeBase } from '../../../f-node';\n\nexport class CreateMoveNodesDragModelFromSelectionRequest {\n\n constructor(\n public nodeWithDisabledSelection?: FNodeBase\n ) {\n }\n}\n","import { IMinMaxPoint, IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class NodeDragHandler implements IDraggableItem {\n\n private readonly _onPointerDownPosition = PointExtensions.initialize();\n\n constructor(\n private _fComponentsStore: FComponentsStore,\n public fNode: FNodeBase,\n public restrictions: IMinMaxPoint,\n ) {\n this._onPointerDownPosition = { ...fNode.position };\n }\n\n public onPointerMove(difference: IPoint): void {\n const restrictedDifference = this._getDifference(difference);\n\n this._redraw(this._getPosition(restrictedDifference));\n }\n\n private _getPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this._onPointerDownPosition).add(difference);\n }\n\n private _getDifference(difference: IPoint): IPoint {\n return {\n x: Math.min(Math.max(difference.x, this.restrictions.min.x), this.restrictions.max.x),\n y: Math.min(Math.max(difference.y, this.restrictions.min.y), this.restrictions.max.y)\n }\n }\n\n private _redraw(position: IPoint): void {\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n }\n\n public onPointerUp(): void {\n this.fNode.positionChange.emit(this.fNode.position);\n }\n\n public getDifferenceWithCellSize(difference: IPoint): IPoint {\n const position = this._getPosition(this._getDifference(difference));\n\n return Point.fromPoint(this._applyCellSize(position)).sub(this._onPointerDownPosition);\n }\n\n private _applyCellSize(position: IPoint): IPoint {\n const hCellSize = this._fComponentsStore.fDraggable!.hCellSize;\n const vCellSize = this._fComponentsStore.fDraggable!.vCellSize;\n return {\n x: Math.round(position.x / hCellSize) * hCellSize,\n y: Math.round(position.y / vCellSize) * vCellSize\n };\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n//TODO: Implement this class\nexport class NodeResizeByChildDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n\n }\n\n public prepareDragSequence() {\n }\n\n\n public onPointerMove(difference: IPoint): void {\n\n }\n\n public onPointerUp(): void {\n\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from './create-move-nodes-drag-model-from-selection.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { INodeWithDistanceRestrictions } from './i-node-with-distance-restrictions';\nimport { CalculateNodeMoveRestrictionsRequest } from './domain/calculate-node-move-restrictions';\nimport { PutOutputConnectionHandlersToArrayRequest } from './domain/put-output-connection-handlers-to-array';\nimport {\n PutInputConnectionHandlersToArrayRequest\n} from './domain/put-input-connection-handlers-to-array';\nimport { NodeResizeByChildDragHandler } from '../node-resize-by-child.drag-handler';\nimport { IsArrayHasParentNodeRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest, GetParentNodesRequest } from '../../../domain';\nimport { flatMap } from '@foblex/utils';\nimport { CalculateCommonNodeMoveRestrictionsRequest } from './domain/calculate-common-node-move-restrictions';\nimport { IMinMaxPoint } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)\nexport class CreateMoveNodesDragModelFromSelectionExecution\n implements IExecution<CreateMoveNodesDragModelFromSelectionRequest, IDraggableItem[]> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: CreateMoveNodesDragModelFromSelectionRequest): IDraggableItem[] {\n const fItemsToDrag = this._getNodesWithRestrictions(\n this._getDraggedNodes(request.nodeWithDisabledSelection)\n );\n return this.getDragHandlersWithConnections(\n this.getDragHandlersFromNodes(fItemsToDrag),\n this.getAllOutputIds(fItemsToDrag),\n this.getAllInputIds(fItemsToDrag)\n );\n }\n\n private _getDraggedNodes(nodeWithDisabledSelection?: FNodeBase): FNodeBase[] {\n const result = this._getNodesFromSelection();\n if (nodeWithDisabledSelection) {\n result.push(nodeWithDisabledSelection);\n }\n return result;\n }\n\n private _getNodesFromSelection(): FNodeBase[] {\n return this._fDraggableDataContext.selectedItems\n .map((x) => this._findNode(x.hostElement))\n .filter((x): x is FNodeBase => !!x);\n }\n\n private _findNode(hostElement: HTMLElement | SVGElement): FNodeBase | undefined {\n return this._fComponentsStore.fNodes\n .find(n => n.isContains(hostElement));\n }\n\n private _getNodesWithRestrictions(fDraggedNodes: FNodeBase[]): INodeWithDistanceRestrictions[] {\n const result: INodeWithDistanceRestrictions[] = [];\n\n fDraggedNodes.forEach((x) => {\n const fParentNodes = this._fMediator.execute<FNodeBase[]>(new GetParentNodesRequest(x));\n const restrictions = this._getNodeMoveRestrictions(x, fParentNodes, fDraggedNodes);\n result.push({ fDraggedNode: x, fParentNodes, ...restrictions }, ...this._getChildrenItemsToDrag(x, restrictions));\n });\n\n this._applyCommonRestrictions(result);\n return result;\n }\n\n private _getNodeMoveRestrictions(fNode: FNodeBase, fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): IMinMaxPoint {\n return this._fMediator.execute<IMinMaxPoint>(\n new CalculateNodeMoveRestrictionsRequest(fNode, this._isParentNodeInArray(fParentNodes, fDraggedNodes))\n );\n }\n\n private _isParentNodeInArray(fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): boolean {\n return this._fMediator.execute<boolean>(new IsArrayHasParentNodeRequest(fParentNodes, fDraggedNodes))\n }\n\n private _getChildrenItemsToDrag(node: FNodeBase, restrictions: IMinMaxPoint): INodeWithDistanceRestrictions[] {\n return this._getChildrenNodes(node.fId).map((x) => ({ fDraggedNode: x, ...restrictions }));\n }\n\n private _getChildrenNodes(fId: string): FNodeBase[] {\n return this._fMediator.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private _applyCommonRestrictions(restrictions: INodeWithDistanceRestrictions[]): void {\n const commonRestrictions = this._fMediator.execute<IMinMaxPoint>(\n new CalculateCommonNodeMoveRestrictionsRequest(restrictions)\n );\n restrictions.forEach((x) => {\n x.min = commonRestrictions.min;\n x.max = commonRestrictions.max;\n });\n }\n\n private getAllOutputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getOutputsForNode(item.fDraggedNode).map((x) => x.fId));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getAllInputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getInputsForNode(item.fDraggedNode).map((x) => x.fId));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getDragHandlersFromNodes(items: INodeWithDistanceRestrictions[]): IDraggableItem[] {\n let result: IDraggableItem[] = [];\n\n items.forEach((node) => {\n result.push(\n new NodeDragHandler(this._fComponentsStore, node.fDraggedNode, { min: node.min, max: node.max }),\n ...(node.fParentNodes || []).map(() => new NodeResizeByChildDragHandler(this._fDraggableDataContext))\n );\n });\n return result;\n }\n\n private getDragHandlersWithConnections(\n handlers: IDraggableItem[], outputIds: string[], inputIds: string[]\n ): IDraggableItem[] {\n let result: IDraggableItem[] = handlers;\n handlers.filter((x) => x instanceof NodeDragHandler).forEach((x) => {\n this._fMediator.execute(new PutOutputConnectionHandlersToArrayRequest(x, inputIds, result));\n this._fMediator.execute(new PutInputConnectionHandlersToArrayRequest(x, outputIds, result));\n });\n return result;\n }\n}\n","import { CreateMoveNodesDragModelFromSelectionExecution } from './create-move-nodes-drag-model-from-selection.execution';\nimport { CalculateNodeMoveRestrictionsExecution } from './domain/calculate-node-move-restrictions';\nimport { PutInputConnectionHandlersToArrayExecution } from './domain/put-input-connection-handlers-to-array';\nimport { PutOutputConnectionHandlersToArrayExecution } from './domain/put-output-connection-handlers-to-array';\nimport { CalculateCommonNodeMoveRestrictionsExecution } from './domain/calculate-common-node-move-restrictions';\n\nexport const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [\n\n CalculateCommonNodeMoveRestrictionsExecution,\n\n CalculateNodeMoveRestrictionsExecution,\n\n PutInputConnectionHandlersToArrayExecution,\n\n PutOutputConnectionHandlersToArrayExecution,\n\n CreateMoveNodesDragModelFromSelectionExecution,\n];\n","export class LineAlignmentPreparationRequest {\n\n}\n","import { findClosestAlignment, IMinMaxPoint, IPoint, IRect, ISize, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../index';\nimport { FComponentsStore } from '../../f-storage';\nimport { ILineAlignmentResult, LineService } from '../../f-line-alignment';\n\nexport class LineAlignmentDragHandler implements IDraggableItem {\n\n private _debounceTimer: any = null;\n\n private readonly _transform: ITransformModel;\n\n constructor(\n private _fComponentsStore: FComponentsStore,\n private _lineService: LineService,\n private _size: ISize,\n private _draggedNodeRect: IRect,\n private _rects: IRect[],\n private _restrictions: IMinMaxPoint,\n ) {\n this._transform = this._fComponentsStore.fCanvas?.transform!;\n }\n\n public onPointerMove(difference: IPoint): void {\n const restrictedDifference = this._getDifference(difference);\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n\n this._debounceTimer = setTimeout(() => this._drawIntersectingLines(restrictedDifference), 15);\n }\n\n private _drawIntersectingLines(difference: IPoint): void {\n const intersect = this.findNearestCoordinate(difference);\n if (intersect.xResult.value !== undefined) {\n this._lineService.drawVerticalLine(intersect.xResult.value, this._size, this._transform);\n } else {\n this._lineService.hideVerticalLine();\n }\n if (intersect.yResult.value !== undefined) {\n this._lineService.drawHorizontalLine(intersect.yResult.value, this._size, this._transform);\n } else {\n this._lineService.hideHorizontalLine();\n }\n }\n\n private _getDifference(difference: IPoint): IPoint {\n return {\n x: Math.min(Math.max(difference.x, this._restrictions.min.x), this._restrictions.max.x),\n y: Math.min(Math.max(difference.y, this._restrictions.min.y), this._restrictions.max.y)\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n const rect = RectExtensions.addPoint(this._draggedNodeRect, difference);\n return findClosestAlignment(this._rects, rect, this._fComponentsStore.fLineAlignment!.fAlignThreshold);\n }\n\n public onPointerUp(): void {\n this._lineService.hideVerticalLine();\n this._lineService.hideHorizontalLine();\n\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n this._debounceTimer = null;\n }\n }\n}\n","import { ILineAlignmentRect } from './i-line-alignment-rect';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineElement {\n\n private readonly element: HTMLElement;\n\n constructor(\n fBrowser: BrowserService,\n private readonly hostElement: HTMLElement,\n ) {\n this.element = fBrowser.document.createElement('div');\n this.hostElement.appendChild(this.element);\n this.element.classList.add('f-line');\n }\n\n public hide(): void {\n this.element.style.display = 'none';\n }\n\n public show(): void {\n this.element.style.display = 'block'\n }\n\n public draw(object: Partial<ILineAlignmentRect>): void {\n this.element.style.position = 'absolute';\n Object.keys(object).forEach((key: string) => {\n // @ts-ignore\n this.element.style[ key ] = object[ key ] + 'px';\n });\n }\n}\n\n","import { ISize, ITransformModel } from '@foblex/2d';\nimport { LineElement } from './line-element';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineService {\n\n private fHorizontalLine: LineElement;\n private fVerticalLine: LineElement;\n\n constructor(fBrowser: BrowserService, private hostElement: HTMLElement) {\n this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);\n this.fVerticalLine = new LineElement(fBrowser, this.hostElement);\n this.fHorizontalLine.hide();\n this.fVerticalLine.hide();\n }\n\n public drawVerticalLine(x: number, size: ISize, transform: ITransformModel): void {\n this.fVerticalLine.show();\n this.fVerticalLine.draw({\n left: x * transform.scale + transform.position.x + transform.scaledPosition.x,\n top: 0,\n width: 1,\n height: size.height\n });\n }\n\n public drawHorizontalLine(y: number, size: ISize, transform: ITransformModel): void {\n this.fHorizontalLine.show();\n this.fHorizontalLine.draw({\n left: 0,\n top: y * transform.scale + transform.position.y + transform.scaledPosition.y,\n width: size.width,\n height: 1\n });\n }\n\n public hideVerticalLine(): void {\n this.fVerticalLine.hide();\n }\n\n public hideHorizontalLine(): void {\n this.fHorizontalLine.hide();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_LINE_ALIGNMENT = new InjectionToken<FLineAlignmentBase>('F_LINE_ALIGNMENT');\n\n@Directive()\nexport abstract class FLineAlignmentBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract fAlignThreshold: number;\n}\n","import { Component, ElementRef, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport {\n RemoveLineAlignmentFromStoreRequest,\n AddLineAlignmentToStoreRequest,\n} from '../domain';\nimport { FMediator } from '@foblex/mediator';\n\n@Component({\n selector: \"f-line-alignment\",\n template: \"\",\n styleUrls: [ \"./f-line-alignment.component.scss\" ],\n exportAs: \"fComponent\",\n host: {\n 'class': 'f-line-alignment f-component'\n },\n providers: [\n { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }\n ],\n})\nexport class FLineAlignmentComponent\n extends FLineAlignmentBase implements OnInit, OnDestroy {\n\n @Input()\n public override fAlignThreshold: number = 10;\n\n private _fMediator = inject(FMediator);\n private _elementReference = inject(ElementRef);\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddLineAlignmentToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveLineAlignmentFromStoreRequest());\n }\n}\n","import { FLineAlignmentComponent } from './f-line-alignment.component';\n\nexport const F_LINE_ALIGNMENT_PROVIDERS = [\n FLineAlignmentComponent\n];\n","import { inject, Injectable } from '@angular/core';\nimport { LineAlignmentPreparationRequest } from './line-alignment-preparation.request';\nimport { IMinMaxPoint, IRect, ISize, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetFlowHostElementRequest } from '../../../domain';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext, NodeDragHandler } from '../../index';\nimport { LineAlignmentDragHandler } from '../line-alignment.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { LineService } from '../../../f-line-alignment';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(LineAlignmentPreparationRequest)\nexport class LineAlignmentPreparationExecution implements IExecution<LineAlignmentPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private _fBrowser = inject(BrowserService);\n\n private _lineService: LineService | undefined;\n\n public handle(request: LineAlignmentPreparationRequest): void {\n this._addLineAlignmentDragHandler(this._getDraggedNodes());\n }\n\n private _getDraggedNodes(): FNodeBase[] {\n return this._fDraggableDataContext.draggableItems\n .filter((x) => x instanceof NodeDragHandler)\n .map((x) => x.fNode);\n }\n\n private _addLineAlignmentDragHandler(fNodes: FNodeBase[]): void {\n this._fDraggableDataContext.draggableItems.push(\n new LineAlignmentDragHandler(\n this._fComponentsStore,\n this._lineService || this._createLineService(),\n this._getFlowHostSize(),\n this._getDraggedNodesBoundingRect(fNodes),\n this._getStaticNodeRects(fNodes),\n this._getCommonRestrictions()\n )\n );\n }\n\n private _getFlowHostSize(): ISize {\n return this._fMediator.send<HTMLElement>(new GetFlowHostElementRequest())\n .getBoundingClientRect();\n }\n\n private _createLineService(): LineService {\n this._lineService = new LineService(\n this._fBrowser,\n this._fComponentsStore.fLineAlignment!.hostElement\n );\n return this._lineService;\n }\n\n private _getDraggedNodesBoundingRect(fNodes: FNodeBase[]): IRect {\n return RectExtensions.union(fNodes.map((x) => {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement, false));\n })) || RectExtensions.initialize();\n }\n\n private _getStaticNodeRects(fNodes: FNodeBase[]): IRect[] {\n return this._getStaticNodes(fNodes).map((x) => {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement, false));\n })\n }\n\n private _getStaticNodes(fNodes: FNodeBase[]): FNodeBase[] {\n return this._fComponentsStore.fNodes\n .filter((x) => !fNodes.includes(x));\n }\n\n private _getCommonRestrictions(): IMinMaxPoint {\n return this._fDraggableDataContext.draggableItems\n .filter((x) => x instanceof NodeDragHandler)[0].restrictions;\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeDragToParentFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Directive } from '@angular/core';\nimport { IPoint, ITransformModel, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FComponentsStore } from '../../f-storage';\nimport { INodeWithRect } from '../domain';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Directive()\nexport class NodeDragToParentDragHandler implements IDraggableItem {\n\n private DEBOUNCE_TIME = 15;\n\n private get _transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private _onPointerDownPosition: IPoint = PointExtensions.initialize();\n private _debounceTimer: any = null;\n\n public fNodeWithRect: INodeWithRect | null = null;\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private notDraggedNodesRects: INodeWithRect[],\n ) {\n this._onPointerDownPosition = this.fDraggableDataContext.onPointerDownPosition;\n }\n\n private _toggleParentNode(difference: IPoint): void {\n const isInclude = this._isNodeInsideAnotherNode(this._getNewPosition(difference));\n if (isInclude) {\n this._markIncludeNode(isInclude);\n } else {\n this._unmarkIncludeNode();\n }\n }\n\n private _getNewPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this._onPointerDownPosition).add(difference).mult(this._transform.scale);\n }\n\n private _isNodeInsideAnotherNode(point: IPoint): INodeWithRect | undefined {\n return this.notDraggedNodesRects.find((x) => RectExtensions.isIncludePoint(x.rect, point));\n }\n\n public onPointerMove(difference: IPoint): void {\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n\n this._debounceTimer = setTimeout(() => this._toggleParentNode(difference), this.DEBOUNCE_TIME);\n }\n\n private _markIncludeNode(nodeWithRect: INodeWithRect): void {\n this._unmarkIncludeNode();\n this.fNodeWithRect = nodeWithRect;\n nodeWithRect.node.setClass('f-parent-for-drop');\n }\n\n private _unmarkIncludeNode(): void {\n this.fNodeWithRect?.node.removeClass('f-parent-for-drop');\n this.fNodeWithRect = null;\n }\n\n public onPointerUp(): void {\n this._unmarkIncludeNode();\n\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n this._debounceTimer = null;\n }\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FDropToGroupEvent {\n\n constructor(\n public fTargetNode: string,\n public fNodes: string[],\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeDragToParentFinalizeRequest } from './node-drag-to-parent-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragToParentDragHandler } from '../node-drag-to-parent.drag-handler';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FDropToGroupEvent } from '../f-drop-to-group.event';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\n\n@Injectable()\n@FExecutionRegister(NodeDragToParentFinalizeRequest)\nexport class NodeDragToParentFinalizeExecution\n implements IExecution<NodeDragToParentFinalizeRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: NodeDragToParentFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n const item = this.getDragHandleItem();\n if(item.fNodeWithRect) {\n this.emitDroppedChildrenEvent(item.fNodeWithRect.node.fId, request.event);\n }\n item.onPointerUp?.();\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems\n .some((x) => x instanceof NodeDragToParentDragHandler);\n }\n\n private emitDroppedChildrenEvent(fTargetId: string, event: IPointerEvent): void {\n this.fComponentsStore.fDraggable?.fDropToGroup.emit(\n new FDropToGroupEvent(fTargetId, this.getDraggedNodeIds(), event.getPosition())\n );\n }\n\n private getDragHandleItem(): NodeDragToParentDragHandler {\n const result = this.findDragHandleItem();\n if(!result) {\n throw new Error('NodeDragToParentDragHandler not found');\n }\n return result;\n }\n\n private findDragHandleItem(): NodeDragToParentDragHandler | undefined {\n return this.fDraggableDataContext.draggableItems\n .find((x) => x instanceof NodeDragToParentDragHandler);\n }\n\n private getDraggedNodeIds(): string[] {\n return this.fDraggableDataContext.draggableItems\n .filter((x) => x instanceof NodeDragHandler)\n .map((x) => x.fNode.fId);\n }\n}\n","import { NodeDragToParentFinalizeExecution } from './node-drag-to-parent-finalize.execution';\n\nexport const NODE_DRAG_TO_PARENT_FINALIZE_PROVIDERS = [\n\n NodeDragToParentFinalizeExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeDragToParentPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeDragToParentPreparationRequest } from './node-drag-to-parent-preparation.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { INodeWithRect } from '../../domain';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { GetNormalizedElementRectRequest, GetParentNodesRequest } from '../../../domain';\nimport { FNodeBase } from '../../../f-node';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragToParentDragHandler } from '../node-drag-to-parent.drag-handler';\nimport { NodeDragHandler } from '../node.drag-handler';\n\n@Injectable()\n@FExecutionRegister(NodeDragToParentPreparationRequest)\nexport class NodeDragToParentPreparationExecution\n implements IExecution<NodeDragToParentPreparationRequest, void> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get fCanvasPosition(): IPoint {\n return PointExtensions.sum(this.transform.position, this.transform.scaledPosition)\n }\n\n constructor(\n private fMediator: FMediator,\n private fDraggableDataContext: FDraggableDataContext,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: NodeDragToParentPreparationRequest): void {\n const fNode = this.fComponentsStore\n .fNodes.find(n => n.isContains(request.event.targetElement));\n if (!fNode) {\n throw new Error('Node not found');\n }\n\n this.fDraggableDataContext.draggableItems.push(\n new NodeDragToParentDragHandler(\n this.fComponentsStore,\n this.fDraggableDataContext, this._getNotDraggedNodesRects()\n )\n );\n }\n\n private _getNotDraggedNodesRects(): INodeWithRect[] {\n const draggedNodes = this._addParentNodes(this._getNodesBeingDragged());\n return this._getNotDraggedNodes(draggedNodes).map((x) => {\n const rect = this.fMediator.send<IRect>(new GetNormalizedElementRectRequest(x.hostElement, false));\n return {\n node: x,\n rect: RectExtensions.initialize(\n rect.x + this.fCanvasPosition.x,\n rect.y + this.fCanvasPosition.y,\n rect.width * this.transform.scale,\n rect.height * this.transform.scale\n )\n }\n });\n }\n\n private _getNodesBeingDragged(): FNodeBase[] {\n return this.fDraggableDataContext.draggableItems\n .filter((x) => x instanceof NodeDragHandler)\n .map((x) => x.fNode);\n }\n\n private _addParentNodes(fNodes: FNodeBase[]): FNodeBase[] {\n return fNodes.reduce((result: FNodeBase[], x: FNodeBase) => {\n result.push(x, ...this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(x)));\n return result;\n }, []);\n }\n\n private _getNotDraggedNodes(draggedNodes: FNodeBase[]): FNodeBase[] {\n return this.fNodes.filter((x) => !draggedNodes.includes(x));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeDragToParentPreparationRequest } from './node-drag-to-parent-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragHandler } from '../node.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeDragToParentPreparationRequest)\nexport class NodeDragToParentPreparationValidator\n implements IValidator<NodeDragToParentPreparationRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeDragToParentPreparationRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) => x instanceof NodeDragHandler);\n }\n}\n","import { NodeDragToParentPreparationExecution } from './node-drag-to-parent-preparation.execution';\nimport { NodeDragToParentPreparationValidator } from './node-drag-to-parent-preparation.validator';\n\nexport const NODE_DRAG_TO_PARENT_PREPARATION_PROVIDERS = [\n\n NodeDragToParentPreparationExecution,\n\n NodeDragToParentPreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\nimport { SelectAndUpdateNodeLayerRequest } from '../../../domain';\nimport { isClosestElementHasClass } from '@foblex/utils';\nimport { LineAlignmentPreparationRequest } from '../line-alignment-preparation';\n\n@Injectable()\n@FExecutionRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationExecution implements IExecution<NodeMovePreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: NodeMovePreparationRequest): void {\n if(!this._isValid(request)) {\n return;\n }\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.draggableItems = this._calculateDraggedItems(this._fNode!);\n\n if(this._fComponentsStore.fLineAlignment) {\n this._fMediator.execute<void>(new LineAlignmentPreparationRequest());\n }\n }\n\n private _isValid(request: NodeMovePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && this._isDragHandleElement(request.event.targetElement)\n && !!this._getNode(request.event.targetElement);\n }\n\n private _isDragHandleElement(element: HTMLElement): boolean {\n return isClosestElementHasClass(element, '.f-drag-handle');\n }\n\n private _getNode(element: HTMLElement): FNodeBase | undefined {\n this._fNode = this._fComponentsStore.fNodes\n .find(x => x.isContains(element) && !x.fDraggingDisabled);\n return this._fNode;\n }\n\n //We drag nodes from selection model\n private _calculateDraggedItems(fNode: FNodeBase): IDraggableItem[] {\n let result: IDraggableItem[] = [];\n if (!fNode.fSelectionDisabled) {\n // Need to select node before drag\n this._fMediator.execute(new SelectAndUpdateNodeLayerRequest(fNode));\n\n result = this._dragModelFromSelection();\n } else {\n // User can drag node that can't be selected\n result = this._dragModelFromSelection(fNode);\n }\n return result;\n }\n\n private _dragModelFromSelection(nodeWithDisabledSelection?: FNodeBase): IDraggableItem[] {\n return this._fMediator.execute(\n new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection)\n );\n }\n}\n","import { NodeMovePreparationExecution } from './node-move-preparation.execution';\n\nexport const NODE_MOVE_PREPARATION_PROVIDERS = [\n\n NodeMovePreparationExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n IsConnectionUnderNodeRequest\n} from '../../domain';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragToParentDragHandler } from '../node-drag-to-parent.drag-handler';\nimport { ILineAlignmentResult } from '../../../f-line-alignment';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { deepClone } from '@foblex/utils';\nimport { FNodeBase } from '../../../f-node';\nimport { LineAlignmentDragHandler } from '../line-alignment.drag-handler';\n\n@Injectable()\n@FExecutionRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeExecution implements IExecution<NodeMoveFinalizeRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: NodeMoveFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n const difference = this._getDifferenceWithLineAlignment(\n this._getDifferenceBetweenPreparationAndFinalize(request.event.getPosition())\n );\n\n const firstNodeOrGroup: NodeDragHandler = this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof NodeDragHandler)!;\n\n const differenceWithCellSize = firstNodeOrGroup.getDifferenceWithCellSize(difference);\n\n this._finalizeMove(differenceWithCellSize);\n\n this._applyConnectionUnderDroppedNode();\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) => x instanceof NodeDragHandler);\n }\n\n private _finalizeMove(difference: IPoint): void {\n this._getItems().forEach((x) => {\n x.onPointerMove({ ...difference });\n x.onPointerUp?.();\n });\n }\n\n private _getItems(): IDraggableItem[] {\n return this._fDraggableDataContext.draggableItems\n .filter((x) => !(x instanceof NodeDragToParentDragHandler));\n }\n\n private _getDifferenceBetweenPreparationAndFinalize(position: IPoint): Point {\n return Point.fromPoint(position).elementTransform(this._fHost)\n .div(this._fDraggableDataContext.onPointerDownScale)\n .sub(this._fDraggableDataContext.onPointerDownPosition);\n }\n\n private _getDifferenceWithLineAlignment(difference: IPoint): IPoint {\n return this._applyLineAlignmentDifference(\n difference,\n this._getLineAlignmentDifference(difference)\n );\n }\n\n private _getLineAlignmentDifference(difference: IPoint): ILineAlignmentResult | undefined {\n return this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof LineAlignmentDragHandler)\n ?.findNearestCoordinate(difference);\n }\n\n private _applyLineAlignmentDifference(difference: IPoint, intersection: ILineAlignmentResult | undefined): IPoint {\n if (intersection) {\n difference.x = intersection.xResult.value ? (difference.x - intersection.xResult.distance!) : difference.x;\n difference.y = intersection.yResult.value ? (difference.y - intersection.yResult.distance!) : difference.y;\n }\n return difference;\n }\n\n private _applyConnectionUnderDroppedNode(): void {\n const isDraggedJustOneNode = this._fDraggableDataContext.draggableItems[ 0 ] instanceof NodeDragHandler;\n if (isDraggedJustOneNode && this._fComponentsStore.fDraggable?.emitWhenNodeIntersectedWithConnection) {\n const fNode = (this._fDraggableDataContext.draggableItems[ 0 ] as NodeDragHandler).fNode;\n setTimeout(() => this._fMediator.execute(new IsConnectionUnderNodeRequest(fNode)));\n }\n }\n}\n","import { CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS } from './create-move-nodes-drag-model-from-selection';\nimport { NodeMoveFinalizeExecution } from './node-move-finalize';\nimport { NODE_MOVE_PREPARATION_PROVIDERS } from './node-move-preparation';\nimport { NODE_DRAG_TO_PARENT_PREPARATION_PROVIDERS } from './node-drag-to-parent-preparation';\nimport { NODE_DRAG_TO_PARENT_FINALIZE_PROVIDERS } from './node-drag-to-parent-finalize';\nimport { LineAlignmentPreparationExecution } from './line-alignment-preparation';\n\nexport const NODE_PROVIDERS = [\n\n ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,\n\n LineAlignmentPreparationExecution,\n\n NodeMoveFinalizeExecution,\n\n ...NODE_MOVE_PREPARATION_PROVIDERS,\n\n ...NODE_DRAG_TO_PARENT_PREPARATION_PROVIDERS,\n\n ...NODE_DRAG_TO_PARENT_FINALIZE_PROVIDERS\n];\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyChildResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyChildResizeRestrictionsRequest)\nexport class ApplyChildResizeRestrictionsExecution\n implements IExecution<ApplyChildResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyChildResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x > restrictionsRect.x - OFFSET) {\n rect.width += rect.x - restrictionsRect.x - OFFSET;\n rect.x = restrictionsRect.x - OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y > restrictionsRect.y - OFFSET) {\n rect.height += rect.y - restrictionsRect.y - OFFSET;\n rect.y = restrictionsRect.y - OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width <= restrictionsRect.x + restrictionsRect.width + OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x + OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height <= restrictionsRect.y + restrictionsRect.height + OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y + OFFSET;\n }\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyParentResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyParentResizeRestrictionsRequest)\nexport class ApplyParentResizeRestrictionsExecution\n implements IExecution<ApplyParentResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyParentResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x <= restrictionsRect.x + OFFSET) {\n rect.width -= restrictionsRect.x - rect.x + OFFSET;\n rect.x = restrictionsRect.x + OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y <= restrictionsRect.y + OFFSET) {\n rect.height -= restrictionsRect.y - rect.y + OFFSET;\n rect.y = restrictionsRect.y + OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width > restrictionsRect.x + restrictionsRect.width - OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x - OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height > restrictionsRect.y + restrictionsRect.height - OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y - OFFSET;\n }\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedPositionRequest {\n\n constructor(\n public originalRect: IRect,\n public changedRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { EFResizeHandleType } from '../../f-node';\n\nexport const RESIZE_DIRECTIONS = {\n\n [ EFResizeHandleType.LEFT_TOP ]: { x: -1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_TOP ]: { x: 1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_BOTTOM ]: { x: 1, y: 1 },\n\n [ EFResizeHandleType.LEFT_BOTTOM ]: { x: -1, y: 1 },\n};\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedPositionRequest)\nexport class CalculateChangedPositionExecution\n implements IExecution<CalculateChangedPositionRequest, IRect> {\n\n public handle(request: CalculateChangedPositionRequest): IRect {\n return this.change(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType], request.changedRect);\n }\n\n private change(originalRect: IRect, difference: IPoint, direction: IPoint, changedRect: IRect): IRect {\n return RectExtensions.initialize(\n originalRect.x + (direction.x === -1 ? difference.x : 0) + changedRect.x,\n originalRect.y + (direction.y === -1 ? difference.y : 0) + changedRect.y,\n changedRect.width,\n changedRect.height\n );\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedSizeRequest {\n\n constructor(\n public originalRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedSizeRequest)\nexport class CalculateChangedSizeExecution\n implements IExecution<CalculateChangedSizeRequest, IRect> {\n\n public handle(request: CalculateChangedSizeRequest): IRect {\n return this.change(\n request.originalRect,\n request.difference,\n RESIZE_DIRECTIONS[request.fResizeHandleType],\n );\n }\n\n private change(rect: IRect, difference: IPoint, direction: IPoint): IRect {\n const result = RectExtensions.initialize(\n 0, 0,\n rect.width + direction.x * difference.x,\n rect.height + direction.y * difference.y\n );\n\n\n if (result.width < 0) {\n result.x = result.width;\n result.width = Math.abs(result.width);\n }\n\n if (result.height < 0) {\n result.y = result.height;\n result.height = Math.abs(result.height);\n }\n\n return RectExtensions.copy(result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public paddings: [ number, number, number, number ]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedChildrenNodesRectRequest } from './get-normalized-children-nodes-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest, GetNormalizedElementRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedChildrenNodesRectRequest)\nexport class GetNormalizedChildrenNodesRectExecution\n implements IExecution<GetNormalizedChildrenNodesRectRequest, IRect | null> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedChildrenNodesRectRequest): IRect | null {\n const childNodeRect = RectExtensions.union(\n this.getChildrenNodes(request.fNode.fId).map((x) => this.normalizeRect(x))\n );\n return childNodeRect ?\n this.concatRectWithParentPadding(childNodeRect, request.paddings) : null;\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private normalizeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement, false));\n }\n\n private concatRectWithParentPadding(rect: IRect, padding: [ number, number, number, number ]): IRect {\n return RectExtensions.initialize(\n rect.x - padding[0],\n rect.y - padding[1],\n rect.width + padding[0] + padding[2],\n rect.height + + padding[1] + padding[3]\n );\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodeResizeRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeResizeRestrictionsRequest } from './get-node-resize-restrictions.request';\nimport { IRect, SizeExtensions } from '@foblex/2d';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\nimport { FNodeBase } from '../../../f-node';\nimport { GetNodePaddingRequest } from '../../../domain';\n\n\n@Injectable()\n@FExecutionRegister(GetNodeResizeRestrictionsRequest)\nexport class GetNodeResizeRestrictionsExecution\n implements IExecution<GetNodeResizeRestrictionsRequest, INodeResizeRestrictions> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNodeResizeRestrictionsRequest): INodeResizeRestrictions {\n const fNodePaddings = this.getNodePaddings(request.fNode, request.rect);\n const childRect = this.fMediator.send<IRect | null>(new GetNormalizedChildrenNodesRectRequest(request.fNode, fNodePaddings));\n const parentRect = this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(request.fNode));\n\n return {\n parentRect,\n childRect,\n minSize: SizeExtensions.initialize(fNodePaddings[0] + fNodePaddings[2], fNodePaddings[1] + fNodePaddings[3])\n }\n }\n\n private getNodePaddings(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizeFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint, IRect, ISize, RectExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport { GetNodeResizeRestrictionsRequest, INodeResizeRestrictions } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions';\nimport { GetNormalizedElementRectRequest } from '../../domain';\n\nexport class NodeResizeDragHandler implements IDraggableItem {\n\n private originalRect!: IRect;\n\n private restrictions!: INodeResizeRestrictions;\n\n private childRestrictions: (rect: IRect, restrictionsRect: IRect) => void = () => {\n };\n\n constructor(\n private fMediator: FMediator,\n public fNode: FNodeBase,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n\n public prepareDragSequence(): void {\n this.originalRect = this.fMediator.send<IRect>(new GetNormalizedElementRectRequest(this.fNode.hostElement, false));\n\n this.restrictions = this.fMediator.send<INodeResizeRestrictions>(new GetNodeResizeRestrictionsRequest(this.fNode, this.originalRect));\n if (this.restrictions.childRect) {\n this.childRestrictions = (rect: IRect, restrictionsRect: IRect) => {\n this.applyChildRestrictions(rect, restrictionsRect);\n };\n }\n }\n\n public onPointerMove(difference: IPoint): void {\n const changedRect = this.changePosition(difference, this.changeSize(difference, this.restrictions.minSize));\n\n this.childRestrictions(changedRect, this.restrictions.childRect!);\n this.applyParentRestrictions(changedRect, this.restrictions.parentRect);\n\n this.fNode.updatePosition(changedRect);\n this.fNode.updateSize(changedRect);\n this.fNode.redraw();\n }\n\n private changeSize(difference: IPoint, minSize: ISize): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedSizeRequest(this.originalRect, difference, this.fResizeHandleType)\n );\n }\n\n private changePosition(difference: IPoint, changedRect: IRect): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedPositionRequest(this.originalRect, changedRect, difference, this.fResizeHandleType)\n );\n }\n\n private applyChildRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyChildResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n private applyParentRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyParentResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n public onPointerUp(): void {\n this.fNode.sizeChange.emit(\n RectExtensions.initialize(\n this.fNode.position.x, this.fNode.position.y, this.fNode.size?.width, this.fNode.size?.height\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\n\n@Injectable()\n@FExecutionRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeExecution implements IExecution<NodeResizeFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof NodeResizeDragHandler\n );\n }\n}\n","import { NodeResizeFinalizeExecution } from './node-resize-finalize.execution';\n\nexport const NODE_RESIZE_FINALIZE_PROVIDERS = [\n\n NodeResizeFinalizeExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../../f-node';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\nimport { getDataAttrValueFromClosestElementWithClass } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationExecution implements IExecution<NodeResizePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const handleType = getDataAttrValueFromClosestElementWithClass(request.event.targetElement, 'fResizeHandleType', '.f-resize-handle');\n const itemsToDrag: IDraggableItem[] = [\n new NodeResizeDragHandler(\n this.fMediator,\n this.getNode(request.event.targetElement),\n EFResizeHandleType[ handleType as keyof typeof EFResizeHandleType ]\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore\n .fNodes.find(n => n.isContains(targetElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FValidatorRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationValidator implements IValidator<NodeResizePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore\n .fNodes.find(n => n.isContains(targetElement));\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isClosestElementHasClass(targetElement, '.f-resize-handle');\n }\n}\n","import { NodeResizePreparationExecution } from './node-resize-preparation.execution';\nimport { NodeResizePreparationValidator } from './node-resize-preparation.validator';\n\nexport const NODE_RESIZE_PREPARATION_PROVIDERS = [\n\n NodeResizePreparationExecution,\n\n NodeResizePreparationValidator,\n];\n","import { NODE_RESIZE_FINALIZE_PROVIDERS } from './node-resize-finalize';\nimport { NODE_RESIZE_PREPARATION_PROVIDERS } from './node-resize-preparation';\nimport { GetNodeResizeRestrictionsExecution } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsExecution } from './apply-child-resize-restrictions';\nimport { ApplyParentResizeRestrictionsExecution } from './apply-parent-resize-restrictions';\nimport { CalculateChangedSizeExecution } from './calculate-changed-size';\nimport { CalculateChangedPositionExecution } from './calculate-changed-position';\nimport { GetNormalizedChildrenNodesRectExecution } from './get-normalized-children-nodes-rect';\n\nexport const NODE_RESIZE_PROVIDERS = [\n\n ApplyChildResizeRestrictionsExecution,\n\n ApplyParentResizeRestrictionsExecution,\n\n CalculateChangedPositionExecution,\n\n CalculateChangedSizeExecution,\n\n GetNormalizedChildrenNodesRectExecution,\n\n GetNodeResizeRestrictionsExecution,\n\n ...NODE_RESIZE_FINALIZE_PROVIDERS,\n\n ...NODE_RESIZE_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SingleSelectRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { UpdateItemAndChildrenLayersRequest } from '../../domain';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectionBase } from '../../f-connection';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { EOperationSystem, PlatformService } from '@foblex/platform';\nimport { ICanChangeSelection } from '../../mixins';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(SingleSelectRequest)\nexport class SingleSelectExecution implements IExecution<SingleSelectRequest, void> {\n\n constructor(\n private fPlatform: PlatformService,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: SingleSelectRequest): void {\n if(!this._isValid(request)) {\n return;\n }\n const { event } = request;\n\n const item = this.getSelectableItem(event);\n if (item) {\n this.fMediator.send<void>(new UpdateItemAndChildrenLayersRequest(item, item.hostElement.parentElement!));\n }\n\n this.isMultiselectEnabled(event) ? this.multiSelect(item) : this.singleSelect(item);\n }\n\n private _isValid(request: SingleSelectRequest): boolean {\n return this.fComponentsStore.fFlow!.hostElement.contains(request.event.targetElement)\n && !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getSelectableItem(event: IPointerEvent): ICanChangeSelection | undefined {\n return this._findNode(event.targetElement) || this.getConnectionHandler(event.targetElement);\n }\n\n private _findNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find(n => n.isContains(targetElement));\n }\n\n private getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fComponentsStore.fConnections.find(c => c.isContains(element) || c.fConnectionCenter?.nativeElement?.contains(element));\n }\n\n private isMultiselectEnabled(event: IPointerEvent): boolean {\n return this.isCommandButton(this.fPlatform.getOS()!, event.originalEvent) ||\n this.isShiftPressed(event.originalEvent);\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n\n private isCommandButton(platform: EOperationSystem, event: { metaKey: boolean, ctrlKey: boolean }): boolean {\n return platform === EOperationSystem.MAC_OS ? event.metaKey : event.ctrlKey;\n }\n\n private singleSelect(item: ICanChangeSelection | undefined): void {\n if (item) {\n if (!item.isSelected() && !item.fSelectionDisabled) {\n this.clearSelection();\n this.selectItem(item);\n } else if(item.fSelectionDisabled) {\n this.clearSelection();\n }\n } else {\n this.clearSelection();\n }\n }\n\n private multiSelect(item: ICanChangeSelection | undefined): void {\n if (item && !item.fSelectionDisabled) {\n item.isSelected() ? this.deselectItem(item) : this.selectItem(item);\n }\n }\n\n private deselectItem(item: ICanChangeSelection): void {\n const index = this.fDraggableDataContext.selectedItems.indexOf(item);\n if (index > -1) {\n this.fDraggableDataContext.selectedItems.splice(index, 1);\n }\n item.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private selectItem(item: ICanChangeSelection): void {\n this.fDraggableDataContext.selectedItems.push(item);\n item.select();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private clearSelection(): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n });\n this.fDraggableDataContext.selectedItems = [];\n }\n}\n","import { SingleSelectExecution } from './single-select.execution';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n SingleSelectExecution,\n];\n","import { Directive, EventEmitter, } from '@angular/core';\nimport { FCreateConnectionEvent, FReassignConnectionEvent } from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FCreateNodeEvent } from '../f-external-item';\nimport { DragAndDropBase, ICanRunOutsideAngular } from '@foblex/drag-toolkit';\nimport { FDropToGroupEvent } from './node';\nimport { FNodeIntersectedWithConnections } from './domain';\n\n@Directive()\nexport abstract class FDraggableBase extends DragAndDropBase {\n\n public abstract fSelectionChange: EventEmitter<FSelectionChangeEvent>;\n\n public abstract fNodeIntersectedWithConnections: EventEmitter<FNodeIntersectedWithConnections>;\n\n public abstract emitWhenNodeIntersectedWithConnection: boolean;\n\n public abstract fCreateNode: EventEmitter<FCreateNodeEvent>;\n\n public abstract fReassignConnection: EventEmitter<FReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<FCreateConnectionEvent>;\n\n public abstract fDropToGroup: EventEmitter<FDropToGroupEvent>;\n\n public abstract vCellSize: number;\n\n public abstract hCellSize: number;\n\n protected constructor(\n ngZone: ICanRunOutsideAngular | undefined\n ) {\n super(ngZone);\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FExternalItemBase } from '../../f-external-item';\nimport { IDraggableItem } from '../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\nimport { deepCloneNode } from '@foblex/utils';\n\nexport class ExternalItemDragHandler implements IDraggableItem {\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase,\n private fBrowser: BrowserService\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public prepareDragSequence(): void {\n this.onPointerDownRect = this.getExternalItemRect();\n this.placeholder = deepCloneNode(this.externalItem.hostElement);\n this.placeholder.setAttribute('style', this.getStyle(Point.fromPoint(this.onPointerDownRect)));\n this.fBrowser.document.body.appendChild(this.placeholder);\n }\n\n private getExternalItemRect(): IRect {\n const rect = this.externalItem.hostElement.getBoundingClientRect();\n const scrollTop = this.fBrowser.window.pageYOffset || this.fBrowser.document.documentElement.scrollTop;\n const scrollLeft = this.fBrowser.window.pageXOffset || this.fBrowser.document.documentElement.scrollLeft;\n const offsetTop = rect.top + scrollTop;\n const offsetLeft = rect.left + scrollLeft;\n return RectExtensions.initialize(offsetLeft, offsetTop, rect.width, rect.height);\n }\n\n public onPointerMove(difference: IPoint): void {\n this.difference = difference;\n const position = Point.fromPoint(this.onPointerDownRect).add(this.difference);\n this.placeholder!.setAttribute('style', this.getStyle(position));\n }\n\n public onPointerUp(): void {\n this.fBrowser.document.body.removeChild(this.placeholder!);\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class FCreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FCreateNodeEvent } from '../f-create-node.event';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeExecution implements IExecution<ExternalItemFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fCreateNode(): EventEmitter<FCreateNodeEvent> {\n return this.fComponentsStore.fDraggable!.fCreateNode;\n }\n\n private get dragHandler(): ExternalItemDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ExternalItemDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): void {\n if (!this._isValid()) {\n return\n }\n this.emitEvent(\n this.getExternalItemElementsFromPoint(request.event.getPosition())\n );\n\n this.dragHandler.onPointerUp();\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ExternalItemDragHandler\n );\n }\n\n private getExternalItemElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y)\n .filter(x => !x.closest('.f-external-item')) as HTMLElement[];\n }\n\n private emitEvent(elements: HTMLElement[]): void {\n if (this.isPointerInCanvasRect(elements)) {\n this.fCreateNode.emit(\n new FCreateNodeEvent(this.getRectInCanvas(), this.dragHandler.externalItem.fData)\n );\n }\n }\n\n private isPointerInCanvasRect(elements: HTMLElement[]): boolean {\n return elements.length ? this.flowHost.contains(elements[ 0 ]) : false;\n }\n\n private getRectInCanvas(): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedElementRectRequest(this.dragHandler.placeholder!, false));\n }\n}\n","import { ExternalItemFinalizeExecution } from './external-item-finalize.execution';\n\nexport const EXTERNAL_ITEM_FINALIZE_PROVIDERS = [\n\n ExternalItemFinalizeExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExternalItemBase, FExternalItemService, getExternalItem } from '../../../f-external-item';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationExecution implements IExecution<ExternalItemPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fExternalItemService: FExternalItemService,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition()).elementTransform(this.flowHost);\n\n this.fDraggableDataContext.draggableItems = [\n new ExternalItemDragHandler(this.getExternalItem(request.event.targetElement), this.fBrowser)\n ];\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> {\n return this.fExternalItemService.getItem(getExternalItem(targetElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FExternalItemBase, FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\n\n@Injectable()\n@FValidatorRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationValidator implements IValidator<ExternalItemPreparationRequest> {\n\n constructor(\n private fExternalItemService: FExternalItemService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): boolean {\n const externalItem = this.getExternalItem(request.event.targetElement);\n return isExternalItem(request.event.targetElement) && !!externalItem && !externalItem.fDisabled;\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> | undefined {\n return this.fExternalItemService.getItem(getExternalItem(targetElement));\n }\n}\n","import { ExternalItemPreparationExecution } from './external-item-preparation.execution';\nimport { ExternalItemPreparationValidator } from './external-item-preparation.validator';\n\nexport const EXTERNAL_ITEM_PREPARATION_PROVIDERS = [\n\n ExternalItemPreparationExecution,\n\n ExternalItemPreparationValidator,\n];\n","export class PreventDefaultIsExternalItemRequest {\n\n constructor(\n public event: Event\n ) {\n }\n}\n","export function isExternalItem(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fExternalItem]');\n}\n\nexport function getExternalItem(element: HTMLElement | SVGElement): HTMLElement | SVGElement {\n return element.closest('[fExternalItem]') as HTMLElement | SVGElement;\n}\n","import { PreventDefaultIsExternalItemRequest } from './prevent-default-is-external-item.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { isExternalItem } from '../../is-external-item';\n\n@Injectable()\n@FExecutionRegister(PreventDefaultIsExternalItemRequest)\nexport class PreventDefaultIsExternalItemExecution implements IExecution<PreventDefaultIsExternalItemRequest, void> {\n\n public handle(request: PreventDefaultIsExternalItemRequest): void {\n if (this._isTargetItemExternal(request.event)) {\n request.event.preventDefault();\n }\n }\n\n private _isTargetItemExternal(event: Event): boolean {\n let isTargetItemExternal = this._isExternalItem(event.target as HTMLElement);\n let isTargetParentItemExternal = this._isExternalItem((event.target as Node).parentNode as HTMLElement);\n return isTargetItemExternal || isTargetParentItemExternal;\n }\n\n private _isExternalItem(target: HTMLElement): boolean {\n let result = false;\n try {\n result = isExternalItem(target);\n } catch (e) {\n }\n return result;\n }\n}\n","import { EXTERNAL_ITEM_PREPARATION_PROVIDERS } from './external-item-preparation';\nimport { EXTERNAL_ITEM_FINALIZE_PROVIDERS } from './external-item-finalize';\nimport { PreventDefaultIsExternalItemExecution } from './prevent-default-is-external-item';\n\nexport const F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS = [\n\n ...EXTERNAL_ITEM_FINALIZE_PROVIDERS,\n\n ...EXTERNAL_ITEM_PREPARATION_PROVIDERS,\n\n PreventDefaultIsExternalItemExecution,\n];\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase<TData = any> implements IHasHostElement {\n\n public abstract fExternalItemId: string;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract fData: TData | undefined;\n\n public abstract fDisabled: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FExternalItemService {\n\n private items: FExternalItemBase[] = [];\n\n public registerItem(item: FExternalItemBase): void {\n this.items.push(item);\n }\n\n public getItem(element: HTMLElement | SVGElement): FExternalItemBase | undefined {\n return this.items.find(item => item.hostElement === element);\n }\n\n public removeItem(item: FExternalItemBase): void {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FExternalItemBase, F_EXTERNAL_ITEM } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n host: {\n '[attr.id]': 'fExternalItemId',\n class: \"f-component f-external-item\",\n '[class.f-external-item-disabled]': 'fDisabled',\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective<TData> extends FExternalItemBase<TData> implements OnInit, OnDestroy {\n\n @Input()\n public override fExternalItemId: string = `f-external-item-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override fData: TData | undefined;\n\n @Input()\n public override fDisabled: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fExternalItemService: FExternalItemService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fExternalItemService.registerItem(this);\n this.disablePointerEvents(Array.from(this.hostElement.children) as HTMLElement[]);\n }\n\n private disablePointerEvents(children: HTMLElement[]): void {\n children.forEach((x) => {\n x.style.pointerEvents = 'none';\n this.disablePointerEvents(Array.from(x.children) as HTMLElement[]);\n });\n }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { FExternalItemDirective } from './f-external-item.directive';\n\nexport const F_EXTERNAL_ITEM_PROVIDERS = [\n FExternalItemDirective\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_DRAG_AND_DROP_PLUGIN: InjectionToken<IFDragAndDropPlugin> = new InjectionToken<IFDragAndDropPlugin>('F_DRAG_AND_DROP_PLUGIN');\n\nexport interface IFDragAndDropPlugin {\n\n onSelect?(event: Event): void;\n\n onPointerDown?(event: IPointerEvent): void;\n\n prepareDragSequence?(event: IPointerEvent): void;\n\n onPointerUp?(event: IPointerEvent): void;\n}\n","import {\n AfterViewInit, booleanAttribute, ContentChildren,\n Directive,\n ElementRef,\n EventEmitter, inject, Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit, Optional, Output, QueryList\n} from \"@angular/core\";\nimport { FDraggableBase } from './f-draggable-base';\nimport {\n FDropToGroupEvent, NodeDragToParentFinalizeRequest,\n NodeDragToParentPreparationRequest,\n NodeMoveFinalizeRequest,\n NodeMovePreparationRequest\n} from './node';\nimport { CanvasMoveFinalizeRequest, CanvasMovePreparationRequest } from './canvas';\nimport {\n FCreateConnectionEvent,\n FReassignConnectionEvent,\n ReassignConnectionPreparationRequest,\n ReassignConnectionFinalizeRequest,\n CreateConnectionPreparationRequest,\n CreateConnectionFinalizeRequest\n} from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddDndToStoreRequest,\n EmitSelectionChangeEventRequest,\n PrepareDragSequenceRequest,\n RemoveDndFromStoreRequest,\n EndDragSequenceRequest,\n InitializeDragSequenceRequest,\n OnPointerMoveRequest\n} from '../domain';\nimport {\n ExternalItemFinalizeRequest,\n ExternalItemPreparationRequest,\n FCreateNodeEvent,\n PreventDefaultIsExternalItemRequest\n} from '../f-external-item';\nimport { SingleSelectRequest } from './single-select';\nimport { NodeResizeFinalizeRequest, NodeResizePreparationRequest } from './node-resize';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from './i-f-drag-and-drop-plugin';\nimport { BrowserService } from '@foblex/platform';\nimport { ICanRunOutsideAngular, IPointerEvent } from '@foblex/drag-toolkit';\nimport { FNodeIntersectedWithConnections } from './domain';\n\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable'\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n\n private _fMediator = inject(FMediator);\n\n @Input('fDraggableDisabled')\n public override disabled: boolean = false;\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @Output()\n public override fSelectionChange = new EventEmitter<FSelectionChangeEvent>();\n\n @Output()\n public override fNodeIntersectedWithConnections = new EventEmitter<FNodeIntersectedWithConnections>();\n\n @Input({ transform: booleanAttribute })\n public override emitWhenNodeIntersectedWithConnection: boolean = false;\n\n @Output()\n public override fCreateNode = new EventEmitter<FCreateNodeEvent>();\n\n @Output()\n public override fReassignConnection = new EventEmitter<FReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection = new EventEmitter<FCreateConnectionEvent>();\n\n @Output()\n public override fDropToGroup = new EventEmitter<FDropToGroupEvent>();\n\n @Input()\n public override vCellSize = 1;\n\n @Input()\n public override hCellSize = 1;\n\n @ContentChildren(F_DRAG_AND_DROP_PLUGIN, { descendants: true })\n private plugins!: QueryList<IFDragAndDropPlugin>;\n\n constructor(\n @Inject(NgZone) @Optional() ngZone: ICanRunOutsideAngular,\n private _fBrowser: BrowserService,\n ) {\n super(ngZone);\n }\n\n public ngOnInit(): void {\n this._fMediator.send<void>(new AddDndToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this._fBrowser.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n this._fMediator.execute<void>(new InitializeDragSequenceRequest());\n\n this.plugins.forEach((p) => p.onPointerDown?.(event));\n\n this._fMediator.execute<void>(new SingleSelectRequest(event));\n\n this._fMediator.execute<void>(new ReassignConnectionPreparationRequest(event));\n\n this._fMediator.execute<void>(new CreateConnectionPreparationRequest(event));\n\n const isMouseLeftButton = event.isMouseLeftButton();\n if (!isMouseLeftButton) {\n this.finalizeDragSequence();\n }\n return isMouseLeftButton;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n this.plugins.forEach((p) => p.prepareDragSequence?.(event));\n\n this._fMediator.send<void>(new NodeResizePreparationRequest(event));\n\n this._fMediator.send<void>(new NodeMovePreparationRequest(event));\n\n this._fMediator.send<void>(new NodeDragToParentPreparationRequest(event));\n\n this._fMediator.send<void>(new CanvasMovePreparationRequest(event));\n\n this._fMediator.send<void>(new ExternalItemPreparationRequest(event));\n\n this._fMediator.send<void>(new PrepareDragSequenceRequest());\n }\n\n protected override onSelect(event: Event): void {\n this.plugins.forEach((x) => x.onSelect?.(event));\n\n this._fMediator.execute<void>(new PreventDefaultIsExternalItemRequest(event));\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n this._fMediator.execute<void>(new OnPointerMoveRequest(event));\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n this.plugins.forEach((x) => x.onPointerUp?.(event));\n\n this._fMediator.execute<void>(new ReassignConnectionFinalizeRequest(event));\n\n this._fMediator.execute<void>(new CreateConnectionFinalizeRequest(event));\n\n this._fMediator.execute<void>(new NodeResizeFinalizeRequest(event));\n\n this._fMediator.execute<void>(new NodeMoveFinalizeRequest(event));\n\n this._fMediator.execute<void>(new NodeDragToParentFinalizeRequest(event));\n\n this._fMediator.send<void>(new CanvasMoveFinalizeRequest(event));\n\n this._fMediator.execute<void>(new ExternalItemFinalizeRequest(event));\n\n this._fMediator.execute<void>(new EndDragSequenceRequest());\n }\n\n protected override finalizeDragSequence(): void {\n this._fMediator.execute<void>(new EmitSelectionChangeEventRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.send<void>(new RemoveDndFromStoreRequest());\n super.unsubscribe();\n }\n}\n\n","import { ICurrentSelection } from '../domain';\n\nexport class FSelectionChangeEvent implements ICurrentSelection{\n\n constructor(\n public nodes: string[],\n public groups: string[],\n public connections: string[],\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class MinimapDragPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class CalculateFlowPointFromMinimapPointRequest {\n\n constructor(\n public flowRect: IRect,\n public canvasPosition: IPoint,\n public eventPoint: IPoint,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(CalculateFlowPointFromMinimapPointRequest)\nexport class CalculateFlowPointFromMinimapPointExecution\n implements IExecution<CalculateFlowPointFromMinimapPointRequest, IPoint> {\n\n private get canvasScale(): number {\n return this.fComponentsStore.fCanvas!.transform.scale;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(payload: CalculateFlowPointFromMinimapPointRequest): IPoint {\n return PointExtensions.sub(\n payload.canvasPosition,\n PointExtensions.sub(\n this.getPositionInViewBox(payload.eventPoint, payload.minimap),\n this.getNormalizedFlowCenter(payload.flowRect)\n )\n );\n }\n\n private getNormalizedFlowCenter(flowRect: IRect): IPoint {\n return Point.fromPoint(flowRect.gravityCenter).sub(flowRect);\n }\n\n private getPositionInViewBox(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n const eventPointInFlow = this.normalizeEventPoint(eventPoint, minimap);\n return PointExtensions.sum(\n eventPointInFlow,\n RectExtensions.mult(minimap.viewBox, this.canvasScale)\n );\n }\n\n public normalizeEventPoint(point: IPoint, minimap: FMinimapData): Point {\n return this.getEventPointInMinimap(point, minimap)\n .mult(minimap.scale).mult(this.canvasScale);\n }\n\n private getEventPointInMinimap(eventPoint: IPoint, minimap: FMinimapData): Point {\n return Point.fromPoint(eventPoint).elementTransform(minimap.element as unknown as HTMLElement);\n }\n}\n","import { IPoint, IRect, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { IDraggableItem } from '../../f-draggable';\nimport { FMediator } from '@foblex/mediator';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from './f-minimap-data';\n\nexport class FMinimapDragHandler implements IDraggableItem {\n\n private lastDifference: IPoint | null = null;\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private flowRect: IRect,\n private canvasPosition: IPoint,\n private eventPoint: IPoint,\n private minimap: FMinimapData\n ) {\n }\n\n public prepareDragSequence(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');\n }\n\n public onPointerMove(difference: IPoint): void {\n if (this.lastDifference && this.isSamePoint(difference, this.lastDifference)) {\n return;\n }\n\n this.lastDifference = difference;\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(Point.fromPoint(this.eventPoint).add(difference)));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n private isSamePoint(point1: IPoint, point2: IPoint): boolean {\n return point1.x === point2.x && point1.y === point2.y;\n }\n\n private getNewPosition(eventPoint: IPoint): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.flowRect, this.canvasPosition, eventPoint, this.minimap\n ));\n }\n\n public onPointerUp(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.remove('f-scaled-animate');\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { IPoint, IRect, Point, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { CalculateFlowPointFromMinimapPointRequest } from '../calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationExecution implements IExecution<MinimapDragPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): void {\n const eventPoint = request.event.getPosition();\n const startCanvasPosition = Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position);\n\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(eventPoint, request.minimap));\n this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(eventPoint).elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new FMinimapDragHandler(\n this.fComponentsStore, this.fMediator, this.getFlowRect(),\n startCanvasPosition, eventPoint, request.minimap,\n )\n ];\n }\n\n private getNewPosition(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.getFlowRect(),\n Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position),\n eventPoint, minimap,\n ));\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationValidator implements IValidator<MinimapDragPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n !!request.event.targetElement.closest('.f-minimap') &&\n this.fComponentsStore.flowHost.contains(request.event.targetElement);\n }\n}\n","import { MinimapDragPreparationExecution } from './minimap-drag-preparation.execution';\nimport { MinimapDragPreparationValidator } from './minimap-drag-preparation.validator';\n\nexport const MINIMAP_DRAG_PREPARATION_PROVIDERS = [\n\n MinimapDragPreparationExecution,\n\n MinimapDragPreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class MinimapDragFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeExecution implements IExecution<MinimapDragFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\n\n@Injectable()\n@FValidatorRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeValidator implements IValidator<MinimapDragFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FMinimapDragHandler\n );\n }\n}\n","import { MinimapDragFinalizeExecution } from './minimap-drag-finalize.execution';\nimport { MinimapDragFinalizeValidator } from './minimap-drag-finalize.validator';\n\nexport const MINIMAP_DRAG_FINALIZE_PROVIDERS = [\n\n MinimapDragFinalizeExecution,\n\n MinimapDragFinalizeValidator,\n];\n","export class MinimapDrawNodesRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapDrawNodesRequest } from './minimap-draw-nodes.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FNodeBase, FNodeDirective } from '../../../f-node';\nimport { IRect, RectExtensions, setRectToElement } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(MinimapDrawNodesRequest)\nexport class MinimapDrawNodesExecution implements IExecution<MinimapDrawNodesRequest, SVGRectElement[]> {\n\n private _fBrowser = inject(BrowserService);\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase | undefined {\n return this._fComponentStore.fFlow;\n }\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentStore.fNodes;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapDrawNodesRequest): SVGRectElement[] {\n return this._createMinimapNodeElements(request);\n }\n\n private _createMinimapNodeElements(request: MinimapDrawNodesRequest): SVGRectElement[] {\n return this._fNodes.map((x) => {\n const element = this._createNodeElement();\n setRectToElement(this._getNodeRect(x), element);\n this._applyClassList(element, x, x instanceof FNodeDirective);\n return element;\n });\n }\n\n private _createNodeElement(): SVGRectElement {\n return createSVGElement('rect', this._fBrowser);\n }\n\n private _getNodeRect(node: FNodeBase): IRect {\n return RectExtensions.div(this._getNodeRectInFlow(node), this._fCanvas.transform.scale);\n }\n\n private _getNodeRectInFlow(node: FNodeBase): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(node.hostElement), this._fFlow!.hostElement);\n }\n\n private _applyClassList(element: SVGRectElement, node: FNodeBase, isNode: boolean): void {\n element.classList.add('f-component', isNode ? 'f-minimap-node' : 'f-minimap-group');\n if (node.isSelected()) {\n element.classList.add('f-selected');\n }\n }\n}\n","export class MinimapCalculateViewBoxRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapCalculateViewBoxRequest } from './minimap-calculate-view-box.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(MinimapCalculateViewBoxRequest)\nexport class MinimapCalculateViewBoxExecution implements IExecution<MinimapCalculateViewBoxRequest, IRect> {\n\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase | undefined {\n return this._fComponentStore.fFlow;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapCalculateViewBoxRequest): IRect {\n if(!this._fFlow || !this._fCanvas) {\n return RectExtensions.initialize();\n }\n return this._getRectForMinimapView();\n }\n\n private _getRectForMinimapView(): IRect {\n const result = this._calculateViewBox();\n result.x = 0;\n result.y = 0;\n return result;\n }\n\n private _calculateViewBox(): IRect {\n return RectExtensions.div(RectExtensions.fromElement(this._fFlow!.hostElement), this._fCanvas.transform.scale);\n }\n}\n","export class MinimapCalculateSvgScaleAndViewBoxRequest {\n\n constructor(\n public element: SVGSVGElement,\n public minSize: number,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapCalculateSvgScaleAndViewBoxRequest } from './minimap-calculate-svg-scale-and-view-box.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { adjustRectToMinSize, IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\nimport { CalculateNodesBoundingBoxRequest } from '../../../domain';\nimport { IFMinimapScaleAndViewBox } from './i-f-minimap-scale-and-view-box';\n\n@Injectable()\n@FExecutionRegister(MinimapCalculateSvgScaleAndViewBoxRequest)\nexport class MinimapCalculateSvgScaleAndViewBoxExecution\n implements IExecution<MinimapCalculateSvgScaleAndViewBoxRequest, IFMinimapScaleAndViewBox> {\n\n private _fMediator = inject(FMediator);\n\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase {\n return this._fComponentStore.fFlow!;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapCalculateSvgScaleAndViewBoxRequest): IFMinimapScaleAndViewBox {\n if(!this._fFlow) {\n return { scale: 1, viewBox: RectExtensions.initialize(0, 0, 0, 0) };\n }\n\n const nodesRect = this._getScaledNodesBoundingBox(request.minSize);\n const minimapRect = this._getMinimapRect(request.element);\n const scale = this._calculateViewScale(nodesRect, minimapRect);\n\n return {\n scale,\n viewBox: this._calculateViewBox(nodesRect, minimapRect, scale)\n }\n }\n\n private _getScaledNodesBoundingBox(minSize: number): IRect {\n const globalRect = this._calculateNodesBoundingBox();\n const flowRect = this._convertFromGlobalToFlowRect(globalRect);\n const scaledRect = this._convertRectToMinimapScale(flowRect);\n return adjustRectToMinSize(scaledRect, minSize);\n }\n\n private _calculateNodesBoundingBox(): IRect {\n return this._fMediator.send<IRect | null>(new CalculateNodesBoundingBoxRequest())\n || RectExtensions.initialize(0, 0, 0, 0);\n }\n\n private _convertFromGlobalToFlowRect(rect: IRect): IRect {\n return RectExtensions.elementTransform(rect, this._fFlow!.hostElement)\n }\n\n private _convertRectToMinimapScale(rect: IRect): IRect {\n return RectExtensions.div(rect, this._fCanvas.transform.scale);\n }\n\n private _getMinimapRect(element: SVGSVGElement): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(element), this._fFlow.hostElement);\n }\n\n private _calculateViewScale(nodesRect: IRect, minimapRect: IRect): number {\n return Math.max(nodesRect.width / minimapRect.width, nodesRect.height / minimapRect.height);\n }\n\n private _calculateViewBox(nodesRect: IRect, minimapRect: IRect, scale: number): IRect {\n return this._calculateCenteredViewBox(nodesRect, this._calculateViewSize(minimapRect, scale));\n }\n\n private _calculateViewSize(minimapRect: IRect, scale: number): ISize {\n return SizeExtensions.initialize(minimapRect.width * scale || 0, minimapRect.height * scale || 0);\n }\n\n private _calculateCenteredViewBox(nodesRect: IRect, viewSize: ISize): IRect {\n const centeredX = nodesRect.x - (viewSize.width - nodesRect.width) / 2;\n const centeredY = nodesRect.y - (viewSize.height - nodesRect.height) / 2;\n return RectExtensions.initialize(centeredX, centeredY, viewSize.width, viewSize.height);\n }\n}\n","import { MINIMAP_DRAG_PREPARATION_PROVIDERS } from './minimap-drag-preparation';\nimport { MINIMAP_DRAG_FINALIZE_PROVIDERS } from './minimap-drag-finalize';\nimport { CalculateFlowPointFromMinimapPointExecution } from './calculate-flow-point-from-minimap-point';\nimport { MinimapDrawNodesExecution } from './minimap-draw-nodes';\nimport { MinimapCalculateViewBoxExecution } from './minimap-calculate-view-box';\nimport { MinimapCalculateSvgScaleAndViewBoxExecution } from './minimap-calculate-svg-scale-and-view-box';\n\nexport const F_MINIMAP_DRAG_AND_DROP_PROVIDERS = [\n\n CalculateFlowPointFromMinimapPointExecution,\n\n ...MINIMAP_DRAG_FINALIZE_PROVIDERS,\n\n ...MINIMAP_DRAG_PREPARATION_PROVIDERS,\n\n MinimapDrawNodesExecution,\n\n MinimapCalculateSvgScaleAndViewBoxExecution,\n\n MinimapCalculateViewBoxExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SelectionAreaFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeExecution implements IExecution<SelectionAreaFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n}\n","import { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore, NotifyTransformChangedRequest } from '../../f-storage';\nimport { GetCanBeSelectedItemsRequest, ICanBeSelected } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext, IDraggableItem } from '../../f-draggable';\nimport { FSelectionAreaBase } from '../f-selection-area-base';\nimport { ICanChangeSelection } from '../../mixins';\n\nexport class SelectionAreaDragHandle implements IDraggableItem {\n\n private _canBeSelected: ICanBeSelected[] = [];\n private _selectedByMove: ICanChangeSelection[] = [];\n\n private get canvasPosition(): Point {\n return Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position)\n .add(this.fComponentsStore.fCanvas!.transform.scaledPosition);\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fSelectionArea: FSelectionAreaBase,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public prepareDragSequence(): void {\n this._canBeSelected = this.fMediator.send(new GetCanBeSelectedItemsRequest());\n\n this.fSelectionArea.show();\n this.fSelectionArea.draw(\n RectExtensions.initialize(\n this.fDraggableDataContext.onPointerDownPosition.x,\n this.fDraggableDataContext.onPointerDownPosition.y\n )\n );\n }\n\n public onPointerMove(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this.fDraggableDataContext.onPointerDownPosition);\n const x: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.x, currentPoint.x);\n const y: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.y, currentPoint.y);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n this.fSelectionArea.draw(\n RectExtensions.initialize(x, y, width, height)\n );\n this._selectedByMove = [];\n this._canBeSelected.forEach((item) => {\n item.element.deselect();\n\n const itemRect = RectExtensions.addPoint(item.rect, this.canvasPosition);\n\n const isIntersect = RectExtensions.intersectionWithRect(itemRect, RectExtensions.initialize(x, y, width, height));\n if (isIntersect) {\n\n item.element.select();\n this._selectedByMove.push(item.element);\n }\n });\n this.fMediator.send<void>(new NotifyTransformChangedRequest());\n }\n\n public onPointerUp(): void {\n this.fSelectionArea.hide();\n this.fDraggableDataContext.selectedItems.push(...this._selectedByMove);\n if (this._selectedByMove.length > 0) {\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeValidator implements IValidator<SelectionAreaFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof SelectionAreaDragHandle\n );\n }\n}\n","import { SelectionAreaFinalizeExecution } from './selection-area-finalize.execution';\nimport { SelectionAreaFinalizeValidator } from './selection-area-finalize.validator';\n\nexport const SELECTION_AREA_FINALIZE_PROVIDERS = [\n\n SelectionAreaFinalizeExecution,\n\n SelectionAreaFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FSelectionAreaBase } from '../../f-selection-area-base';\n\nexport class SelectionAreaPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fSelectionArea: FSelectionAreaBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationExecution implements IExecution<SelectionAreaPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): void {\n this.fDraggableDataContext.draggableItems = [\n new SelectionAreaDragHandle(\n this.fComponentsStore, request.fSelectionArea, this.fDraggableDataContext, this.fMediator\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationValidator implements IValidator<SelectionAreaPreparationRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isShiftPressed(request.event.originalEvent);\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n}\n","import { SelectionAreaPreparationExecution } from './selection-area-preparation.execution';\nimport { SelectionAreaPreparationValidator } from './selection-area-preparation.validator';\n\nexport const SELECTION_AREA_PREPARATION_PROVIDERS = [\n\n SelectionAreaPreparationExecution,\n\n SelectionAreaPreparationValidator,\n];\n","import { SELECTION_AREA_FINALIZE_PROVIDERS } from './selection-area-finalize';\nimport { SELECTION_AREA_PREPARATION_PROVIDERS } from './selection-area-preparation';\n\nexport const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [\n\n ...SELECTION_AREA_FINALIZE_PROVIDERS,\n\n ...SELECTION_AREA_PREPARATION_PROVIDERS\n];\n","import { IRect } from '@foblex/2d';\nimport { Directive } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\n@Directive()\nexport abstract class FSelectionAreaBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract hide(): void;\n\n public abstract show(): void;\n\n public abstract draw(object: IRect): void;\n}\n","import { Component, ElementRef, inject, OnInit } from '@angular/core';\nimport { FSelectionAreaBase } from './f-selection-area-base';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { SelectionAreaFinalizeRequest, SelectionAreaPreparationRequest } from './domain';\n\n@Component({\n selector: \"f-selection-area\",\n template: ``,\n styleUrls: [ './f-selection-area.component.scss' ],\n host: {\n 'class': 'f-selection-area f-component'\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },\n ],\n})\nexport class FSelectionAreaComponent extends FSelectionAreaBase implements OnInit, IFDragAndDropPlugin {\n\n private _fMediator = inject(FMediator);\n private _elementReference = inject(ElementRef);\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override hide(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override show(): void {\n this.hostElement.style.display = 'block';\n }\n\n public override draw(object: IRect): void {\n const style = this.hostElement.style;\n style.left = object.x + 'px';\n style.top = object.y + 'px';\n style.width = object.width + 'px';\n style.height = object.height + 'px';\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this._fMediator.send(new SelectionAreaPreparationRequest(event, this));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this._fMediator.send(new SelectionAreaFinalizeRequest(event));\n }\n}\n","import { FSelectionAreaComponent } from './f-selection-area.component';\n\nexport const F_SELECTION_AREA_PROVIDERS = [\n\n FSelectionAreaComponent\n];\n","import { CANVAS_PROVIDERS } from './canvas';\nimport { CONNECTIONS_PROVIDERS } from './connections';\nimport { SINGLE_SELECT_PROVIDERS } from './single-select';\nimport { NODE_PROVIDERS } from './node';\nimport { NODE_RESIZE_PROVIDERS } from './node-resize';\nimport { F_MINIMAP_DRAG_AND_DROP_PROVIDERS } from '../f-minimap/domain/providers';\nimport { F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS } from '../f-external-item';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area';\nimport { DRAG_AND_DROP_COMMON_PROVIDERS } from './domain';\n\nexport const F_DRAGGABLE_PROVIDERS = [\n\n ...CANVAS_PROVIDERS,\n\n ...CONNECTIONS_PROVIDERS,\n\n ...DRAG_AND_DROP_COMMON_PROVIDERS,\n\n ...SINGLE_SELECT_PROVIDERS,\n\n ...F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS,\n\n ...NODE_PROVIDERS,\n\n ...NODE_RESIZE_PROVIDERS,\n\n ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,\n\n ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS\n];\n","export class ClearSelectionRequest {\n\n}\n","import { ClearSelectionRequest } from './clear-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(ClearSelectionRequest)\nexport class ClearSelectionExecution implements IExecution<ClearSelectionRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ClearSelectionRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => x.deselect());\n this.fDraggableDataContext.selectedItems = [];\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class GetCanBeSelectedItemsRequest {\n}\n","import { inject, Injectable } from '@angular/core';\nimport { IRect, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { ICanBeSelected } from './i-can-be-selected';\nimport { GetCanBeSelectedItemsRequest } from './get-can-be-selected-items-request';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectionBase } from '../../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { GetNormalizedElementRectRequest } from '../../get-normalized-element-rect';\n\n@Injectable()\n@FExecutionRegister(GetCanBeSelectedItemsRequest)\nexport class GetCanBeSelectedItemsExecution implements IExecution<void, ICanBeSelected[]> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n private get fNodes(): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(): ICanBeSelected[] {\n return [ ...this.getNodesWithRects(), ...this.getConnectionsWithRects() ].filter((x) => {\n return !this.fDraggableDataContext.selectedItems.includes(x.element);\n });\n }\n\n private getNodesWithRects(): ICanBeSelected[] {\n return this.fNodes.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this._fMediator.send<IRect>(new GetNormalizedElementRectRequest(x.hostElement, false)),\n this.transform.scale\n )\n };\n });\n }\n\n private getConnectionsWithRects(): ICanBeSelected[] {\n return this.fConnections.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this._fMediator.send<IRect>(new GetNormalizedElementRectRequest(x.boundingElement, false)),\n this.transform.scale\n )\n };\n });\n }\n}\n","export class GetCurrentSelectionRequest {\n\n}\n","import { GetCurrentSelectionRequest } from './get-current-selection.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\nimport { ICurrentSelection } from './i-current-selection';\n\n@Injectable()\n@FExecutionRegister(GetCurrentSelectionRequest)\nexport class GetCurrentSelectionExecution implements IExecution<GetCurrentSelectionRequest, ICurrentSelection> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(): ICurrentSelection {\n return {\n nodes: this._getSelectedNodes(),\n groups: this._getSelectedGroups(),\n connections: this._getSelectedConnections()\n }\n }\n\n private _getSelectedNodes(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => x.hostElement.classList.contains('f-node'))\n .map(x => x.hostElement.dataset[ 'fNodeId' ]!);\n }\n\n private _getSelectedGroups(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => x.hostElement.classList.contains('f-group'))\n .map(x => x.hostElement.dataset[ 'fGroupId' ]!);\n }\n\n private _getSelectedConnections(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => !x.hostElement.classList.contains('f-node') && !x.hostElement.classList.contains('f-group'))\n .map(x => x.hostElement.id);\n }\n}\n","export class SelectRequest {\n\n constructor(\n public nodes: string[],\n public connections: string[]\n ) {\n }\n}\n","import { SelectRequest } from './select.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectRequest)\nexport class SelectExecution implements IExecution<SelectRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n\n request.nodes.forEach((key) => {\n const node = this.fDataContext.fNodes.find((x) => x.fId === key);\n if(node) {\n node.select();\n this.fDraggableDataContext.selectedItems.push(node);\n }\n });\n\n request.connections.forEach((key) => {\n const connection = this.fDataContext.fConnections.find((x) => x.fId === key);\n if(connection) {\n connection.select();\n this.fDraggableDataContext.selectedItems.push(connection);\n }\n });\n\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class SelectAllRequest {\n\n}\n","import { SelectAllRequest } from './select-all.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectAllRequest)\nexport class SelectAllExecution implements IExecution<SelectAllRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectAllRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n this.fDataContext.fNodes.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDataContext.fConnections.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class SelectAndUpdateNodeLayerRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","export class MoveFrontElementsBeforeTargetElementRequest {\n\n constructor(\n public fItemsContainer: HTMLElement, // fGroupsContainer || fNodesContainer || fConnectionsContainer\n public allElements: Element[],\n public elementsThatShouldBeInFront: Element[],\n public targetIndex: number\n ) {\n }\n}\n","import { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(MoveFrontElementsBeforeTargetElementRequest)\nexport class MoveFrontElementsBeforeTargetElementExecution implements IExecution<MoveFrontElementsBeforeTargetElementRequest, void> {\n\n public handle(request: MoveFrontElementsBeforeTargetElementRequest): void {\n const elementsToMove: Element[] = [];\n for (let i = request.targetIndex + 1; i < request.allElements.length; i++) {\n const element = request.allElements[ i ];\n if (!request.elementsThatShouldBeInFront.includes(element)) {\n elementsToMove.push(element);\n }\n }\n elementsToMove.forEach((x) => {\n request.fItemsContainer.removeChild(x);\n request.fItemsContainer.insertBefore(x, request.allElements[ request.targetIndex ]);\n });\n }\n}\n","import { ICanChangeSelection } from '../../mixins';\n\nexport class UpdateItemAndChildrenLayersRequest {\n\n constructor(\n public item: ICanChangeSelection,\n public itemContainer: HTMLElement,\n ) {\n }\n}\n","export class GetDeepChildrenNodesAndGroupsRequest {\n\n constructor(\n public fId: string\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetDeepChildrenNodesAndGroupsRequest } from './get-deep-children-nodes-and-groups.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetDeepChildrenNodesAndGroupsRequest)\nexport class GetDeepChildrenNodesAndGroupsExecution\n implements IExecution<GetDeepChildrenNodesAndGroupsRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetDeepChildrenNodesAndGroupsRequest): FNodeBase[] {\n return this.getChildrenNodes(request.fId);\n }\n\n private getChildrenNodes(fId: string, visited: Set<string> = new Set()): FNodeBase[] {\n if (visited.has(fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fId);\n }\n visited.add(fId);\n\n const result = this.fComponentsStore.fNodes.filter((x) => x.fParentId === fId);\n result.forEach((x) => {\n result.push(...this.getChildrenNodes(x.fId, visited));\n });\n return result;\n }\n}\n","import { UpdateItemAndChildrenLayersRequest } from './update-item-and-children-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../get-deep-children-nodes-and-groups';\nimport { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element';\n\n@Injectable()\n@FExecutionRegister(UpdateItemAndChildrenLayersRequest)\nexport class UpdateItemAndChildrenLayersExecution implements IExecution<UpdateItemAndChildrenLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fConnectionsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: UpdateItemAndChildrenLayersRequest): void {\n\n switch (request.itemContainer) {\n case this.fGroupsContainer:\n this.handleGroup(request);\n break;\n case this.fNodesContainer:\n this.handleNode(request);\n break;\n case this.fConnectionsContainer:\n this.handleConnection(request);\n break;\n default:\n throw new Error('Unknown container');\n }\n }\n\n private handleGroup(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenGroups = this.getChildrenGroups(childrenNodesAndGroups);\n this.updateLayers(this.fGroupsContainer, request.item.hostElement as HTMLElement, childrenGroups);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n if (childrenNodes.length) {\n this.updateLayers(this.fNodesContainer, childrenNodes[ 0 ], childrenNodes);\n }\n }\n\n private handleNode(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, childrenNodes);\n }\n\n private handleConnection(request: UpdateItemAndChildrenLayersRequest): void {\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, []);\n }\n\n private updateLayers(itemContainer: HTMLElement, item: HTMLElement, elementsThatShouldBeInFront: HTMLElement[]): void {\n const allElements = Array.from(itemContainer.children) as HTMLElement[];\n const targetIndex = allElements.findIndex((x) => x === item);\n if (this.isAnythingNeedToBeMoved(allElements, targetIndex, elementsThatShouldBeInFront)) {\n this.fMediator.send(\n new MoveFrontElementsBeforeTargetElementRequest(itemContainer, allElements, elementsThatShouldBeInFront, targetIndex)\n );\n }\n }\n\n private isAnythingNeedToBeMoved(allElements: HTMLElement[], targetIndex: number, elementsThatShouldBeInFront: HTMLElement[]): boolean {\n for (let i = targetIndex + 1; i < allElements.length; i++) {\n if (!elementsThatShouldBeInFront.includes(allElements[ i ])) {\n return true;\n }\n }\n return false;\n }\n\n private getChildrenGroups(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fGroupsContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fGroupsContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fNodesContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fNodesContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodesAndGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId)).map((x) => x.hostElement);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../../update-item-and-children-layers';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(SelectAndUpdateNodeLayerRequest)\nexport class SelectAndUpdateNodeLayerExecution implements IHandler<SelectAndUpdateNodeLayerRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n public handle(request: SelectAndUpdateNodeLayerRequest): void {\n this.selectNodeIfNotSelected(request.fNode);\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(request.fNode, request.fNode.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(fNode: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(fNode) && !fNode.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(fNode);\n fNode.select();\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { ClearSelectionExecution } from './clear-selection';\nimport { GetCurrentSelectionExecution } from './get-current-selection';\nimport { SelectExecution } from './select';\nimport { SelectAllExecution } from './select-all';\nimport { SelectAndUpdateNodeLayerExecution } from './select-and-update-node-layer';\nimport { GetCanBeSelectedItemsExecution } from './get-can-be-selected-items';\n\nexport const F_SELECTION_FEATURES = [\n\n ClearSelectionExecution,\n\n GetCanBeSelectedItemsExecution,\n\n GetCurrentSelectionExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution\n];\n","import { EventEmitter, inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { EmitSelectionChangeEventRequest } from './emit-selection-change-event-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\nimport { GetCurrentSelectionRequest, ICurrentSelection } from '../../f-selection';\nimport { NotifyTransformChangedRequest } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(EmitSelectionChangeEventRequest)\nexport class EmitSelectionChangeEventExecution implements IExecution<EmitSelectionChangeEventRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fSelectionChange(): EventEmitter<FSelectionChangeEvent> {\n return this._fComponentsStore.fDraggable!.fSelectionChange;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: EmitSelectionChangeEventRequest): void {\n if (\n !this._fDraggableDataContext.isSelectedChanged\n ) {\n return;\n }\n\n this._emitSelectionChange(this._getSelection());\n this._fDraggableDataContext.isSelectedChanged = false;\n this._fMediator.send<void>(new NotifyTransformChangedRequest());\n }\n\n private _getSelection(): ICurrentSelection {\n return this._fMediator.send<ICurrentSelection>(new GetCurrentSelectionRequest());\n }\n\n private _emitSelectionChange(selection: ICurrentSelection): void {\n this._fSelectionChange.emit(\n new FSelectionChangeEvent(selection.nodes, selection.groups, selection.connections)\n );\n }\n}\n","export class EndDragSequenceRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { EndDragSequenceRequest } from './end-drag-sequence-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(EndDragSequenceRequest)\nexport class EndDragSequenceExecution implements IExecution<EndDragSequenceRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: EndDragSequenceRequest): void {\n this._hostElement.classList.remove('f-dragging');\n\n this._fDraggableDataContext.reset();\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class OnPointerMoveRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { OnPointerMoveRequest } from './on-pointer-move-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\n\n@Injectable()\n@FExecutionRegister(OnPointerMoveRequest)\nexport class OnPointerMoveExecution implements IExecution<OnPointerMoveRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: OnPointerMoveRequest): void {\n this._setDifferenceToDraggableItems(\n this._getDifferenceBetweenPointerAndPointerDown(request.event)\n );\n }\n\n private _setDifferenceToDraggableItems(difference: IPoint): void {\n this._fDraggableDataContext.draggableItems.forEach((item) => {\n item.onPointerMove({ ...difference });\n });\n }\n\n private _getDifferenceBetweenPointerAndPointerDown(event: IPointerEvent): IPoint {\n return this._getPointerPositionInCanvas(event)\n .div(this._fDraggableDataContext.onPointerDownScale)\n .sub(this._fDraggableDataContext.onPointerDownPosition);\n }\n\n private _getPointerPositionInCanvas(event: IPointerEvent): Point {\n return Point.fromPoint(event.getPosition()).elementTransform(this._hostElement);\n }\n}\n","export class InitializeDragSequenceRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { InitializeDragSequenceRequest } from './initialize-drag-sequence-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(InitializeDragSequenceRequest)\nexport class InitializeDragSequenceExecution implements IExecution<InitializeDragSequenceRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: InitializeDragSequenceRequest): void {\n this._fDraggableDataContext.reset();\n }\n}\n","export class PrepareDragSequenceRequest {\n\n}\n","export class StartDragSequenceRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { StartDragSequenceRequest } from './start-drag-sequence-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { EmitSelectionChangeEventRequest } from '../emit-selection-change-event';\n\n@Injectable()\n@FExecutionRegister(StartDragSequenceRequest)\nexport class StartDragSequenceExecution implements IExecution<StartDragSequenceRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: StartDragSequenceRequest): void {\n if (this._fDraggableDataContext.draggableItems.length > 0) {\n this._hostElement.classList.add('f-dragging');\n this._fMediator.send<void>(new EmitSelectionChangeEventRequest());\n }\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { PrepareDragSequenceRequest } from './prepare-drag-sequence-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { StartDragSequenceRequest } from '../start-drag-sequence';\n\n@Injectable()\n@FExecutionRegister(PrepareDragSequenceRequest)\nexport class PrepareDragSequenceExecution implements IExecution<PrepareDragSequenceRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: PrepareDragSequenceRequest): void {\n this._callPrepareDragSequence();\n\n this._fMediator.send<void>(new StartDragSequenceRequest());\n }\n\n private _callPrepareDragSequence(): void {\n this._fDraggableDataContext.draggableItems.forEach((item) => {\n item.prepareDragSequence?.();\n });\n }\n}\n","export class RemoveDndFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveDndFromStoreRequest } from './remove-dnd-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveDndFromStoreRequest)\nexport class RemoveDndFromStoreExecution implements IExecution<RemoveDndFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveDndFromStoreRequest): void {\n this._fComponentsStore.fDraggable = undefined;\n }\n}\n","import { AddDndToStoreExecution } from './add-dnd-to-store';\nimport { EmitSelectionChangeEventExecution } from './emit-selection-change-event';\nimport { RemoveDndFromStoreExecution } from './remove-dnd-from-store';\nimport { PrepareDragSequenceExecution } from './prepare-drag-sequence';\nimport { EndDragSequenceExecution } from './end-drag-sequence';\nimport { InitializeDragSequenceExecution } from './initialize-drag-sequence';\nimport { OnPointerMoveExecution } from './on-pointer-move';\nimport { IsDragStartedExecution } from './is-drag-started';\nimport { StartDragSequenceExecution } from './start-drag-sequence';\n\nexport const F_DRAGGABLE_FEATURES = [\n\n AddDndToStoreExecution,\n\n EmitSelectionChangeEventExecution,\n\n EndDragSequenceExecution,\n\n OnPointerMoveExecution,\n\n InitializeDragSequenceExecution,\n\n PrepareDragSequenceExecution,\n\n IsDragStartedExecution,\n\n StartDragSequenceExecution,\n\n RemoveDndFromStoreExecution\n];\n","import { FFlowBase } from '../../../f-flow';\n\nexport class AddFlowToStoreRequest {\n\n constructor(\n public fComponent: FFlowBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddFlowToStoreRequest } from './add-flow-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddFlowToStoreRequest)\nexport class AddFlowToStoreExecution implements IExecution<AddFlowToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddFlowToStoreRequest): void {\n this._fComponentsStore.fFlow = request.fComponent;\n }\n}\n","export class GetFlowRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetFlowRequest } from './get-flow-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(GetFlowRequest)\nexport class GetFlowExecution implements IExecution<GetFlowRequest, FFlowBase> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetFlowRequest): FFlowBase {\n const result = this._fComponentsStore.fFlow;\n if (!result) {\n throw new Error(`Flow not found in store`);\n }\n return result;\n }\n}\n","export class GetFlowHostElementRequest {\n\n}\n","import { GetFlowHostElementRequest } from './get-flow-host-element.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetFlowHostElementRequest)\nexport class GetFlowHostElementExecution implements IExecution<GetFlowHostElementRequest, HTMLElement> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(): HTMLElement {\n return this._fComponentsStore.flowHost;\n }\n}\n","export class GetFlowStateConnectionsRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IFFlowStateConnection } from '../i-f-flow-state-connection';\nimport { FConnectionBase } from '../../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateConnectionsRequest)\nexport class GetFlowStateConnectionsExecution implements IExecution<GetFlowStateConnectionsRequest, IFFlowStateConnection[]> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetFlowStateConnectionsRequest): IFFlowStateConnection[] {\n return this._fComponentsStore.fConnections.map(this._mapToConnectionState);\n }\n\n private _mapToConnectionState(x: FConnectionBase): IFFlowStateConnection {\n return {\n id: x.fId,\n fOutputId: x.fOutputId,\n fInputId: x.fInputId,\n fType: x.fType,\n fBehavior: x.fBehavior,\n isSelected: x.isSelected()\n }\n }\n}\n","import { Type } from '@angular/core';\n\nexport class GetFlowStateNodesRequest {\n\n constructor(\n public type: Type<any>\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IFFlowStateNode } from '../i-f-flow-state-node';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IFFlowStateConnector } from '../i-f-flow-state-connector';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateNodesRequest)\nexport class GetFlowStateNodesExecution implements IExecution<GetFlowStateNodesRequest, IFFlowStateNode[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateNodesRequest): IFFlowStateNode[] {\n return this.fComponentsStore.fNodes.filter((x) => x instanceof request.type).map((x) => {\n return {\n id: x.fId,\n parent: x.fParentId,\n position: x.position,\n size: x.size,\n fOutputs: this._getOutputs(x.hostElement),\n fInputs: this._getInputs(x.hostElement),\n isSelected: x.isSelected()\n };\n });\n }\n\n private _getOutputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fOutputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.fId,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n\n private _getInputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fInputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.fId,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n}\n","export class GetFlowStateRequest {\n}\n","import { GetFlowStateRequest } from './get-flow-state.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IFFlowState } from './i-f-flow-state';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FGroupDirective, FNodeDirective } from '../../../f-node';\nimport { IPoint, ITransformModel, PointExtensions } from '@foblex/2d';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateRequest)\nexport class GetFlowStateExecution implements IExecution<GetFlowStateRequest, IFFlowState> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(payload: GetFlowStateRequest): IFFlowState {\n return {\n position: this._getCanvasPosition(this._fComponentsStore.fCanvas!.transform),\n scale: this._fComponentsStore.fCanvas!.transform.scale,\n nodes: this._fMediator.send(new GetFlowStateNodesRequest(FNodeDirective)),\n groups: this._fMediator.send(new GetFlowStateNodesRequest(FGroupDirective)),\n connections: this._fMediator.send(new GetFlowStateConnectionsRequest())\n }\n }\n\n private _getCanvasPosition(transform: ITransformModel): IPoint {\n return PointExtensions.sum(transform.position, transform.scaledPosition);\n }\n}\n\n\n\n","import { GetFlowStateExecution } from './get-flow-state.execution';\nimport { GetFlowStateNodesExecution } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsExecution } from './get-flow-state-connections';\n\nexport const GET_FLOW_STATE_PROVIDERS = [\n\n GetFlowStateExecution,\n\n GetFlowStateNodesExecution,\n\n GetFlowStateConnectionsExecution\n];\n","export class RemoveFlowFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveFlowFromStoreRequest } from './remove-flow-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveFlowFromStoreRequest)\nexport class RemoveFlowFromStoreExecution implements IExecution<RemoveFlowFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveFlowFromStoreRequest): void {\n this._fComponentsStore.fFlow = undefined;\n }\n}\n","import { GetFlowHostElementExecution } from './get-flow-host-element';\nimport { AddFlowToStoreExecution } from './add-flow-to-store';\nimport { RemoveFlowFromStoreExecution } from './remove-flow-from-store';\nimport { GetFlowExecution } from './get-flow';\nimport { GET_FLOW_STATE_PROVIDERS } from './get-flow-state';\n\nexport const F_FLOW_FEATURES = [\n\n AddFlowToStoreExecution,\n\n GetFlowExecution,\n\n GetFlowHostElementExecution,\n\n ...GET_FLOW_STATE_PROVIDERS,\n\n RemoveFlowFromStoreExecution\n];\n","import { FLineAlignmentBase } from '../../../f-line-alignment';\n\nexport class AddLineAlignmentToStoreRequest {\n\n constructor(\n public fComponent: FLineAlignmentBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddLineAlignmentToStoreRequest } from './add-line-alignment-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddLineAlignmentToStoreRequest)\nexport class AddLineAlignmentToStoreExecution implements IExecution<AddLineAlignmentToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddLineAlignmentToStoreRequest): void {\n this._fComponentsStore.fLineAlignment = request.fComponent;\n }\n}\n","export class RemoveLineAlignmentFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveLineAlignmentFromStoreRequest } from './remove-line-alignment-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveLineAlignmentFromStoreRequest)\nexport class RemoveLineAlignmentFromStoreExecution implements IExecution<RemoveLineAlignmentFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveLineAlignmentFromStoreRequest): void {\n this._fComponentsStore.fLineAlignment = undefined;\n }\n}\n","import { AddLineAlignmentToStoreExecution } from './add-line-alignment-to-store';\nimport { RemoveLineAlignmentFromStoreExecution } from './remove-line-alignment-from-store';\n\nexport const F_LINE_ALIGNMENT_FEATURES = [\n\n AddLineAlignmentToStoreExecution,\n\n RemoveLineAlignmentFromStoreExecution\n];\n","import { FNodeBase } from '../../../f-node';\n\nexport class AddNodeToStoreRequest {\n\n constructor(\n public fComponent: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddNodeToStoreRequest } from './add-node-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddNodeToStoreRequest)\nexport class AddNodeToStoreExecution implements IExecution<AddNodeToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddNodeToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fNodes, request.fComponent);\n }\n}\n","export class CalculateNodesBoundingBoxRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxRequest } from './calculate-nodes-bounding-box.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(CalculateNodesBoundingBoxRequest)\nexport class CalculateNodesBoundingBoxExecution implements IExecution<CalculateNodesBoundingBoxRequest, IRect | null> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateNodesBoundingBoxRequest): IRect | null {\n return RectExtensions.union(this._getNodesRects());\n }\n\n private _getNodesRects(): IRect[] {\n return this._fComponentsStore.fNodes.map((x) => {\n return this._getElementRect(x.hostElement);\n });\n }\n\n private _getElementRect(element: HTMLElement | SVGElement): IRect {\n return RectExtensions.fromElement(element)\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class CalculateNodesBoundingBoxNormalizedPositionRequest {\n\n constructor(\n public fNodes?: FNodeBase[],\n ) {\n }\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxNormalizedPositionRequest } from './calculate-nodes-bounding-box-normalized-position.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(CalculateNodesBoundingBoxNormalizedPositionRequest)\nexport class CalculateNodesBoundingBoxNormalizedPositionExecution implements IExecution<CalculateNodesBoundingBoxNormalizedPositionRequest, IRect | null> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateNodesBoundingBoxNormalizedPositionRequest): IRect | null {\n return RectExtensions.union(this._getNodesRects(request.fNodes || this._fComponentsStore.fNodes));\n }\n\n private _getNodesRects(fNodes: FNodeBase[]): IRect[] {\n return fNodes.map((x) => {\n return this._getElementRect(x, RectExtensions.fromElement(x.hostElement));\n });\n }\n\n private _getElementRect(fNode: FNodeBase, rect: IRect): IRect {\n return RectExtensions.initialize(fNode.position.x, fNode.position.y, rect.width, rect.height)\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodePaddingRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodePaddingRequest } from './get-node-padding.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(GetNodePaddingRequest)\nexport class GetNodePaddingExecution\n implements IExecution<GetNodePaddingRequest, [ number, number, number, number ]> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: GetNodePaddingRequest): [ number, number, number, number ] {\n return request.fNode.fIncludePadding ? this.getPaddingData(request.fNode, request.rect) : [ 0, 0, 0, 0 ];\n }\n\n private getPaddingData(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n const style = this.fBrowser.window.getComputedStyle(node.hostElement);\n return [\n this.fBrowser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)\n ];\n }\n}\n","export class GetNodesRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetNodesRequest } from './get-nodes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodesRequest)\nexport class GetNodesExecution implements IExecution<GetNodesRequest, FNodeBase[]> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetNodesRequest): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetParentNodesRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetParentNodesRequest } from './get-parent-nodes.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetParentNodesRequest)\nexport class GetParentNodesExecution\n implements IExecution<GetParentNodesRequest, FNodeBase[]> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetParentNodesRequest): FNodeBase[] {\n return this._getParentNodes(request.fNode, new Set<string>(), []);\n }\n\n private _getParentNodes(fNode: FNodeBase, visited: Set<string>, result: FNodeBase[]): FNodeBase[] {\n if (visited.has(fNode.fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);\n }\n visited.add(fNode.fId);\n\n const parent = this._fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);\n if (!parent) {\n return result;\n }\n\n result.push(parent);\n return this._getParentNodes(parent, visited, result);\n }\n}\n","import { DestroyRef } from '@angular/core';\nimport { FNodeBase } from '../../../f-node';\n\nexport class UpdateNodeWhenStateOrSizeChangedRequest {\n\n constructor(\n public fComponent: FNodeBase,\n public destroyRef: DestroyRef,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { UpdateNodeWhenStateOrSizeChangedRequest } from './update-node-when-state-or-size-changed-request';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../../../f-connectors';\nimport { NotifyDataChangedRequest } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\nimport { FResizeChannel } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(UpdateNodeWhenStateOrSizeChangedRequest)\nexport class UpdateNodeWhenStateOrSizeChangedExecution\n implements IExecution<UpdateNodeWhenStateOrSizeChangedRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: UpdateNodeWhenStateOrSizeChangedRequest): void {\n const { hostElement, connectors, stateChanges } = request.fComponent;\n\n new FChannelHub(\n new FResizeChannel(hostElement),\n stateChanges\n ).pipe(notifyOnStart(), debounceTime(10)).listen(request.destroyRef, () => {\n this._calculateConnectorsConnectableSide(connectors, hostElement);\n this._fMediator.send<void>(new NotifyDataChangedRequest());\n });\n }\n\n private _calculateConnectorsConnectableSide(fConnectors: FConnectorBase[], hostElement: HTMLElement | SVGElement): void {\n fConnectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, hostElement)\n );\n });\n }\n}\n\n","import { FNodeBase } from '../../../f-node';\n\nexport class RemoveNodeFromStoreRequest {\n\n constructor(\n public fComponent: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveNodeFromStoreRequest } from './remove-node-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveNodeFromStoreRequest)\nexport class RemoveNodeFromStoreExecution implements IExecution<RemoveNodeFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveNodeFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fNodes, request.fComponent);\n }\n}\n","import { AddNodeToStoreExecution } from './add-node-to-store';\nimport { RemoveNodeFromStoreExecution } from './remove-node-from-store';\nimport { UpdateNodeWhenStateOrSizeChangedExecution } from './update-node-when-state-or-size-changed';\nimport { GetNodesExecution } from './get-nodes';\nimport { CalculateNodesBoundingBoxExecution } from './calculate-nodes-bounding-box';\nimport {\n CalculateNodesBoundingBoxNormalizedPositionExecution\n} from './calculate-nodes-bounding-box-normalized-position';\nimport { GetNodePaddingExecution } from './get-node-padding';\nimport { GetParentNodesExecution } from './get-parent-nodes';\n\nexport const F_NODE_FEATURES = [\n\n AddNodeToStoreExecution,\n\n CalculateNodesBoundingBoxExecution,\n\n CalculateNodesBoundingBoxNormalizedPositionExecution,\n\n GetNodePaddingExecution,\n\n GetNodesExecution,\n\n GetParentNodesExecution,\n\n UpdateNodeWhenStateOrSizeChangedExecution,\n\n RemoveNodeFromStoreExecution\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class GetNormalizedPointRequest {\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { inject, Injectable } from '@angular/core';\nimport { GetNormalizedPointRequest } from './get-normalized-point-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedPointRequest)\nexport class GetNormalizedPointExecution implements IExecution<GetNormalizedPointRequest, IPoint> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: GetNormalizedPointRequest): IPoint {\n return Point.fromPoint(request.position).elementTransform(this._fComponentsStore.flowHost)\n .sub(this._transform.scaledPosition).sub(this._transform.position).div(this._transform.scale);\n }\n}\n","export class SortNodeLayersRequest {\n\n}\n","import { SortNodeLayersRequest } from './sort-node-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortNodeLayersRequest)\nexport class SortNodeLayersExecution implements IExecution<SortNodeLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fNodesContainerElements(): HTMLElement[] {\n return Array.from(this.fNodesContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n }\n\n public handle(request: SortNodeLayersRequest): void {\n this.getGroups().forEach((parent: FNodeBase) => {\n this.moveChildrenNodes(this.getSortedChildrenNodes(parent));\n });\n }\n\n private getGroups(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fGroupsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenNodes(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fNodesContainerElements;\n return this.getChildrenNodes(parent.fId)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fNodesContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenNodes(\n sortedChildrenGroups: HTMLElement[],\n ): void {\n const fragment = this.fBrowser.document.createDocumentFragment();\n sortedChildrenGroups.forEach((childGroup: HTMLElement) => {\n fragment.appendChild(childGroup); // Append automatically removes the element from its current position\n });\n this.fNodesContainer.appendChild(fragment);\n }\n}\n","export class SortItemsByParentRequest {\n\n constructor(\n public fItemsContainer: HTMLElement // fGroupsContainer || fNodesContainer\n ) {\n }\n}\n","import { SortItemsByParentRequest } from './sort-items-by-parent.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortItemsByParentRequest)\nexport class SortItemsByParentExecution implements IExecution<SortItemsByParentRequest, void> {\n\n private fItemsContainer!: HTMLElement;\n\n private get fItemsFromContainer(): HTMLElement[] {\n return Array.from(this.fItemsContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: SortItemsByParentRequest): void {\n this.fItemsContainer = request.fItemsContainer;\n this.getItems().forEach((parent: FNodeBase) => {\n this.moveChildrenItems(this.getSortedChildrenItems(parent), parent);\n });\n }\n\n private getItems(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fItemsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenItems(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fItemsFromContainer;\n const parentIndex = allElements.indexOf(parent.hostElement);\n return this.getChildrenGroups(parent.fId)\n .filter((child: HTMLElement) => allElements.indexOf(child) < parentIndex)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fItemsContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenItems(\n sortedChildrenItems: HTMLElement[],\n parent: FNodeBase,\n ): void {\n let nextSibling = parent.hostElement.nextElementSibling;\n\n const fragment = this.fBrowser.document.createDocumentFragment();\n\n sortedChildrenItems.forEach((child: HTMLElement) => {\n fragment.appendChild(child); // Append automatically removes the element from its current position\n });\n this.fItemsContainer.insertBefore(fragment, nextSibling);\n }\n}\n","export class SortItemLayersRequest {\n\n}\n","import { SortItemLayersRequest } from './sort-item-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SortNodeLayersRequest } from './sort-node-layers-by-groups';\nimport { SortItemsByParentRequest } from './sort-items-by-parent';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SortItemLayersRequest)\nexport class SortItemLayersExecution implements IExecution<SortItemLayersRequest, void> {\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: SortItemLayersRequest): void {\n if(!this.fComponentsStore.fCanvas) {\n return;\n }\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas.fGroupsContainer.nativeElement));\n this.fMediator.send(new SortNodeLayersRequest());\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas.fNodesContainer.nativeElement));\n }\n}\n","import { BrowserService } from '@foblex/platform';\n\nexport function createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","export function isMobile(): boolean {\n // @ts-ignore\n return /android|iPad|iPhone|iPod/i.test(navigator.userAgent || navigator.vendor || window[ 'opera' ])\n}\n","export function LogExecutionTime(label?: string): MethodDecorator {\n return function (\n target: Object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<any>\n ): TypedPropertyDescriptor<any> | void {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]) {\n console.time(label || String(propertyKey));\n const result = originalMethod.apply(this, args);\n\n if (result instanceof Promise) {\n return result.finally(() => console.timeEnd(label || String(propertyKey)));\n }\n\n console.timeEnd(label || String(propertyKey));\n return result;\n };\n\n return descriptor;\n };\n}\n","import { GetNormalizedElementRectExecution } from './get-normalized-element-rect';\nimport {\n MoveFrontElementsBeforeTargetElementExecution,\n UpdateItemAndChildrenLayersExecution\n} from './update-item-and-children-layers';\nimport { GetNormalizedPointExecution } from './get-normalized-point';\nimport { SortItemLayersExecution, SortItemsByParentExecution, SortNodeLayersExecution } from './sort-item-layers';\nimport { GetDeepChildrenNodesAndGroupsExecution } from './get-deep-children-nodes-and-groups';\nimport { GetElementRoundedRectExecution } from './get-element-rounded-rect';\nimport { F_SELECTION_FEATURES } from './f-selection';\nimport { F_BACKGROUND_FEATURES } from './f-background';\nimport { F_CANVAS_FEATURES } from './f-canvas';\nimport { F_CONNECTION_FEATURES } from './f-connection';\nimport { F_CONNECTORS_FEATURES } from './f-connectors';\nimport { F_FLOW_FEATURES } from './f-flow';\nimport { F_DRAGGABLE_FEATURES } from './f-draggable';\nimport { F_NODE_FEATURES } from './f-node';\nimport { F_LINE_ALIGNMENT_FEATURES } from './f-line-alignment';\n\nexport const COMMON_PROVIDERS = [\n\n ...F_CANVAS_FEATURES,\n\n ...F_CONNECTION_FEATURES,\n\n ...F_BACKGROUND_FEATURES,\n\n ...F_CONNECTORS_FEATURES,\n\n ...F_DRAGGABLE_FEATURES,\n\n ...F_FLOW_FEATURES,\n\n ...F_LINE_ALIGNMENT_FEATURES,\n\n ...F_NODE_FEATURES,\n\n GetElementRoundedRectExecution,\n\n ...F_SELECTION_FEATURES,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetNormalizedElementRectExecution,\n\n GetNormalizedPointExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n];\n","import {\n ChangeDetectionStrategy,\n Component, DestroyRef,\n ElementRef, inject, Input, OnChanges,\n OnInit, SimpleChanges\n} from \"@angular/core\";\nimport {\n IPoint, ISize, ITransformModel,\n PointExtensions, SizeExtensions, TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { createSVGElement } from '../../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { FChannel, FChannelHub, notifyOnStart } from '../../reactivity';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-rect-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FRectPatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FRectPatternComponent implements OnInit, OnChanges, IFBackgroundPattern {\n\n private _destroyRef = inject(DestroyRef);\n\n private _elementReference = inject(ElementRef);\n\n private _stateChanges = new FChannel();\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n @Input()\n public vColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public hColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public vSize: number = 20;\n\n @Input()\n public hSize: number = 20;\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _size: ISize = SizeExtensions.initialize(this.hSize, this.vSize);\n\n private _pattern!: SVGPatternElement;\n private _vLine!: SVGLineElement;\n private _hLine!: SVGLineElement;\n\n constructor(\n private _fBrowser: BrowserService\n ) {\n this._createPattern();\n }\n\n private _createPattern(): void {\n this._pattern = createSVGElement('pattern', this._fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._vLine = createSVGElement('line', this._fBrowser);\n this._pattern.appendChild(this._vLine);\n\n this._hLine = createSVGElement('line', this._fBrowser);\n this._pattern.appendChild(this._hLine);\n }\n\n public ngOnInit(): void {\n this._listenStateChanges();\n }\n\n private _listenStateChanges(): void {\n new FChannelHub(this._stateChanges).pipe(notifyOnStart()).listen(this._destroyRef, () => this._redraw());\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['vSize'] || changes['hSize'] || changes['vColor'] || changes['hColor']) {\n this._refresh();\n }\n }\n\n private _redraw(): void {\n this._calculatePattern();\n this._redrawPattern();\n\n this.redrawLine(this._vLine, this.vColor, this._size.width, 0, this._size.width, this._size.height);\n this.redrawLine(this._hLine, this.hColor, 0, this._size.height, this._size.width, this._size.height);\n }\n\n private _calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._size = SizeExtensions.initialize(this.hSize * this._transform.scale, this.vSize * this._transform.scale);\n }\n\n private _redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._size.width }`);\n this._pattern.setAttribute('height', `${ this._size.height }`);\n }\n\n private redrawLine(line: SVGLineElement, color: string, x1: number, y1: number, x2: number, y2: number): void {\n line.setAttribute('stroke', `${ color }`);\n line.setAttribute('x1', `${ x1 }`);\n line.setAttribute('x2', `${ x2 }`);\n line.setAttribute('y1', `${ y1 }`);\n line.setAttribute('y2', `${ y2 }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._refresh();\n }\n\n private _refresh(): void {\n this._stateChanges.notify();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, DestroyRef,\n ElementRef, inject, Input, OnChanges, OnDestroy,\n OnInit, SimpleChanges\n} from \"@angular/core\";\nimport {\n IPoint,\n ITransformModel,\n PointExtensions,\n TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../../domain';\nimport { FChannel, FChannelHub, notifyOnStart } from '../../reactivity';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-circle-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FCirclePatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FCirclePatternComponent implements OnInit, OnChanges, IFBackgroundPattern {\n\n private _destroyRef = inject(DestroyRef);\n\n private _elementReference = inject(ElementRef);\n\n private _stateChanges = new FChannel();\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n @Input()\n public color: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public radius: number = 20;\n\n private _scaledRadius: number = 20;\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _pattern!: SVGPatternElement;\n private _circle!: SVGCircleElement;\n\n constructor(\n private _fBrowser: BrowserService\n ) {\n this._createPattern();\n }\n\n private _createPattern(): void {\n this._pattern = createSVGElement('pattern', this._fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._circle = createSVGElement('circle', this._fBrowser);\n this._pattern.appendChild(this._circle);\n }\n\n public ngOnInit(): void {\n this._listenStateChanges();\n }\n\n private _listenStateChanges(): void {\n new FChannelHub(this._stateChanges).pipe(notifyOnStart()).listen(this._destroyRef, () => this._redraw());\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['radius'] || changes['color']) {\n this._refresh();\n }\n }\n\n private _redraw(): void {\n this._calculatePattern();\n this._redrawPattern();\n this._redrawElement();\n }\n\n private _calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._scaledRadius = this.radius * this._transform.scale;\n }\n\n private _redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._scaledRadius }`);\n this._pattern.setAttribute('height', `${ this._scaledRadius }`);\n }\n\n private _redrawElement(): void {\n this._circle.setAttribute('fill', this.color);\n this._circle.setAttribute('cx', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('cy', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('r', `${ this._scaledRadius / this.radius }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._refresh();\n }\n\n private _refresh(): void {\n this._stateChanges.notify();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { ITransformModel } from '@foblex/2d';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_BACKGROUND = new InjectionToken<FBackgroundBase>('F_BACKGROUND');\n\n@Directive()\nexport abstract class FBackgroundBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract setTransform(transform: ITransformModel): void;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ContentChild,\n ElementRef, inject, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { ITransformModel } from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from './domain';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddBackgroundToStoreRequest,\n AddPatternToBackgroundRequest,\n RemoveBackgroundFromStoreRequest\n} from '../domain';\n\n@Component({\n selector: \"f-background\",\n template: \"<svg><ng-content></ng-content></svg>\",\n styleUrls: [ \"./f-background.component.scss\" ],\n host: {\n 'class': 'f-component f-background'\n },\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FBackgroundComponent\n extends FBackgroundBase implements OnInit, AfterContentInit, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @ContentChild(F_BACKGROUND_PATTERN, { static: false })\n public fBackgroundPattern: IFBackgroundPattern | undefined;\n\n private _fMediator = inject(FMediator);\n\n public ngOnInit(): void {\n this._fMediator.send(new AddBackgroundToStoreRequest(this));\n }\n\n public ngAfterContentInit(): void {\n this._fMediator.send(new AddPatternToBackgroundRequest(this.fBackgroundPattern!));\n }\n\n public setTransform(transform: ITransformModel): void {\n this.fBackgroundPattern?.setTransform(transform);\n }\n\n public ngOnDestroy() {\n this._fMediator.send(new RemoveBackgroundFromStoreRequest(this));\n }\n}\n","import { FBackgroundComponent } from './f-background.component';\nimport { FRectPatternComponent } from './f-rect-pattern';\nimport { FCirclePatternComponent } from './f-circle-pattern';\n\nexport const F_BACKGROUND_PROVIDERS = [\n\n FBackgroundComponent,\n\n FRectPatternComponent,\n\n FCirclePatternComponent\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import { PointExtensions, TransformModelExtensions, IPoint } from '@foblex/2d';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public abstract fCanvasChange: EventEmitter<FCanvasChangeEvent>;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fGroupsContainer: ElementRef<HTMLElement>;\n\n public abstract fNodesContainer: ElementRef<HTMLElement>;\n\n public abstract fConnectionsContainer: ElementRef<HTMLElement>;\n\n public transform = TransformModelExtensions.default();\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = position;\n }\n\n public abstract setZoom(scale: number, toPosition: IPoint): void;\n\n public abstract resetZoom(): void;\n\n public emitCanvasChangeEvent(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter, inject, Input, OnDestroy, OnInit, Output, ViewChild,\n} from \"@angular/core\";\nimport {\n FCanvasBase, F_CANVAS\n} from './f-canvas-base';\nimport { IPoint, PointExtensions, TransformModelExtensions } from '@foblex/2d';\nimport {\n FCanvasChangeEvent,\n} from './domain';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddCanvasToStoreRequest,\n CenterGroupOrNodeRequest,\n FitToFlowRequest,\n InputCanvasPositionRequest,\n InputCanvasScaleRequest, isMobile, RemoveCanvasFromStoreRequest,\n ResetScaleAndCenterRequest, ResetScaleRequest, SetBackgroundTransformRequest, transitionEnd, UpdateScaleRequest,\n} from '../domain';\nimport { NotifyTransformChangedRequest } from '../f-storage';\n\n@Component({\n selector: 'f-canvas',\n templateUrl: './f-canvas.component.html',\n styleUrls: [ './f-canvas.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-canvas',\n },\n providers: [\n { provide: F_CANVAS, useExisting: FCanvasComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FCanvasComponent extends FCanvasBase implements OnInit, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n\n @Output()\n public override fCanvasChange: EventEmitter<FCanvasChangeEvent> = new EventEmitter<FCanvasChangeEvent>();\n\n @Input()\n public set position(value: IPoint | undefined) {\n this._fMediator.send(new InputCanvasPositionRequest(this.transform, value));\n }\n\n @Input()\n public set scale(value: number | undefined) {\n this._fMediator.send(new InputCanvasScaleRequest(this.transform, value));\n }\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @ViewChild('fGroupsContainer', { static: true })\n public override fGroupsContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fNodesContainer', { static: true })\n public override fNodesContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fConnectionsContainer', { static: true })\n public override fConnectionsContainer!: ElementRef<HTMLElement>;\n\n private _fMediator = inject(FMediator);\n\n public ngOnInit() {\n this._fMediator.send(new AddCanvasToStoreRequest(this));\n }\n\n public override redraw(): void {\n this._fMediator.send(new SetBackgroundTransformRequest(this.transform));\n this.hostElement.setAttribute(\"style\", `transform: ${ TransformModelExtensions.toString(this.transform) }`);\n this._fMediator.send(new NotifyTransformChangedRequest());\n }\n\n public override redrawWithAnimation(): void {\n this._fMediator.send(new SetBackgroundTransformRequest(this.transform));\n this.hostElement.setAttribute(\"style\", `transition: transform ${ isMobile() ? 80 : 150 }ms ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n transitionEnd(this.hostElement, () => this.redraw());\n }\n\n public centerGroupOrNode(id: string, animated: boolean = true): void {\n this._fMediator.send(new CenterGroupOrNodeRequest(id, animated));\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n this._fMediator.send(new FitToFlowRequest(toCenter, animated));\n }\n\n public resetScaleAndCenter(animated: boolean = true): void {\n this._fMediator.send(new ResetScaleAndCenterRequest(animated));\n }\n\n public override setZoom(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this._fMediator.send(new UpdateScaleRequest(scale, toPosition));\n }\n\n public override resetZoom(): void {\n this._fMediator.send(new ResetScaleRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.send(new RemoveCanvasFromStoreRequest());\n }\n}\n","<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","import { FCanvasComponent } from './f-canvas.component';\n\nexport const F_CANVAS_PROVIDERS = [\n\n FCanvasComponent,\n];\n","import { IRect, RectExtensions } from '@foblex/2d';\n\nexport class FMinimapData {\n\n constructor(\n public element: SVGSVGElement,\n public scale: number = 1,\n public viewBox: IRect = RectExtensions.initialize(0, 0, 0, 0)\n ) {\n }\n}\n","import {\n Directive, ElementRef, inject, Input, OnInit,\n} from \"@angular/core\";\nimport { setRectToViewBox } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { FMinimapData, IFMinimapScaleAndViewBox, MinimapCalculateSvgScaleAndViewBoxRequest } from './domain';\n\n@Directive({\n selector: 'svg[fMinimapFlow]'\n})\nexport class FMinimapFlowDirective {\n\n @Input()\n public fMinSize: number = 1000;\n\n private _fMediator = inject(FMediator);\n\n private _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGSVGElement {\n return this._elementReference.nativeElement;\n }\n\n public model: FMinimapData = new FMinimapData(this.hostElement);\n\n public redraw(): void {\n const { scale, viewBox} = this._fMediator.send<IFMinimapScaleAndViewBox>(\n new MinimapCalculateSvgScaleAndViewBoxRequest(this.hostElement, this.fMinSize)\n );\n this.model = new FMinimapData(this.hostElement, scale, viewBox);\n\n setRectToViewBox(viewBox, this.hostElement);\n }\n}\n","import {\n Directive, ElementRef, inject,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { MinimapDrawNodesRequest } from './domain';\n\n@Directive({\n selector: 'g[fMinimapCanvas]'\n})\nexport class FMinimapCanvasDirective {\n\n private _fMediator = inject(FMediator);\n\n private _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGGElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(): void {\n this._clearCanvas();\n\n this._fMediator.send<SVGRectElement[]>(new MinimapDrawNodesRequest())\n .forEach((x) => {\n this.hostElement.appendChild(x);\n });\n }\n\n private _clearCanvas(): void {\n this.hostElement.innerHTML = '';\n }\n}\n","import { Directive, ElementRef, inject } from \"@angular/core\";\nimport { IRect, setRectToElement } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { MinimapCalculateViewBoxRequest } from './domain';\n\n@Directive({\n selector: 'rect[fMinimapView]',\n host: {\n 'class': 'f-component f-minimap-view',\n }\n})\nexport class FMinimapViewDirective {\n\n private _fMediator = inject(FMediator);\n\n private _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGGElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(): void {\n setRectToElement(\n this._fMediator.send<IRect>(new MinimapCalculateViewBoxRequest()),\n this.hostElement\n );\n }\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef,\n inject, Input, ViewChild,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { MinimapDragFinalizeRequest, MinimapDragPreparationRequest } from './domain';\nimport { ListenTransformChangesRequest } from '../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../reactivity';\nimport { BrowserService } from '@foblex/platform';\n\n@Component({\n selector: 'f-minimap',\n templateUrl: './f-minimap.component.html',\n styleUrls: [ './f-minimap.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-minimap',\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FMinimapComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FMinimapComponent implements AfterViewInit, IFDragAndDropPlugin {\n\n private _destroyRef = inject(DestroyRef);\n private _fMediator = inject(FMediator);\n private _fBrowser = inject(BrowserService);\n\n @ViewChild(FMinimapCanvasDirective, { static: true })\n public fMinimapCanvas!: FMinimapCanvasDirective;\n\n @ViewChild(FMinimapFlowDirective, { static: true })\n public fMinimapFlow!: FMinimapFlowDirective;\n\n @ViewChild(FMinimapViewDirective, { static: true })\n public fMinimapView!: FMinimapViewDirective;\n\n @Input()\n public fMinSize: number = 1000;\n\n public ngAfterViewInit(): void {\n this._listenTransformChanges();\n }\n\n private _listenTransformChanges(): void {\n this._fMediator.send<FChannelHub>(new ListenTransformChangesRequest()).pipe(\n notifyOnStart(), debounceTime(5)\n ).listen(this._destroyRef, () => this._redraw());\n }\n\n private _redraw(): void {\n if (!this._fBrowser.isBrowser()) {\n return;\n }\n this.fMinimapFlow.redraw();\n this.fMinimapView.redraw();\n this.fMinimapCanvas.redraw();\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this._fMediator.send(new MinimapDragPreparationRequest(event, this.fMinimapFlow.model));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this._fMediator.send(new MinimapDragFinalizeRequest(event));\n }\n}\n","<svg fMinimapFlow width=\"100%\" height=\"100%\" fLockedContext [fMinSize]=\"fMinSize\">\n <g fMinimapCanvas></g>\n <rect fMinimapView x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" stroke=\"none\"/>\n</svg>\n\n","import { FMinimapComponent } from './f-minimap.component';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\n\nexport const F_MINIMAP_PROVIDERS = [\n\n FMinimapComponent,\n\n FMinimapCanvasDirective,\n\n FMinimapViewDirective,\n\n FMinimapFlowDirective,\n];\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_FLOW = new InjectionToken<FFlowBase>('F_FLOW');\n\nexport abstract class FFlowBase implements IHasHostElement {\n\n public abstract fId: string;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fLoaded: EventEmitter<void>;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, DestroyRef, ElementRef, EventEmitter, inject,\n Input, OnDestroy, OnInit, Output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport {\n ClearSelectionRequest,\n CalculateNodesBoundingBoxNormalizedPositionRequest,\n GetNormalizedPointRequest,\n GetCurrentSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest,\n SelectRequest,\n IFFlowState,\n GetFlowStateRequest, RemoveFlowFromStoreRequest, AddFlowToStoreRequest, SortItemLayersRequest, ICurrentSelection\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n FDraggableDataContext\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport {\n NotifyDataChangedRequest,\n F_STORAGE_PROVIDERS,\n ListenCountChangesRequest,\n ListenDataChangesRequest\n} from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { COMMON_PROVIDERS } from '../domain';\nimport { F_DRAGGABLE_PROVIDERS } from '../f-draggable';\nimport { FChannelHub } from '../reactivity';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: 'f-flow',\n templateUrl: './f-flow.component.html',\n styleUrls: [ './f-flow.component.scss' ],\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-flow\",\n },\n providers: [\n FMediator,\n ...F_STORAGE_PROVIDERS,\n FDraggableDataContext,\n FConnectionFactory,\n ...COMMON_PROVIDERS,\n ...F_DRAGGABLE_PROVIDERS,\n { provide: F_FLOW, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n private _destroyRef = inject(DestroyRef);\n\n private _fMediator = inject(FMediator);\n\n private _elementReference = inject(ElementRef);\n\n @Input('fFlowId')\n public override fId: string = `f-flow-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @Output()\n public override fLoaded: EventEmitter<void> = new EventEmitter<void>();\n\n private _isLoaded: boolean = false;\n\n constructor(\n private fBrowser: BrowserService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this._fMediator.send(new AddFlowToStoreRequest(this));\n }\n\n public ngAfterContentInit(): void {\n if (!this.fBrowser.isBrowser()) {\n return;\n }\n this._listenCountChanges();\n this._listenDataChanges();\n }\n\n private _listenCountChanges(): void {\n this._fMediator.send<FChannelHub>(\n new ListenCountChangesRequest()\n ).listen(this._destroyRef, () => {\n this._fMediator.send(new SortItemLayersRequest())\n });\n }\n\n private _listenDataChanges(): void {\n this._fMediator.send<FChannelHub>(\n new ListenDataChangesRequest()\n ).listen(this._destroyRef,() => {\n this._fMediator.send(new RedrawConnectionsRequest());\n\n this._emitLoaded();\n });\n }\n\n private _emitLoaded(): void {\n if (!this._isLoaded) {\n this._isLoaded = true;\n this.fLoaded.emit();\n }\n }\n\n public redraw(): void {\n this._fMediator.send(new NotifyDataChangedRequest());\n }\n\n public reset(): void {\n this._isLoaded = false;\n }\n\n public getNodesBoundingBox(): IRect | null {\n return this._fMediator.send<IRect | null>(new CalculateNodesBoundingBoxNormalizedPositionRequest());\n }\n\n public getSelection(): ICurrentSelection {\n return this._fMediator.send<ICurrentSelection>(new GetCurrentSelectionRequest());\n }\n\n public getPositionInFlow(position: IPoint): IRect {\n return this._fMediator.send(new GetNormalizedPointRequest(position));\n }\n\n public getState(): IFFlowState {\n return this._fMediator.send(new GetFlowStateRequest());\n }\n\n public selectAll(): void {\n this._fMediator.send<void>(new SelectAllRequest());\n }\n\n public select(nodes: string[], connections: string[]): void {\n this._fMediator.send<void>(new SelectRequest(nodes, connections));\n }\n\n public clearSelection(): void {\n this._fMediator.send<void>(new ClearSelectionRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.send(new RemoveFlowFromStoreRequest());\n }\n}\n","<ng-container>\n <ng-content select=\"[fDefinitions]\"></ng-content>\n\n <ng-content select=\"f-background\"></ng-content>\n\n <ng-content select=\"f-line-alignment\"></ng-content>\n\n <ng-content select=\"f-canvas\"></ng-content>\n\n <ng-content select=\"f-selection-area\"></ng-content>\n\n <ng-content select=\"f-minimap\"></ng-content>\n</ng-container>\n","import { FFlowComponent } from './f-flow.component';\n\nexport const F_FLOW_PROVIDERS = [\n FFlowComponent\n];\n","import { EventExtensions } from '@foblex/drag-toolkit';\nimport { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { inject, InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../f-canvas';\nimport { isNode } from '../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport { GetCanvasRequest, GetFlowHostElementRequest } from '../domain';\nimport { IsDragStartedRequest } from '../domain';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n protected isEnabled: boolean = false;\n\n public abstract minimum: number;\n public abstract maximum: number;\n\n public abstract step: number;\n public abstract dblClickStep: number;\n\n private _listeners: Function = EventExtensions.emptyListener();\n\n private _fMediator = inject(FMediator);\n\n private get _fFlowHostElement(): HTMLElement {\n return this._fMediator.send(new GetFlowHostElementRequest());\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fMediator.send(new GetCanvasRequest());\n }\n\n private get _isDragStarted(): boolean {\n return this._fMediator.send<boolean>(new IsDragStartedRequest());\n }\n\n protected toggleZoom(): void {\n if (this.isEnabled) {\n this._subscribe();\n } else {\n this.dispose();\n }\n }\n\n private _subscribe(): void {\n this._listeners();\n if (!this._fFlowHostElement) {\n return;\n }\n\n this._fFlowHostElement.addEventListener('wheel', this._onWheel);\n this._fFlowHostElement.addEventListener('dblclick', this._onDoubleClick);\n this._listeners = () => {\n this._fFlowHostElement.removeEventListener('wheel', this._onWheel);\n this._fFlowHostElement.removeEventListener('dblclick', this._onDoubleClick);\n };\n }\n\n public getScale(): number {\n return this._fCanvas.transform.scale || 1;\n }\n\n private _onWheel = (event: WheelEvent) => {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this._isDragStarted || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = event.deltaY > 0 ? -1 : 1;\n const step = this.step;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this._fFlowHostElement);\n\n this._fCanvas.setZoom(result, pointerPositionInFlow);\n this._fCanvas.redraw();\n this._fCanvas.emitCanvasChangeEvent();\n }\n\n private _onDoubleClick = (event: MouseEvent) => {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this._isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = 1;\n const step = this.dblClickStep;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this._fFlowHostElement);\n this._fCanvas.setZoom(result, pointerPositionInFlow);\n this._fCanvas.redrawWithAnimation();\n this._fCanvas.emitCanvasChangeEvent();\n }\n\n private _onZoomToCenter(deltaY: number, position?: IPoint): void {\n const preventDefault = () => {\n };\n const rect = RectExtensions.fromElement(this._fFlowHostElement);\n\n this._onWheel({\n deltaY, preventDefault, clientX: position?.x || rect.gravityCenter.x, clientY: position?.y || rect.gravityCenter.y\n } as WheelEvent);\n }\n\n public zoomIn(position?: IPoint): void {\n this._onZoomToCenter(-1, position);\n }\n\n public zoomOut(position?: IPoint): void {\n this._onZoomToCenter(1, position);\n }\n\n public reset(): void {\n this._fCanvas.resetZoom();\n this._fCanvas.redraw();\n this._fCanvas.emitCanvasChangeEvent();\n }\n\n protected dispose(): void {\n this._listeners();\n this._listeners = EventExtensions.emptyListener();\n }\n}\n","import {\n AfterViewInit,\n Directive, Input, OnDestroy\n} from \"@angular/core\";\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { castToBoolean } from '@foblex/utils';\n\n@Directive({\n selector: \"f-canvas[fZoom]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements AfterViewInit, OnDestroy {\n\n @Input('fZoom')\n public get fFlowZoom(): boolean {\n return this.isEnabled;\n }\n\n public set fFlowZoom(isEnabled: boolean | undefined | string) {\n const value = castToBoolean(isEnabled);\n if (value !== this.isEnabled) {\n this.isEnabled = value;\n this.toggleZoom();\n }\n }\n\n @Input('fZoomMinimum')\n public override minimum: number = 0.1;\n\n @Input('fZoomMaximum')\n public override maximum: number = 4;\n\n @Input('fZoomStep')\n public override step: number = 0.1;\n\n @Input('fZoomDblClickStep')\n public override dblClickStep: number = 0.5;\n\n public ngAfterViewInit(): void {\n super.toggleZoom();\n }\n\n public ngOnDestroy(): void {\n super.dispose();\n }\n}\n","import { FZoomDirective } from './f-zoom.directive';\n\nexport const F_ZOOM_PROVIDERS = [\n\n FZoomDirective\n];\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { F_CONNECTION_PROVIDERS, } from './f-connection';\nimport { F_NODE_PROVIDERS } from './f-node';\nimport { F_FLOW_PROVIDERS } from './f-flow';\nimport { F_BACKGROUND_PROVIDERS } from './f-backgroud';\nimport { F_CANVAS_PROVIDERS } from './f-canvas';\nimport { F_CONNECTORS_PROVIDERS } from './f-connectors';\nimport { FDraggableDirective } from './f-draggable';\nimport { F_EXTERNAL_ITEM_PROVIDERS } from './f-external-item';\nimport { F_SELECTION_AREA_PROVIDERS } from './f-selection-area';\nimport { F_LINE_ALIGNMENT_PROVIDERS } from './f-line-alignment';\nimport { F_MINIMAP_PROVIDERS } from './f-minimap';\nimport { F_ZOOM_PROVIDERS } from './f-zoom';\n\n@NgModule({\n declarations: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uniqueId","i1.FComponentsStore","i2","createSVGElement","i2.FComponentsStore","MIXIN_BASE","i1.FConnectionTextPathDirective","i1.FConnectionFactory","i3.FConnectionTextComponent","i4.FConnectionDragHandleComponent","i5.FConnectionGradientComponent","i6.FConnectionPathComponent","i7.FConnectionSelectionComponent","i1.FDraggableDataContext","i2.FDraggableDataContext","i3","i1","i3.FConnectionBase","i3.FComponentsStore","OFFSET","i3.FDraggableDataContext","i4","i3.FExternalItemService","i1.FExternalItemService","i1.FMinimapCanvasDirective","i2.FMinimapViewDirective","i3.FMinimapFlowDirective","i1.FBackgroundComponent","i2.FRectPatternComponent","i3.FCirclePatternComponent","i4.FCanvasComponent","i5.FZoomDirective","i6.FConnectionTextComponent","i7.FConnectionTextPathDirective","i8.FConnectionDragHandleComponent","i9.FConnectionGradientComponent","i10.FConnectionPathComponent","i11.FConnectionSelectionComponent","i12.FConnectionComponent","i13.FConnectionCenterDirective","i14.FConnectionForCreateComponent","i15.FMarkerDirective","i16.FSnapConnectionComponent","i17.FNodeInputDirective","i18.FNodeOutletDirective","i19.FNodeOutputDirective","i20.FExternalItemDirective","i21.FFlowComponent","i22.FLineAlignmentComponent","i23.FMinimapComponent","i24.FMinimapCanvasDirective","i25.FMinimapViewDirective","i26.FMinimapFlowDirective","i27.FGroupDirective","i28.FNodeDirective","i29.FDragHandleDirective","i30.FResizeHandleDirective","i31.FSelectionAreaComponent"],"mappings":"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"}
1
+ {"version":3,"file":"foblex-flow.mjs","sources":["../../../projects/f-flow/src/f-backgroud/domain/i-f-background-pattern.ts","../../../projects/f-flow/src/domain/get-element-rounded-rect/get-element-rounded-rect-request.ts","../../../projects/f-flow/src/domain/get-element-rounded-rect/get-element-rounded-rect.execution.ts","../../../projects/f-flow/src/domain/f-background/add-background-to-store/add-background-to-store-request.ts","../../../projects/f-flow/src/f-storage/features/notify-data-changed/notify-data-changed-request.ts","../../../projects/f-flow/src/f-storage/features/notify-data-changed/notify-data-changed.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-components-data-changed/listen-data-changes-request.ts","../../../projects/f-flow/src/reactivity/debounce-time.ts","../../../projects/f-flow/src/reactivity/f-channel.ts","../../../projects/f-flow/src/reactivity/f-resize-channel.ts","../../../projects/f-flow/src/reactivity/f-channel-hub.ts","../../../projects/f-flow/src/reactivity/notify-on-start.ts","../../../projects/f-flow/src/f-storage/features/listen-components-data-changed/listen-data-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-count-changes/listen-count-changes-request.ts","../../../projects/f-flow/src/f-storage/features/listen-count-changes/listen-count-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-transform-changes/listen-transform-changes.request.ts","../../../projects/f-flow/src/f-storage/features/listen-transform-changes/listen-transform-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/notify-transform-changed/notify-transform-changed.request.ts","../../../projects/f-flow/src/f-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/features/notify-transform-changed/notify-transform-changed.execution.ts","../../../projects/f-flow/src/f-storage/providers.ts","../../../projects/f-flow/src/domain/f-background/add-background-to-store/add-background-to-store.execution.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.ts","../../../projects/f-flow/src/domain/f-background/remove-background-from-store/remove-background-from-store-request.ts","../../../projects/f-flow/src/domain/f-background/remove-background-from-store/remove-background-from-store.execution.ts","../../../projects/f-flow/src/domain/f-background/set-background-transform/set-background-transform-request.ts","../../../projects/f-flow/src/domain/f-background/set-background-transform/set-background-transform.execution.ts","../../../projects/f-flow/src/domain/f-background/providers.ts","../../../projects/f-flow/src/domain/f-canvas/add-canvas-to-store/add-canvas-to-store-request.ts","../../../projects/f-flow/src/domain/f-canvas/add-canvas-to-store/add-canvas-to-store.execution.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node-request.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node.execution.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow-request.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow.execution.ts","../../../projects/f-flow/src/domain/f-canvas/get-canvas/get-canvas-request.ts","../../../projects/f-flow/src/domain/f-canvas/get-canvas/get-canvas.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation-request.ts","../../../projects/f-flow/src/domain/transition-end.ts","../../../projects/f-flow/src/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation.execution.ts","../../../projects/f-flow/src/domain/f-canvas/remove-canvas-from-store/remove-canvas-from-store-request.ts","../../../projects/f-flow/src/domain/f-canvas/remove-canvas-from-store/remove-canvas-from-store.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/providers.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/domain/f-connection/create-connection-markers/create-connection-markers.execution.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.ts","../../../projects/f-flow/src/f-connectors/e-f-connectable-side.ts","../../../projects/f-flow/src/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/f-node/f-resize-handle/e-f-resize-handle-type.ts","../../../projects/f-flow/src/f-node/f-resize-handle/f-resize-handle.directive.ts","../../../projects/f-flow/src/f-node/f-rotate-handle/f-rotate-handle.directive.ts","../../../projects/f-flow/src/f-node/f-drag-handle.directive.ts","../../../projects/f-flow/src/mixins/change-selection/change-selection.ts","../../../projects/f-flow/src/mixins/change-visibility/change-visibility.ts","../../../projects/f-flow/src/f-node/f-node-base.ts","../../../projects/f-flow/src/f-node/f-group.directive.ts","../../../projects/f-flow/src/f-node/f-node.directive.ts","../../../projects/f-flow/src/f-node/is-node.ts","../../../projects/f-flow/src/f-node/providers.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/f-connectors/providers.ts","../../../projects/f-flow/src/f-connection/common/domain/f-bezier.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-segment.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-straight.path-builder.ts","../../../projects/f-flow/src/f-connection/common/f-connection-identifiers.ts","../../../projects/f-flow/src/f-connection/common/f-connection.injection-token.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text-path.directive.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/i-connection-text.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.html","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/i-connection-gradient.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.html","../../../projects/f-flow/src/f-connection/common/f-path/i-connection-path.ts","../../../projects/f-flow/src/f-connection/common/f-path/get-path-marker-id.ts","../../../projects/f-flow/src/f-connection/common/f-path/f-connection-path.component.ts","../../../projects/f-flow/src/f-connection/common/f-selection/f-connection-selection.component.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-builders.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-factory.ts","../../../projects/f-flow/src/f-connection/common/f-connection-base.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-behavior.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-type.ts","../../../projects/f-flow/src/f-connection/f-connection-center/f-connection-center.directive.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.html","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.ts","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.html","../../../projects/f-flow/src/f-connection/f-marker/e-f-marker-type.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker-base.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker.directive.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.html","../../../projects/f-flow/src/f-connection/providers.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.execution.ts","../../../projects/f-flow/src/domain/f-connection/redraw-connections/redraw-connections-request.ts","../../../projects/f-flow/src/domain/get-normalized-element-rect/get-normalized-element-rect-request.ts","../../../projects/f-flow/src/domain/get-normalized-element-rect/get-normalized-element-rect.execution.ts","../../../projects/f-flow/src/domain/f-connection/redraw-connections/redraw-connections.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-for-create-from-store/remove-connection-for-create-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-for-create-from-store/remove-connection-for-create-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-snap-connection-from-store/remove-snap-connection-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-snap-connection-from-store/remove-snap-connection-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/providers.ts","../../../projects/f-flow/src/domain/f-connectors/add-input-to-store/add-input-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-input-to-store/add-input-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/add-output-to-store/add-output-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-output-to-store/add-output-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.ts","../../../projects/f-flow/src/domain/f-connectors/calculate-closest-input/calculate-closest-input.execution.ts","../../../projects/f-flow/src/domain/f-connectors/find-input-at-position/find-input-at-position.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-draggable-data-context.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas.drag-handler.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.ts","../../../projects/f-flow/src/errors/create-error-class.ts","../../../projects/f-flow/src/errors/not-found-error.ts","../../../projects/f-flow/src/errors/conflict-error.ts","../../../projects/f-flow/src/errors/errors.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/f-create-connection.event.ts","../../../projects/f-flow/src/f-draggable/f-injector.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler-preparation/create-connection-drag-handler-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler-preparation/create-connection-drag-handler-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/f-reassign-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/providers.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/is-connection-under-node/f-node-intersected-with-connections.ts","../../../projects/f-flow/src/f-draggable/domain/is-connection-under-node/is-connection-under-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/providers.ts","../../../projects/f-flow/src/domain/f-draggable/is-drag-started/is-drag-started-request.ts","../../../projects/f-flow/src/domain/f-draggable/is-drag-started/is-drag-started.execution.ts","../../../projects/f-flow/src/f-draggable/node/connection-drag-handlers/base-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-drag-handlers/source-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-drag-handlers/source-target-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-drag-handlers/target-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.ts","../../../projects/f-flow/src/f-draggable/node/node.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/point-bounds-limiter.ts","../../../projects/f-flow/src/f-draggable/node/summary-node.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.ts","../../../projects/f-flow/src/f-draggable/node/line-alignment-preparation/line-alignment-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/line-alignment.drag-handler.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-element.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-service.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment-base.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment.component.ts","../../../projects/f-flow/src/f-line-alignment/providers.ts","../../../projects/f-flow/src/f-draggable/node/line-alignment-preparation/line-alignment-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-finalize/node-drag-to-parent-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/f-drop-to-group.event.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-finalize/node-drag-to-parent-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/resize-direction.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/providers.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.request.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.execution.ts","../../../projects/f-flow/src/f-draggable/single-select/providers.ts","../../../projects/f-flow/src/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.request.ts","../../../projects/f-flow/src/f-external-item/domain/external-item.drag-handler.ts","../../../projects/f-flow/src/f-external-item/domain/f-create-node.event.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/providers.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/providers.ts","../../../projects/f-flow/src/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.request.ts","../../../projects/f-flow/src/f-external-item/is-external-item.ts","../../../projects/f-flow/src/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.execution.ts","../../../projects/f-flow/src/f-external-item/domain/providers.ts","../../../projects/f-flow/src/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/f-external-item/providers.ts","../../../projects/f-flow/src/f-draggable/i-f-drag-and-drop-plugin.ts","../../../projects/f-flow/src/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/f-draggable/f-selection-change-event.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap.drag-handler.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.execution.ts","../../../projects/f-flow/src/f-minimap/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area.drag-handle.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.ts","../../../projects/f-flow/src/f-selection-area/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area-base.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area.component.ts","../../../projects/f-flow/src/f-selection-area/providers.ts","../../../projects/f-flow/src/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-connectors/find-input-at-position/find-input-at-position.execution.ts","../../../projects/f-flow/src/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.ts","../../../projects/f-flow/src/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.ts","../../../projects/f-flow/src/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.ts","../../../projects/f-flow/src/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.ts","../../../projects/f-flow/src/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.ts","../../../projects/f-flow/src/domain/css-cls.ts","../../../projects/f-flow/src/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-input-from-store/remove-input-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-output-from-store/remove-output-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-output-from-store/remove-output-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.ts","../../../projects/f-flow/src/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.execution.ts","../../../projects/f-flow/src/domain/f-connectors/providers.ts","../../../projects/f-flow/src/domain/f-draggable/add-dnd-to-store/add-dnd-to-store-request.ts","../../../projects/f-flow/src/domain/f-draggable/add-dnd-to-store/add-dnd-to-store.execution.ts","../../../projects/f-flow/src/domain/f-draggable/emit-selection-change-event/emit-selection-change-event-request.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items-request.ts","../../../projects/f-flow/src/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-current-selection/get-current-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/get-current-selection/get-current-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/select/select.request.ts","../../../projects/f-flow/src/domain/f-selection/select/select.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.ts","../../../projects/f-flow/src/domain/f-selection/providers.ts","../../../projects/f-flow/src/domain/f-draggable/emit-selection-change-event/emit-selection-change-event.execution.ts","../../../projects/f-flow/src/domain/f-draggable/end-drag-sequence/end-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/end-drag-sequence/end-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/on-pointer-move/on-pointer-move-request.ts","../../../projects/f-flow/src/domain/f-draggable/on-pointer-move/on-pointer-move.execution.ts","../../../projects/f-flow/src/domain/f-draggable/initialize-drag-sequence/initialize-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/initialize-drag-sequence/initialize-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/start-drag-sequence/start-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/start-drag-sequence/start-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/remove-dnd-from-store/remove-dnd-from-store-request.ts","../../../projects/f-flow/src/domain/f-draggable/remove-dnd-from-store/remove-dnd-from-store.execution.ts","../../../projects/f-flow/src/domain/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-flow/add-flow-to-store/add-flow-to-store-request.ts","../../../projects/f-flow/src/domain/f-flow/add-flow-to-store/add-flow-to-store.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow/get-flow-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow/get-flow.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-host-element/get-flow-host-element.request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-host-element/get-flow-host-element.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state.request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/providers.ts","../../../projects/f-flow/src/domain/f-flow/remove-flow-from-store/remove-flow-from-store-request.ts","../../../projects/f-flow/src/domain/f-flow/remove-flow-from-store/remove-flow-from-store.execution.ts","../../../projects/f-flow/src/domain/f-flow/providers.ts","../../../projects/f-flow/src/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store-request.ts","../../../projects/f-flow/src/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store.execution.ts","../../../projects/f-flow/src/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store-request.ts","../../../projects/f-flow/src/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store.execution.ts","../../../projects/f-flow/src/domain/f-line-alignment/providers.ts","../../../projects/f-flow/src/domain/f-node/add-node-to-store/add-node-to-store-request.ts","../../../projects/f-flow/src/domain/f-node/add-node-to-store/add-node-to-store.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.request.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.request.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.execution.ts","../../../projects/f-flow/src/domain/f-node/get-node-padding/get-node-padding.request.ts","../../../projects/f-flow/src/domain/f-node/get-node-padding/get-node-padding.execution.ts","../../../projects/f-flow/src/domain/f-node/get-nodes/get-nodes-request.ts","../../../projects/f-flow/src/domain/f-node/get-nodes/get-nodes.execution.ts","../../../projects/f-flow/src/domain/f-node/get-parent-nodes/get-parent-nodes.request.ts","../../../projects/f-flow/src/domain/f-node/get-parent-nodes/get-parent-nodes.execution.ts","../../../projects/f-flow/src/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed-request.ts","../../../projects/f-flow/src/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.execution.ts","../../../projects/f-flow/src/domain/f-node/remove-node-from-store/remove-node-from-store-request.ts","../../../projects/f-flow/src/domain/f-node/remove-node-from-store/remove-node-from-store.execution.ts","../../../projects/f-flow/src/domain/f-node/providers.ts","../../../projects/f-flow/src/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.ts","../../../projects/f-flow/src/domain/f-zoom/f-zoom-tag.ts","../../../projects/f-flow/src/domain/f-zoom/add-zoom-to-store/add-zoom-to-store.execution.ts","../../../projects/f-flow/src/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.ts","../../../projects/f-flow/src/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.ts","../../../projects/f-flow/src/domain/f-zoom/reset-zoom/reset-zoom-request.ts","../../../projects/f-flow/src/domain/f-zoom/reset-zoom/reset-zoom.execution.ts","../../../projects/f-flow/src/domain/f-zoom/set-zoom/set-zoom-request.ts","../../../projects/f-flow/src/domain/f-zoom/set-zoom/set-zoom.execution.ts","../../../projects/f-flow/src/domain/f-zoom/providers.ts","../../../projects/f-flow/src/domain/get-normalized-point/get-normalized-point-request.ts","../../../projects/f-flow/src/domain/get-normalized-point/get-normalized-point.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.execution.ts","../../../projects/f-flow/src/domain/create-dom-element.ts","../../../projects/f-flow/src/domain/f-event-trigger.ts","../../../projects/f-flow/src/domain/i-f-action-trigger.ts","../../../projects/f-flow/src/domain/is-mobile.ts","../../../projects/f-flow/src/domain/log-deprecated.ts","../../../projects/f-flow/src/domain/log-execution-time.ts","../../../projects/f-flow/src/domain/providers.ts","../../../projects/f-flow/src/f-backgroud/f-rect-pattern/f-rect-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-circle-pattern/f-circle-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/f-backgroud/f-background.component.ts","../../../projects/f-flow/src/f-backgroud/providers.ts","../../../projects/f-flow/src/f-canvas/domain/f-canvas-change.event.ts","../../../projects/f-flow/src/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.html","../../../projects/f-flow/src/f-canvas/providers.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap-data.ts","../../../projects/f-flow/src/f-minimap/f-minimap-flow.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-canvas.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-view.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.html","../../../projects/f-flow/src/f-minimap/providers.ts","../../../projects/f-flow/src/f-flow/f-flow-base.ts","../../../projects/f-flow/src/f-flow/f-flow.component.ts","../../../projects/f-flow/src/f-flow/f-flow.component.html","../../../projects/f-flow/src/f-flow/providers.ts","../../../projects/f-flow/src/f-zoom/e-f-zoom-action.ts","../../../projects/f-flow/src/f-zoom/e-f-zoom-direction.ts","../../../projects/f-flow/src/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/f-zoom/providers.ts","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["import { ITransformModel } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\n\n hostElement: HTMLElement | SVGElement;\n\n setTransform(transform: ITransformModel): void;\n}\n","export class GetElementRoundedRectRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetElementRoundedRectRequest } from './get-element-rounded-rect-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { RoundedRect, RectExtensions, IRect } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetElementRoundedRectRequest)\nexport class GetElementRoundedRectExecution implements IExecution<GetElementRoundedRectRequest, RoundedRect> {\n\n private _fBrowser = inject(BrowserService);\n\n public handle(request: GetElementRoundedRectRequest): RoundedRect {\n return this._getRoundedRect(\n RectExtensions.fromElement(request.element), request.element, this._getComputedStyle(request.element)\n );\n }\n\n private _getRoundedRect(rect: IRect, element: HTMLElement | SVGElement, styles: CSSStyleDeclaration): RoundedRect {\n return new RoundedRect(\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n this._toPixels(styles.borderTopLeftRadius, element, styles.fontSize),\n this._toPixels(styles.borderTopRightRadius, element, styles.fontSize),\n this._toPixels(styles.borderBottomRightRadius, element, styles.fontSize),\n this._toPixels(styles.borderBottomLeftRadius, element, styles.fontSize)\n );\n }\n\n private _getComputedStyle(element: HTMLElement | SVGElement): CSSStyleDeclaration {\n return this._fBrowser.window.getComputedStyle(element);\n }\n\n private _toPixels(value: string, element: HTMLElement | SVGElement, fontSize: string): number {\n return this._fBrowser.toPixels(value, element.clientWidth, element.clientHeight, fontSize) || 0\n }\n}\n","import { FBackgroundBase } from '../../../f-backgroud';\n\nexport class AddBackgroundToStoreRequest {\n\n constructor(\n public fBackground: FBackgroundBase\n ) {\n }\n}\n","export class NotifyDataChangedRequest {\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { NotifyDataChangedRequest } from './notify-data-changed-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(NotifyDataChangedRequest)\nexport class NotifyDataChangedExecution implements IExecution<NotifyDataChangedRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: NotifyDataChangedRequest): void {\n this._fComponentsStore.dataChanged();\n }\n}\n","export class ListenDataChangesRequest {\n\n}\n","import { FChannelOperator } from './types';\n\nexport function debounceTime(delay: number): FChannelOperator {\n let timeoutId: any;\n return callback => {\n return () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => callback(), delay);\n };\n };\n}\n","import { FChannelListener } from './types';\n\nexport class FChannel {\n\n protected _listeners = new Set<FChannelListener>();\n\n public notify(): void {\n this._listeners.forEach((callback) => callback());\n }\n\n public listen(callback: FChannelListener): () => void {\n this._listeners.add(callback);\n return () => this.stop(callback);\n }\n\n public stop(callback: FChannelListener): void {\n this._listeners.delete(callback);\n }\n}\n\n","import { FChannelListener } from './types';\nimport { FChannel } from './f-channel';\n\nexport class FResizeChannel extends FChannel {\n\n private _observer = new ResizeObserver(() => this.notify());\n\n private _isObserving = false;\n\n constructor(private _htmlElement: HTMLElement | SVGElement) {\n super();\n }\n\n public override listen(callback: FChannelListener): () => void {\n if (!this._isObserving) {\n this._observer.observe(this._htmlElement);\n this._isObserving = true;\n }\n return super.listen(callback);\n }\n\n public override stop(callback: FChannelListener): void {\n super.stop(callback);\n if (this._listeners.size === 0) {\n this._disconnect();\n }\n }\n\n private _disconnect(): void {\n this._observer.unobserve(this._htmlElement);\n this._observer.disconnect();\n this._isObserving = false;\n }\n}\n","import { FChannel } from './f-channel';\nimport { FChannelListener, FChannelOperator } from './types';\nimport { DestroyRef } from '@angular/core';\n\nexport class FChannelHub {\n\n private readonly _channels: FChannel[] = [];\n\n private _operators: FChannelOperator[] = [];\n\n constructor(...channels: FChannel[]) {\n this._channels = [...channels];\n }\n\n public pipe(...operators: FChannelOperator[]): FChannelHub {\n const result = new FChannelHub(...this._channels);\n result._operators = [...this._operators, ...operators];\n return result;\n }\n\n public listen(destroyRef: DestroyRef, callback: FChannelListener): void {\n let modifiedCallback = callback;\n\n this._operators.forEach(operator => {\n modifiedCallback = operator(modifiedCallback);\n });\n\n const unsubscribeCallbacks = this._channels.map(channel =>\n channel.listen(() => modifiedCallback())\n );\n\n destroyRef.onDestroy(() => {\n unsubscribeCallbacks.forEach(unsubscribe => unsubscribe());\n });\n }\n}\n","import { FChannelOperator } from './types';\n\nexport function notifyOnStart(): FChannelOperator {\n return callback => {\n callback();\n return callback;\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ListenDataChangesRequest } from './listen-data-changes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenDataChangesRequest)\nexport class ListenDataChangesExecution implements IExecution<ListenDataChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenDataChangesRequest): FChannelHub {\n return new FChannelHub(this._fComponentsStore.dataChanges$)\n .pipe(notifyOnStart(), debounceTime(1));\n }\n}\n","export class ListenCountChangesRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ListenCountChangesRequest } from './listen-count-changes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenCountChangesRequest)\nexport class ListenCountChangesExecution implements IExecution<ListenCountChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenCountChangesRequest): FChannelHub {\n return new FChannelHub(this._fComponentsStore.countChanges$)\n .pipe(notifyOnStart(), debounceTime(1));\n }\n}\n\n","export class ListenTransformChangesRequest {\n\n}\n","import { ListenTransformChangesRequest } from './listen-transform-changes.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../index';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FChannelHub } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenTransformChangesRequest)\nexport class ListenTransformChangesExecution\n implements IExecution<ListenTransformChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenTransformChangesRequest): FChannelHub {\n return new FChannelHub(\n this._fComponentsStore.transformChanges$,\n this._fComponentsStore.dataChanges$,\n this._fComponentsStore.countChanges$\n );\n }\n}\n","export class NotifyTransformChangedRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { FConnectionBase, FMarkerBase } from '../f-connection';\nimport { FFlowBase } from '../f-flow';\nimport { FCanvasBase } from '../f-canvas';\nimport { FBackgroundBase } from '../f-backgroud';\nimport { FNodeBase } from '../f-node';\nimport { FConnectorBase } from '../f-connectors';\nimport { FDraggableBase } from '../f-draggable';\nimport { FChannel } from '../reactivity';\nimport { FLineAlignmentBase } from '../f-line-alignment';\nimport { IMap } from '../domain';\n\n@Injectable()\nexport class FComponentsStore {\n\n public readonly transformChanges$ = new FChannel();\n\n public readonly dataChanges$ = new FChannel();\n\n public readonly countChanges$ = new FChannel();\n\n public get flowHost(): HTMLElement {\n return this.fFlow?.hostElement!;\n }\n\n public fComponents: IMap<any> = {};\n\n public fFlow: FFlowBase | undefined;\n\n public fCanvas: FCanvasBase | undefined;\n\n public fBackground: FBackgroundBase | undefined;\n\n public fNodes: FNodeBase[] = [];\n\n public fConnections: FConnectionBase[] = [];\n\n public fTempConnection: FConnectionBase | undefined;\n\n public fSnapConnection: FConnectionBase | undefined;\n\n public fMarkers: FMarkerBase[] = [];\n\n public fOutputs: FConnectorBase[] = [];\n\n public fInputs: FConnectorBase[] = [];\n\n public fOutlets: FConnectorBase[] = [];\n\n public fDraggable: FDraggableBase | undefined;\n\n public fLineAlignment: FLineAlignmentBase | undefined;\n\n public addComponent<T>(collection: T[], component: T): void {\n collection.push(component);\n this.countChanged();\n }\n\n public removeComponent<T>(collection: T[], component: T): void {\n const index = collection.indexOf(component);\n if (index > -1) {\n collection.splice(index, 1);\n this.countChanged();\n }\n }\n\n public countChanged(): void {\n this.countChanges$.notify();\n }\n\n public dataChanged(): void {\n this.dataChanges$.notify();\n }\n\n public transformChanged(): void {\n this.transformChanges$.notify();\n }\n}\n","import { NotifyTransformChangedRequest } from './notify-transform-changed.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-components-store';\n\n@Injectable()\n@FExecutionRegister(NotifyTransformChangedRequest)\nexport class NotifyTransformChangedExecution\n implements IExecution<NotifyTransformChangedRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: NotifyTransformChangedRequest): void {\n this._fComponentsStore.transformChanged();\n }\n}\n","import { NotifyDataChangedExecution } from './features/notify-data-changed';\nimport { ListenDataChangesExecution } from './features/listen-components-data-changed';\nimport { FComponentsStore } from './f-components-store';\nimport { ListenCountChangesExecution } from './features/listen-count-changes';\nimport { ListenTransformChangesExecution } from './features/listen-transform-changes';\nimport { NotifyTransformChangedExecution } from './features/notify-transform-changed';\n\nexport const F_STORAGE_PROVIDERS = [\n\n NotifyDataChangedExecution,\n\n ListenCountChangesExecution,\n\n ListenDataChangesExecution,\n\n ListenTransformChangesExecution,\n\n NotifyTransformChangedExecution,\n\n FComponentsStore,\n];\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddBackgroundToStoreRequest } from './add-background-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddBackgroundToStoreRequest)\nexport class AddBackgroundToStoreExecution implements IExecution<AddBackgroundToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddBackgroundToStoreRequest): void {\n this._fComponentsStore.fBackground = request.fBackground;\n }\n}\n","import { IFBackgroundPattern } from '../../../f-backgroud';\n\nexport class AddPatternToBackgroundRequest {\n constructor(\n public fPattern: IFBackgroundPattern | undefined\n ) {\n }\n}\n","import { TransformModelExtensions } from '@foblex/2d';\nimport { AddPatternToBackgroundRequest } from './add-pattern-to-background.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FBackgroundBase } from '../../../f-backgroud';\n\nlet uniqueId: number = 0;\n\n@Injectable()\n@FExecutionRegister(AddPatternToBackgroundRequest)\nexport class AddPatternToBackgroundExecution implements IExecution<AddPatternToBackgroundRequest, void> {\n\n private get fBackground(): FBackgroundBase {\n return this.fComponentsStore.fBackground!;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: AddPatternToBackgroundRequest): void {\n const children = request.fPattern?.hostElement.getElementsByTagName('pattern') || [];\n const pattern = children.length ? children[ 0 ] : undefined;\n if (pattern) {\n const defs = createSVGElement('defs', this.fBrowser);\n pattern.id = 'f-background-pattern-' + uniqueId++;\n request.fPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this.fBackground.hostElement?.firstChild?.appendChild(defs);\n const rect = createSVGElement('rect', this.fBrowser);\n rect.setAttribute('fill', 'url(#' + pattern.id + ')');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n this.fBackground.hostElement.firstChild?.appendChild(rect);\n const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n request.fPattern?.setTransform(transform);\n }\n }\n}\n","import { FBackgroundBase } from '../../../f-backgroud';\n\nexport class RemoveBackgroundFromStoreRequest {\n\n constructor(\n public fConnection: FBackgroundBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveBackgroundFromStoreRequest } from './remove-background-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveBackgroundFromStoreRequest)\nexport class RemoveBackgroundFromStoreExecution implements IExecution<RemoveBackgroundFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveBackgroundFromStoreRequest): void {\n this._fComponentsStore.fBackground = undefined;\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class SetBackgroundTransformRequest {\n\n constructor(\n public fTransform: ITransformModel\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { SetBackgroundTransformRequest } from './set-background-transform-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SetBackgroundTransformRequest)\nexport class SetBackgroundTransformExecution implements IExecution<SetBackgroundTransformRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: SetBackgroundTransformRequest): void {\n this._fComponentsStore.fBackground?.setTransform(request.fTransform);\n }\n}\n","import { AddPatternToBackgroundExecution } from './add-pattern-to-background';\nimport { AddBackgroundToStoreExecution } from './add-background-to-store';\nimport { RemoveBackgroundFromStoreExecution } from './remove-background-from-store';\nimport { SetBackgroundTransformExecution } from './set-background-transform';\n\nexport const F_BACKGROUND_FEATURES = [\n\n AddBackgroundToStoreExecution,\n\n AddPatternToBackgroundExecution,\n\n RemoveBackgroundFromStoreExecution,\n\n SetBackgroundTransformExecution\n];\n","import { FCanvasBase } from '../../../f-canvas';\n\nexport class AddCanvasToStoreRequest {\n\n constructor(\n public fCanvas: FCanvasBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddCanvasToStoreRequest } from './add-canvas-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddCanvasToStoreRequest)\nexport class AddCanvasToStoreExecution implements IExecution<AddCanvasToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddCanvasToStoreRequest): void {\n this._fComponentsStore.fCanvas = request.fCanvas;\n }\n}\n","export class CenterGroupOrNodeRequest {\n\n constructor(\n public id: string,\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CenterGroupOrNodeRequest } from './center-group-or-node-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { RedrawCanvasWithAnimationRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(CenterGroupOrNodeRequest)\nexport class CenterGroupOrNodeExecution implements IExecution<CenterGroupOrNodeRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _fMediator = inject(FMediator);\n\n public handle(request: CenterGroupOrNodeRequest): void {\n const fNode = this.getNode(request.id);\n if (!fNode) {\n return;\n }\n\n this.toCenter(this.getNodeRect(fNode), this.getFlowRect(), fNode.position);\n\n this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public toCenter(fNodeRect: IRect, fFlowRect: IRect, position: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = PointExtensions.initialize(\n (fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale,\n (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale\n );\n }\n\n private getNode(id: string): FNodeBase | undefined {\n return this._fComponentsStore.fNodes.find((x) => x.fId === id);\n }\n\n private getNodeRect(fNode: FNodeBase): IRect {\n return RectExtensions.fromElement(fNode.hostElement);\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FitToFlowRequest {\n\n constructor(\n public toCenter: IPoint,\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FitToFlowRequest } from './fit-to-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { CalculateNodesBoundingBoxRequest, RedrawCanvasWithAnimationRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FitToFlowRequest)\nexport class FitToFlowExecution implements IExecution<FitToFlowRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _fMediator = inject(FMediator);\n\n public handle(request: FitToFlowRequest): void {\n const fNodesRect = this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n\n this.fitToParent(\n fNodesRect,\n RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement),\n this._fComponentsStore.fNodes.map((x) => x.position),\n request.toCenter\n );\n\n this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[], toCenter: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x;\n const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y;\n if (\n (itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||\n itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height\n ) {\n this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);\n }\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale)\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","export class GetCanvasRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetCanvasRequest } from './get-canvas-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(GetCanvasRequest)\nexport class GetCanvasExecution implements IExecution<GetCanvasRequest, FCanvasBase> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetCanvasRequest): FCanvasBase {\n const result = this._fComponentsStore.fCanvas;\n if (!result) {\n throw new Error(`Canvas not found in store`);\n }\n return result;\n }\n}\n","import { IPoint, ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasPositionRequest {\n\n constructor(\n public transform: ITransformModel,\n public position: IPoint | undefined\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { InputCanvasPositionRequest } from './input-canvas-position-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasPositionRequest)\nexport class InputCanvasPositionExecution implements IExecution<InputCanvasPositionRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: InputCanvasPositionRequest): void {\n if (!request.position) {\n return;\n }\n const position = PointExtensions.sum(request.transform.position, request.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, request.position)) {\n request.transform.position = request.position;\n request.transform.scaledPosition = PointExtensions.initialize();\n this._fComponentsStore.fCanvas?.redraw();\n }\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasScaleRequest {\n\n constructor(\n public transform: ITransformModel,\n public scale: number | undefined\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { InputCanvasScaleRequest } from './input-canvas-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasScaleRequest)\nexport class InputCanvasScaleExecution implements IExecution<InputCanvasScaleRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: InputCanvasScaleRequest): void {\n if (!request.scale) {\n return;\n }\n request.transform.scale = request.scale;\n this._fComponentsStore.fCanvas?.redraw();\n }\n}\n","export class RedrawCanvasWithAnimationRequest {\n\n constructor(\n public animated: boolean\n ) {\n }\n}\n","export function transitionEnd(element: HTMLElement, callback: (event: TransitionEvent) => void): void {\n const onTransitionEnd = (event: TransitionEvent) => {\n if (event.propertyName === 'transform') {\n element.removeEventListener('transitionend', onTransitionEnd);\n callback(event);\n }\n };\n\n element.addEventListener('transitionend', onTransitionEnd);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { RedrawCanvasWithAnimationRequest } from './redraw-canvas-with-animation-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { transitionEnd } from '../../transition-end';\n\n@Injectable()\n@FExecutionRegister(RedrawCanvasWithAnimationRequest)\nexport class RedrawCanvasWithAnimationExecution implements IExecution<RedrawCanvasWithAnimationRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvasElement(): HTMLElement {\n return this._fComponentsStore.fCanvas!.hostElement;\n }\n\n public handle(request: RedrawCanvasWithAnimationRequest): void {\n request.animated ? this._redrawWithAnimation() : this._redraw();\n this._fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n\n private _redrawWithAnimation(): void {\n this._fComponentsStore.fCanvas!.redrawWithAnimation();\n transitionEnd(this._fCanvasElement, () => this._fComponentsStore.dataChanged());\n }\n\n private _redraw(): void {\n this._fComponentsStore.fCanvas!.redraw();\n this._fComponentsStore.dataChanged();\n }\n}\n","export class RemoveCanvasFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveCanvasFromStoreRequest } from './remove-canvas-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveCanvasFromStoreRequest)\nexport class RemoveCanvasFromStoreExecution implements IExecution<RemoveCanvasFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveCanvasFromStoreRequest): void {\n this._fComponentsStore.fCanvas = undefined;\n }\n}\n","export class ResetScaleRequest {\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ResetScaleRequest } from './reset-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(ResetScaleRequest)\nexport class ResetScaleExecution implements IExecution<ResetScaleRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: ResetScaleRequest): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n}\n","export class ResetScaleAndCenterRequest {\n\n constructor(\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ResetScaleAndCenterRequest } from './reset-scale-and-center-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxRequest, RedrawCanvasWithAnimationRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(ResetScaleAndCenterRequest)\nexport class ResetScaleAndCenterExecution implements IExecution<ResetScaleAndCenterRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _fMediator = inject(FMediator);\n\n public handle(request: ResetScaleAndCenterRequest): void {\n const fNodesRect = this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n this.oneToOneCentering(\n fNodesRect,\n RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement),\n this._fComponentsStore.fNodes.map((x) => x.position)\n );\n\n this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public oneToOneCentering(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n\n const newX = (parentRect.width - rect.width / this.transform.scale) / 2 - this.transform.position.x;\n const newY = (parentRect.height - rect.height / this.transform.scale) / 2 - this.transform.position.y;\n\n this.transform.scale = 1;\n this.transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class UpdateScaleRequest {\n\n constructor(\n public scale: number,\n public toPosition: IPoint\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { UpdateScaleRequest } from './update-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(UpdateScaleRequest)\nexport class UpdateScaleExecution implements IExecution<UpdateScaleRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: UpdateScaleRequest): void {\n if (request.scale !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = request.toPosition.x - (request.toPosition.x - summaryPosition.x) * request.scale / this.transform.scale;\n const newY = request.toPosition.y - (request.toPosition.y - summaryPosition.y) * request.scale / this.transform.scale;\n\n this.transform.scale = request.scale;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n}\n","import { CenterGroupOrNodeExecution } from './center-group-or-node';\nimport { FitToFlowExecution } from './fit-to-flow';\nimport { ResetScaleAndCenterExecution } from './reset-scale-and-center';\nimport { ResetScaleExecution } from './reset-scale';\nimport { UpdateScaleExecution } from './update-scale';\nimport { InputCanvasPositionExecution } from './input-canvas-position';\nimport { InputCanvasScaleExecution } from './input-canvas-scale';\nimport { AddCanvasToStoreExecution } from './add-canvas-to-store';\nimport { RemoveCanvasFromStoreExecution } from './remove-canvas-from-store';\nimport { GetCanvasExecution } from './get-canvas';\nimport { RedrawCanvasWithAnimationExecution } from './redraw-canvas-with-animation';\n\nexport const F_CANVAS_FEATURES = [\n\n AddCanvasToStoreExecution,\n\n CenterGroupOrNodeExecution,\n\n FitToFlowExecution,\n\n GetCanvasExecution,\n\n InputCanvasPositionExecution,\n\n InputCanvasScaleExecution,\n\n RedrawCanvasWithAnimationExecution,\n\n RemoveCanvasFromStoreExecution,\n\n ResetScaleExecution,\n\n ResetScaleAndCenterExecution,\n\n UpdateScaleExecution\n];\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddConnectionForCreateToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionForCreateToStoreRequest } from './add-connection-for-create-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionForCreateToStoreRequest)\nexport class AddConnectionForCreateToStoreExecution implements IExecution<AddConnectionForCreateToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionForCreateToStoreRequest): void {\n this._fComponentsStore.fTempConnection = request.fConnection;\n }\n}\n","import { FMarkerBase } from '../../../f-connection';\n\nexport class AddConnectionMarkerToStoreRequest {\n\n constructor(\n public fComponent: FMarkerBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionMarkerToStoreRequest } from './add-connection-marker-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionMarkerToStoreRequest)\nexport class AddConnectionMarkerToStoreExecution implements IExecution<AddConnectionMarkerToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionMarkerToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fMarkers, request.fComponent);\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddConnectionToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest } from './add-connection-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionToStoreRequest)\nexport class AddConnectionToStoreExecution implements IExecution<AddConnectionToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionToStoreRequest): void {\n this._fComponentsStore.fConnections.push(request.fConnection);\n this._fComponentsStore.dataChanged();\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddSnapConnectionToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddSnapConnectionToStoreRequest } from './add-snap-connection-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddSnapConnectionToStoreRequest)\nexport class AddSnapConnectionToStoreExecution implements IExecution<AddSnapConnectionToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddSnapConnectionToStoreRequest): void {\n this._fComponentsStore.fSnapConnection = request.fConnection;\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class CreateConnectionMarkersRequest {\n constructor(\n public fConnection: FConnectionBase,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionMarkersRequest } from './create-connection-markers-request';\nimport { FConnectionBase, FMarkerBase } from '../../../f-connection';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { normalizeDomElementId } from '@foblex/utils';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n this.getMarkers(fConnection).forEach((marker) => {\n\n const markerElement = this.createMarkerElement(marker, fConnection.fId);\n\n const clone = marker.hostElement.cloneNode(true) as HTMLElement;\n clone.setAttribute('height', `${ marker.height }`);\n clone.setAttribute('width', `${ marker.width }`);\n clone.removeAttribute('markerUnits');\n clone.style.display = 'unset';\n markerElement.append(clone);\n\n element.append(markerElement);\n });\n\n fConnection.fDefs.nativeElement.innerHTML = element.innerHTML;\n\n this.makeSafariCompatible(fConnection);\n }\n\n public getMarkers(fConnection: FConnectionBase): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => fConnection.hostElement.contains(x.hostElement));\n }\n\n // Safari does not support markers on path elements if markers are defined after the path element\n private makeSafariCompatible(fConnection: FConnectionBase): void {\n fConnection.fPath.hostElement.replaceWith(fConnection.fPath.hostElement);\n }\n\n private createMarkerElement(marker: FMarkerBase, fConnectionId: string): SVGElement {\n const markerElement = createSVGElement('marker', this.fBrowser);\n\n markerElement.setAttribute('id', normalizeDomElementId(marker.type + '-' + fConnectionId));\n\n markerElement.setAttribute('markerHeight', `${ marker.height }`);\n markerElement.setAttribute('markerWidth', `${ marker.width }`);\n markerElement.setAttribute('orient', `${ marker.orient }`);\n markerElement.setAttribute('refX', `${ marker.refX }`);\n markerElement.setAttribute('refY', `${ marker.refY }`);\n markerElement.setAttribute('markerUnits', `${ marker.markerUnits }`);\n\n return markerElement;\n }\n}\n\nfunction createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","import { EFConnectionBehavior } from '../../../f-connection';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class CalculateConnectionLineByBehaviorRequest {\n\n constructor(\n public outputRect: IRoundedRect,\n public inputRect: IRoundedRect,\n public behavior: EFConnectionBehavior | string,\n public outputSide: EFConnectableSide,\n public inputSide: EFConnectableSide,\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint, PointExtensions } from '@foblex/2d';\nimport { CalculateCenterBetweenPointsRequest } from './calculate-center-between-points-request';\n\nexport class CalculateCenterBetweenPointsHandler\n implements IHandler<CalculateCenterBetweenPointsRequest, IPoint> {\n\n public handle(request: CalculateCenterBetweenPointsRequest): IPoint {\n const { source, target } = request;\n\n const offsetX = Math.abs(target.x - source.x) / 2;\n const centerX = (target.x < source.x) ? target.x + offsetX : target.x - offsetX;\n\n const offsetY = Math.abs(target.y - source.y) / 2;\n const centerY = (target.y < source.y) ? target.y + offsetY : target.y - offsetY;\n\n return PointExtensions.initialize(centerX, centerY);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateCenterBetweenPointsRequest {\n\n constructor(\n public source: IPoint,\n public target: IPoint,\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectionCenterRequest } from './calculate-connection-center-request';\n\nexport class CalculateConnectionCenterHandler\n implements IHandler<CalculateConnectionCenterRequest, IPoint> {\n\n public handle(request: CalculateConnectionCenterRequest): IPoint {\n\n const { points } = request;\n let totalDistance = 0;\n let distances: number[] = [];\n\n for (let i = 0; i < points.length - 1; i++) {\n const distance = this.calculateDistance(points[ i ], points[ i + 1 ]);\n distances.push(distance);\n totalDistance += distance;\n }\n\n let accumulatedDistance = 0;\n let centerIndex = 0;\n const halfTotalDistance = totalDistance / 2;\n for (let i = 0; i < distances.length; i++) {\n accumulatedDistance += distances[ i ];\n if (accumulatedDistance >= halfTotalDistance) {\n centerIndex = i;\n break;\n }\n }\n\n const remainingDistanceToCenter = halfTotalDistance - (accumulatedDistance - distances[ centerIndex ]);\n\n return this.findPointAtDistance(points[ centerIndex ], points[ centerIndex + 1 ], remainingDistanceToCenter);\n }\n\n private calculateDistance(pointA: IPoint, pointB: IPoint): number {\n return Math.sqrt(Math.pow(pointB.x - pointA.x, 2) + Math.pow(pointB.y - pointA.y, 2));\n }\n\n private findPointAtDistance(startPoint: IPoint, endPoint: IPoint, distance: number): IPoint {\n const totalDistance = this.calculateDistance(startPoint, endPoint);\n const ratio = distance / totalDistance;\n const x = (1 - ratio) * startPoint.x + ratio * endPoint.x;\n const y = (1 - ratio) * startPoint.y + ratio * endPoint.y;\n return { x, y };\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateConnectionCenterRequest {\n\n constructor(\n public points: IPoint[],\n ) {\n }\n}\n","export enum EFConnectableSide {\n\n LEFT = 'left',\n\n TOP = 'top',\n\n RIGHT = 'right',\n\n BOTTOM = 'bottom',\n\n AUTO = 'auto',\n}\n","import { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport abstract class FConnectorBase implements IHasHostElement {\n\n public abstract fId: string;\n\n public abstract fNodeId: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract canBeConnected: boolean;\n\n private _isConnected: boolean = false;\n\n public get isConnected(): boolean {\n return this._isConnected;\n }\n\n public toConnector: FConnectorBase[] = [];\n\n public isSelfConnectable: boolean = true;\n\n public fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setConnected(toConnector: FConnectorBase): void {\n this._isConnected = true;\n this.toConnector.push(toConnector);\n }\n\n public resetConnected(): void {\n this._isConnected = false;\n this.toConnector = [];\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_INPUT = new InjectionToken<FNodeInputBase>('F_NODE_INPUT');\n\n@Directive()\nexport abstract class FNodeInputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export enum EFResizeHandleType {\n\n LEFT = 'left',\n\n LEFT_TOP = 'left-top',\n\n TOP = 'top',\n\n RIGHT_TOP = 'right-top',\n\n RIGHT = 'right',\n\n RIGHT_BOTTOM = 'right-bottom',\n\n BOTTOM = 'bottom',\n\n LEFT_BOTTOM = 'left-bottom',\n}\n","import {\n Directive, ElementRef, HostBinding, inject, InjectionToken, Input\n} from \"@angular/core\";\nimport { EFResizeHandleType } from './e-f-resize-handle-type';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { castToEnum } from '@foblex/utils';\n\nexport const F_RESIZE_HANDLE = new InjectionToken<FResizeHandleDirective>('F_RESIZE_HANDLE');\n\n@Directive({\n selector: \"[fResizeHandle]\",\n host: {\n class: `f-resize-handle f-component`,\n '[attr.data-f-resize-handle-type]': 'type.toUpperCase()',\n },\n providers: [ { provide: F_RESIZE_HANDLE, useExisting: FResizeHandleDirective } ],\n})\nexport class FResizeHandleDirective implements IHasHostElement {\n\n private _elementReference = inject(ElementRef);\n\n @Input({\n alias: 'fResizeHandleType',\n transform: (x: unknown) => castToEnum(x, 'fResizeHandleType', EFResizeHandleType)\n })\n public type: EFResizeHandleType = EFResizeHandleType.LEFT_TOP;\n\n @HostBinding('class')\n public get typeClass(): string {\n return `f-resize-handle-${ EFResizeHandleType[ this.type.toUpperCase() as keyof typeof EFResizeHandleType ] }`;\n }\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n}\n","import {\n Directive, ElementRef, InjectionToken, Input\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\n// export const F_ROTATE_HANDLE: InjectionToken<FRotateHandleDirective> = new InjectionToken<FRotateHandleDirective>('F_ROTATE_HANDLE');\n//\n// @Directive({\n// selector: \"[fRotateHandle]\",\n// host: {\n// class: `f-rotate-handle f-component`,\n// '[class.f-rotate-handle-disabled]': 'disabled',\n// },\n// providers: [ { provide: F_ROTATE_HANDLE, useExisting: FRotateHandleDirective } ],\n// })\nexport class FRotateHandleDirective implements IHasHostElement {\n\n private isDisabled: boolean = false;\n // @Input('fRotateHandleDisabled')\n // public set disabled(isDisabled: boolean | undefined | string) {\n // this.isDisabled = BooleanExtensions.castToBoolean(isDisabled);\n // }\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import {\n Directive, ElementRef, inject, InjectionToken\n} from \"@angular/core\";\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_DRAG_HANDLE = new InjectionToken<FDragHandleDirective>('F_DRAG_HANDLE');\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\"\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement {\n\n private _elementReference = inject(ElementRef);\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { ISelectable } from './i-selectable';\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeSelectionConstructor = Constructor<ISelectable> & AbstractConstructor<ISelectable>;\n\nexport function mixinChangeSelection<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T;\nexport function mixinChangeSelection<T extends Constructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T {\n return class extends base {\n\n public fId: string = '';\n\n public fSelectionDisabled: boolean = false;\n\n public unmarkAsSelected(): void {\n this.unmarkChildrenAsSelected?.();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public markAsSelected(): void {\n this.markChildrenAsSelected?.();\n if (!this.isSelected()) {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public markChildrenAsSelected(): void {\n }\n\n public unmarkChildrenAsSelected(): void {\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { ICanChangeVisibility } from './i-can-change-visibility';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { AbstractConstructor, Constructor } from '../constructor';\n\ntype CanChangeVisibilityConstructor = Constructor<ICanChangeVisibility> & AbstractConstructor<ICanChangeVisibility>;\n\nexport function mixinChangeVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T;\nexport function mixinChangeVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T {\n return class extends base {\n\n public show(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public hide(): void {\n this.hostElement.style.display = \"none\";\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport {\n FConnectorBase\n} from '../f-connectors';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { ISelectable, mixinChangeSelection } from '../mixins';\nimport { FChannel } from '../reactivity';\n\nexport const F_NODE = new InjectionToken<FNodeBase>('F_NODE');\n\nconst MIXIN_BASE = mixinChangeSelection(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n });\n\nexport abstract class FNodeBase extends MIXIN_BASE implements ISelectable, IHasHostElement {\n\n public abstract override fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public readonly stateChanges = new FChannel();\n\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n\n public abstract sizeChange: EventEmitter<IRect>;\n\n public abstract size: ISize;\n\n protected _size: ISize | undefined;\n\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract fConnectOnNode: boolean;\n\n public fCanBeResizedByChild: boolean = true;\n\n public abstract fIncludePadding: boolean;\n\n public abstract refresh(): void;\n\n public connectors: FConnectorBase[] = [];\n\n protected abstract setStyle(name: string, value: string): void;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n if (this.size) {\n this.setStyle('width', '' + this.size.width + 'px');\n this.setStyle('height', '' + this.size.height + 'px');\n }\n\n this.setStyle('transform', `translate(${ this.position.x }px,${ this.position.y }px)`);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public updateSize(value: ISize): void {\n this._size = value;\n }\n\n public setClass(className: string): void {\n this.hostElement.classList.add(className);\n }\n\n public removeClass(className: string): void {\n this.hostElement.classList.remove(className);\n }\n\n public addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.refresh();\n }\n\n public removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.refresh();\n }\n}\n","import {\n AfterViewInit, booleanAttribute, DestroyRef,\n Directive,\n ElementRef,\n EventEmitter, inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions, SizeExtensions } from '@foblex/2d';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { AddNodeToStoreRequest, UpdateNodeWhenStateOrSizeChangedRequest, RemoveNodeFromStoreRequest } from '../domain';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fGroup]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-group-id]': 'fId',\n class: \"f-group f-component\",\n '[class.f-group-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-group-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FGroupDirective }\n ],\n})\nexport class FGroupDirective extends FNodeBase\n implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n @Input('fGroupId')\n public override fId: string = `f-group-${ uniqueId++ }`;\n\n @Input('fGroupParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fGroupPosition')\n public override set position(value: IPoint) {\n if(!PointExtensions.isEqual(this._position, value)) {\n this._position = value;\n this.redraw();\n this.refresh();\n }\n }\n public override get position(): IPoint {\n return this._position;\n }\n @Output('fGroupPositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fGroupSize')\n public override set size(value: ISize) {\n if(!this.size || !SizeExtensions.isEqual(this._size!, value)) {\n this._size = value;\n this.redraw();\n this.refresh()\n }\n }\n public override get size(): ISize {\n return this._size!;\n }\n @Output('fGroupSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input({ alias: 'fGroupDraggingDisabled', transform: booleanAttribute })\n public override fDraggingDisabled: boolean = false;\n\n @Input({ alias: 'fGroupSelectionDisabled', transform: booleanAttribute })\n public override fSelectionDisabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n public override fIncludePadding: boolean = true;\n\n @Input({ transform: booleanAttribute })\n public override fConnectOnNode: boolean = true;\n\n private _destroyRef = inject(DestroyRef);\n private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n\n this._fMediator.execute<void>(new AddNodeToStoreRequest(this));\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this._fMediator.execute(new NotifyTransformChangedRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this._listenStateSizeChanges();\n }\n\n private _listenStateSizeChanges(): void {\n this._fMediator.execute<void>(new UpdateNodeWhenStateOrSizeChangedRequest(this, this._destroyRef));\n }\n\n public refresh(): void {\n this.stateChanges.notify();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute<void>(new RemoveNodeFromStoreRequest(this));\n }\n}\n","import {\n AfterViewInit, booleanAttribute, DestroyRef,\n Directive,\n ElementRef,\n EventEmitter, inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions, SizeExtensions } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { AddNodeToStoreRequest, UpdateNodeWhenStateOrSizeChangedRequest, RemoveNodeFromStoreRequest } from '../domain';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNode]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-node-id]': 'fId',\n class: \"f-node f-component\",\n '[class.f-node-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-node-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FNodeDirective }\n ],\n})\nexport class FNodeDirective extends FNodeBase implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n @Input('fNodeId')\n public override fId: string = `f-node-${ uniqueId++ }`;\n\n @Input('fNodeParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fNodePosition')\n public override set position(value: IPoint) {\n if(!PointExtensions.isEqual(this._position, value)) {\n this._position = value;\n this.redraw();\n this.refresh();\n }\n }\n\n public override get position(): IPoint {\n return this._position;\n }\n\n @Output('fNodePositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fNodeSize')\n public override set size(value: ISize) {\n if(!this.size || !SizeExtensions.isEqual(this._size!, value)) {\n this._size = value;\n this.redraw();\n this.refresh()\n }\n }\n\n public override get size(): ISize {\n return this._size!;\n }\n\n @Output('fNodeSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input({ alias: 'fNodeDraggingDisabled', transform: booleanAttribute })\n public override fDraggingDisabled: boolean = false;\n\n @Input({ alias: 'fNodeSelectionDisabled', transform: booleanAttribute })\n public override fSelectionDisabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n public override fIncludePadding: boolean = true;\n\n //Add ability to connect to first connectable input if node is at pointer position\n @Input({ transform: booleanAttribute })\n public override fConnectOnNode: boolean = true;\n\n private _destroyRef = inject(DestroyRef);\n private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n\n this._fMediator.execute<void>(new AddNodeToStoreRequest(this));\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this._fMediator.execute(new NotifyTransformChangedRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this._listenStateSizeChanges();\n }\n\n private _listenStateSizeChanges(): void {\n this._fMediator.execute<void>(new UpdateNodeWhenStateOrSizeChangedRequest(this, this._destroyRef));\n }\n\n public override refresh(): void {\n this.stateChanges.notify();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute<void>(new RemoveNodeFromStoreRequest(this));\n }\n}\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import { FNodeDirective } from './f-node.directive';\nimport { FResizeHandleDirective } from './f-resize-handle';\nimport { FGroupDirective } from './f-group.directive';\nimport { FDragHandleDirective } from './f-drag-handle.directive';\n\nexport const F_NODE_PROVIDERS = [\n\n FGroupDirective,\n\n FNodeDirective,\n\n FDragHandleDirective,\n\n FResizeHandleDirective,\n];\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit, SimpleChanges\n} from '@angular/core';\nimport { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE } from '../../f-node';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddInputToStoreRequest, F_CSS_CLASS, RemoveInputFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n exportAs: 'fNodeInput',\n host: {\n '[attr.data-f-input-id]': 'fId',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_INPUT, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnInit, OnChanges, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n private _fNode = inject(F_NODE);\n\n @Input('fInputId')\n public override fId: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fInputMultiple')\n public override multiple: boolean = true;\n\n @Input({ alias: 'fInputDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n @Input({\n alias: 'fInputConnectableSide',\n transform: (value: unknown) => castToEnum(value, 'fInputConnectableSide', EFConnectableSide)\n })\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override get fNodeId(): string {\n return this._fNode.fId;\n }\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit() {\n this._fMediator.execute(new AddInputToStoreRequest(this));\n this._fNode.addConnector(this);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'userFConnectableSide' ]) {\n this._fNode.refresh();\n }\n }\n\n public override setConnected(toConnector: FConnectorBase): void {\n super.setConnected(toConnector);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_CONNECTED, true);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public override resetConnected(): void {\n super.resetConnected();\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_CONNECTED, false);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this._fNode.removeConnector(this);\n this._fMediator.execute(new RemoveInputFromStoreRequest(this));\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTLET = new InjectionToken<FNodeOutletBase>('F_NODE_OUTLET');\n\n@Directive()\nexport abstract class FNodeOutletBase extends FConnectorBase {\n\n public abstract isConnectionFromOutlet: boolean;\n\n private outputs: FConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled && this.outputs.some((output) => output.canBeConnected);\n }\n\n public abstract canBeConnectedInputs: string[];\n\n public setOutputs(outputs: FConnectorBase[]): void {\n this.outputs = outputs;\n }\n}\n","export function isNodeOutlet(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutlet]');\n}\n","import { booleanAttribute, Directive, ElementRef, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_NODE } from '../../f-node';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { FMediator } from '@foblex/mediator';\nimport { AddOutletToStoreRequest, RemoveOutletFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n exportAs: 'fNodeOutlet',\n host: {\n '[attr.data-f-outlet-id]': 'fId',\n class: \"f-component f-node-outlet\",\n '[class.f-node-outlet-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective } ],\n})\nexport class FNodeOutletDirective extends FNodeOutletBase implements OnInit, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n /// Inject FNodeBase to check if the outlet inside the node\n private _fNode = inject(F_NODE);\n\n @Input('fOutletId')\n public override fId: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input({ alias: 'fOutletDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n public override fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false;\n\n @Input({ alias: 'fCanBeConnectedInputs' })\n public override canBeConnectedInputs: string[] = [];\n\n public override get fNodeId(): string {\n return this._fNode.fId;\n }\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit() {\n this._fMediator.execute(new AddOutletToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveOutletFromStoreRequest(this));\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTPUT = new InjectionToken<FNodeOutputBase>('F_NODE_OUTPUT');\n\n@Directive()\nexport abstract class FNodeOutputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n\n public abstract canBeConnectedInputs: string[];\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit, SimpleChanges\n} from '@angular/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT } from './f-node-output-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE } from '../../f-node';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddOutputToStoreRequest, F_CSS_CLASS, RemoveOutputFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n exportAs: 'fNodeOutput',\n host: {\n '[attr.data-f-output-id]': 'fId',\n class: \"f-component f-node-output\",\n '[class.f-node-output-multiple]': 'multiple',\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-self-connectable]': 'isSelfConnectable',\n },\n providers: [ { provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnChanges, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n private _fNode = inject(F_NODE);\n\n @Input('fOutputId')\n public override fId: string = `f-node-output-${ uniqueId++ }`;\n\n @Input('fOutputMultiple')\n public override multiple: boolean = false;\n\n @Input({ alias: 'fOutputDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n @Input({\n alias: 'fOutputConnectableSide',\n transform: (value: unknown) => castToEnum(value, 'fOutputConnectableSide', EFConnectableSide)\n })\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isSelfConnectable: boolean = true;\n\n @Input({ alias: 'fCanBeConnectedInputs' })\n public override canBeConnectedInputs: string[] = [];\n\n public override get fNodeId(): string {\n return this._fNode.fId;\n }\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit() {\n this._fMediator.execute(new AddOutputToStoreRequest(this));\n this._fNode.addConnector(this);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'userFConnectableSide' ]) {\n this._fNode.refresh();\n }\n }\n\n public override setConnected(toConnector: FConnectorBase): void {\n super.setConnected(toConnector);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_CONNECTED, true);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public override resetConnected(): void {\n super.resetConnected();\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_CONNECTED, false);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this._fNode.removeConnector(this);\n this._fMediator.execute(new RemoveOutputFromStoreRequest(this));\n }\n}\n","import { FNodeInputDirective } from './f-node-input';\nimport { FNodeOutletDirective } from './f-node-outlet';\nimport { FNodeOutputDirective } from './f-node-output';\n\nexport const F_CONNECTORS_PROVIDERS = [\n\n FNodeInputDirective,\n\n FNodeOutletDirective,\n\n FNodeOutputDirective\n];\n","import { IPoint } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FBezierPathBuilder implements IFConnectionBuilder {\n\n private static getConnectorOffset(distance: number, offset: number): number {\n if (distance >= offset) {\n return distance;\n }\n return offset * Math.sqrt(offset - distance);\n }\n\n private static getAnglePoint(side: EFConnectableSide, source: IPoint, target: IPoint, offset: number): IPoint {\n\n let result: IPoint = { x: source.x, y: source.y };\n\n switch (side) {\n case EFConnectableSide.LEFT:\n result.x -= FBezierPathBuilder.getConnectorOffset(source.x - target.x, offset);\n break;\n case EFConnectableSide.RIGHT:\n result.x += FBezierPathBuilder.getConnectorOffset(target.x - source.x, offset);\n break;\n case EFConnectableSide.TOP:\n result.y -= FBezierPathBuilder.getConnectorOffset(source.y - target.y, offset);\n break;\n case EFConnectableSide.BOTTOM:\n result.y += FBezierPathBuilder.getConnectorOffset(target.y - source.y, offset);\n break;\n }\n\n return result;\n }\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide, offset } = request;\n\n const sourceAnglePoint = FBezierPathBuilder.getAnglePoint(sourceSide, source, target, offset);\n\n const targetAnglePoint = FBezierPathBuilder.getAnglePoint(targetSide, target, source, offset);\n\n const path = `M ${ source.x } ${ source.y } C ${ sourceAnglePoint.x } ${ sourceAnglePoint.y }, ${ targetAnglePoint.x } ${ targetAnglePoint.y }, ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([ source, sourceAnglePoint, targetAnglePoint, target ])\n );\n\n return { path, connectionCenter, penultimatePoint: targetAnglePoint };\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport {\n CalculateCenterBetweenPointsHandler,\n CalculateCenterBetweenPointsRequest\n} from './calculate-center-between-points';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\nimport { IMap } from '../../../domain';\n\nconst CONNECTOR_SIDE_POINT: IMap<IPoint> = {\n\n [ EFConnectableSide.LEFT ]: PointExtensions.initialize(-1, 0),\n\n [ EFConnectableSide.RIGHT ]: PointExtensions.initialize(1, 0),\n\n [ EFConnectableSide.TOP ]: PointExtensions.initialize(0, -1),\n\n [ EFConnectableSide.BOTTOM ]: PointExtensions.initialize(0, 1),\n\n [ EFConnectableSide.AUTO ]: PointExtensions.initialize(0, 0),\n};\n\nexport class FSegmentPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide } = request;\n\n const { points, center } = this.getPathPoints(\n source,\n sourceSide,\n target,\n targetSide,\n request.offset\n );\n\n const path = this.buildPath(points, request.radius);\n\n const penultimatePoint = points.length > 1 ? points[ points.length - 2 ] : source;\n\n return { path, connectionCenter: center, penultimatePoint };\n }\n\n private getPathPoints(\n source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide, offset: number\n ): { points: IPoint[], center: IPoint } {\n\n const sourceDirection = CONNECTOR_SIDE_POINT[ sourceSide ];\n const targetDirection = CONNECTOR_SIDE_POINT[ targetSide ];\n\n const sourceGap: IPoint = { x: source.x + sourceDirection.x * offset, y: source.y + sourceDirection.y * offset };\n const targetGap: IPoint = { x: target.x + targetDirection.x * offset, y: target.y + targetDirection.y * offset };\n\n const direction = this.getDirection(sourceGap, sourceSide, targetGap);\n const directionAccessor = direction.x !== 0 ? 'x' : 'y';\n const currentDirection = direction[ directionAccessor ];\n\n let points: IPoint[] = [];\n const sourceGapOffset = PointExtensions.initialize();\n const targetGapOffset = PointExtensions.initialize();\n\n const centerBetweenPoints = new CalculateCenterBetweenPointsHandler().handle(\n new CalculateCenterBetweenPointsRequest(source, target)\n );\n\n if (sourceDirection[ directionAccessor ] * targetDirection[ directionAccessor ] === -1) {\n const verticalSplit: IPoint[] = [\n { x: centerBetweenPoints.x, y: sourceGap.y },\n { x: centerBetweenPoints.x, y: targetGap.y },\n ];\n const horizontalSplit: IPoint[] = [\n { x: sourceGap.x, y: centerBetweenPoints.y },\n { x: targetGap.x, y: centerBetweenPoints.y },\n ];\n\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n points = directionAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = directionAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget: IPoint[] = [ { x: sourceGap.x, y: targetGap.y } ];\n const targetSource: IPoint[] = [ { x: targetGap.x, y: sourceGap.y } ];\n\n if (directionAccessor === 'x') {\n points = sourceDirection.x === currentDirection ? targetSource : sourceTarget;\n } else {\n points = sourceDirection.y === currentDirection ? sourceTarget : targetSource;\n }\n\n if (sourceSide === targetSide) {\n const diff = Math.abs(source[ directionAccessor ] - target[ directionAccessor ]);\n\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n sourceGapOffset[ directionAccessor ] = (sourceGap[ directionAccessor ] > source[ directionAccessor ] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[ directionAccessor ] = (targetGap[ directionAccessor ] > target[ directionAccessor ] ? -1 : 1) * gapOffset;\n }\n }\n }\n\n if (sourceSide !== targetSide) {\n const dirAccessorOpposite = directionAccessor === 'x' ? 'y' : 'x';\n const isSameDir = sourceDirection[ directionAccessor ] === targetDirection[ dirAccessorOpposite ];\n const sourceGtTargetOppo = sourceGap[ dirAccessorOpposite ] > targetGap[ dirAccessorOpposite ];\n const sourceLtTargetOppo = sourceGap[ dirAccessorOpposite ] < targetGap[ dirAccessorOpposite ];\n const flipSourceTarget =\n (sourceDirection[ directionAccessor ] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n (sourceDirection[ directionAccessor ] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = directionAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n }\n\n const pathPoints = [\n source,\n { x: sourceGap.x + sourceGapOffset.x, y: sourceGap.y + sourceGapOffset.y },\n ...points,\n { x: targetGap.x + targetGapOffset.x, y: targetGap.y + targetGapOffset.y },\n target,\n ];\n\n const center = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest(pathPoints)\n );\n\n return { points: pathPoints, center: center };\n }\n\n private getDirection(source: IPoint, sourceSide: EFConnectableSide, target: IPoint): IPoint {\n if (sourceSide === EFConnectableSide.LEFT || sourceSide === EFConnectableSide.RIGHT) {\n return source.x < target.x ? PointExtensions.initialize(1, 0) : PointExtensions.initialize(-1, 0);\n }\n return source.y < target.y ? PointExtensions.initialize(0, 1) : PointExtensions.initialize(0, -1);\n }\n\n private distance(a: IPoint, b: IPoint): number {\n return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n }\n\n private buildPath(points: IPoint[], borderRadius: number): string {\n let path = '';\n for (let i = 0; i < points.length; i++) {\n const p = points[ i ];\n let segment = '';\n\n if (i > 0 && i < points.length - 1) {\n segment = this.getBend(points[ i - 1 ], p, points[ i + 1 ], borderRadius);\n } else if (i === points.length - 1) {\n segment = this.buildLastLineSegment(i, p);\n } else {\n segment = this.buildMoveOrLineSegment(i, p);\n }\n path += segment;\n }\n\n return path;\n }\n\n private getBend(a: IPoint, b: IPoint, c: IPoint, size: number): string {\n const bendSize = Math.min(this.distance(a, b) / 2, this.distance(b, c) / 2, size);\n const { x, y } = b;\n\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${ x } ${ y }`;\n }\n\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${ x + bendSize * xDir },${ y }Q ${ x },${ y } ${ x },${ y + bendSize * yDir }`;\n }\n\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${ x },${ y + bendSize * yDir }Q ${ x },${ y } ${ x + bendSize * xDir },${ y }`;\n }\n\n private buildMoveOrLineSegment(index: number, point: IPoint): string {\n return `${ index === 0 ? 'M' : 'L' }${ point.x } ${ point.y }`;\n }\n\n private buildLastLineSegment(index: number, point: IPoint): string {\n return `L${ point.x + 0.0002 } ${ point.y + 0.0002 }`;\n }\n}\n","import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FStraightPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, target } = request;\n const path = `M ${ source.x } ${ source.y } L ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([source, target])\n );\n\n return { path, connectionCenter, penultimatePoint: source };\n }\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return normalizeDomElementId('connection_text_' + connectionId);\n },\n connectionForSelectionId(connectionId: string): string {\n return normalizeDomElementId('connection_for_selection_' + connectionId);\n },\n connectionId(connectionId: string): string {\n return normalizeDomElementId('connection_' + connectionId);\n },\n gradientId(connectionId: string): string {\n return normalizeDomElementId('connection_gradient_' + connectionId);\n },\n linkToGradient(connectionId: string): string {\n return `url(#${ F_CONNECTION_IDENTIFIERS.gradientId(connectionId) })`;\n },\n linkToConnection(connectionId: string): string {\n return `#${ F_CONNECTION_IDENTIFIERS.connectionId(connectionId) }`;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_CONNECTION = new InjectionToken('F_CONNECTION');\n","import { Directive, ElementRef, Inject, OnInit } from '@angular/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Directive({\n selector: 'textPath[f-connection-text-path]',\n host: {\n '[attr.href]': 'linkToConnection'\n }\n})\nexport class FConnectionTextPathDirective implements IHasHostElement, OnInit {\n\n public get linkToConnection(): string {\n return F_CONNECTION_IDENTIFIERS.linkToConnection(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextPathElement {\n return this.elementReference.nativeElement;\n }\n\n public symbolWidth: number = 8;\n public fontSize: string = '12px';\n\n constructor(\n private elementReference: ElementRef<SVGTextPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n private fBrowser: BrowserService\n ) {\n }\n\n public ngOnInit(): void {\n this.hostElement.setAttribute('text-anchor', `middle`);\n this.symbolWidth = this.getSymbolWidth(this.base.fText || '');\n }\n\n public getBBox(): DOMRect {\n return this.hostElement.getBBox();\n }\n\n public redraw(): void {\n this.hostElement.setAttribute('startOffset', this.base.fTextStartOffset || '50%');\n }\n\n private getFontStyles(element: SVGTextPathElement): { fontSize: string, fontFamily: string } {\n const computedStyles = this.fBrowser.window.getComputedStyle(element);\n return {\n fontSize: computedStyles.fontSize,\n fontFamily: computedStyles.fontFamily\n };\n }\n\n private getSymbolWidth(name: string): number {\n const text = name || 'connection';\n const { fontFamily, fontSize } = this.getFontStyles(this.hostElement);\n this.fontSize = fontSize || '12px';\n const canvas = this.fBrowser.document.createElement('canvas');\n let context;\n\n try {\n context = canvas.getContext('2d');\n } catch (e) {\n context = null;\n }\n if (!context) {\n return 0;\n }\n\n context.font = `${ fontSize } ${ fontFamily }`;\n\n const metrics = context.measureText(text);\n const symbolWidth = metrics.width / text.length;\n return symbolWidth;\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_TEXT = new InjectionToken<IConnectionText>('CONNECTION_TEXT');\n\nexport interface IConnectionText extends IHasHostElement {\n\n redraw(line: ILine): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, ViewChild\n} from \"@angular/core\";\nimport { ILine, PointExtensions } from '@foblex/2d';\nimport { FConnectionTextPathDirective } from './f-connection-text-path.directive';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_TEXT, IConnectionText } from './i-connection-text';\n\n@Component({\n selector: \"text[f-connection-text]\",\n templateUrl: \"./f-connection-text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-text\",\n '[attr.id]': 'textId',\n },\n providers: [ { provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent } ],\n})\nexport class FConnectionTextComponent implements IConnectionText {\n\n public get textId(): string {\n return F_CONNECTION_IDENTIFIERS.textId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n public get text(): string {\n return this.base.fText || '';\n }\n\n @ViewChild(FConnectionTextPathDirective, { static: true })\n public textPathDirective!: FConnectionTextPathDirective;\n\n constructor(\n private elementReference: ElementRef<SVGTextElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n ) {\n }\n\n public redraw(line: ILine): void {\n this.textPathDirective.redraw();\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(line);\n const dyValue = this.calculateDy(this.textPathDirective.fontSize, isTextReverse);\n\n this.hostElement.setAttribute('dy', dyValue);\n\n const textRect = this.textPathDirective.getBBox();\n const textRectCenter = [ textRect.x + textRect.width / 2, textRect.y + textRect.height / 2 ];\n this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${ textRectCenter })` : '');\n const startOffset = FConnectionTextComponent.getTextStartOffset(line, this.base.fText || '', this.textPathDirective.symbolWidth);\n if (startOffset < 0) {\n\n this.hostElement.style.display = 'none';\n } else {\n\n this.hostElement.style.display = 'unset';\n }\n }\n\n private calculateDy(fontSize: string, isTextReverse: boolean): string {\n const fontSizeNumber = parseFloat(fontSize);\n\n const dyValue = isTextReverse ? fontSizeNumber * 1.5 : fontSizeNumber * -0.8;\n\n return dyValue.toString();\n }\n\n private static isTextReverse(line: ILine): boolean {\n return line.point1.x > line.point2.x;\n }\n\n private static getTextStartOffset(line: ILine, name: string, symbolWidth: number): number {\n const vectorLength: number = PointExtensions.hypotenuse(line.point1, line.point2);\n return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:textPath f-connection-text-path>\n {{ text }}\n </svg:textPath>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef\n} from \"@angular/core\";\nimport { IPoint } from '@foblex/2d';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const F_CONNECTION_DRAG_HANDLE_CLASS = 'f-connection-drag-handle';\n\n@Component({\n selector: \"circle[f-connection-drag-handle]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleComponent implements IHasHostElement {\n\n public point!: IPoint;\n public radius: number = 8;\n\n public readonly class: string = F_CONNECTION_DRAG_HANDLE_CLASS;\n\n public get hostElement(): SVGCircleElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGCircleElement>\n ) {\n }\n\n public redraw(penultimatePoint: IPoint, endPoint: IPoint): void {\n this.point = this._calculateCircleCenter(penultimatePoint, endPoint, 8);\n this.hostElement.setAttribute('cx', this.point.x.toString());\n this.hostElement.setAttribute('cy', this.point.y.toString());\n }\n\n private _calculateCircleCenter(start: IPoint, end: IPoint, radius: number): IPoint {\n const direction = { x: end.x - start.x, y: end.y - start.y };\n const length = Math.sqrt(direction.x * direction.x + direction.y * direction.y) || 1;\n const unitDirection = { x: direction.x / length, y: direction.y / length };\n const scaledDirection = { x: unitDirection.x * radius, y: unitDirection.y * radius };\n return { x: end.x - scaledDirection.x, y: end.y - scaledDirection.y };\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_GRADIENT = new InjectionToken<IConnectionGradient>('CONNECTION_GRADIENT');\n\nexport interface IConnectionGradient extends IHasHostElement {\n\n initialize(): void;\n\n redraw(line: ILine): void;\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { ILine, Point } from '@foblex/2d';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_GRADIENT, IConnectionGradient } from './i-connection-gradient';\n\n@Component({\n selector: \"linearGradient[fConnectionGradient]\",\n templateUrl: \"./f-connection-gradient.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-gradient\",\n '[attr.id]': 'gradientId'\n },\n providers: [ { provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent } ],\n})\nexport class FConnectionGradientComponent implements IConnectionGradient {\n\n public get gradientId(): string {\n return F_CONNECTION_IDENTIFIERS.gradientId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGLinearGradientElement {\n return this.elementReference.nativeElement;\n }\n\n public get stop1Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(0) as SVGStopElement;\n }\n\n public get stop2Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(1) as SVGStopElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGLinearGradientElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo,\n ) {\n }\n\n public initialize(): void {\n this.stop1Element.setAttribute('offset', '0%');\n this.stop2Element.setAttribute('offset', '100%');\n }\n\n private updateGradient(): void {\n this.setFromColor(this.base.fStartColor);\n this.setToColor(this.base.fEndColor);\n }\n\n private setFromColor(color: string | undefined): void {\n this.stop1Element.setAttribute('stop-color', color || 'transparent');\n }\n\n private setToColor(color: string | undefined): void {\n this.stop2Element.setAttribute('stop-color', color || 'transparent');\n }\n\n public redraw(line: ILine): void {\n const x: number = line.point2.x - line.point1.x;\n const y: number = line.point2.y - line.point1.y;\n const distance: number = Math.sqrt(x * x + y * y) || 0.01;\n\n const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);\n\n this.hostElement.setAttribute('x1', from.x.toString());\n this.hostElement.setAttribute('y1', from.y.toString());\n\n const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);\n this.hostElement.setAttribute('x2', to.x.toString());\n this.hostElement.setAttribute('y2', to.y.toString());\n this.updateGradient();\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_PATH = new InjectionToken<IConnectionPath>('CONNECTION_PATH');\n\nexport interface IConnectionPath extends IHasHostElement<SVGPathElement> {\n\n initialize(): void;\n\n setPath(path: string): void;\n\n select(): void;\n\n deselect(): void;\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport function getMarkerStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-end-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-end-${ fConnectionId }`);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_PATH, IConnectionPath } from './i-connection-path';\nimport {\n getMarkerEndId,\n getMarkerSelectedEndId,\n getMarkerSelectedStartId,\n getMarkerStartId,\n} from './get-path-marker-id';\n\n@Component({\n selector: \"path[f-connection-path]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-path\",\n '[attr.id]': 'attrConnectionId',\n '[attr.data-f-path-id]': 'fPathId',\n '[attr.stroke]': 'linkToGradient',\n },\n providers: [ { provide: CONNECTION_PATH, useExisting: FConnectionPathComponent } ],\n})\nexport class FConnectionPathComponent implements IConnectionPath {\n\n public get fPathId(): string {\n return this.base.fId;\n }\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo\n ) {\n }\n\n public initialize(): void {\n this.deselect();\n }\n\n public setPath(path: string): void {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n\n public select(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerSelectedStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerSelectedEndId(this.base.fId) })`);\n }\n\n public deselect(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerEndId(this.base.fId) })`);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject\n} from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Component({\n selector: \"path[fConnectionSelection]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-selection\",\n '[attr.id]': 'connectionForSelectionId',\n },\n})\nexport class FConnectionSelectionComponent implements IHasHostElement {\n\n public get connectionForSelectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionFromTo,\n ) {\n }\n\n public setPath(path: string) {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\n\nexport const F_CONNECTION_BUILDERS = new InjectionToken<IFConnectionBuilders>('F_CONNECTION_BUILDERS');\n\nexport interface IFConnectionBuilders {\n [key: string]: IFConnectionBuilder;\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\nimport { EFConnectionType, FBezierPathBuilder, FSegmentPathBuilder, FStraightPathBuilder } from '../common';\nimport { F_CONNECTION_BUILDERS, IFConnectionBuilders } from './f-connection-builders';\nimport { IFConnectionFactoryRequest } from './i-f-connection-factory-request';\nimport { IFConnectionBuilderResponse } from './i-f-connection-builder-response';\nimport { IMap } from '../../domain';\n\n@Injectable()\nexport class FConnectionFactory {\n\n private readonly builders: IMap<IFConnectionBuilder> = {\n\n [ EFConnectionType.STRAIGHT ]: new FStraightPathBuilder(),\n\n [ EFConnectionType.BEZIER ]: new FBezierPathBuilder(),\n\n [ EFConnectionType.SEGMENT ]: new FSegmentPathBuilder(),\n }\n\n constructor(\n @Optional() @Inject(F_CONNECTION_BUILDERS) builders: IFConnectionBuilders\n ) {\n if (builders) {\n this.builders = { ...this.builders, ...builders };\n }\n }\n\n public handle(request: IFConnectionFactoryRequest): IFConnectionBuilderResponse {\n const builder = this.builders[ request.type ];\n if (!builder) {\n throw new Error(`FConnectionBuilder not found for type ${ request.type }`);\n }\n\n return builder.handle(request.payload);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ILine, IPoint, LineExtensions, PointExtensions } from '@foblex/2d';\nimport { EFConnectionBehavior } from './e-f-connection-behavior';\nimport { EFConnectionType } from './e-f-connection-type';\nimport { IHasConnectionColor } from './i-has-connection-color';\nimport { IHasConnectionFromTo } from './i-has-connection-from-to';\nimport { IHasConnectionText } from './i-has-connection-text';\nimport { IConnectionPath } from './f-path';\nimport { IConnectionGradient } from './f-gradient';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection';\nimport { IConnectionText } from './f-connection-text';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport {\n ISelectable, ICanChangeVisibility,\n mixinChangeSelection, mixinChangeVisibility\n} from '../../mixins';\n\nconst MIXIN_BASE = mixinChangeSelection(\n mixinChangeVisibility(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n }));\n\n@Directive()\nexport abstract class FConnectionBase extends MIXIN_BASE\n implements IHasHostElement, ISelectable,\n ICanChangeVisibility,\n IHasConnectionColor,\n IHasConnectionFromTo, IHasConnectionText {\n\n public abstract override fId: string;\n\n public abstract fStartColor: string;\n\n public abstract fEndColor: string;\n\n public abstract fOutputId: string;\n\n public abstract fInputId: string;\n\n public abstract fRadius: number;\n\n public abstract fOffset: number;\n\n public path: string = '';\n\n public line: ILine = LineExtensions.initialize();\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract boundingElement: HTMLElement | SVGElement;\n\n public abstract fBehavior: EFConnectionBehavior;\n\n public abstract fType: EFConnectionType | string;\n\n public abstract fDefs: ElementRef<SVGDefsElement>;\n\n public abstract fPath: IConnectionPath;\n\n public abstract fGradient: IConnectionGradient;\n\n public abstract fDragHandle: FConnectionDragHandleComponent;\n\n public abstract fSelection: FConnectionSelectionComponent;\n\n public abstract fTextComponent: IConnectionText;\n\n public abstract fText: string;\n\n public abstract fTextStartOffset: string;\n\n public abstract fConnectionCenter: ElementRef<HTMLDivElement>;\n\n private penultimatePoint: IPoint = PointExtensions.initialize();\n\n protected constructor(\n elementReference: ElementRef<HTMLElement>,\n private cFactory: FConnectionFactory\n ) {\n super(elementReference.nativeElement);\n }\n\n public initialize(): void {\n this.fPath.initialize();\n this.fGradient.initialize();\n this.redraw();\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return (this.hostElement.firstChild?.lastChild as HTMLElement).contains(element);\n }\n\n public setLine(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): void {\n this.line = LineExtensions.initialize(source, target);\n const pathResult = this.getPathResult(source, sourceSide, target, targetSide);\n this.path = pathResult.path;\n this.penultimatePoint = pathResult.penultimatePoint || source;\n this.fConnectionCenter?.nativeElement?.setAttribute('style', this.getTransform(pathResult.connectionCenter));\n }\n\n private getPathResult(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): any {\n const radius = this.fRadius > 0 ? this.fRadius : 0;\n const offset = this.fOffset > 0 ? this.fOffset : 1;\n return this.cFactory.handle(\n {\n type: this.fType,\n payload: { source, sourceSide, target, targetSide, radius, offset }\n }\n );\n }\n\n private getTransform(position: IPoint): string {\n return `position: absolute; pointerEvents: all; transform: translate(-50%, -50%); left: ${ position.x }px; top: ${ position.y }px`;\n }\n\n public override markChildrenAsSelected(): void {\n this.fPath.select();\n }\n\n public override unmarkChildrenAsSelected(): void {\n this.fPath.deselect();\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.line);\n this.fDragHandle.redraw(this.penultimatePoint, this.line.point2);\n this.fTextComponent.redraw(this.line);\n }\n}\n","export enum EFConnectionBehavior {\n\n FIXED = 'fixed',\n\n FIXED_CENTER = 'fixed_center',\n\n FLOATING = 'floating',\n}\n","export enum EFConnectionType {\n\n SEGMENT = 'segment',\n\n STRAIGHT = 'straight',\n\n BEZIER = 'bezier',\n}\n","import {\n Directive\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fConnectionCenter]\"\n})\nexport class FConnectionCenterDirective {\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { NotifyDataChangedRequest } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionForCreateToStoreRequest, RemoveConnectionForCreateFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection-for-create\",\n templateUrl: \"./f-connection-for-create.component.html\",\n styleUrls: [ \"./f-connection-for-create.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-connection-for-create\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionForCreateComponent } ],\n})\nexport class FConnectionForCreateComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnChanges, OnDestroy {\n\n public override fId: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n @Input({ transform: numberAttribute })\n public override fRadius: number = 8;\n\n @Input({ transform: numberAttribute })\n public override fOffset: number = 32\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddConnectionForCreateToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnChanges(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveConnectionForCreateFromStoreRequest());\n }\n}\n","<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","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component, ContentChildren,\n ElementRef, inject,\n Input, numberAttribute, OnChanges,\n OnDestroy,\n OnInit, QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH,\n CONNECTION_TEXT,\n FConnectionDragHandleComponent,\n FConnectionSelectionComponent,\n IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { NotifyDataChangedRequest } from '../../f-storage';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest } from '../../domain';\nimport { RemoveConnectionFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection\",\n exportAs: 'fComponent',\n templateUrl: \"./f-connection.component.html\",\n styleUrls: [ \"./f-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-connection\",\n '[class.f-connection-selection-disabled]': 'fSelectionDisabled',\n '[class.f-connection-reassign-disabled]': 'fDraggingDisabled',\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent\n extends FConnectionBase implements OnInit, OnChanges, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-${ uniqueId++ }`;\n\n @Input()\n public override fText: string = '';\n\n @Input()\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n @Input()\n public override fOutputId: any = '';\n\n @Input()\n public override fInputId: any = '';\n\n @Input({ transform: numberAttribute })\n public override fRadius: number = 8;\n\n @Input({ transform: numberAttribute })\n public override fOffset: number = 32;\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n @Input({ alias: 'fReassignDisabled', transform: booleanAttribute })\n public override fDraggingDisabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddConnectionToStoreRequest(this));\n }\n\n public ngOnChanges(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveConnectionFromStoreRequest(this));\n }\n}\n","<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","export enum EFMarkerType {\n\n START = 'f-connection-marker-start',\n\n END = 'f-connection-marker-end',\n\n SELECTED_START = 'f-connection-selected-marker-start',\n\n SELECTED_END = 'f-connection-selected-marker-end',\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_MARKER = new InjectionToken('F_MARKER');\n\n@Directive()\nexport abstract class FMarkerBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract width: number;\n\n public abstract height: number;\n\n public abstract refX: number;\n\n public abstract refY: number;\n\n public abstract type: string;\n\n public abstract orient: 'auto' | 'auto-start-reverse' | string;\n\n public abstract markerUnits: 'strokeWidth' | 'userSpaceOnUse';\n}\n","import {\n Directive, ElementRef, inject, Input, OnDestroy, OnInit\n} from \"@angular/core\";\nimport { F_MARKER, FMarkerBase } from './f-marker-base';\nimport { EFMarkerType } from './e-f-marker-type';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionMarkerToStoreRequest, RemoveConnectionMarkerFromStoreRequest } from '../../domain';\n\n@Directive({\n selector: \"svg[fMarker]\",\n host: {\n class: \"f-component f-marker\"\n },\n providers: [ { provide: F_MARKER, useExisting: FMarkerDirective } ],\n})\nexport class FMarkerDirective extends FMarkerBase implements OnInit, OnDestroy {\n\n @Input()\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override width: number = 0;\n\n @Input()\n public override height: number = 0;\n\n @Input()\n public override refX: number = 0;\n\n @Input()\n public override refY: number = 0;\n\n @Input()\n public override type: string = EFMarkerType.START;\n\n @Input()\n public override orient: 'auto' | 'auto-start-reverse' | 'calculated' | string = 'auto';\n\n @Input()\n public override markerUnits: 'strokeWidth' | 'userSpaceOnUse' = 'strokeWidth';\n\n private _fMediator = inject(FMediator);\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n ) {\n super();\n this.hostElement.style.display = 'none';\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddConnectionMarkerToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveConnectionMarkerFromStoreRequest(this));\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { NotifyDataChangedRequest } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddSnapConnectionToStoreRequest, RemoveSnapConnectionFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-snap-connection\",\n templateUrl: \"./f-snap-connection.component.html\",\n styleUrls: [ \"./f-snap-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-snap-connection\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FSnapConnectionComponent } ],\n})\nexport class FSnapConnectionComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnChanges, OnDestroy {\n\n public override fId: string = `f-snap-connection-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n @Input({ transform: numberAttribute })\n public fSnapThreshold: number = 20;\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n @Input({ transform: numberAttribute })\n public override fRadius: number = 8;\n\n @Input({ transform: numberAttribute })\n public override fOffset: number = 32\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddSnapConnectionToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnChanges(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveSnapConnectionFromStoreRequest());\n }\n}\n","<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","import {\n FConnectionDragHandleComponent,\n FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective\n} from './common';\nimport { FConnectionComponent } from './f-connection';\nimport { FConnectionCenterDirective } from './f-connection-center';\nimport { FConnectionForCreateComponent } from './f-connection-for-create';\nimport { FMarkerDirective } from './f-marker';\nimport { FSnapConnectionComponent } from './f-snap-connection';\n\nexport const F_CONNECTION_PROVIDERS = [\n\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionSelectionComponent,\n\n FConnectionComponent,\n FConnectionCenterDirective,\n FConnectionForCreateComponent,\n FMarkerDirective,\n FSnapConnectionComponent\n];\n","import { GetIntersections, ILine, IPoint } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\n\nexport function floatingBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return _getIntersectionsLine(\n _fromRoundedRectIntersections(payload),\n _toRoundedRectIntersections(payload),\n payload\n );\n}\n\nfunction _fromRoundedRectIntersections(payload: CalculateConnectionLineByBehaviorRequest) {\n return GetIntersections.getRoundedRectIntersections(\n payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect\n )[ 0 ];\n}\n\nfunction _toRoundedRectIntersections(payload: CalculateConnectionLineByBehaviorRequest) {\n return GetIntersections.getRoundedRectIntersections(\n payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect\n )[ 0 ];\n}\n\nfunction _getIntersectionsLine(from: IPoint, to: IPoint, payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: from ? from : payload.outputRect.gravityCenter,\n point2: to ? to : payload.inputRect.gravityCenter\n };\n}\n","import { ILine, Line } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\n\nexport function fixedCenterBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: payload.outputRect.gravityCenter,\n point2: payload.inputRect.gravityCenter\n };\n}\n","import { ILine, IPoint, IRect } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\nimport { EFConnectableSide } from '../../../f-connectors';\n\nexport function fixedOutboundBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: _getPosition(\n payload.outputRect,\n payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide\n ),\n point2: _getPosition(\n payload.inputRect,\n payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide\n )\n };\n}\n\nfunction _getPosition(rect: IRect, side: EFConnectableSide): IPoint {\n switch (side) {\n case EFConnectableSide.TOP:\n return { x: rect.x + rect.width / 2, y: rect.y };\n case EFConnectableSide.BOTTOM:\n return { x: rect.x + rect.width / 2, y: rect.y + rect.height };\n case EFConnectableSide.LEFT:\n return { x: rect.x, y: rect.y + rect.height / 2 };\n case EFConnectableSide.RIGHT:\n return { x: rect.x + rect.width, y: rect.y + rect.height / 2 };\n default:\n throw new Error(`Unknown side: ${ side }`);\n }\n}\n\n\n\n\n","import { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\nimport { Injectable } from '@angular/core';\nimport { EFConnectionBehavior } from '../../../f-connection';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ILine } from '@foblex/2d';\nimport { floatingBehavior } from './floating-behavior';\nimport { fixedCenterBehavior } from './fixed-center-behavior';\nimport { fixedOutboundBehavior } from './fixed-outbound-behavior';\n\n@Injectable()\n@FExecutionRegister(CalculateConnectionLineByBehaviorRequest)\nexport class CalculateConnectionLineByBehaviorExecution implements IExecution<CalculateConnectionLineByBehaviorRequest, ILine> {\n\n private _handlers = {\n\n [ EFConnectionBehavior.FLOATING.toString() ]: floatingBehavior,\n\n [ EFConnectionBehavior.FIXED_CENTER.toString() ]: fixedCenterBehavior,\n\n [ EFConnectionBehavior.FIXED.toString() ]: fixedOutboundBehavior,\n }\n\n public handle(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return this._handlers[ payload.behavior ](payload);\n }\n}\n\n","export class RedrawConnectionsRequest {\n}\n","export class GetNormalizedElementRectRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n public isRoundedRect: boolean = true\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetNormalizedElementRectRequest } from './get-normalized-element-rect-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport {\n IRoundedRect,\n RoundedRect,\n IPoint,\n ISize,\n Point,\n SizeExtensions,\n ITransformModel,\n RectExtensions\n} from '@foblex/2d';\nimport { GetElementRoundedRectRequest } from '../get-element-rounded-rect';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedElementRectRequest)\nexport class GetNormalizedElementRectExecution implements IExecution<GetNormalizedElementRectRequest, IRoundedRect> {\n\n private _fComponentsStore = inject(FComponentsStore);\n private _fMediator = inject(FMediator);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: GetNormalizedElementRectRequest): IRoundedRect {\n const systemRect = this._getElementRoundedRect(request);\n const position = this._normalizePosition(systemRect);\n const size = this._normalizeSize(systemRect);\n\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4\n );\n }\n\n private _getElementRoundedRect(request: GetNormalizedElementRectRequest): IRoundedRect {\n return request.isRoundedRect ? this._fMediator.execute<IRoundedRect>(\n new GetElementRoundedRectRequest(request.element)\n ) : RoundedRect.fromRect(RectExtensions.fromElement(request.element));\n }\n\n private _normalizePosition(rect: IRoundedRect): IPoint {\n return Point.fromPoint(rect).elementTransform(this._fComponentsStore.flowHost).sub(this._transform.scaledPosition).sub(this._transform.position).div(this._transform.scale);\n }\n\n private _normalizeSize(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this._transform.scale, rect.height / this._transform.scale);\n }\n}\n","import { ILine } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { RedrawConnectionsRequest } from './redraw-connections-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { CalculateConnectionLineByBehaviorRequest } from '../calculate-connection-line-by-behavior';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FConnectionBase } from '../../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedElementRectRequest } from '../../get-normalized-element-rect';\nimport { CreateConnectionMarkersRequest } from '../create-connection-markers';\n\n@Injectable()\n@FExecutionRegister(RedrawConnectionsRequest)\nexport class RedrawConnectionsExecution implements IExecution<RedrawConnectionsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: RedrawConnectionsRequest): void {\n this._resetConnectors();\n\n if (this.fComponentsStore.fTempConnection) {\n this.setMarkers(this.fComponentsStore.fTempConnection);\n }\n\n if (this.fComponentsStore.fSnapConnection) {\n this.setMarkers(this.fComponentsStore.fSnapConnection);\n }\n\n this.fComponentsStore.fConnections.forEach((connection) => {\n const output = this.fComponentsStore.fOutputs.find((x) => x.fId === connection.fOutputId);\n const input = this.fComponentsStore.fInputs.find((x) => x.fId === connection.fInputId);\n if (output && input) {\n this._setupConnection(output, input, connection);\n }\n });\n }\n\n private _resetConnectors(): void {\n this.fComponentsStore.fOutputs.forEach((x) => x.resetConnected());\n this.fComponentsStore.fInputs.forEach((x) => x.resetConnected());\n }\n\n private _setupConnection(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): void {\n output.setConnected(input);\n input.setConnected(output);\n\n const line = this.getLine(output, input, connection);\n\n this.setMarkers(connection);\n\n connection.setLine(line.point1, output.fConnectableSide, line.point2, input.fConnectableSide);\n\n connection.initialize();\n connection.isSelected() ? connection.markAsSelected() : null;\n }\n\n private getLine(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): ILine {\n return this.fMediator.execute(new CalculateConnectionLineByBehaviorRequest(\n this.fMediator.execute(new GetNormalizedElementRectRequest(output.hostElement, true)),\n this.fMediator.execute(new GetNormalizedElementRectRequest(input.hostElement, true)),\n connection.fBehavior,\n output.fConnectableSide,\n input.fConnectableSide\n )\n );\n }\n\n private setMarkers(connection: FConnectionBase): void {\n this.fMediator.execute(\n new CreateConnectionMarkersRequest(connection)\n );\n }\n}\n","export class RemoveConnectionForCreateFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionForCreateFromStoreRequest } from './remove-connection-for-create-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionForCreateFromStoreRequest)\nexport class RemoveConnectionForCreateFromStoreExecution implements IExecution<RemoveConnectionForCreateFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionForCreateFromStoreRequest): void {\n this._fComponentsStore.fTempConnection = undefined;\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class RemoveConnectionFromStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionFromStoreRequest } from './remove-connection-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FConnectionBase } from '../../../f-connection/common';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionFromStoreRequest)\nexport class RemoveConnectionFromStoreExecution implements IExecution<RemoveConnectionFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionFromStoreRequest): void {\n this._fComponentsStore.fConnections.splice(this._getIndexOfConnection(request.fConnection), 1);\n this._fComponentsStore.dataChanged();\n }\n\n private _getIndexOfConnection(fConnection: FConnectionBase): number {\n const result = this._fComponentsStore.fConnections.indexOf(fConnection);\n if (result === -1) {\n throw new Error(`Connection not found in store`);\n }\n return result;\n }\n}\n","import { FMarkerBase } from '../../../f-connection';\n\nexport class RemoveConnectionMarkerFromStoreRequest {\n\n constructor(\n public fComponent: FMarkerBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionMarkerFromStoreRequest } from './remove-connection-marker-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionMarkerFromStoreRequest)\nexport class RemoveConnectionMarkerFromStoreExecution implements IExecution<RemoveConnectionMarkerFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionMarkerFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fMarkers, request.fComponent);\n }\n}\n","export class RemoveSnapConnectionFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveSnapConnectionFromStoreRequest } from './remove-snap-connection-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveSnapConnectionFromStoreRequest)\nexport class RemoveSnapConnectionFromStoreExecution implements IExecution<RemoveSnapConnectionFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveSnapConnectionFromStoreRequest): void {\n this._fComponentsStore.fSnapConnection = undefined;\n }\n}\n","import { CreateConnectionMarkersExecution } from './create-connection-markers';\nimport { AddConnectionForCreateToStoreExecution } from './add-connection-for-create-to-store';\nimport { AddConnectionToStoreExecution } from './add-connection-to-store';\nimport { AddSnapConnectionToStoreExecution } from './add-snap-connection-to-store';\nimport { RemoveConnectionForCreateFromStoreExecution } from './remove-connection-for-create-from-store';\nimport { RemoveConnectionFromStoreExecution } from './remove-connection-from-store';\nimport { RemoveSnapConnectionFromStoreExecution } from './remove-snap-connection-from-store';\nimport { AddConnectionMarkerToStoreExecution } from './add-connection-marker-to-store';\nimport { RemoveConnectionMarkerFromStoreExecution } from './remove-connection-marker-from-store';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { CalculateConnectionLineByBehaviorExecution } from './calculate-connection-line-by-behavior';\n\nexport const F_CONNECTION_FEATURES = [\n\n AddConnectionForCreateToStoreExecution,\n\n AddConnectionMarkerToStoreExecution,\n\n AddConnectionToStoreExecution,\n\n AddSnapConnectionToStoreExecution,\n\n CreateConnectionMarkersExecution,\n\n CalculateConnectionLineByBehaviorExecution,\n\n RedrawConnectionsExecution,\n\n RemoveConnectionForCreateFromStoreExecution,\n\n RemoveConnectionFromStoreExecution,\n\n RemoveConnectionMarkerFromStoreExecution,\n\n RemoveSnapConnectionFromStoreExecution\n];\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddInputToStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddInputToStoreRequest } from './add-input-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddInputToStoreRequest)\nexport class AddInputToStoreExecution implements IExecution<AddInputToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddInputToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fInputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddOutletToStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddOutletToStoreRequest } from './add-outlet-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddOutletToStoreRequest)\nexport class AddOutletToStoreExecution implements IExecution<AddOutletToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddOutletToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fOutlets, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddOutputToStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddOutputToStoreRequest } from './add-output-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddOutputToStoreRequest)\nexport class AddOutputToStoreExecution implements IExecution<AddOutputToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddOutputToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fOutputs, request.fComponent);\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IConnectorAndRect } from '../index';\n\nexport class CalculateClosestInputRequest {\n\n constructor(\n public position: IPoint,\n public canBeConnectedInputs: IConnectorAndRect[],\n ) {\n }\n}\n","import { CalculateClosestInputRequest } from './calculate-closest-input.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { IClosestInput } from '../i-closest-input';\nimport { IConnectorAndRect } from '../index';\n\n@Injectable()\n@FExecutionRegister(CalculateClosestInputRequest)\nexport class CalculateClosestInputExecution\n implements IExecution<CalculateClosestInputRequest, IClosestInput | undefined> {\n\n public handle(payload: CalculateClosestInputRequest): IClosestInput | undefined {\n let result: IConnectorAndRect | undefined;\n let minDistance = Infinity;\n\n for (const element of payload.canBeConnectedInputs) {\n const distance = this._distanceToRectangle(payload.position, element);\n\n if (distance < minDistance) {\n minDistance = distance;\n result = element;\n }\n }\n\n return result ? {\n ...result,\n distance: minDistance,\n } : undefined;\n }\n\n private _distanceToRectangle(point: IPoint, inputWithRect: IConnectorAndRect): number {\n const closestX = this._clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);\n const closestY = this._clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);\n\n const dx = point.x - closestX;\n const dy = point.y - closestY;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n private _clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n }\n}\n","import { IPoint, IRoundedRect } from '@foblex/2d';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\n\nexport class FindInputAtPositionRequest {\n\n constructor(\n public pointerPosition: IPoint,\n public toConnectorRect: IRoundedRect,\n public canBeConnectedInputs: IConnectorAndRect[],\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/2d';\nimport { IDraggableItem } from './i-draggable-item';\nimport { ISelectable } from '../mixins';\n\n@Injectable()\nexport class FDraggableDataContext {\n\n public selectedItems: ISelectable[] = [];\n\n public isSelectedChanged: boolean = false;\n\n public onPointerDownScale: number = 1;\n\n public onPointerDownPosition: Point = new Point(0, 0);\n\n public draggableItems: IDraggableItem[] = [];\n\n public reset(): void {\n this.draggableItems = [];\n this.onPointerDownScale = 1;\n this.onPointerDownPosition = new Point(0, 0);\n }\n\n public markSelectionAsChanged(): void {\n this.isSelectedChanged = true;\n }\n\n public isEmpty(): boolean {\n return !this.draggableItems.length;\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class CanvasDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private _fComponentsStore: FComponentsStore\n ) {\n }\n\n public prepareDragSequence(): void {\n this.onPointerDownPosition = this._fComponentsStore.fCanvas!.transform.position;\n }\n\n public onPointerMove(difference: IPoint): void {\n this._fComponentsStore.fCanvas!.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this._fComponentsStore.fCanvas!.redraw();\n }\n\n public onPointerUp(): void {\n this._fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeExecution implements IExecution<CanvasMoveFinalizeRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: CanvasMoveFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => x.onPointerUp?.());\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CanvasDragHandler\n );\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationExecution implements IExecution<CanvasMovePreparationRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: CanvasMovePreparationRequest): void {\n if(!this._isValid(request)) {\n return;\n }\n this._fDraggableDataContext.onPointerDownScale = 1;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost);\n this._fDraggableDataContext.draggableItems = [\n new CanvasDragHandler(this._fComponentsStore)\n ];\n }\n\n private _isValid(request: CanvasMovePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty() &&\n (this._isBackgroundElement(request.event.targetElement) || this._isDragOnHost(request.event.targetElement));\n }\n\n private _isBackgroundElement(targetElement: HTMLElement): boolean | undefined {\n return this._fComponentsStore.fBackground?.hostElement.contains(targetElement);\n }\n\n private _isDragOnHost(targetElement: HTMLElement): boolean {\n return this._fHost.contains(targetElement) && !this._getNode(targetElement);\n }\n\n private _getNode(targetElement: HTMLElement): FNodeBase | undefined {\n let result = this._fComponentsStore.fNodes\n .find(x => x.isContains(targetElement));\n if (result && result.fDraggingDisabled) {\n result = undefined;\n }\n return result;\n }\n}\n","import { CanvasMovePreparationExecution } from './canvas-move-preparation';\nimport { CanvasMoveFinalizeExecution } from './canvas-move-finalize';\n\nexport const CANVAS_PROVIDERS = [\n\n CanvasMoveFinalizeExecution,\n\n CanvasMovePreparationExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export function createErrorClass<T>(impl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n };\n\n const constructor = impl(_super);\n constructor.prototype = Object.create(Error.prototype);\n constructor.prototype.constructor = constructor;\n return constructor;\n}\n","import { createErrorClass } from './create-error-class';\n\nexport interface NotFoundError extends Error {\n}\n\nexport interface NotFoundCtor {\n\n new(message?: string): NotFoundError;\n}\n\nexport const NotFoundError: NotFoundCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'The requested resource was not found.';\n this.code = 404;\n }\n);\n","import { createErrorClass } from './create-error-class';\n\nexport interface ConflictError extends Error {\n}\n\nexport interface ConflictErrorCtor {\n\n new(message?: string): ConflictError;\n}\n\nexport const ConflictError: ConflictErrorCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'Conflict error occurred.';\n this.code = 409;\n }\n);\n","import { NotFoundError } from './not-found-error';\nimport { ConflictError } from './conflict-error';\n\nexport function OutputNotFound(id: string): Error {\n return new NotFoundError(`Output with fOutputId ${ id } not found. Make sure there is no f-connection to a non-existent fOutput.`);\n}\n\nexport function InputNotFound(id: string): Error {\n return new NotFoundError(`Input with fInputId ${ id } not found. Make sure there is no f-connection to a non-existent fInput.`);\n}\n\nexport function RequiredOutput(): Error {\n return new ConflictError(`The fNode must contain at least one fOutput if there is an fOutlet`);\n}\n","import { FNodeOutletBase } from '../../../../f-connectors';\n\nexport class GetCanBeConnectedOutputByOutletRequest {\n\n constructor(\n public fOutlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { FExecutionRegister } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletExecution\n implements IHandler<GetCanBeConnectedOutputByOutletRequest, FConnectorBase | undefined> {\n\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentStore.fNodes;\n }\n\n private get _fOutputs(): FConnectorBase[] {\n return this._fComponentStore.fOutputs;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): FConnectorBase | undefined {\n if(!this._isValid(request)) {\n return;\n }\n\n const fOutputs = this._getConnectableOutputs();\n if(!fOutputs.length) {\n throw new Error('The fNode must contain at least one fOutput if there is an fOutlet')\n }\n return fOutputs[0];\n }\n\n private _isValid(request: GetCanBeConnectedOutputByOutletRequest): boolean {\n return !!this._getNode(request.fOutlet);\n }\n\n private _getNode(fOutlet: FNodeOutletBase): FNodeBase {\n this._fNode = this._fNodes.find((x) => x.isContains(fOutlet.hostElement))!;\n return this._fNode;\n }\n\n private _getConnectableOutputs(): FConnectorBase[] {\n return this._fOutputs\n .filter((x) => this._fNode!.isContains(x.hostElement) && x.canBeConnected);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FCreateConnectionEvent {\n\n constructor(\n public fOutputId: string,\n public fInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import {Injector, Type} from \"@angular/core\";\n\nexport class FInjector {\n\n private static _injector: Injector | undefined;\n\n public static set(injector: Injector): void {\n this._injector = injector;\n }\n\n public static clear(): void {\n this._injector = undefined;\n }\n\n public static get(): Injector {\n if (!this._injector) {\n throw new Error('No injector available');\n }\n return this._injector;\n }\n}\n\nexport function fInject<T>(token: Type<T>): T {\n return FInjector.get().get(token);\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n CalculateClosestInputRequest,\n GetAllCanBeConnectedInputsAndRectsRequest,\n CalculateConnectionLineByBehaviorRequest,\n GetConnectorAndRectRequest,\n IConnectorAndRect, IClosestInput, MarkAllCanBeConnectedInputsRequest, UnmarkAllCanBeConnectedInputsRequest\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport {\n EFConnectableSide, FNodeOutletBase,\n FNodeOutputBase,\n} from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { RoundedRect, ILine, IPoint, PointExtensions, RectExtensions, IRoundedRect } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { ICreateReassignConnectionDragData } from '../i-create-reassign-connection-drag-data';\nimport { fInject } from '../../f-injector';\n\nexport class CreateConnectionDragHandler implements IDraggableItem<ICreateReassignConnectionDragData> {\n\n private _fMediator = fInject(FMediator);\n private _fComponentsStore = fInject(FComponentsStore);\n\n private readonly _toConnectorRect = new RoundedRect();\n\n private get _fConnection(): FConnectionBase {\n return this._fComponentsStore.fTempConnection!;\n }\n\n private get _fSnapConnection(): FSnapConnectionComponent | undefined {\n return this._fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private _fOutputWithRect!: IConnectorAndRect;\n\n private _canBeConnectedInputs: IConnectorAndRect[] = [];\n\n constructor(\n private _fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase,\n _onPointerDownPosition: IPoint,\n ) {\n this._toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(_onPointerDownPosition.x, _onPointerDownPosition.y)\n );\n }\n\n public prepareDragSequence(): void {\n this._getAndMarkCanBeConnectedInputs();\n this._initializeSnapConnection();\n this._initializeConnectionForCreate();\n\n this._fOutputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fOutputOrOutlet));\n\n this._fConnection.show();\n this.onPointerMove(PointExtensions.initialize());\n }\n\n private _getAndMarkCanBeConnectedInputs(): void {\n this._canBeConnectedInputs = this._fMediator.execute<IConnectorAndRect[]>(\n new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutputOrOutlet)\n );\n\n this._fMediator.execute(\n new MarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n\n private _initializeSnapConnection(): void {\n if (!this._fSnapConnection) {\n return;\n }\n this._fSnapConnection.fOutputId = this._fOutputOrOutlet.fId;\n this._fSnapConnection.initialize();\n }\n\n private _initializeConnectionForCreate(): void {\n this._fConnection.fOutputId = this._fOutputOrOutlet.fId;\n this._fConnection.initialize();\n }\n\n public onPointerMove(difference: IPoint): void {\n const fClosestInput = this._findClosestInput(difference);\n\n this._drawConnectionForCreate(\n this._toConnectorRect.addPoint(difference),\n fClosestInput?.fConnector.fConnectableSide || EFConnectableSide.TOP\n );\n\n if (this._fSnapConnection) {\n this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));\n }\n }\n\n private _drawConnectionForCreate(toConnectorRect: IRoundedRect, fSide: EFConnectableSide): void {\n const line = this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n toConnectorRect,\n this._fConnection.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fSide\n )\n );\n\n this._fConnection.setLine(line.point1, this._fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);\n this._fConnection.redraw();\n }\n\n private _drawSnapConnection(fClosestInput: IClosestInput | undefined): void {\n if (fClosestInput) {\n const line = this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n fClosestInput.fRect,\n this._fSnapConnection!.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fClosestInput.fConnector.fConnectableSide\n )\n );\n this._fSnapConnection!.show();\n this._fSnapConnection!.setLine(line.point1, this._fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);\n this._fSnapConnection!.redraw();\n } else {\n this._fSnapConnection?.hide();\n }\n }\n\n private _findClosestInput(difference: IPoint): IClosestInput | undefined {\n return this._fMediator.execute<IClosestInput | undefined>(\n new CalculateClosestInputRequest(\n this._toConnectorRect.addPoint(difference),\n this._canBeConnectedInputs,\n )\n );\n }\n\n private _getClosestInputForSnapConnection(fClosestInput: IClosestInput | undefined): IClosestInput | undefined {\n return fClosestInput && fClosestInput.distance < this._fSnapConnection!.fSnapThreshold ? fClosestInput : undefined;\n }\n\n public onPointerUp(): void {\n this._fConnection.redraw();\n this._fConnection.hide();\n this._fSnapConnection?.hide();\n\n this._fMediator.execute(\n new UnmarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n\n public getData(): ICreateReassignConnectionDragData {\n return {\n toConnectorRect: this._toConnectorRect,\n fOutputId: this._fOutputOrOutlet.fId,\n canBeConnectedInputs: this._canBeConnectedInputs\n }\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../f-connectors';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { OutputNotFound } from '../../../../errors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../get-can-be-connected-output-by-outlet';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\nimport { FindInputAtPositionRequest } from '../../../../domain';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeExecution\n implements IHandler<CreateConnectionFinalizeRequest, void> {\n\n private get _fDragHandler(): CreateConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as CreateConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this.emitEvent(request.event);\n this._fDragHandler.onPointerUp();\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CreateConnectionDragHandler\n );\n }\n\n private getTargetOutput(output: FConnectorBase | undefined): FConnectorBase {\n if (!output) {\n throw OutputNotFound(this._getDragHandlerData().fOutputId);\n }\n return isNodeOutlet(output.hostElement) ? this.fMediator.execute<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(output as FNodeOutletBase)\n ) : output;\n }\n\n private getOutput(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.fId === this._getDragHandlerData().fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.fId === this._getDragHandlerData().fOutputId);\n }\n\n private emitEvent(event: IPointerEvent): void {\n this.fComponentsStore.fDraggable?.fCreateConnection.emit(\n new FCreateConnectionEvent(\n this.getTargetOutput(this.getOutput() || this.getOutlet()).fId,\n this._getInputUnderPointer(event)?.fId,\n event.getPosition()\n )\n );\n }\n\n private _getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.execute<FConnectorBase | undefined>(\n new FindInputAtPositionRequest(\n event.getPosition(),\n this._getDragHandlerData().toConnectorRect,\n this._getDragHandlerData().canBeConnectedInputs\n )\n );\n }\n\n private _getDragHandlerData() {\n return this._fDragHandler.getData();\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../../../f-connectors';\n\nexport class CreateConnectionDragHandlerPreparationRequest {\n\n constructor(\n public onPointerDownPosition: IPoint,\n public fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase\n ) {\n }\n}\n","import { ITransformModel, Point } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { CreateConnectionDragHandlerPreparationRequest } from './create-connection-drag-handler-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../../create-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionDragHandlerPreparationRequest)\nexport class CreateConnectionDragHandlerPreparationExecution\n implements IHandler<CreateConnectionDragHandlerPreparationRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: CreateConnectionDragHandlerPreparationRequest): void {\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition)\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.onPointerDownPosition = positionRelativeToFlowComponent;\n\n const positionRelativeToCanvasComponent = Point.fromPoint(positionRelativeToFlowComponent).mult(this._transform.scale)\n .sub(this._transform.position).sub(this._transform.scaledPosition).div(this._transform.scale);\n\n this._fDraggableDataContext.draggableItems = [\n new CreateConnectionDragHandler(request.fOutputOrOutlet, positionRelativeToCanvasComponent)\n ];\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FNodeBase } from '../../../../../f-node';\n\nexport class CreateConnectionFromOutletPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fNode: FNodeBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { inject, Injectable } from '@angular/core';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport {\n FConnectorBase,\n FNodeOutletBase,\n FNodeOutputBase,\n} from '../../../../../f-connectors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../../get-can-be-connected-output-by-outlet';\nimport { CreateConnectionDragHandlerPreparationRequest } from '../create-connection-drag-handler-preparation';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutletPreparationRequest)\nexport class CreateConnectionFromOutletPreparationExecution\n implements IHandler<CreateConnectionFromOutletPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CreateConnectionFromOutletPreparationRequest): void {\n\n const fOutlet = this._getNodeOutlet(request.fNode);\n const fOutputs = this._getNodeOutputs(request.fNode);\n\n fOutlet.setOutputs(fOutputs);\n\n if (!fOutlet.canBeConnected) {\n return;\n }\n\n if (fOutlet.isConnectionFromOutlet) {\n this._createDragHandler(request.event.getPosition(), fOutlet);\n } else {\n this._createDragHandler(request.event.getPosition(), this._getConnectableOutput(fOutlet));\n }\n }\n\n private _getNodeOutlet(fNode: FNodeBase): FNodeOutletBase {\n const result = this._fComponentsStore.fOutlets\n .find((x) => fNode.isContains(x.hostElement));\n if (!result) {\n throw new Error('Outlet not found');\n }\n return result as FNodeOutletBase;\n }\n\n private _getNodeOutputs(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutputs\n .filter((x) => fNode.isContains(x.hostElement));\n }\n\n private _createDragHandler(position: IPoint, fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase): void {\n this._fMediator.execute(new CreateConnectionDragHandlerPreparationRequest(position, fOutputOrOutlet));\n }\n\n private _getConnectableOutput(fOutlet: FNodeOutletBase): FNodeOutputBase {\n return this._fMediator.execute<FNodeOutputBase>(new GetCanBeConnectedOutputByOutletRequest(fOutlet));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FNodeBase } from '../../../../../f-node';\n\nexport class CreateConnectionFromOutputPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fNode: FNodeBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { FConnectorBase, FNodeOutputBase, isNodeOutput } from '../../../../../f-connectors';\nimport { CreateConnectionDragHandlerPreparationRequest } from '../create-connection-drag-handler-preparation';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationExecution\n implements IHandler<CreateConnectionFromOutputPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): void {\n if(!this._isValid(request)) {\n return;\n }\n const fOutput = this._getOutput(request.event.targetElement);\n\n if (fOutput.canBeConnected) {\n this._fMediator.execute(\n new CreateConnectionDragHandlerPreparationRequest(request.event.getPosition(), fOutput)\n );\n }\n }\n\n private _isValid(request: CreateConnectionFromOutputPreparationRequest): boolean {\n return this._isNodeOutput(request.event.targetElement, request.fNode);\n }\n\n private _isNodeOutput(element: HTMLElement, fNode: FNodeBase): boolean {\n return isNodeOutput(element) && !this._getNodeOutlets(fNode).length;\n }\n\n private _getNodeOutlets(node: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutlets\n .filter((x) => node.isContains(x.hostElement));\n }\n\n private _getOutput(element: Element): FNodeOutputBase {\n const result = this._fComponentsStore.fOutputs\n .find((x) => x.hostElement.contains(element));\n if (!result) {\n throw new Error('Output not found');\n }\n return result as FNodeOutputBase;\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FEventTrigger } from '../../../../domain';\n\nexport class CreateConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { isNodeOutlet, isNodeOutput } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationExecution\n implements IHandler<CreateConnectionPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: CreateConnectionPreparationRequest): void {\n if (!this._isValid(request)) {\n return;\n }\n\n if (isNodeOutlet(request.event.targetElement)) {\n this._fMediator.execute<void>(\n new CreateConnectionFromOutletPreparationRequest(request.event, this._fNode!)\n );\n } else if (isNodeOutput(request.event.targetElement)) {\n this._fMediator.execute<void>(\n new CreateConnectionFromOutputPreparationRequest(request.event, this._fNode!)\n );\n }\n }\n\n private _isValid(request: CreateConnectionPreparationRequest): boolean {\n return !!this._getNode(request.event) && this._isValidConditions();\n }\n\n private _getNode(event: IPointerEvent): FNodeBase | undefined {\n this._fNode = this._fComponentsStore\n .fNodes.find(n => n.isContains(event.targetElement));\n return this._fNode;\n }\n\n private _isValidConditions(): boolean {\n return this._fDraggableDataContext.isEmpty() && !!this._fComponentsStore.fTempConnection;\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n CalculateClosestInputRequest,\n GetAllCanBeConnectedInputsAndRectsRequest,\n CalculateConnectionLineByBehaviorRequest, GetConnectorAndRectRequest,\n IConnectorAndRect, IClosestInput, MarkAllCanBeConnectedInputsRequest, UnmarkAllCanBeConnectedInputsRequest\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { EFConnectableSide, FConnectorBase, FNodeOutputDirective } from '../../../f-connectors';\nimport { ILine, IPoint, RectExtensions, RoundedRect } from '@foblex/2d';\nimport { ICreateReassignConnectionDragData } from '../i-create-reassign-connection-drag-data';\nimport { fInject } from '../../f-injector';\nimport { FMediator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\nexport class ReassignConnectionDragHandler implements IDraggableItem<ICreateReassignConnectionDragData> {\n\n private _fMediator = fInject(FMediator);\n private _fComponentsStore = fInject(FComponentsStore);\n\n private readonly _toConnectorRect = new RoundedRect();\n\n private get _fSnapConnection(): FSnapConnectionComponent | undefined {\n return this._fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private _fOutputWithRect!: IConnectorAndRect;\n private _fInputWithRect!: IConnectorAndRect;\n\n private _canBeConnectedInputs: IConnectorAndRect[] = [];\n\n private get _fOutput(): FConnectorBase {\n const result = this._fComponentsStore.fOutputs.find((x) => x.fId === this._fConnection.fOutputId);\n if (!result) {\n throw new Error('Connection output not found');\n }\n return result;\n }\n\n private get _fInput(): FConnectorBase {\n const result = this._fComponentsStore.fInputs.find((x) => x.fId === this._fConnection.fInputId);\n if (!result) {\n throw new Error('Connection input not found');\n }\n return result;\n }\n\n constructor(\n private _fConnection: FConnectionBase,\n ) {\n this._toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this._fConnection.line.point2.x, this._fConnection.line.point2.y)\n );\n }\n\n public prepareDragSequence(): void {\n this._getAndMarkCanBeConnectedInputs();\n this._initializeSnapConnection();\n\n this._fOutputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fOutput));\n this._fInputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fInput));\n }\n\n private _getAndMarkCanBeConnectedInputs(): void {\n this._canBeConnectedInputs = this._fMediator.execute<IConnectorAndRect[]>(\n new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutput as FNodeOutputDirective)\n );\n\n this._fMediator.execute(\n new MarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n\n private _initializeSnapConnection(): void {\n if (!this._fSnapConnection) {\n return;\n }\n this._fSnapConnection.fOutputId = this._fConnection.fOutputId;\n this._fSnapConnection.initialize();\n }\n\n public onPointerMove(difference: IPoint): void {\n const fClosestInput = this._findClosestInput(difference);\n\n this._drawConnection(\n this._toConnectorRect.addPoint(difference),\n fClosestInput?.fConnector.fConnectableSide || this._fInputWithRect.fConnector.fConnectableSide\n );\n if (this._fSnapConnection) {\n this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));\n }\n }\n\n private _drawConnection(difference: IPoint, fSide: EFConnectableSide): void {\n const line = this._getLineToPointer(difference, fSide);\n this._fConnection.setLine(line.point1, this._fOutputWithRect.fConnector.fConnectableSide, line.point2, fSide);\n this._fConnection.redraw();\n }\n\n private _getLineToPointer(difference: IPoint, fSide: EFConnectableSide): ILine {\n return this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n RoundedRect.fromRect(RectExtensions.initialize(difference.x, difference.y)),\n this._fConnection.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fSide\n )\n );\n }\n\n private _drawSnapConnection(fClosestInput: IClosestInput | undefined): void {\n if (fClosestInput) {\n const line = this._getLineToClosestInput(fClosestInput);\n this._fSnapConnection!.show();\n this._fSnapConnection!.setLine(line.point1, this._fOutputWithRect.fConnector.fConnectableSide, line.point2, fClosestInput.fConnector.fConnectableSide);\n this._fSnapConnection!.redraw();\n } else {\n this._fSnapConnection?.hide();\n }\n }\n\n private _getLineToClosestInput(fClosestInput: IClosestInput): ILine {\n return this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n fClosestInput.fRect,\n this._fSnapConnection!.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fClosestInput.fConnector.fConnectableSide\n ));\n }\n\n private _findClosestInput(difference: IPoint): IClosestInput | undefined {\n return this._fMediator.execute<IClosestInput | undefined>(\n new CalculateClosestInputRequest(\n this._toConnectorRect.addPoint(difference),\n this._canBeConnectedInputs,\n )\n );\n }\n\n private _getClosestInputForSnapConnection(fClosestInput: IClosestInput | undefined): IClosestInput | undefined {\n return fClosestInput && fClosestInput.distance < this._fSnapConnection!.fSnapThreshold ? fClosestInput : undefined;\n }\n\n public onPointerUp(): void {\n this._drawConnection(this._toConnectorRect, this._fInputWithRect.fConnector.fConnectableSide);\n this._fSnapConnection?.hide();\n\n this._fMediator.execute(\n new UnmarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n\n public getData(): ICreateReassignConnectionDragData {\n return {\n toConnectorRect: this._toConnectorRect,\n fOutputId: this._fConnection.fOutputId,\n canBeConnectedInputs: this._canBeConnectedInputs\n };\n }\n\n public getConnection(): FConnectionBase {\n return this._fConnection;\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FReassignConnectionEvent {\n\n constructor(\n public fConnectionId: string,\n public fOutputId: string,\n public oldFInputId: string,\n public newFInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { FDraggableBase } from '../../../f-draggable-base';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectorBase } from '../../../../f-connectors';\nimport { FindInputAtPositionRequest } from '../../../../domain';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeExecution implements IExecution<ReassignConnectionFinalizeRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fDraggable(): FDraggableBase {\n return this._fComponentsStore.fDraggable!;\n }\n\n private get _fDragHandler(): ReassignConnectionDragHandler {\n return this._fDraggableDataContext.draggableItems[ 0 ] as ReassignConnectionDragHandler;\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): void {\n if (!this._isDroppedConnectionReassignEvent()) {\n return;\n }\n this._applyReassignEvent(request.event);\n this._fDragHandler.onPointerUp();\n }\n\n private _isDroppedConnectionReassignEvent(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ReassignConnectionDragHandler\n );\n }\n\n private _applyReassignEvent(event: IPointerEvent): void {\n const fInput = this._getInputUnderPointer(event);\n if (\n !!fInput && !this._isReassignToDifferentInput(fInput)\n ) {\n return;\n }\n this._emitReassignConnectionEvent(event, fInput);\n }\n\n private _getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this._fMediator.execute<FConnectorBase | undefined>(\n new FindInputAtPositionRequest(\n event.getPosition(),\n this._getDragHandlerData().toConnectorRect,\n this._getDragHandlerData().canBeConnectedInputs\n )\n );\n }\n\n private _isReassignToDifferentInput(fInput: FConnectorBase): boolean {\n return this._fDragHandler.getConnection().fInputId !== fInput.fId;\n }\n\n private _emitReassignConnectionEvent(event: IPointerEvent, fInput?: FConnectorBase): void {\n this._fDraggable.fReassignConnection.emit(this._getEventData(event, fInput));\n }\n\n private _getEventData(event: IPointerEvent, fInput?: FConnectorBase): FReassignConnectionEvent {\n const fConnection = this._fDragHandler.getConnection();\n\n return new FReassignConnectionEvent(\n fConnection.fId,\n fConnection.fOutputId,\n fConnection.fInputId,\n fInput?.fId, event.getPosition()\n );\n }\n\n private _getDragHandlerData() {\n return this._fDragHandler.getData();\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FEventTrigger } from '../../../../domain';\n\nexport class ReassignConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { UpdateItemAndChildrenLayersRequest } from '../../../../domain';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FConnectionBase } from '../../../../f-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationExecution implements IExecution<ReassignConnectionPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private _fConnection: FConnectionBase | undefined;\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: ReassignConnectionPreparationRequest): void {\n if (!this._isValid(request)) {\n return;\n }\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.draggableItems = [\n new ReassignConnectionDragHandler(this._fConnection!)\n ];\n\n setTimeout(() => this._updateConnectionLayer());\n }\n\n private _isValid(request: ReassignConnectionPreparationRequest): boolean {\n this._fConnection = this._getConnectionToReassign(this._getPointInFlow(request));\n return !!this._fConnection && !this._fDraggableDataContext.draggableItems.length;\n }\n\n private _getPointInFlow(request: ReassignConnectionPreparationRequest): IPoint {\n return Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost)\n .sub(this._transform.scaledPosition).sub(this._transform.position)\n .div(this._transform.scale);\n }\n\n private _getConnectionToReassign(position: IPoint): FConnectionBase | undefined {\n const connections = this._getConnectionsFromPoint(position);\n return connections.length ? connections[0] : undefined;\n }\n\n private _getConnectionsFromPoint(position: IPoint): FConnectionBase[] {\n return this._fConnections.filter((x) => {\n return this._isPointInsideCircle(position, x.fDragHandle.point) && !x.fDraggingDisabled;\n });\n }\n\n private _isPointInsideCircle(point: IPoint, circleCenter: IPoint): boolean {\n return (point.x - circleCenter.x) ** 2 + (point.y - circleCenter.y) ** 2 <= 8 ** 2;\n }\n\n private _updateConnectionLayer(): void {\n this._fMediator.execute<void>(\n new UpdateItemAndChildrenLayersRequest(\n this._fConnection!, this._fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement\n )\n );\n }\n}\n","import {\n CreateConnectionDragHandlerPreparationExecution,\n CreateConnectionFinalizeExecution,\n CreateConnectionFromOutletPreparationExecution,\n CreateConnectionFromOutputPreparationExecution,\n CreateConnectionPreparationExecution,\n GetCanBeConnectedOutputByOutletExecution,\n} from './create-connection';\nimport {\n ReassignConnectionFinalizeExecution,\n ReassignConnectionPreparationExecution,\n} from './reassign-connection';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n CreateConnectionFinalizeExecution,\n\n CreateConnectionDragHandlerPreparationExecution,\n\n CreateConnectionFromOutletPreparationExecution,\n\n GetCanBeConnectedOutputByOutletExecution,\n\n CreateConnectionFromOutputPreparationExecution,\n\n CreateConnectionPreparationExecution,\n\n ReassignConnectionFinalizeExecution,\n\n ReassignConnectionPreparationExecution,\n];\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedParentNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedParentNodeRectRequest } from './get-normalized-parent-node-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { GetNodePaddingRequest } from '../../../domain';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedParentNodeRectRequest)\nexport class GetNormalizedParentNodeRectExecution\n implements IExecution<GetNormalizedParentNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedParentNodeRectRequest): IRect {\n let result = RectExtensions.initialize(-Infinity, -Infinity, Infinity, Infinity);\n const parentNode = this.getNode(request.fNode.fParentId);\n if (parentNode) {\n result = this.getParentRect(parentNode);\n }\n return result;\n }\n\n private getNode(fId?: string | null): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === fId);\n }\n\n private getParentRect(node: FNodeBase): IRect {\n const rect = this._getNodeRect(node);\n const padding = this.getNodePadding(node, rect);\n return RectExtensions.initialize(\n rect.x + padding[ 0 ],\n rect.y + padding[ 1 ],\n rect.width - padding[ 0 ] - padding[ 2 ],\n rect.height - padding[ 1 ] - padding[ 3 ]\n );\n }\n\n private _getNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.execute<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement, false));\n }\n\n private getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.execute<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsArrayHasParentNodeRequest {\n\n constructor(\n public fParentNodes: FNodeBase[],\n public fDraggedNodes: FNodeBase[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IsArrayHasParentNodeRequest } from './is-array-has-parent-node.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(IsArrayHasParentNodeRequest)\nexport class IsArrayHasParentNodeExecution\n implements IExecution<IsArrayHasParentNodeRequest, boolean> {\n\n public handle(request: IsArrayHasParentNodeRequest): boolean {\n return this._isParentNodeInArray(this._getParentNodeIds(request.fParentNodes), request.fDraggedNodes);\n }\n\n private _getParentNodeIds(fParentNodes: FNodeBase[]): string[] {\n return fParentNodes.map((x) => x.fId);\n }\n\n private _isParentNodeInArray(parentNodeIds: string[], fDraggedNodes: FNodeBase[]): boolean {\n return fDraggedNodes.some((x) => parentNodeIds.includes(x.fId));\n }\n}\n\n\n","export class FNodeIntersectedWithConnections {\n\n constructor(\n public fNodeId: string,\n public fConnectionIds: string[],\n ) {\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsConnectionUnderNodeRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { GetIntersections, IRoundedRect } from '@foblex/2d';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IsConnectionUnderNodeRequest } from './is-connection-under-node.request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeIntersectedWithConnections } from '../../index';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FConnectionBase } from '../../../f-connection';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(IsConnectionUnderNodeRequest)\nexport class IsConnectionUnderNodeExecution implements IExecution<IsConnectionUnderNodeRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: IsConnectionUnderNodeRequest): void {\n\n const fOutputConnectors = this._getOutputConnectors(request.fNode);\n const fInputConnectors = this._getInputConnectors(request.fNode);\n\n if (!fOutputConnectors.length || !fInputConnectors.length) {\n return;\n }\n\n const fOutputConnections = this._getOutputConnectionsId(fOutputConnectors);\n const fInputConnections = this._getInputConnectionsId(fInputConnectors);\n\n const fConnectionsUnderNode = this._calculateConnectionsUnderNode(request.fNode).filter((x) => {\n return !fOutputConnections.includes(x.fId) && !fInputConnections.includes(x.fId);\n });\n\n if (!fConnectionsUnderNode.length) {\n return;\n }\n\n this._emitNodeIntersectedWithConnections(request.fNode, fConnectionsUnderNode);\n }\n\n private _getOutputConnectors(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutputs.filter((x) => {\n return fNode.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private _getInputConnectors(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fInputs.filter((x) => {\n return fNode.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private _getOutputConnectionsId(connectors: FConnectorBase[]): string[] {\n const connectorsId = this._getConnectorsId(connectors);\n return this._fComponentsStore.fConnections\n .filter((x) => connectorsId.includes(x.fOutputId))\n .map((x) => x.fId);\n }\n\n private _getInputConnectionsId(connectors: FConnectorBase[]): string[] {\n const connectorsId = this._getConnectorsId(connectors);\n return this._fComponentsStore.fConnections\n .filter((x) => connectorsId.includes(x.fInputId))\n .map((x) => x.fId);\n }\n\n private _getConnectorsId(connectors: FConnectorBase[]): string[] {\n return connectors.map((x) => x.fId);\n }\n\n private _calculateConnectionsUnderNode(fNode: FNodeBase): FConnectionBase[] {\n const fNodeRect = this._fMediator.execute<IRoundedRect>(new GetNormalizedElementRectRequest(fNode.hostElement, true));\n return this._fComponentsStore.fConnections.filter((x) => this._isConnectionHasIntersectionsWithNode(x, fNodeRect));\n }\n\n private _isConnectionHasIntersectionsWithNode(fConnection: FConnectionBase, fNodeRect: IRoundedRect): boolean {\n return GetIntersections.getRoundedRectIntersectionsWithSVGPath(fConnection.fPath.hostElement, fNodeRect).length > 0;\n }\n\n private _emitNodeIntersectedWithConnections(fNode: FNodeBase, fConnections: FConnectionBase[]): void {\n this._fComponentsStore.fDraggable?.fNodeIntersectedWithConnections.emit(\n new FNodeIntersectedWithConnections(\n fNode.fId,\n fConnections.map((x) => x.fId)\n )\n );\n }\n}\n","import { IsArrayHasParentNodeExecution } from './is-array-has-parent-node';\nimport { GetNormalizedParentNodeRectExecution } from './get-normalized-parent-node-rect';\nimport { IsConnectionUnderNodeExecution } from './is-connection-under-node';\n\nexport const DRAG_AND_DROP_COMMON_PROVIDERS = [\n\n GetNormalizedParentNodeRectExecution,\n\n IsArrayHasParentNodeExecution,\n\n IsConnectionUnderNodeExecution,\n];\n","export class IsDragStartedRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IsDragStartedRequest } from './is-drag-started-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(IsDragStartedRequest)\nexport class IsDragStartedExecution implements IExecution<IsDragStartedRequest, boolean> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: IsDragStartedRequest): boolean {\n return !!this._fComponentsStore.fDraggable?.isDragStarted;\n }\n}\n","import { ILine, IPoint, PointExtensions, RoundedRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { CalculateConnectionLineByBehaviorRequest, GetConnectorAndRectRequest, IConnectorAndRect } from '../../../domain';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FComponentsStore } from '../../../f-storage';\nimport { fInject } from '../../f-injector';\nimport { FConnectionBase } from '../../../f-connection';\n\nexport class BaseConnectionDragHandler {\n\n private _fMediator = fInject(FMediator);\n private _fComponentStore = fInject(FComponentsStore);\n\n private _fOutputWithRect!: IConnectorAndRect;\n private _fInputWithRect!: IConnectorAndRect;\n\n private get _fOutput(): FConnectorBase {\n const result = this._fComponentStore.fOutputs.find((x) => x.fId === this.fConnection.fOutputId)!;\n if (!result) {\n throw new Error(this._connectorNotFoundPrefix(`fOutput with id ${ this.fConnection.fOutputId } not found`));\n }\n return result;\n }\n\n private get _fInput(): FConnectorBase {\n const result = this._fComponentStore.fInputs.find((x) => x.fId === this.fConnection.fInputId)!;\n if (!result) {\n throw new Error(this._connectorNotFoundPrefix(`fInput with id ${ this.fConnection.fInputId } not found`));\n }\n return result;\n }\n\n private _sourceDifference = PointExtensions.initialize();\n private _targetDifference = PointExtensions.initialize();\n\n constructor(\n public fConnection: FConnectionBase,\n ) {\n this._initialize();\n }\n\n private _initialize(): void {\n this._fOutputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fOutput));\n this._fInputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fInput));\n }\n\n public setSourceDifference(difference: IPoint): void {\n this._sourceDifference = difference;\n }\n\n public setTargetDifference(difference: IPoint): void {\n this._targetDifference = difference;\n }\n\n protected redraw(): void {\n this._redrawConnection(this._recalculateConnection());\n }\n\n private _recalculateConnection(): ILine {\n return this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n RoundedRect.fromRoundedRect(this._fOutputWithRect.fRect).addPoint(this._sourceDifference),\n RoundedRect.fromRoundedRect(this._fInputWithRect.fRect).addPoint(this._targetDifference),\n this.fConnection.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n this._fInputWithRect.fConnector.fConnectableSide\n ));\n }\n\n private _redrawConnection(line: ILine): void {\n this.fConnection.setLine(\n line.point1, this._fOutputWithRect.fConnector.fConnectableSide,\n line.point2, this._fInputWithRect.fConnector.fConnectableSide\n );\n this.fConnection.redraw();\n }\n\n private _connectorNotFoundPrefix(message: string): string {\n return `ConnectionDragHandler Error: Connection From (fOutput)${ this.fConnection.fOutputId } To (fInput)${ this.fConnection.fInputId }. ${ message }. Please ensure that all f-connections are associated with existing connectors`;\n }\n}\n","import { BaseConnectionDragHandler } from './base-connection.drag-handler';\nimport { FConnectionBase } from '../../../f-connection';\nimport { IPoint } from '@foblex/2d';\n\nexport class SourceConnectionDragHandler extends BaseConnectionDragHandler {\n\n constructor(fConnection: FConnectionBase) {\n super(fConnection);\n }\n\n public override setSourceDifference(difference: IPoint) {\n super.setSourceDifference(difference);\n this.redraw();\n }\n}\n","import { BaseConnectionDragHandler } from './base-connection.drag-handler';\nimport { FConnectionBase } from '../../../f-connection';\nimport { IPoint } from '@foblex/2d';\n\nexport class SourceTargetConnectionDragHandler extends BaseConnectionDragHandler {\n\n private _callTracker = new Map<string, boolean>();\n\n constructor(fConnection: FConnectionBase) {\n super(fConnection);\n }\n\n public override setSourceDifference(difference: IPoint) {\n super.setSourceDifference(difference);\n this._checkAndTriggerAction();\n }\n\n public override setTargetDifference(difference: IPoint) {\n super.setTargetDifference(difference);\n this._checkAndTriggerAction();\n }\n\n private _checkAndTriggerAction() {\n if ([...this._callTracker.values()].every(Boolean)) {\n this._callTracker.clear();\n this.redraw();\n }\n }\n}\n\n","import { FConnectionBase } from '../../../f-connection';\nimport { BaseConnectionDragHandler } from './base-connection.drag-handler';\nimport { IPoint } from '@foblex/2d';\n\nexport class TargetConnectionDragHandler extends BaseConnectionDragHandler {\n\n constructor(fConnection: FConnectionBase) {\n super(fConnection);\n }\n\n public override setTargetDifference(difference: IPoint) {\n super.setTargetDifference(difference);\n this.redraw();\n }\n}\n","import { INodeMoveLimitsAndPosition } from '../../i-node-move-limits-and-position';\n\nexport class CalculateCommonNodeMoveLimitsRequest {\n\n constructor(\n public limits: INodeMoveLimitsAndPosition[]\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CalculateCommonNodeMoveLimitsRequest } from './calculate-common-node-move-limits.request';\nimport { IPoint } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { INodeMoveLimitsAndPosition } from '../../i-node-move-limits-and-position';\nimport { INodeMoveLimits } from '../../i-node-move-limits';\n\n@Injectable()\n@FExecutionRegister(CalculateCommonNodeMoveLimitsRequest)\nexport class CalculateCommonNodeMoveLimitsExecution\n implements IExecution<CalculateCommonNodeMoveLimitsRequest, INodeMoveLimits> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _vCellSize(): number {\n return this._fComponentsStore.fDraggable!.vCellSize;\n }\n\n private get _hCellSize(): number {\n return this._fComponentsStore.fDraggable!.hCellSize;\n }\n\n public handle(request: CalculateCommonNodeMoveLimitsRequest): INodeMoveLimits {\n return this._calculateCommonLimits(request.limits);\n }\n\n private _calculateCommonLimits(limits: INodeMoveLimitsAndPosition[]): INodeMoveLimits {\n this._snapLimitToGrid(limits[0]);\n return limits.reduce((result: INodeMoveLimits, x) => {\n this._snapLimitToGrid(x);\n return this._clampRestrictions(result, x);\n }, limits[0]);\n }\n\n private _clampRestrictions(common: INodeMoveLimits, x: INodeMoveLimitsAndPosition): INodeMoveLimits {\n common.min = this._clampMinRestrictions(common.min, x.min);\n common.max = this._clampMaxRestrictions(common.max, x.max);\n return common;\n }\n\n private _clampMinRestrictions(common: IPoint, node: IPoint): IPoint {\n return {\n x: Math.max(common.x, node.x),\n y: Math.max(common.y, node.y),\n }\n }\n\n private _clampMaxRestrictions(common: IPoint, node: IPoint): IPoint {\n return {\n x: Math.min(common.x, node.x),\n y: Math.min(common.y, node.y),\n }\n }\n\n private _snapLimitToGrid(restriction: INodeMoveLimitsAndPosition): void {\n const { min, max, position } = restriction;\n restriction.min = {\n x: this._snapLimitToGridMinimum(position.x + min.x, this._hCellSize) - position.x,\n y: this._snapLimitToGridMinimum(position.y + min.y, this._vCellSize) - position.y,\n };\n restriction.max = {\n x: this._snapLimitToGridMaximum(position.x + max.x, this._hCellSize) - position.x,\n y: this._snapLimitToGridMaximum(position.y + max.y, this._vCellSize) - position.y,\n };\n }\n\n private _snapLimitToGridMinimum(value: number, cellSize: number): number {\n return Math.ceil(value / cellSize) * cellSize;\n }\n\n private _snapLimitToGridMaximum(value: number, cellSize: number): number {\n return Math.floor(value / cellSize) * cellSize;\n }\n}\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\n\nexport class PutInputConnectionHandlersToArrayRequest {\n\n constructor(\n public fDragHandler: NodeDragHandler,\n public outputIds: string[],\n public result: BaseConnectionDragHandler[]\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { PutInputConnectionHandlersToArrayRequest } from './put-input-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\nimport { SourceTargetConnectionDragHandler } from '../../../connection-drag-handlers/source-target-connection.drag-handler';\nimport { TargetConnectionDragHandler } from '../../../connection-drag-handlers/target-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutInputConnectionHandlersToArrayRequest)\nexport class PutInputConnectionHandlersToArrayExecution\n implements IExecution<PutInputConnectionHandlersToArrayRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: PutInputConnectionHandlersToArrayRequest): void {\n this._getInputConnections(request.fDragHandler.fNode).forEach((fConnection) => {\n this._createAndSetConnectionToNodeHandler(fConnection, request);\n });\n }\n\n private _getInputConnections(fNode: FNodeBase): FConnectionBase[] {\n const ids = new Set(this._getNodeInputIds(fNode));\n return this._fConnections.filter((x) => ids.has(x.fInputId));\n }\n\n private _getNodeInputIds(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fInputs\n .filter((x) => fNode.isContains(x.hostElement))\n .map((x) => x.fId);\n }\n\n private _createAndSetConnectionToNodeHandler(fConnection: FConnectionBase, request: PutInputConnectionHandlersToArrayRequest): void {\n let fHandler = this._getExistingConnectionHandler(request.result, fConnection);\n if (!fHandler) {\n fHandler = this._createConnectionHandler(request.outputIds, fConnection);\n request.result.push(fHandler);\n }\n request.fDragHandler.fTargetHandlers.push(fHandler);\n }\n\n private _getExistingConnectionHandler(fHandlers: BaseConnectionDragHandler[], fConnection: FConnectionBase): BaseConnectionDragHandler | undefined {\n return fHandlers.find((x) => x.fConnection.fId === fConnection.fId);\n }\n\n private _createConnectionHandler(outputIds: string[], fConnection: FConnectionBase): BaseConnectionDragHandler {\n let result: BaseConnectionDragHandler | undefined;\n if (outputIds.includes(fConnection.fOutputId)) {\n result = new SourceTargetConnectionDragHandler(fConnection);\n } else {\n result = new TargetConnectionDragHandler(fConnection);\n }\n return result;\n }\n}\n\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\n\nexport class PutOutputConnectionHandlersToArrayRequest {\n\n constructor(\n public fDragHandler: NodeDragHandler,\n public inputIds: string[],\n public result: BaseConnectionDragHandler[]\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { PutOutputConnectionHandlersToArrayRequest } from './put-output-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { SourceTargetConnectionDragHandler } from '../../../connection-drag-handlers/source-target-connection.drag-handler';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\nimport { SourceConnectionDragHandler } from '../../../connection-drag-handlers/source-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutOutputConnectionHandlersToArrayRequest)\nexport class PutOutputConnectionHandlersToArrayExecution\n implements IExecution<PutOutputConnectionHandlersToArrayRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: PutOutputConnectionHandlersToArrayRequest): void {\n this._getOutputConnections(request.fDragHandler.fNode).forEach((fConnection) => {\n this._createAndSetConnectionToNodeHandler(fConnection, request);\n });\n }\n\n public _getOutputConnections(node: FNodeBase): FConnectionBase[] {\n const ids = new Set(this._getNodeOutputIds(node));\n return this._fConnections.filter((x) => ids.has(x.fOutputId));\n }\n\n private _getNodeOutputIds(node: FNodeBase): string[] {\n return this._fComponentsStore.fOutputs\n .filter((x) => node.isContains(x.hostElement))\n .map((x) => x.fId);\n }\n\n private _createAndSetConnectionToNodeHandler(fConnection: FConnectionBase, request: PutOutputConnectionHandlersToArrayRequest): void {\n let fHandler = this._getExistingConnectionHandler(request.result, fConnection);\n if (!fHandler) {\n fHandler = this._createConnectionHandler(request.inputIds, fConnection);\n request.result.push(fHandler);\n }\n request.fDragHandler.fSourceHandlers.push(fHandler);\n }\n\n private _getExistingConnectionHandler(fHandlers: BaseConnectionDragHandler[], fConnection: FConnectionBase): BaseConnectionDragHandler | undefined {\n return fHandlers.find((x) => x.fConnection.fId === fConnection.fId);\n }\n\n private _createConnectionHandler(inputIds: string[], fConnection: FConnectionBase): BaseConnectionDragHandler {\n let result: BaseConnectionDragHandler;\n if (inputIds.includes(fConnection.fInputId)) {\n result = new SourceTargetConnectionDragHandler(fConnection);\n } else {\n result = new SourceConnectionDragHandler(fConnection)\n }\n return result;\n }\n}\n\n","import { FNodeBase } from '../../../../../f-node';\n\nexport class CalculateNodeMoveLimitsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public hasParentNodeInSelected: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CalculateNodeMoveLimitsRequest } from './calculate-node-move-limits.request';\nimport { IPoint, IRect, PointExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedParentNodeRectRequest } from '../../../../domain';\nimport { FNodeBase } from '../../../../../f-node';\nimport { GetNormalizedElementRectRequest } from '../../../../../domain';\nimport { INodeMoveLimits } from '../../i-node-move-limits';\n\n@Injectable()\n@FExecutionRegister(CalculateNodeMoveLimitsRequest)\nexport class CalculateNodeMoveLimitsExecution\n implements IExecution<CalculateNodeMoveLimitsRequest, INodeMoveLimits> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: CalculateNodeMoveLimitsRequest): INodeMoveLimits {\n if(!request.fNode.fParentId || request.hasParentNodeInSelected) {\n return { ...DEFAULT_LIMITS };\n }\n\n return this._calculateDifference(\n this._fParentRect(request.fNode), this._fNodeRect(request.fNode)\n );\n }\n\n private _fNodeRect(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement, false));\n }\n\n private _fParentRect(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n\n private _calculateDifference(fParentRect: IRect, fRect: IRect): INodeMoveLimits {\n return {\n min: this._calculateMinimumDifference(fParentRect, fRect),\n max: this._calculateMaximumDifference(fParentRect, fRect)\n };\n }\n\n private _calculateMinimumDifference(fParentRect: IRect, fRect: IRect): IPoint {\n return PointExtensions.initialize(fParentRect.x - fRect.x, fParentRect.y - fRect.y);\n }\n\n private _calculateMaximumDifference(fParentRect: IRect, fRect: IRect): IPoint {\n return PointExtensions.initialize(\n (fParentRect.x + fParentRect.width) - (fRect.x + fRect.width),\n (fParentRect.y + fParentRect.height) - (fRect.y + fRect.height),\n );\n }\n}\n\nconst DEFAULT_LIMITS: INodeMoveLimits = {\n min: PointExtensions.initialize(-Infinity, -Infinity),\n max: PointExtensions.initialize(Infinity, Infinity)\n};\n","import { FNodeBase } from '../../../f-node';\n\nexport class CreateMoveNodesDragModelFromSelectionRequest {\n\n constructor(\n public nodeWithDisabledSelection?: FNodeBase\n ) {\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FNodeBase } from '../../f-node';\nimport { BaseConnectionDragHandler } from './connection-drag-handlers';\n\nexport class NodeDragHandler implements IDraggableItem {\n\n private readonly _onPointerDownPosition = PointExtensions.initialize();\n\n constructor(\n public fNode: FNodeBase,\n public fSourceHandlers: BaseConnectionDragHandler[] = [],\n public fTargetHandlers: BaseConnectionDragHandler[] = [],\n ) {\n this._onPointerDownPosition = { ...fNode.position };\n }\n\n public onPointerMove(difference: IPoint): void {\n this._redraw(this._calculateNewPosition(difference));\n\n this.fSourceHandlers.forEach((x) => x.setSourceDifference(difference));\n this.fTargetHandlers.forEach((x) => x.setTargetDifference(difference));\n }\n\n private _calculateNewPosition(difference: IPoint): IPoint {\n return PointExtensions.sum(this._onPointerDownPosition, difference);\n }\n\n private _redraw(position: IPoint): void {\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n }\n\n public onPointerUp(): void {\n this.fNode.positionChange.emit(this.fNode.position);\n }\n}\n","import { IMinMaxPoint, IPoint } from '@foblex/2d';\nimport { fInject } from '../f-injector';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class PointBoundsLimiter {\n\n private _fComponentsStore = fInject(FComponentsStore);\n\n private _vCellSize = this._fComponentsStore.fDraggable!.vCellSize;\n private _hCellSize = this._fComponentsStore.fDraggable!.hCellSize;\n\n constructor(\n private _onPointerDown: IPoint,\n private readonly _limit: IMinMaxPoint\n ) {\n }\n\n public limit(difference: IPoint, adjustCellSize: boolean): IPoint {\n const { min, max } = this._limit;\n\n const { x, y } = this._cellSizeStrategies[+adjustCellSize](difference);\n\n return {\n x: this._clamp(x, min.x, max.x),\n y: this._clamp(y, min.y, max.y),\n };\n }\n\n private _cellSizeStrategies: Record<number, (difference: IPoint) => IPoint> = {\n 0: this._skipCellSize.bind(this),\n 1: this._applyCellSize.bind(this)\n };\n\n private _applyCellSize(difference: IPoint): IPoint {\n return {\n x: this._snapToGrid(this._onPointerDown.x + difference.x, this._hCellSize) - this._onPointerDown.x,\n y: this._snapToGrid(this._onPointerDown.y + difference.y, this._vCellSize) - this._onPointerDown.y\n };\n }\n\n private _skipCellSize(difference: IPoint): IPoint {\n return difference;\n }\n\n private _clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n }\n\n private _snapToGrid(value: number, cellSize: number): number {\n return Math.round(value / cellSize) * cellSize;\n }\n}\n","import { IMinMaxPoint, IPoint, IRect } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FComponentsStore } from '../../f-storage';\nimport { fInject } from '../f-injector';\nimport { PointBoundsLimiter } from './point-bounds-limiter';\nimport { NodeDragHandler } from './node.drag-handler';\n// import { FMediator } from '@foblex/mediator';\n\nexport class SummaryNodeDragHandler implements IDraggableItem {\n\n // private _fMediator = fInject(FMediator);\n private _fComponentStore = fInject(FComponentsStore);\n\n private readonly _fBoundsLimiter: PointBoundsLimiter;\n\n constructor(\n public limits: IMinMaxPoint,\n public fHandlers: NodeDragHandler[],\n public commonRect: IRect\n ) {\n //this._onPointerDownPosition = this._getDraggedNodesBoundingRect();\n this._fBoundsLimiter = new PointBoundsLimiter(this.commonRect, limits);\n }\n\n // private _getDraggedNodesBoundingRect(): IRect {\n // return RectExtensions.union(this.fHandlers.map((x) => {\n // return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.fNode.hostElement, false));\n // })) || RectExtensions.initialize();\n // }\n\n public onPointerMove(difference: IPoint): void {\n const adjustCellSize = this._fComponentStore.fDraggable!.fCellSizeWhileDragging;\n const differenceWithRestrictions = this._fBoundsLimiter.limit(difference, adjustCellSize);\n\n this.fHandlers.forEach((x) => x.onPointerMove(differenceWithRestrictions));\n }\n\n public onPointerUp(): void {\n this.fHandlers.forEach((x) => x.onPointerUp());\n }\n\n public calculateRestrictedDifference(difference: IPoint): IPoint {\n return this._fBoundsLimiter.limit(difference, true);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from './create-move-nodes-drag-model-from-selection.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { CalculateNodeMoveLimitsRequest } from './domain/calculate-node-move-limits';\nimport { PutOutputConnectionHandlersToArrayRequest } from './domain/put-output-connection-handlers-to-array';\nimport {\n PutInputConnectionHandlersToArrayRequest\n} from './domain/put-input-connection-handlers-to-array';\nimport { IsArrayHasParentNodeRequest } from '../../domain';\nimport {\n GetDeepChildrenNodesAndGroupsRequest,\n GetNormalizedElementRectRequest,\n GetParentNodesRequest\n} from '../../../domain';\nimport { flatMap } from '@foblex/utils';\nimport { CalculateCommonNodeMoveLimitsRequest } from './domain/calculate-common-node-move-limits';\nimport { IMinMaxPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { BaseConnectionDragHandler } from '../connection-drag-handlers';\nimport { SummaryNodeDragHandler } from '../summary-node.drag-handler';\nimport { INodeMoveLimitsAndPosition } from './i-node-move-limits-and-position';\nimport { INodeMoveLimits } from './i-node-move-limits';\n\n@Injectable()\n@FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)\nexport class CreateMoveNodesDragModelFromSelectionExecution\n implements IExecution<CreateMoveNodesDragModelFromSelectionRequest, SummaryNodeDragHandler> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: CreateMoveNodesDragModelFromSelectionRequest): SummaryNodeDragHandler {\n const fDraggedNodes = this._getDraggedNodes(request.nodeWithDisabledSelection);\n\n const fNodesToDrag = this._getNodesToDragWithCommonLimits(fDraggedNodes);\n\n const fDragHandlers = this._mapToNodeDragHandlers(fNodesToDrag);\n\n this._setConnectionsHandlersToNodes(fDragHandlers, this._getAllOutputIds(fNodesToDrag), this._getAllInputIds(fNodesToDrag));\n\n const commonLimits = this._calculateCommonLimits(\n this._getNodesMoveLimits(fNodesToDrag, [], fDraggedNodes)\n );\n\n return new SummaryNodeDragHandler(\n commonLimits, fDragHandlers, this._getDraggedNodesBoundingRect(fNodesToDrag)\n );\n }\n\n private _getDraggedNodes(nodeWithDisabledSelection?: FNodeBase): FNodeBase[] {\n const result = this._getNodesFromSelection();\n if (nodeWithDisabledSelection) {\n result.push(nodeWithDisabledSelection);\n }\n return result;\n }\n\n private _getNodesFromSelection(): FNodeBase[] {\n return this._fDraggableDataContext.selectedItems\n .map((x) => this._findNode(x.hostElement))\n .filter((x): x is FNodeBase => !!x);\n }\n\n private _findNode(hostElement: HTMLElement | SVGElement): FNodeBase | undefined {\n return this._fComponentsStore.fNodes\n .find(n => n.isContains(hostElement));\n }\n\n private _getNodesToDragWithCommonLimits(fDraggedNodes: FNodeBase[]): FNodeBase[] {\n return fDraggedNodes.reduce((result: FNodeBase[], x: FNodeBase) => {\n result.push(x);\n return result.concat(this._getChildrenNodes(x.fId));\n }, []);\n }\n\n private _getNodesMoveLimits(fNodes: FNodeBase[], fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): INodeMoveLimitsAndPosition[] {\n return fDraggedNodes.map((x) => {\n const fParentNodes = this._fMediator.execute<FNodeBase[]>(new GetParentNodesRequest(x));\n return { position: x.position, ...this._getNodeMoveLimits(x, fParentNodes, fDraggedNodes) };\n });\n }\n\n private _getNodeMoveLimits(fNode: FNodeBase, fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): INodeMoveLimits {\n return this._fMediator.execute<IMinMaxPoint>(\n new CalculateNodeMoveLimitsRequest(fNode, this._isParentNodeInArray(fParentNodes, fDraggedNodes))\n );\n }\n\n private _isParentNodeInArray(fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): boolean {\n return this._fMediator.execute<boolean>(new IsArrayHasParentNodeRequest(fParentNodes, fDraggedNodes))\n }\n\n private _getChildrenNodes(fId: string): FNodeBase[] {\n return this._fMediator.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private _calculateCommonLimits(limits: INodeMoveLimitsAndPosition[]): IMinMaxPoint {\n return this._fMediator.execute<IMinMaxPoint>(\n new CalculateCommonNodeMoveLimitsRequest(limits)\n );\n }\n\n private _getAllOutputIds(fNodes: FNodeBase[]): string[] {\n return flatMap(fNodes, (fNode) => this._getNodeOutputIds(fNode));\n }\n\n private _getNodeOutputIds(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fOutputs.filter((x) => fNode.fId === x.fNodeId)\n .map((x) => x.fId);\n }\n\n private _getAllInputIds(fNodes: FNodeBase[]): string[] {\n return flatMap(fNodes, (fNode) => this._getNodeInputIds(fNode));\n }\n\n private _getNodeInputIds(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fInputs.filter((x) => fNode.fId === x.fNodeId)\n .map((x) => x.fId);\n }\n\n private _mapToNodeDragHandlers(items: FNodeBase[]): NodeDragHandler[] {\n return items.map((x) => new NodeDragHandler(x));\n }\n\n private _setConnectionsHandlersToNodes(\n handlers: NodeDragHandler[], outputIds: string[], inputIds: string[]\n ): void {\n const fConnectionHandlers: BaseConnectionDragHandler[] = [];\n handlers.forEach((fNodeHandler) => {\n this._fMediator.execute(new PutOutputConnectionHandlersToArrayRequest(fNodeHandler, inputIds, fConnectionHandlers));\n this._fMediator.execute(new PutInputConnectionHandlersToArrayRequest(fNodeHandler, outputIds, fConnectionHandlers));\n });\n }\n\n private _getDraggedNodesBoundingRect(fNodes: FNodeBase[]): IRect {\n return RectExtensions.union(fNodes.map((x) => {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement, false));\n })) || RectExtensions.initialize();\n }\n}\n","import { CreateMoveNodesDragModelFromSelectionExecution } from './create-move-nodes-drag-model-from-selection.execution';\nimport { CalculateNodeMoveLimitsExecution } from './domain/calculate-node-move-limits';\nimport { PutInputConnectionHandlersToArrayExecution } from './domain/put-input-connection-handlers-to-array';\nimport { PutOutputConnectionHandlersToArrayExecution } from './domain/put-output-connection-handlers-to-array';\nimport { CalculateCommonNodeMoveLimitsExecution } from './domain/calculate-common-node-move-limits';\n\nexport const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [\n\n CalculateCommonNodeMoveLimitsExecution,\n\n CalculateNodeMoveLimitsExecution,\n\n PutInputConnectionHandlersToArrayExecution,\n\n PutOutputConnectionHandlersToArrayExecution,\n\n CreateMoveNodesDragModelFromSelectionExecution,\n];\n","import { IRect } from '@foblex/2d';\nimport { FNodeBase } from '../../../f-node';\n\nexport class LineAlignmentPreparationRequest {\n\n constructor(\n public fNodes: FNodeBase[],\n public commonRect: IRect\n ) {\n }\n}\n","import { findClosestAlignment, IMinMaxPoint, IPoint, IRect, ISize, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { fInject, IDraggableItem, PointBoundsLimiter } from '../index';\nimport { FComponentsStore } from '../../f-storage';\nimport { ILineAlignmentResult, LineService } from '../../f-line-alignment';\n\nexport class LineAlignmentDragHandler implements IDraggableItem {\n\n private _fComponentsStore = fInject(FComponentsStore);\n\n private _debounceTimer: any = null;\n\n private readonly _transform: ITransformModel;\n\n constructor(\n private _lineService: LineService,\n private _size: ISize,\n private _draggedNodeRect: IRect,\n private _rects: IRect[],\n private _restrictions: IMinMaxPoint,\n ) {\n this._transform = this._fComponentsStore.fCanvas?.transform!;\n }\n\n public onPointerMove(difference: IPoint): void {\n const restrictedDifference = this._getDifference(difference);\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n\n this._debounceTimer = setTimeout(() => this._drawIntersectingLines(restrictedDifference), 15);\n }\n\n private _drawIntersectingLines(difference: IPoint): void {\n const intersect = this.findNearestCoordinate(difference);\n if (intersect.xResult.value !== undefined) {\n this._lineService.drawVerticalLine(intersect.xResult.value, this._size, this._transform);\n } else {\n this._lineService.hideVerticalLine();\n }\n if (intersect.yResult.value !== undefined) {\n this._lineService.drawHorizontalLine(intersect.yResult.value, this._size, this._transform);\n } else {\n this._lineService.hideHorizontalLine();\n }\n }\n\n private _getDifference(difference: IPoint): IPoint {\n return {\n x: Math.min(Math.max(difference.x, this._restrictions.min.x), this._restrictions.max.x),\n y: Math.min(Math.max(difference.y, this._restrictions.min.y), this._restrictions.max.y)\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n const rect = RectExtensions.addPoint(this._draggedNodeRect, difference);\n return findClosestAlignment(this._rects, rect, this._fComponentsStore.fLineAlignment!.fAlignThreshold);\n }\n\n public onPointerUp(): void {\n this._lineService.hideVerticalLine();\n this._lineService.hideHorizontalLine();\n\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n this._debounceTimer = null;\n }\n }\n}\n","import { ILineAlignmentRect } from './i-line-alignment-rect';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineElement {\n\n private readonly element: HTMLElement;\n\n constructor(\n fBrowser: BrowserService,\n private readonly hostElement: HTMLElement,\n ) {\n this.element = fBrowser.document.createElement('div');\n this.hostElement.appendChild(this.element);\n this.element.classList.add('f-line');\n }\n\n public hide(): void {\n this.element.style.display = 'none';\n }\n\n public show(): void {\n this.element.style.display = 'block'\n }\n\n public draw(object: Partial<ILineAlignmentRect>): void {\n this.element.style.position = 'absolute';\n Object.keys(object).forEach((key: string) => {\n // @ts-ignore\n this.element.style[ key ] = object[ key ] + 'px';\n });\n }\n}\n\n","import { ISize, ITransformModel } from '@foblex/2d';\nimport { LineElement } from './line-element';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineService {\n\n private fHorizontalLine: LineElement;\n private fVerticalLine: LineElement;\n\n constructor(fBrowser: BrowserService, private hostElement: HTMLElement) {\n this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);\n this.fVerticalLine = new LineElement(fBrowser, this.hostElement);\n this.fHorizontalLine.hide();\n this.fVerticalLine.hide();\n }\n\n public drawVerticalLine(x: number, size: ISize, transform: ITransformModel): void {\n this.fVerticalLine.show();\n this.fVerticalLine.draw({\n left: x * transform.scale + transform.position.x + transform.scaledPosition.x,\n top: 0,\n width: 1,\n height: size.height\n });\n }\n\n public drawHorizontalLine(y: number, size: ISize, transform: ITransformModel): void {\n this.fHorizontalLine.show();\n this.fHorizontalLine.draw({\n left: 0,\n top: y * transform.scale + transform.position.y + transform.scaledPosition.y,\n width: size.width,\n height: 1\n });\n }\n\n public hideVerticalLine(): void {\n this.fVerticalLine.hide();\n }\n\n public hideHorizontalLine(): void {\n this.fHorizontalLine.hide();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_LINE_ALIGNMENT = new InjectionToken<FLineAlignmentBase>('F_LINE_ALIGNMENT');\n\n@Directive()\nexport abstract class FLineAlignmentBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract fAlignThreshold: number;\n}\n","import { Component, ElementRef, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport {\n RemoveLineAlignmentFromStoreRequest,\n AddLineAlignmentToStoreRequest,\n} from '../domain';\nimport { FMediator } from '@foblex/mediator';\n\n@Component({\n selector: \"f-line-alignment\",\n template: \"\",\n styleUrls: [ \"./f-line-alignment.component.scss\" ],\n exportAs: \"fComponent\",\n host: {\n 'class': 'f-line-alignment f-component'\n },\n providers: [\n { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }\n ],\n})\nexport class FLineAlignmentComponent\n extends FLineAlignmentBase implements OnInit, OnDestroy {\n\n @Input()\n public override fAlignThreshold: number = 10;\n\n private _fMediator = inject(FMediator);\n private _elementReference = inject(ElementRef);\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddLineAlignmentToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveLineAlignmentFromStoreRequest());\n }\n}\n","import { FLineAlignmentComponent } from './f-line-alignment.component';\n\nexport const F_LINE_ALIGNMENT_PROVIDERS = [\n FLineAlignmentComponent\n];\n","import { inject, Injectable } from '@angular/core';\nimport { LineAlignmentPreparationRequest } from './line-alignment-preparation.request';\nimport { IMinMaxPoint, IRect, ISize } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetFlowHostElementRequest } from '../../../domain';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext, SummaryNodeDragHandler } from '../../index';\nimport { LineAlignmentDragHandler } from '../line-alignment.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { LineService } from '../../../f-line-alignment';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(LineAlignmentPreparationRequest)\nexport class LineAlignmentPreparationExecution implements IExecution<LineAlignmentPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private _fBrowser = inject(BrowserService);\n\n private _lineService: LineService | undefined;\n\n public handle(request: LineAlignmentPreparationRequest): void {\n this._addLineAlignmentDragHandler(request.fNodes, request.commonRect);\n }\n\n private _addLineAlignmentDragHandler(fNodes: FNodeBase[], commonRect: IRect): void {\n this._fDraggableDataContext.draggableItems.push(\n new LineAlignmentDragHandler(\n this._lineService || this._createLineService(),\n this._getFlowHostSize(),\n commonRect,\n this._getStaticNodeRects(fNodes),\n this._getCommonRestrictions()\n )\n );\n }\n\n private _getFlowHostSize(): ISize {\n return this._fMediator.execute<HTMLElement>(new GetFlowHostElementRequest())\n .getBoundingClientRect();\n }\n\n private _createLineService(): LineService {\n this._lineService = new LineService(\n this._fBrowser,\n this._fComponentsStore.fLineAlignment!.hostElement\n );\n return this._lineService;\n }\n\n private _getStaticNodeRects(fNodes: FNodeBase[]): IRect[] {\n return this._getStaticNodes(fNodes).map((x) => {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement, false));\n })\n }\n\n private _getStaticNodes(fNodes: FNodeBase[]): FNodeBase[] {\n return this._fComponentsStore.fNodes\n .filter((x) => !fNodes.includes(x));\n }\n\n private _getCommonRestrictions(): IMinMaxPoint {\n return this._fDraggableDataContext.draggableItems\n .filter((x) => x instanceof SummaryNodeDragHandler)[0].limits;\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeDragToParentFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Directive } from '@angular/core';\nimport { IPoint, ITransformModel, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FComponentsStore } from '../../f-storage';\nimport { INodeWithRect } from '../domain';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Directive()\nexport class NodeDragToParentDragHandler implements IDraggableItem {\n\n private DEBOUNCE_TIME = 15;\n\n private get _transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private _onPointerDownPosition: IPoint = PointExtensions.initialize();\n private _debounceTimer: any = null;\n\n public fNodeWithRect: INodeWithRect | null = null;\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private notDraggedNodesRects: INodeWithRect[],\n ) {\n this._onPointerDownPosition = this.fDraggableDataContext.onPointerDownPosition;\n }\n\n private _toggleParentNode(difference: IPoint): void {\n const isInclude = this._isNodeInsideAnotherNode(this._getNewPosition(difference));\n if (isInclude) {\n this._markIncludeNode(isInclude);\n } else {\n this._unmarkIncludeNode();\n }\n }\n\n private _getNewPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this._onPointerDownPosition).add(difference).mult(this._transform.scale);\n }\n\n private _isNodeInsideAnotherNode(point: IPoint): INodeWithRect | undefined {\n return this.notDraggedNodesRects.find((x) => RectExtensions.isIncludePoint(x.rect, point));\n }\n\n public onPointerMove(difference: IPoint): void {\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n\n this._debounceTimer = setTimeout(() => this._toggleParentNode(difference), this.DEBOUNCE_TIME);\n }\n\n private _markIncludeNode(nodeWithRect: INodeWithRect): void {\n this._unmarkIncludeNode();\n this.fNodeWithRect = nodeWithRect;\n nodeWithRect.node.setClass('f-parent-for-drop');\n }\n\n private _unmarkIncludeNode(): void {\n this.fNodeWithRect?.node.removeClass('f-parent-for-drop');\n this.fNodeWithRect = null;\n }\n\n public onPointerUp(): void {\n this._unmarkIncludeNode();\n\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n this._debounceTimer = null;\n }\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FDropToGroupEvent {\n\n constructor(\n public fTargetNode: string,\n public fNodes: string[],\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeDragToParentFinalizeRequest } from './node-drag-to-parent-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragToParentDragHandler } from '../node-drag-to-parent.drag-handler';\nimport { FDropToGroupEvent } from '../f-drop-to-group.event';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { SummaryNodeDragHandler } from '../summary-node.drag-handler';\n\n@Injectable()\n@FExecutionRegister(NodeDragToParentFinalizeRequest)\nexport class NodeDragToParentFinalizeExecution\n implements IExecution<NodeDragToParentFinalizeRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: NodeDragToParentFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n const item = this.getDragHandleItem();\n if(item.fNodeWithRect) {\n this.emitDroppedChildrenEvent(item.fNodeWithRect.node.fId, request.event);\n }\n item.onPointerUp?.();\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems\n .some((x) => x instanceof NodeDragToParentDragHandler);\n }\n\n private emitDroppedChildrenEvent(fTargetId: string, event: IPointerEvent): void {\n this.fComponentsStore.fDraggable?.fDropToGroup.emit(\n new FDropToGroupEvent(fTargetId, this.getDraggedNodeIds(), event.getPosition())\n );\n }\n\n private getDragHandleItem(): NodeDragToParentDragHandler {\n const result = this.findDragHandleItem();\n if(!result) {\n throw new Error('NodeDragToParentDragHandler not found');\n }\n return result;\n }\n\n private findDragHandleItem(): NodeDragToParentDragHandler | undefined {\n return this.fDraggableDataContext.draggableItems\n .find((x) => x instanceof NodeDragToParentDragHandler);\n }\n\n private getDraggedNodeIds(): string[] {\n return this.fDraggableDataContext.draggableItems\n .find((x) => x instanceof SummaryNodeDragHandler)!.fHandlers\n .map((x) => x.fNode.fId);\n }\n}\n","import { NodeDragToParentFinalizeExecution } from './node-drag-to-parent-finalize.execution';\n\nexport const NODE_DRAG_TO_PARENT_FINALIZE_PROVIDERS = [\n\n NodeDragToParentFinalizeExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeDragToParentPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeDragToParentPreparationRequest } from './node-drag-to-parent-preparation.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { INodeWithRect } from '../../domain';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { GetNormalizedElementRectRequest, GetParentNodesRequest } from '../../../domain';\nimport { FNodeBase } from '../../../f-node';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragToParentDragHandler } from '../node-drag-to-parent.drag-handler';\nimport { SummaryNodeDragHandler } from '../summary-node.drag-handler';\n\n@Injectable()\n@FExecutionRegister(NodeDragToParentPreparationRequest)\nexport class NodeDragToParentPreparationExecution\n implements IExecution<NodeDragToParentPreparationRequest, void> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get fCanvasPosition(): IPoint {\n return PointExtensions.sum(this.transform.position, this.transform.scaledPosition)\n }\n\n constructor(\n private fMediator: FMediator,\n private fDraggableDataContext: FDraggableDataContext,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: NodeDragToParentPreparationRequest): void {\n if(!this._isValid()) {\n return;\n }\n const fNode = this.fComponentsStore\n .fNodes.find(n => n.isContains(request.event.targetElement));\n if (!fNode) {\n throw new Error('Node not found');\n }\n\n this.fDraggableDataContext.draggableItems.push(\n new NodeDragToParentDragHandler(\n this.fComponentsStore,\n this.fDraggableDataContext, this._getNotDraggedNodesRects()\n )\n );\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems\n .some((x) => x instanceof SummaryNodeDragHandler);\n }\n\n private _getNotDraggedNodesRects(): INodeWithRect[] {\n const draggedNodes = this._addParentNodes(this._getNodesBeingDragged());\n return this._getNotDraggedNodes(draggedNodes).map((x) => {\n const rect = this.fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement, false));\n return {\n node: x,\n rect: RectExtensions.initialize(\n rect.x + this.fCanvasPosition.x,\n rect.y + this.fCanvasPosition.y,\n rect.width * this.transform.scale,\n rect.height * this.transform.scale\n )\n }\n });\n }\n\n private _getNodesBeingDragged(): FNodeBase[] {\n return this.fDraggableDataContext.draggableItems\n .find((x) => x instanceof SummaryNodeDragHandler)!\n .fHandlers.map((x) => x.fNode);\n }\n\n private _addParentNodes(fNodes: FNodeBase[]): FNodeBase[] {\n return fNodes.reduce((result: FNodeBase[], x: FNodeBase) => {\n result.push(x, ...this.fMediator.execute<FNodeBase[]>(new GetParentNodesRequest(x)));\n return result;\n }, []);\n }\n\n private _getNotDraggedNodes(draggedNodes: FNodeBase[]): FNodeBase[] {\n return this.fNodes.filter((x) => !draggedNodes.includes(x));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\nimport { SelectAndUpdateNodeLayerRequest } from '../../../domain';\nimport { isClosestElementHasClass } from '@foblex/utils';\nimport { LineAlignmentPreparationRequest } from '../line-alignment-preparation';\nimport { SummaryNodeDragHandler } from '../summary-node.drag-handler';\n\n@Injectable()\n@FExecutionRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationExecution implements IExecution<NodeMovePreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: NodeMovePreparationRequest): void {\n if(!this._isValid(request)) {\n return;\n }\n\n const summaryDragHandler = this._calculateDraggedItems(this._fNode!);\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.draggableItems = [summaryDragHandler];\n\n if(this._fComponentsStore.fLineAlignment) {\n this._fMediator.execute<void>(\n new LineAlignmentPreparationRequest(\n summaryDragHandler.fHandlers.map((x) => x.fNode), summaryDragHandler.commonRect\n )\n );\n }\n }\n\n private _isValid(request: NodeMovePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && this._isDragHandleElement(request.event.targetElement)\n && !!this._getNode(request.event.targetElement);\n }\n\n private _isDragHandleElement(element: HTMLElement): boolean {\n return isClosestElementHasClass(element, '.f-drag-handle');\n }\n\n private _getNode(element: HTMLElement): FNodeBase | undefined {\n this._fNode = this._fComponentsStore.fNodes\n .find(x => x.isContains(element) && !x.fDraggingDisabled);\n return this._fNode;\n }\n\n //We drag nodes from selection model\n private _calculateDraggedItems(fNode: FNodeBase): SummaryNodeDragHandler {\n let result: SummaryNodeDragHandler;\n if (!fNode.fSelectionDisabled) {\n // Need to select node before drag\n this._fMediator.execute(new SelectAndUpdateNodeLayerRequest(fNode));\n\n result = this._dragModelFromSelection();\n } else {\n // User can drag node that can't be selected\n result = this._dragModelFromSelection(fNode);\n }\n return result;\n }\n\n private _dragModelFromSelection(nodeWithDisabledSelection?: FNodeBase): SummaryNodeDragHandler {\n return this._fMediator.execute(\n new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection)\n );\n }\n}\n","import { NodeMovePreparationExecution } from './node-move-preparation.execution';\n\nexport const NODE_MOVE_PREPARATION_PROVIDERS = [\n\n NodeMovePreparationExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n IsConnectionUnderNodeRequest\n} from '../../domain';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragToParentDragHandler } from '../node-drag-to-parent.drag-handler';\nimport { ILineAlignmentResult } from '../../../f-line-alignment';\nimport { LineAlignmentDragHandler } from '../line-alignment.drag-handler';\nimport { SummaryNodeDragHandler } from '../summary-node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeExecution implements IExecution<NodeMoveFinalizeRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: NodeMoveFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n const difference = this._getDifferenceWithLineAlignment(\n this._getDifferenceBetweenPreparationAndFinalize(request.event.getPosition())\n );\n\n const firstNodeOrGroup: SummaryNodeDragHandler = this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof SummaryNodeDragHandler)!;\n\n this._finalizeMove(firstNodeOrGroup.calculateRestrictedDifference(difference));\n\n this._applyConnectionUnderDroppedNode();\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) => x instanceof SummaryNodeDragHandler);\n }\n\n private _finalizeMove(difference: IPoint): void {\n this._getItems().forEach((x) => {\n x.onPointerMove({ ...difference });\n x.onPointerUp?.();\n });\n }\n\n private _getItems(): IDraggableItem[] {\n return this._fDraggableDataContext.draggableItems\n .filter((x) => !(x instanceof NodeDragToParentDragHandler));\n }\n\n private _getDifferenceBetweenPreparationAndFinalize(position: IPoint): Point {\n return Point.fromPoint(position).elementTransform(this._fHost)\n .div(this._fDraggableDataContext.onPointerDownScale)\n .sub(this._fDraggableDataContext.onPointerDownPosition);\n }\n\n private _getDifferenceWithLineAlignment(difference: IPoint): IPoint {\n return this._applyLineAlignmentDifference(\n difference,\n this._getLineAlignmentDifference(difference)\n );\n }\n\n private _getLineAlignmentDifference(difference: IPoint): ILineAlignmentResult | undefined {\n return this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof LineAlignmentDragHandler)\n ?.findNearestCoordinate(difference);\n }\n\n private _applyLineAlignmentDifference(difference: IPoint, intersection: ILineAlignmentResult | undefined): IPoint {\n if (intersection) {\n difference.x = intersection.xResult.value ? (difference.x - intersection.xResult.distance!) : difference.x;\n difference.y = intersection.yResult.value ? (difference.y - intersection.yResult.distance!) : difference.y;\n }\n return difference;\n }\n\n private _applyConnectionUnderDroppedNode(): void {\n if (this._isDraggedJustOneNode() && this._fComponentsStore.fDraggable?.fEmitOnNodeIntersect) {\n\n const fNode = this._getFirstNodeOrGroup();\n setTimeout(() => this._fMediator.execute(new IsConnectionUnderNodeRequest(fNode)));\n }\n }\n\n private _isDraggedJustOneNode(): boolean {\n return (this._fDraggableDataContext.draggableItems[ 0 ] as SummaryNodeDragHandler).fHandlers.length === 1;\n }\n\n private _getFirstNodeOrGroup(): FNodeBase {\n return (this._fDraggableDataContext.draggableItems[ 0 ] as SummaryNodeDragHandler).fHandlers[ 0 ].fNode;\n }\n}\n","import { CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS } from './create-move-nodes-drag-model-from-selection';\nimport { NodeMoveFinalizeExecution } from './node-move-finalize';\nimport { NODE_MOVE_PREPARATION_PROVIDERS } from './node-move-preparation';\nimport {\n NodeDragToParentPreparationExecution\n} from './node-drag-to-parent-preparation';\nimport { NODE_DRAG_TO_PARENT_FINALIZE_PROVIDERS } from './node-drag-to-parent-finalize';\nimport { LineAlignmentPreparationExecution } from './line-alignment-preparation';\n\nexport const NODE_PROVIDERS = [\n\n ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,\n\n LineAlignmentPreparationExecution,\n\n NodeMoveFinalizeExecution,\n\n ...NODE_MOVE_PREPARATION_PROVIDERS,\n\n NodeDragToParentPreparationExecution,\n\n ...NODE_DRAG_TO_PARENT_FINALIZE_PROVIDERS\n];\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyChildResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst CHILD_RESIZE_OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyChildResizeRestrictionsRequest)\nexport class ApplyChildResizeRestrictionsExecution\n implements IExecution<ApplyChildResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyChildResizeRestrictionsRequest): void {\n this._apply(request.rect, request.restrictionsRect);\n }\n\n private _apply(rect: IRect, restrictionsRect: IRect): void {\n this._restrictLeft(rect, restrictionsRect);\n this._restrictTop(rect, restrictionsRect);\n this._restrictRight(rect, restrictionsRect);\n this._restrictBottom(rect, restrictionsRect);\n }\n\n private _restrictLeft(rect: IRect, restrictions: IRect): void {\n const delta = rect.x - (restrictions.x - CHILD_RESIZE_OFFSET);\n if (delta > 0) {\n rect.x -= delta;\n rect.width += delta;\n }\n }\n\n private _restrictTop(rect: IRect, restrictions: IRect): void {\n const delta = rect.y - (restrictions.y - CHILD_RESIZE_OFFSET);\n if (delta > 0) {\n rect.y -= delta;\n rect.height += delta;\n }\n }\n\n private _restrictRight(rect: IRect, restrictions: IRect): void {\n const maxRight = restrictions.x + restrictions.width + CHILD_RESIZE_OFFSET;\n if (rect.x + rect.width <= maxRight) {\n rect.width = maxRight - rect.x;\n }\n }\n\n private _restrictBottom(rect: IRect, restrictions: IRect): void {\n const maxBottom = restrictions.y + restrictions.height + CHILD_RESIZE_OFFSET;\n if (rect.y + rect.height <= maxBottom) {\n rect.height = maxBottom - rect.y;\n }\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyParentResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyParentResizeRestrictionsRequest)\nexport class ApplyParentResizeRestrictionsExecution\n implements IExecution<ApplyParentResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyParentResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x <= restrictionsRect.x + OFFSET) {\n rect.width -= restrictionsRect.x - rect.x + OFFSET;\n rect.x = restrictionsRect.x + OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y <= restrictionsRect.y + OFFSET) {\n rect.height -= restrictionsRect.y - rect.y + OFFSET;\n rect.y = restrictionsRect.y + OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width > restrictionsRect.x + restrictionsRect.width - OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x - OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height > restrictionsRect.y + restrictionsRect.height - OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y - OFFSET;\n }\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedPositionRequest {\n\n constructor(\n public originalRect: IRect,\n public changedRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { EFResizeHandleType } from '../../f-node';\n\nexport const RESIZE_DIRECTIONS = {\n\n [ EFResizeHandleType.LEFT ]: { x: -1, y: 0 },\n\n [ EFResizeHandleType.LEFT_TOP ]: { x: -1, y: -1 },\n\n [ EFResizeHandleType.TOP ]: { x: 0, y: -1 },\n\n [ EFResizeHandleType.RIGHT_TOP ]: { x: 1, y: -1 },\n\n [ EFResizeHandleType.RIGHT ]: { x: 1, y: 0 },\n\n [ EFResizeHandleType.RIGHT_BOTTOM ]: { x: 1, y: 1 },\n\n [ EFResizeHandleType.BOTTOM ]: { x: 0, y: 1 },\n\n [ EFResizeHandleType.LEFT_BOTTOM ]: { x: -1, y: 1 },\n};\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedPositionRequest)\nexport class CalculateChangedPositionExecution\n implements IExecution<CalculateChangedPositionRequest, IRect> {\n\n public handle(request: CalculateChangedPositionRequest): IRect {\n return this.change(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType], request.changedRect);\n }\n\n private change(originalRect: IRect, difference: IPoint, direction: IPoint, changedRect: IRect): IRect {\n return RectExtensions.initialize(\n originalRect.x + (direction.x === -1 ? difference.x : 0) + changedRect.x,\n originalRect.y + (direction.y === -1 ? difference.y : 0) + changedRect.y,\n changedRect.width,\n changedRect.height\n );\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedSizeRequest {\n\n constructor(\n public originalRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedSizeRequest)\nexport class CalculateChangedSizeExecution\n implements IExecution<CalculateChangedSizeRequest, IRect> {\n\n public handle(request: CalculateChangedSizeRequest): IRect {\n return this.change(\n request.originalRect,\n request.difference,\n RESIZE_DIRECTIONS[ request.fResizeHandleType ],\n );\n }\n\n private change(rect: IRect, difference: IPoint, direction: IPoint): IRect {\n const result = RectExtensions.initialize(\n 0, 0,\n rect.width + direction.x * difference.x,\n rect.height + direction.y * difference.y\n );\n\n if (result.width < 0) {\n result.x = result.width;\n result.width = Math.abs(result.width);\n }\n\n if (result.height < 0) {\n result.y = result.height;\n result.height = Math.abs(result.height);\n }\n\n return RectExtensions.copy(result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public paddings: [ number, number, number, number ]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedChildrenNodesRectRequest } from './get-normalized-children-nodes-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest, GetNormalizedElementRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedChildrenNodesRectRequest)\nexport class GetNormalizedChildrenNodesRectExecution\n implements IExecution<GetNormalizedChildrenNodesRectRequest, IRect | null> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedChildrenNodesRectRequest): IRect | null {\n const childNodeRect = RectExtensions.union(\n this.getChildrenNodes(request.fNode.fId).map((x) => this.normalizeRect(x))\n );\n return childNodeRect ?\n this.concatRectWithParentPadding(childNodeRect, request.paddings) : null;\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private normalizeRect(fNode: FNodeBase): IRect {\n return this.fMediator.execute<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement, false));\n }\n\n private concatRectWithParentPadding(rect: IRect, padding: [ number, number, number, number ]): IRect {\n return RectExtensions.initialize(\n rect.x - padding[0],\n rect.y - padding[1],\n rect.width + padding[0] + padding[2],\n rect.height + + padding[1] + padding[3]\n );\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodeResizeRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetNodeResizeRestrictionsRequest } from './get-node-resize-restrictions.request';\nimport { IRect, SizeExtensions } from '@foblex/2d';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\nimport { FNodeBase } from '../../../f-node';\nimport { GetNodePaddingRequest } from '../../../domain';\n\n\n@Injectable()\n@FExecutionRegister(GetNodeResizeRestrictionsRequest)\nexport class GetNodeResizeRestrictionsExecution\n implements IExecution<GetNodeResizeRestrictionsRequest, INodeResizeRestrictions> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: GetNodeResizeRestrictionsRequest): INodeResizeRestrictions {\n const paddings = this._calculateNodePaddings(request.fNode, request.rect);\n\n return {\n parentBounds: this._getNormalizedParentBounds(request.fNode),\n childrenBounds: this._getNormalizedChildrenBounds(request.fNode, paddings),\n minimumSize: SizeExtensions.initialize(paddings[0] + paddings[2], paddings[1] + paddings[3])\n }\n }\n\n private _calculateNodePaddings(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this._fMediator.execute<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n\n private _getNormalizedParentBounds(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n\n private _getNormalizedChildrenBounds(fNode: FNodeBase, fNodePaddings: [ number, number, number, number ]): IRect | null {\n return this._fMediator.execute<IRect | null>(new GetNormalizedChildrenNodesRectRequest(fNode, fNodePaddings));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizeFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint, IRect, ISize, RectExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport { GetNodeResizeRestrictionsRequest, INodeResizeRestrictions } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions';\nimport { GetNormalizedElementRectRequest } from '../../domain';\nimport { fInject } from '../f-injector';\n\nexport class NodeResizeDragHandler implements IDraggableItem {\n\n private _fMediator = fInject(FMediator);\n\n private _originalRect!: IRect;\n private _resizeRestrictions!: INodeResizeRestrictions;\n\n constructor(\n private _fNode: FNodeBase,\n private _fResizeHandleType: EFResizeHandleType,\n ) {\n }\n\n public prepareDragSequence(): void {\n this._originalRect = this._getOriginalNodeRect();\n this._resizeRestrictions = this._getNodeResizeRestrictions();\n }\n\n private _getOriginalNodeRect(): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(this._fNode.hostElement, false));\n }\n\n private _getNodeResizeRestrictions(): INodeResizeRestrictions {\n return this._fMediator.execute<INodeResizeRestrictions>(\n new GetNodeResizeRestrictionsRequest(this._fNode, this._originalRect)\n );\n }\n\n public onPointerMove(difference: IPoint): void {\n this._applyResizeChanges(this._calculateChangedRect(difference));\n }\n\n private _calculateChangedRect(difference: IPoint): IRect {\n return this._calculatePosition(difference, this._calculateSize(difference, this._resizeRestrictions.minimumSize));\n }\n\n private _calculateSize(difference: IPoint, minimumSize: ISize): IRect {\n return this._fMediator.execute<IRect>(\n new CalculateChangedSizeRequest(this._originalRect, difference, this._fResizeHandleType)\n );\n }\n\n private _calculatePosition(difference: IPoint, changedSize: IRect): IRect {\n return this._fMediator.execute<IRect>(\n new CalculateChangedPositionRequest(this._originalRect, changedSize, difference, this._fResizeHandleType)\n );\n }\n\n private _applyResizeChanges(changedRect: IRect): void {\n if(this._resizeRestrictions.childrenBounds) {\n this._applyChildRestrictions(changedRect, this._resizeRestrictions.childrenBounds);\n }\n\n this._applyParentRestrictions(changedRect, this._resizeRestrictions.parentBounds);\n this._updateNodeRendering(changedRect);\n }\n\n private _updateNodeRendering(changedRect: IRect): void {\n this._fNode.updatePosition(changedRect);\n this._fNode.updateSize(changedRect);\n this._fNode.redraw();\n }\n\n private _applyChildRestrictions(changedRect: IRect, restrictions: IRect): void {\n this._fMediator.execute(\n new ApplyChildResizeRestrictionsRequest(changedRect, restrictions)\n );\n }\n\n private _applyParentRestrictions(changedRect: IRect, restrictions: IRect): void {\n this._fMediator.execute(\n new ApplyParentResizeRestrictionsRequest(changedRect, restrictions)\n );\n }\n\n public onPointerUp(): void {\n this._fNode.sizeChange.emit(this._getNewRect());\n }\n\n private _getNewRect(): IRect {\n return RectExtensions.initialize(\n this._fNode.position.x, this._fNode.position.y, this._fNode.size?.width, this._fNode.size?.height\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\n\n@Injectable()\n@FExecutionRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeExecution implements IExecution<NodeResizeFinalizeRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: NodeResizeFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) =>\n x instanceof NodeResizeDragHandler\n );\n }\n}\n","import { NodeResizeFinalizeExecution } from './node-resize-finalize.execution';\n\nexport const NODE_RESIZE_FINALIZE_PROVIDERS = [\n\n NodeResizeFinalizeExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { EFResizeHandleType, FNodeBase } from '../../../f-node';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\nimport { getDataAttrValueFromClosestElementWithClass, isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationExecution implements IExecution<NodeResizePreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: NodeResizePreparationRequest): void {\n if(!this._isValid(request)) {\n return;\n }\n\n this._selectAndUpdateNodeLayer();\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n\n const resizeHandleType = EFResizeHandleType[ this._getHandleType(request.event.targetElement) ];\n this._fDraggableDataContext.draggableItems = [\n new NodeResizeDragHandler(this._fNode!, resizeHandleType)\n ];\n }\n\n private _isValid(request: NodeResizePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && this._isDragHandleElement(request.event.targetElement)\n && this._isNodeCanBeDragged(this._getNode(request.event.targetElement));\n }\n\n private _isDragHandleElement(element: HTMLElement): boolean {\n return isClosestElementHasClass(element, '.f-resize-handle');\n }\n\n private _isNodeCanBeDragged(fNode?: FNodeBase): boolean {\n return !!fNode && !fNode.fDraggingDisabled;\n }\n\n private _getNode(element: HTMLElement): FNodeBase | undefined {\n this._fNode = this._fComponentsStore\n .fNodes.find(x => x.isContains(element));\n return this._fNode;\n }\n\n private _selectAndUpdateNodeLayer() {\n this._fMediator.execute(\n new SelectAndUpdateNodeLayerRequest(this._fNode!)\n );\n }\n\n private _getHandleType(element: HTMLElement): keyof typeof EFResizeHandleType {\n return getDataAttrValueFromClosestElementWithClass(element, 'fResizeHandleType', '.f-resize-handle');\n }\n}\n","import { NODE_RESIZE_FINALIZE_PROVIDERS } from './node-resize-finalize';\nimport { NodeResizePreparationExecution } from './node-resize-preparation';\nimport { GetNodeResizeRestrictionsExecution } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsExecution } from './apply-child-resize-restrictions';\nimport { ApplyParentResizeRestrictionsExecution } from './apply-parent-resize-restrictions';\nimport { CalculateChangedSizeExecution } from './calculate-changed-size';\nimport { CalculateChangedPositionExecution } from './calculate-changed-position';\nimport { GetNormalizedChildrenNodesRectExecution } from './get-normalized-children-nodes-rect';\n\nexport const NODE_RESIZE_PROVIDERS = [\n\n ApplyChildResizeRestrictionsExecution,\n\n ApplyParentResizeRestrictionsExecution,\n\n CalculateChangedPositionExecution,\n\n CalculateChangedSizeExecution,\n\n GetNormalizedChildrenNodesRectExecution,\n\n GetNodeResizeRestrictionsExecution,\n\n ...NODE_RESIZE_FINALIZE_PROVIDERS,\n\n NodeResizePreparationExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FEventTrigger } from '../../domain';\n\nexport class SingleSelectRequest {\n\n constructor(\n public event: IPointerEvent,\n public fMultiSelectTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { isValidEventTrigger, UpdateItemAndChildrenLayersRequest } from '../../domain';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectionBase } from '../../f-connection';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { ISelectable } from '../../mixins';\nimport { FNodeBase } from '../../f-node';\n\n/**\n * Implements the functionality for selecting elements in a graphical interface.\n * This class handles both single and multi-selection, updating the selection state\n * of elements and managing related data.\n *\n * Logic flow:\n * 1. **Validate the selection event**:\n * - The event is considered valid if it occurs within the flow boundaries\n * and there are no active draggable data operations.\n *\n * 2. **Determine the target element to select**:\n * - The target element is determined based on the event’s target.\n * It can be a node, a group of nodes, or a connection.\n * - If no element is found, the current selection state is cleared.\n *\n * 3. **Update element layers**:\n * - If an element is found, its visual layer and the layers of its child elements are updated.\n *\n * 4. **Single or multi-selection**:\n * - If the event meets the criteria for multi-selection (e.g., a modifier key is pressed),\n * multi-selection logic is applied.\n * - Otherwise, single-selection logic is used.\n *\n * 5. **Single-selection logic**:\n * - If the element is not selected and can be selected:\n * - Clear the selection of all other elements.\n * - Mark the current element as selected.\n * - If the element cannot be selected, the current selection is cleared.\n *\n * 6. **Multi-selection logic**:\n * - If the element is already selected, it is removed from the selection.\n * - If the element is not selected and can be selected, it is added to the selection.\n *\n * 7. **Manage selection state**:\n * - Adding or removing an element from the selection triggers the corresponding methods.\n * - Selection state is tracked in the shared context for future use.\n */\n\n@Injectable()\n@FExecutionRegister(SingleSelectRequest)\nexport class SingleSelectExecution implements IExecution<SingleSelectRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: SingleSelectRequest): void {\n if (!this._isValid(request)) {\n return;\n }\n\n const fItem = this._getItemToSelect(request.event);\n\n setTimeout(() => this._updateItemAndChildrenLayers(fItem));\n\n this._isMultiSelect(request) ? this._multiSelect(fItem) : this._singleSelect(fItem);\n }\n\n private _isValid(request: SingleSelectRequest): boolean {\n return this._isEventInFlowBounds(request.event) && this._fDraggableDataContext.isEmpty();\n }\n\n private _isEventInFlowBounds(event: IPointerEvent): boolean {\n return this._fComponentsStore.fFlow!.hostElement.contains(event.targetElement);\n }\n\n private _getItemToSelect(event: IPointerEvent): ISelectable | undefined {\n return this._getNodeOrGroup(event.targetElement) || this._getConnection(event.targetElement);\n }\n\n private _getNodeOrGroup(targetElement: HTMLElement): FNodeBase | undefined {\n return this._fComponentsStore.fNodes.find((x) => (x).isContains(targetElement));\n }\n\n private _getConnection(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this._fComponentsStore.fConnections\n .find(c => c.isContains(element) || c.fConnectionCenter?.nativeElement?.contains(element));\n }\n\n private _updateItemAndChildrenLayers(fItem?: ISelectable): void {\n if (fItem) {\n this._fMediator.execute<void>(\n new UpdateItemAndChildrenLayersRequest(fItem, fItem.hostElement.parentElement!)\n );\n }\n }\n\n private _isMultiSelect(request: SingleSelectRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fMultiSelectTrigger)\n }\n\n private _singleSelect(fItem?: ISelectable): void {\n if (fItem) {\n if (this._isItemNotSelectedAndSelectable(fItem)) {\n this._clearSelection();\n this._selectItem(fItem);\n } else if (fItem.fSelectionDisabled) {\n this._clearSelection();\n }\n } else {\n this._clearSelection();\n }\n }\n\n private _isItemNotSelectedAndSelectable(item: ISelectable): boolean {\n return !item.isSelected() && !item.fSelectionDisabled;\n }\n\n private _clearSelection(): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => {\n x.unmarkAsSelected();\n this._fDraggableDataContext.markSelectionAsChanged();\n });\n this._fDraggableDataContext.selectedItems = [];\n }\n\n private _multiSelect(fItem?: ISelectable): void {\n if (fItem && !fItem.fSelectionDisabled) {\n fItem.isSelected() ? this._deselectItem(fItem) : this._selectItem(fItem);\n }\n }\n\n private _deselectItem(fItem: ISelectable): void {\n this._removeItemFromSelectedItems(fItem);\n fItem.unmarkAsSelected();\n this._fDraggableDataContext.markSelectionAsChanged();\n }\n\n private _removeItemFromSelectedItems(fItem: ISelectable): void {\n const indexInSelection = this._fDraggableDataContext.selectedItems.indexOf(fItem);\n if (indexInSelection > -1) {\n this._fDraggableDataContext.selectedItems.splice(indexInSelection, 1);\n }\n }\n\n private _selectItem(fItem: ISelectable): void {\n this._fDraggableDataContext.selectedItems.push(fItem);\n fItem.markAsSelected();\n this._fDraggableDataContext.markSelectionAsChanged();\n }\n}\n","import { SingleSelectExecution } from './single-select.execution';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n SingleSelectExecution,\n];\n","import { Directive, EventEmitter, } from '@angular/core';\nimport { FCreateConnectionEvent, FReassignConnectionEvent } from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FCreateNodeEvent } from '../f-external-item';\nimport { DragAndDropBase, ICanRunOutsideAngular } from '@foblex/drag-toolkit';\nimport { FDropToGroupEvent } from './node';\nimport { FNodeIntersectedWithConnections } from './domain';\n\n@Directive()\nexport abstract class FDraggableBase extends DragAndDropBase {\n\n public abstract fSelectionChange: EventEmitter<FSelectionChangeEvent>;\n\n public abstract fNodeIntersectedWithConnections: EventEmitter<FNodeIntersectedWithConnections>;\n\n public abstract fEmitOnNodeIntersect: boolean;\n\n public abstract fCreateNode: EventEmitter<FCreateNodeEvent>;\n\n public abstract fReassignConnection: EventEmitter<FReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<FCreateConnectionEvent>;\n\n public abstract fDropToGroup: EventEmitter<FDropToGroupEvent>;\n\n public abstract vCellSize: number;\n\n public abstract hCellSize: number;\n\n public abstract fCellSizeWhileDragging: boolean;\n\n public abstract fDragStarted: EventEmitter<void>;\n\n public abstract fDragEnded: EventEmitter<void>;\n\n protected constructor(\n ngZone: ICanRunOutsideAngular | undefined\n ) {\n super(ngZone);\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FExternalItemBase } from '../../f-external-item';\nimport { fInject, IDraggableItem } from '../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\nimport { deepCloneNode } from '@foblex/utils';\n\nexport class ExternalItemDragHandler implements IDraggableItem {\n\n private _fBrowser = fInject(BrowserService);\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase,\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public prepareDragSequence(): void {\n this.onPointerDownRect = this.getExternalItemRect();\n this.placeholder = deepCloneNode(this.externalItem.hostElement);\n this.placeholder.setAttribute('style', this.getStyle(Point.fromPoint(this.onPointerDownRect)));\n this._fBrowser.document.body.appendChild(this.placeholder);\n }\n\n private getExternalItemRect(): IRect {\n const rect = this.externalItem.hostElement.getBoundingClientRect();\n const scrollTop = this._fBrowser.window.pageYOffset || this._fBrowser.document.documentElement.scrollTop;\n const scrollLeft = this._fBrowser.window.pageXOffset || this._fBrowser.document.documentElement.scrollLeft;\n const offsetTop = rect.top + scrollTop;\n const offsetLeft = rect.left + scrollLeft;\n return RectExtensions.initialize(offsetLeft, offsetTop, rect.width, rect.height);\n }\n\n public onPointerMove(difference: IPoint): void {\n this.difference = difference;\n const position = Point.fromPoint(this.onPointerDownRect).add(this.difference);\n this.placeholder!.setAttribute('style', this.getStyle(position));\n }\n\n public onPointerUp(): void {\n this._fBrowser.document.body.removeChild(this.placeholder!);\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class FCreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FCreateNodeEvent } from '../f-create-node.event';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeExecution implements IExecution<ExternalItemFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fCreateNode(): EventEmitter<FCreateNodeEvent> {\n return this.fComponentsStore.fDraggable!.fCreateNode;\n }\n\n private get dragHandler(): ExternalItemDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ExternalItemDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): void {\n if (!this._isValid()) {\n return\n }\n this.emitEvent(\n this.getExternalItemElementsFromPoint(request.event.getPosition())\n );\n\n this.dragHandler.onPointerUp();\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ExternalItemDragHandler\n );\n }\n\n private getExternalItemElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y)\n .filter(x => !x.closest('.f-external-item')) as HTMLElement[];\n }\n\n private emitEvent(elements: HTMLElement[]): void {\n if (this.isPointerInCanvasRect(elements)) {\n this.fCreateNode.emit(\n new FCreateNodeEvent(this.getRectInCanvas(), this.dragHandler.externalItem.fData)\n );\n }\n }\n\n private isPointerInCanvasRect(elements: HTMLElement[]): boolean {\n return elements.length ? this.flowHost.contains(elements[ 0 ]) : false;\n }\n\n private getRectInCanvas(): IRect {\n return this.fMediator.execute<IRect>(new GetNormalizedElementRectRequest(this.dragHandler.placeholder!, false));\n }\n}\n","import { ExternalItemFinalizeExecution } from './external-item-finalize.execution';\n\nexport const EXTERNAL_ITEM_FINALIZE_PROVIDERS = [\n\n ExternalItemFinalizeExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExternalItemBase, FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationExecution implements IExecution<ExternalItemPreparationRequest, void> {\n\n private _fExternalItemService = inject(FExternalItemService);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: ExternalItemPreparationRequest): void {\n if (!this._isValid(request)) {\n return;\n }\n this._fDraggableDataContext.onPointerDownScale = 1;\n\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition()).elementTransform(this._fHost);\n\n this._fDraggableDataContext.draggableItems = [\n new ExternalItemDragHandler(this._getExternalItem(request.event.targetElement)!)\n ];\n }\n\n private _isValid(request: ExternalItemPreparationRequest): boolean {\n return this._isValidExternalItem(request.event.targetElement, this._getExternalItem(request.event.targetElement));\n }\n\n private _isValidExternalItem(element: HTMLElement, fExternalItem?: FExternalItemBase): boolean {\n return isExternalItem(element) && !!fExternalItem && !fExternalItem.fDisabled;\n }\n\n private _getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> | undefined {\n return this._fExternalItemService.getItem(getExternalItem(targetElement));\n }\n}\n","import { ExternalItemPreparationExecution } from './external-item-preparation.execution';\n\nexport const EXTERNAL_ITEM_PREPARATION_PROVIDERS = [\n\n ExternalItemPreparationExecution,\n];\n","export class PreventDefaultIsExternalItemRequest {\n\n constructor(\n public event: Event\n ) {\n }\n}\n","export function isExternalItem(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fExternalItem]');\n}\n\nexport function getExternalItem(element: HTMLElement | SVGElement): HTMLElement | SVGElement {\n return element.closest('[fExternalItem]') as HTMLElement | SVGElement;\n}\n","import { PreventDefaultIsExternalItemRequest } from './prevent-default-is-external-item.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { isExternalItem } from '../../is-external-item';\n\n@Injectable()\n@FExecutionRegister(PreventDefaultIsExternalItemRequest)\nexport class PreventDefaultIsExternalItemExecution implements IExecution<PreventDefaultIsExternalItemRequest, void> {\n\n public handle(request: PreventDefaultIsExternalItemRequest): void {\n if (this._isTargetItemExternal(request.event)) {\n request.event.preventDefault();\n }\n }\n\n private _isTargetItemExternal(event: Event): boolean {\n let isTargetItemExternal = this._isExternalItem(event.target as HTMLElement);\n let isTargetParentItemExternal = this._isExternalItem((event.target as Node).parentNode as HTMLElement);\n return isTargetItemExternal || isTargetParentItemExternal;\n }\n\n private _isExternalItem(target: HTMLElement): boolean {\n let result = false;\n try {\n result = isExternalItem(target);\n } catch (e) {\n }\n return result;\n }\n}\n","import { EXTERNAL_ITEM_PREPARATION_PROVIDERS } from './external-item-preparation';\nimport { EXTERNAL_ITEM_FINALIZE_PROVIDERS } from './external-item-finalize';\nimport { PreventDefaultIsExternalItemExecution } from './prevent-default-is-external-item';\n\nexport const F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS = [\n\n ...EXTERNAL_ITEM_FINALIZE_PROVIDERS,\n\n ...EXTERNAL_ITEM_PREPARATION_PROVIDERS,\n\n PreventDefaultIsExternalItemExecution,\n];\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase<TData = any> implements IHasHostElement {\n\n public abstract fExternalItemId: string;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract fData: TData | undefined;\n\n public abstract fDisabled: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FExternalItemService {\n\n private items: FExternalItemBase[] = [];\n\n public registerItem(item: FExternalItemBase): void {\n this.items.push(item);\n }\n\n public getItem(element: HTMLElement | SVGElement): FExternalItemBase | undefined {\n return this.items.find(item => item.hostElement === element);\n }\n\n public removeItem(item: FExternalItemBase): void {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FExternalItemBase, F_EXTERNAL_ITEM } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n host: {\n '[attr.id]': 'fExternalItemId',\n class: \"f-component f-external-item\",\n '[class.f-external-item-disabled]': 'fDisabled',\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective<TData> extends FExternalItemBase<TData> implements OnInit, OnDestroy {\n\n @Input()\n public override fExternalItemId: string = `f-external-item-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override fData: TData | undefined;\n\n @Input()\n public override fDisabled: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fExternalItemService: FExternalItemService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fExternalItemService.registerItem(this);\n this.disablePointerEvents(Array.from(this.hostElement.children) as HTMLElement[]);\n }\n\n private disablePointerEvents(children: HTMLElement[]): void {\n children.forEach((x) => {\n x.style.pointerEvents = 'none';\n this.disablePointerEvents(Array.from(x.children) as HTMLElement[]);\n });\n }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { FExternalItemDirective } from './f-external-item.directive';\n\nexport const F_EXTERNAL_ITEM_PROVIDERS = [\n FExternalItemDirective\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_DRAG_AND_DROP_PLUGIN: InjectionToken<IFDragAndDropPlugin> = new InjectionToken<IFDragAndDropPlugin>('F_DRAG_AND_DROP_PLUGIN');\n\nexport interface IFDragAndDropPlugin {\n\n onSelect?(event: Event): void;\n\n onPointerDown?(event: IPointerEvent): void;\n\n prepareDragSequence?(event: IPointerEvent): void;\n\n onPointerUp?(event: IPointerEvent): void;\n}\n","import {\n AfterViewInit, booleanAttribute, ContentChildren,\n Directive,\n ElementRef,\n EventEmitter, inject, Inject, Injector,\n Input,\n NgZone, numberAttribute,\n OnDestroy,\n OnInit, Optional, Output, QueryList\n} from \"@angular/core\";\nimport { FDraggableBase } from './f-draggable-base';\nimport {\n FDropToGroupEvent, NodeDragToParentFinalizeRequest,\n NodeDragToParentPreparationRequest,\n NodeMoveFinalizeRequest,\n NodeMovePreparationRequest\n} from './node';\nimport { CanvasMoveFinalizeRequest, CanvasMovePreparationRequest } from './canvas';\nimport {\n FCreateConnectionEvent,\n FReassignConnectionEvent,\n ReassignConnectionPreparationRequest,\n ReassignConnectionFinalizeRequest,\n CreateConnectionPreparationRequest,\n CreateConnectionFinalizeRequest\n} from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddDndToStoreRequest,\n EmitSelectionChangeEventRequest,\n PrepareDragSequenceRequest,\n RemoveDndFromStoreRequest,\n EndDragSequenceRequest,\n InitializeDragSequenceRequest,\n OnPointerMoveRequest, FEventTrigger, TriggerEvent, defaultEventTrigger\n} from '../domain';\nimport {\n ExternalItemFinalizeRequest,\n ExternalItemPreparationRequest,\n FCreateNodeEvent,\n PreventDefaultIsExternalItemRequest\n} from '../f-external-item';\nimport { SingleSelectRequest } from './single-select';\nimport { NodeResizeFinalizeRequest, NodeResizePreparationRequest } from './node-resize';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from './i-f-drag-and-drop-plugin';\nimport { BrowserService, EOperationSystem, PlatformService } from '@foblex/platform';\nimport { ICanRunOutsideAngular, IPointerEvent } from '@foblex/drag-toolkit';\nimport { FNodeIntersectedWithConnections } from './domain';\nimport { FInjector } from './f-injector';\n\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable'\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n\n private _fMediator = inject(FMediator);\n private _fPlatform = inject(PlatformService);\n private _injector = inject(Injector);\n\n @Input({ transform: booleanAttribute, alias: 'fDraggableDisabled' })\n public override disabled: boolean = false;\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @Input()\n public fMultiSelectTrigger: FEventTrigger = (event: TriggerEvent) => {\n return (this._fPlatform.getOS() === EOperationSystem.MAC_OS) ? event.metaKey : event.ctrlKey;\n };\n\n @Input()\n public fReassignConnectionTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fCreateConnectionTrigger: FEventTrigger = defaultEventTrigger;\n\n @Output()\n public override fSelectionChange = new EventEmitter<FSelectionChangeEvent>();\n\n @Output()\n public override fNodeIntersectedWithConnections = new EventEmitter<FNodeIntersectedWithConnections>();\n\n @Input({ transform: booleanAttribute })\n public override fEmitOnNodeIntersect: boolean = false;\n\n @Output()\n public override fCreateNode = new EventEmitter<FCreateNodeEvent>();\n\n @Output()\n public override fReassignConnection = new EventEmitter<FReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection = new EventEmitter<FCreateConnectionEvent>();\n\n @Output()\n public override fDropToGroup = new EventEmitter<FDropToGroupEvent>();\n\n @Input({ transform: numberAttribute })\n public override vCellSize = 1;\n\n @Input({ transform: numberAttribute })\n public override hCellSize = 1;\n\n @Input({ transform: booleanAttribute })\n public override fCellSizeWhileDragging: boolean = false;\n\n @Output()\n public override fDragStarted = new EventEmitter<void>();\n\n @Output()\n public override fDragEnded = new EventEmitter<void>();\n\n @ContentChildren(F_DRAG_AND_DROP_PLUGIN, { descendants: true })\n private plugins!: QueryList<IFDragAndDropPlugin>;\n\n constructor(\n @Inject(NgZone) @Optional() ngZone: ICanRunOutsideAngular,\n private _fBrowser: BrowserService,\n ) {\n super(ngZone);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute<void>(new AddDndToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this._fBrowser.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n FInjector.set(this._injector);\n\n this._fMediator.execute<void>(new InitializeDragSequenceRequest());\n\n this.plugins.forEach((p) => p.onPointerDown?.(event));\n\n this._fMediator.execute<void>(new SingleSelectRequest(event, this.fMultiSelectTrigger));\n\n this._fMediator.execute<void>(new ReassignConnectionPreparationRequest(event, this.fReassignConnectionTrigger));\n\n this._fMediator.execute<void>(new CreateConnectionPreparationRequest(event, this.fCreateConnectionTrigger));\n\n const isMouseLeftOrTouch = event.isMouseLeftButton();\n if (!isMouseLeftOrTouch) {\n this.finalizeDragSequence();\n }\n return isMouseLeftOrTouch;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n\n this.plugins.forEach((p) => p.prepareDragSequence?.(event));\n\n this._fMediator.execute<void>(new NodeResizePreparationRequest(event));\n\n this._fMediator.execute<void>(new NodeMovePreparationRequest(event));\n\n this._fMediator.execute<void>(new NodeDragToParentPreparationRequest(event));\n\n this._fMediator.execute<void>(new CanvasMovePreparationRequest(event));\n\n this._fMediator.execute<void>(new ExternalItemPreparationRequest(event));\n\n this._fMediator.execute<void>(new PrepareDragSequenceRequest());\n }\n\n protected override onSelect(event: Event): void {\n this.plugins.forEach((x) => x.onSelect?.(event));\n\n this._fMediator.execute<void>(new PreventDefaultIsExternalItemRequest(event));\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n this._fMediator.execute<void>(new OnPointerMoveRequest(event));\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n this.plugins.forEach((x) => x.onPointerUp?.(event));\n\n this._fMediator.execute<void>(new ReassignConnectionFinalizeRequest(event));\n\n this._fMediator.execute<void>(new CreateConnectionFinalizeRequest(event));\n\n this._fMediator.execute<void>(new NodeResizeFinalizeRequest(event));\n\n this._fMediator.execute<void>(new NodeMoveFinalizeRequest(event));\n\n this._fMediator.execute<void>(new NodeDragToParentFinalizeRequest(event));\n\n this._fMediator.execute<void>(new CanvasMoveFinalizeRequest(event));\n\n this._fMediator.execute<void>(new ExternalItemFinalizeRequest(event));\n\n this._fMediator.execute<void>(new EndDragSequenceRequest());\n\n FInjector.clear();\n }\n\n protected override finalizeDragSequence(): void {\n this._fMediator.execute<void>(new EmitSelectionChangeEventRequest());\n\n FInjector.clear();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute<void>(new RemoveDndFromStoreRequest());\n super.unsubscribe();\n\n FInjector.clear();\n }\n}\n\n","import { ICurrentSelection } from '../domain';\n\nexport class FSelectionChangeEvent implements ICurrentSelection{\n\n constructor(\n public nodes: string[],\n public groups: string[],\n public connections: string[],\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class MinimapDragPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class CalculateFlowPointFromMinimapPointRequest {\n\n constructor(\n public flowRect: IRect,\n public canvasPosition: IPoint,\n public eventPoint: IPoint,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(CalculateFlowPointFromMinimapPointRequest)\nexport class CalculateFlowPointFromMinimapPointExecution\n implements IExecution<CalculateFlowPointFromMinimapPointRequest, IPoint> {\n\n private get canvasScale(): number {\n return this.fComponentsStore.fCanvas!.transform.scale;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(payload: CalculateFlowPointFromMinimapPointRequest): IPoint {\n return PointExtensions.sub(\n payload.canvasPosition,\n PointExtensions.sub(\n this.getPositionInViewBox(payload.eventPoint, payload.minimap),\n this.getNormalizedFlowCenter(payload.flowRect)\n )\n );\n }\n\n private getNormalizedFlowCenter(flowRect: IRect): IPoint {\n return Point.fromPoint(flowRect.gravityCenter).sub(flowRect);\n }\n\n private getPositionInViewBox(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n const eventPointInFlow = this.normalizeEventPoint(eventPoint, minimap);\n return PointExtensions.sum(\n eventPointInFlow,\n RectExtensions.mult(minimap.viewBox, this.canvasScale)\n );\n }\n\n public normalizeEventPoint(point: IPoint, minimap: FMinimapData): Point {\n return this.getEventPointInMinimap(point, minimap)\n .mult(minimap.scale).mult(this.canvasScale);\n }\n\n private getEventPointInMinimap(eventPoint: IPoint, minimap: FMinimapData): Point {\n return Point.fromPoint(eventPoint).elementTransform(minimap.element as unknown as HTMLElement);\n }\n}\n","import { IPoint, IRect, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { IDraggableItem } from '../../f-draggable';\nimport { FMediator } from '@foblex/mediator';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from './f-minimap-data';\n\nexport class FMinimapDragHandler implements IDraggableItem {\n\n private lastDifference: IPoint | null = null;\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private flowRect: IRect,\n private canvasPosition: IPoint,\n private eventPoint: IPoint,\n private minimap: FMinimapData\n ) {\n }\n\n public prepareDragSequence(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');\n }\n\n public onPointerMove(difference: IPoint): void {\n if (this.lastDifference && this.isSamePoint(difference, this.lastDifference)) {\n return;\n }\n\n this.lastDifference = difference;\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(Point.fromPoint(this.eventPoint).add(difference)));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n private isSamePoint(point1: IPoint, point2: IPoint): boolean {\n return point1.x === point2.x && point1.y === point2.y;\n }\n\n private getNewPosition(eventPoint: IPoint): IPoint {\n return this.fMediator.execute<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.flowRect, this.canvasPosition, eventPoint, this.minimap\n ));\n }\n\n public onPointerUp(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.remove('f-scaled-animate');\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { IPoint, IRect, Point, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { CalculateFlowPointFromMinimapPointRequest } from '../calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationExecution implements IExecution<MinimapDragPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): void {\n if(!this._isValid(request)) {\n return;\n }\n const eventPoint = request.event.getPosition();\n const startCanvasPosition = Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position);\n\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(eventPoint, request.minimap));\n this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(eventPoint).elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new FMinimapDragHandler(\n this.fComponentsStore, this.fMediator, this.getFlowRect(),\n startCanvasPosition, eventPoint, request.minimap,\n )\n ];\n }\n\n private _isValid(request: MinimapDragPreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n !!request.event.targetElement.closest('.f-minimap') &&\n this.fComponentsStore.flowHost.contains(request.event.targetElement);\n }\n\n private getNewPosition(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n return this.fMediator.execute<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.getFlowRect(),\n Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position),\n eventPoint, minimap,\n ));\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.flowHost);\n }\n}\n","import { MinimapDragPreparationExecution } from './minimap-drag-preparation.execution';\n\nexport const MINIMAP_DRAG_PREPARATION_PROVIDERS = [\n\n MinimapDragPreparationExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class MinimapDragFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\n\n@Injectable()\n@FExecutionRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeExecution implements IExecution<MinimapDragFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): void {\n if(!this._isValid()) {\n return;\n }\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FMinimapDragHandler\n );\n }\n}\n","import { MinimapDragFinalizeExecution } from './minimap-drag-finalize.execution';\n\nexport const MINIMAP_DRAG_FINALIZE_PROVIDERS = [\n\n MinimapDragFinalizeExecution,\n];\n","export class MinimapDrawNodesRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapDrawNodesRequest } from './minimap-draw-nodes.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FNodeBase, FNodeDirective } from '../../../f-node';\nimport { IRect, RectExtensions, setRectToElement } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(MinimapDrawNodesRequest)\nexport class MinimapDrawNodesExecution implements IExecution<MinimapDrawNodesRequest, SVGRectElement[]> {\n\n private _fBrowser = inject(BrowserService);\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase | undefined {\n return this._fComponentStore.fFlow;\n }\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentStore.fNodes;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapDrawNodesRequest): SVGRectElement[] {\n return this._createMinimapNodeElements(request);\n }\n\n private _createMinimapNodeElements(request: MinimapDrawNodesRequest): SVGRectElement[] {\n return this._fNodes.map((x) => {\n const element = this._createNodeElement();\n setRectToElement(this._getNodeRect(x), element);\n this._applyClassList(element, x, x instanceof FNodeDirective);\n return element;\n });\n }\n\n private _createNodeElement(): SVGRectElement {\n return createSVGElement('rect', this._fBrowser);\n }\n\n private _getNodeRect(node: FNodeBase): IRect {\n return RectExtensions.div(this._getNodeRectInFlow(node), this._fCanvas.transform.scale);\n }\n\n private _getNodeRectInFlow(node: FNodeBase): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(node.hostElement), this._fFlow!.hostElement);\n }\n\n private _applyClassList(element: SVGRectElement, node: FNodeBase, isNode: boolean): void {\n element.classList.add('f-component', isNode ? 'f-minimap-node' : 'f-minimap-group');\n if (node.isSelected()) {\n element.classList.add('f-selected');\n }\n }\n}\n","export class MinimapCalculateViewBoxRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapCalculateViewBoxRequest } from './minimap-calculate-view-box.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(MinimapCalculateViewBoxRequest)\nexport class MinimapCalculateViewBoxExecution implements IExecution<MinimapCalculateViewBoxRequest, IRect> {\n\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase | undefined {\n return this._fComponentStore.fFlow;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapCalculateViewBoxRequest): IRect {\n if(!this._fFlow || !this._fCanvas) {\n return RectExtensions.initialize();\n }\n return this._getRectForMinimapView();\n }\n\n private _getRectForMinimapView(): IRect {\n const result = this._calculateViewBox();\n result.x = 0;\n result.y = 0;\n return result;\n }\n\n private _calculateViewBox(): IRect {\n return RectExtensions.div(RectExtensions.fromElement(this._fFlow!.hostElement), this._fCanvas.transform.scale);\n }\n}\n","export class MinimapCalculateSvgScaleAndViewBoxRequest {\n\n constructor(\n public element: SVGSVGElement,\n public minSize: number,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapCalculateSvgScaleAndViewBoxRequest } from './minimap-calculate-svg-scale-and-view-box.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { adjustRectToMinSize, IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\nimport { CalculateNodesBoundingBoxRequest } from '../../../domain';\nimport { IFMinimapScaleAndViewBox } from './i-f-minimap-scale-and-view-box';\n\n@Injectable()\n@FExecutionRegister(MinimapCalculateSvgScaleAndViewBoxRequest)\nexport class MinimapCalculateSvgScaleAndViewBoxExecution\n implements IExecution<MinimapCalculateSvgScaleAndViewBoxRequest, IFMinimapScaleAndViewBox> {\n\n private _fMediator = inject(FMediator);\n\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase {\n return this._fComponentStore.fFlow!;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapCalculateSvgScaleAndViewBoxRequest): IFMinimapScaleAndViewBox {\n if(!this._fFlow) {\n return { scale: 1, viewBox: RectExtensions.initialize(0, 0, 0, 0) };\n }\n\n const nodesRect = this._getScaledNodesBoundingBox(request.minSize);\n const minimapRect = this._getMinimapRect(request.element);\n const scale = this._calculateViewScale(nodesRect, minimapRect);\n\n return {\n scale,\n viewBox: this._calculateViewBox(nodesRect, minimapRect, scale)\n }\n }\n\n private _getScaledNodesBoundingBox(minSize: number): IRect {\n const globalRect = this._calculateNodesBoundingBox();\n const flowRect = this._convertFromGlobalToFlowRect(globalRect);\n const scaledRect = this._convertRectToMinimapScale(flowRect);\n return adjustRectToMinSize(scaledRect, minSize);\n }\n\n private _calculateNodesBoundingBox(): IRect {\n return this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxRequest())\n || RectExtensions.initialize(0, 0, 0, 0);\n }\n\n private _convertFromGlobalToFlowRect(rect: IRect): IRect {\n return RectExtensions.elementTransform(rect, this._fFlow!.hostElement)\n }\n\n private _convertRectToMinimapScale(rect: IRect): IRect {\n return RectExtensions.div(rect, this._fCanvas.transform.scale);\n }\n\n private _getMinimapRect(element: SVGSVGElement): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(element), this._fFlow.hostElement);\n }\n\n private _calculateViewScale(nodesRect: IRect, minimapRect: IRect): number {\n return Math.max(nodesRect.width / minimapRect.width, nodesRect.height / minimapRect.height);\n }\n\n private _calculateViewBox(nodesRect: IRect, minimapRect: IRect, scale: number): IRect {\n return this._calculateCenteredViewBox(nodesRect, this._calculateViewSize(minimapRect, scale));\n }\n\n private _calculateViewSize(minimapRect: IRect, scale: number): ISize {\n return SizeExtensions.initialize(minimapRect.width * scale || 0, minimapRect.height * scale || 0);\n }\n\n private _calculateCenteredViewBox(nodesRect: IRect, viewSize: ISize): IRect {\n const centeredX = nodesRect.x - (viewSize.width - nodesRect.width) / 2;\n const centeredY = nodesRect.y - (viewSize.height - nodesRect.height) / 2;\n return RectExtensions.initialize(centeredX, centeredY, viewSize.width, viewSize.height);\n }\n}\n","import { MINIMAP_DRAG_PREPARATION_PROVIDERS } from './minimap-drag-preparation';\nimport { MINIMAP_DRAG_FINALIZE_PROVIDERS } from './minimap-drag-finalize';\nimport { CalculateFlowPointFromMinimapPointExecution } from './calculate-flow-point-from-minimap-point';\nimport { MinimapDrawNodesExecution } from './minimap-draw-nodes';\nimport { MinimapCalculateViewBoxExecution } from './minimap-calculate-view-box';\nimport { MinimapCalculateSvgScaleAndViewBoxExecution } from './minimap-calculate-svg-scale-and-view-box';\n\nexport const F_MINIMAP_DRAG_AND_DROP_PROVIDERS = [\n\n CalculateFlowPointFromMinimapPointExecution,\n\n ...MINIMAP_DRAG_FINALIZE_PROVIDERS,\n\n ...MINIMAP_DRAG_PREPARATION_PROVIDERS,\n\n MinimapDrawNodesExecution,\n\n MinimapCalculateSvgScaleAndViewBoxExecution,\n\n MinimapCalculateViewBoxExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SelectionAreaFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore, NotifyTransformChangedRequest } from '../../f-storage';\nimport { GetCanBeSelectedItemsRequest, ICanBeSelectedElementAndRect } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext, IDraggableItem } from '../../f-draggable';\nimport { FSelectionAreaBase } from '../f-selection-area-base';\nimport { ISelectable } from '../../mixins';\n\nexport class SelectionAreaDragHandle implements IDraggableItem {\n\n private _canBeSelected: ICanBeSelectedElementAndRect[] = [];\n private _selectedByMove: ISelectable[] = [];\n\n private get _fCanvasPosition(): IPoint {\n return Point.fromPoint(this._fComponentsStore.fCanvas!.transform.position)\n .add(this._fComponentsStore.fCanvas!.transform.scaledPosition);\n }\n\n constructor(\n private _fComponentsStore: FComponentsStore,\n private _fSelectionArea: FSelectionAreaBase,\n private _fDraggableDataContext: FDraggableDataContext,\n private _fMediator: FMediator,\n ) {\n }\n\n public prepareDragSequence(): void {\n this._canBeSelected = this._fMediator.execute(new GetCanBeSelectedItemsRequest());\n\n this._fSelectionArea.show();\n this._fSelectionArea.draw(\n RectExtensions.initialize(\n this._fDraggableDataContext.onPointerDownPosition.x,\n this._fDraggableDataContext.onPointerDownPosition.y\n )\n );\n }\n\n public onPointerMove(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this._fDraggableDataContext.onPointerDownPosition);\n\n const point = this._getMinimumPoint(this._fDraggableDataContext.onPointerDownPosition, currentPoint);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n const fSelectionAreaRect = RectExtensions.initialize(point.x, point.y, width, height);\n\n this._fSelectionArea.draw(fSelectionAreaRect);\n this._selectedByMove = [];\n this._canBeSelected.forEach((item) => {\n item.element.unmarkAsSelected();\n\n const fItemRect = RectExtensions.addPoint(item.fRect, this._fCanvasPosition);\n\n const isIntersect = RectExtensions.intersectionWithRect(fItemRect, fSelectionAreaRect);\n if (isIntersect) {\n\n item.element.markAsSelected();\n this._selectedByMove.push(item.element);\n }\n });\n this._fMediator.execute<void>(new NotifyTransformChangedRequest());\n }\n\n private _getMinimumPoint(point1: IPoint, point2: IPoint): IPoint {\n return PointExtensions.initialize(\n Math.min(point1.x, point2.x),\n Math.min(point1.y, point2.y)\n );\n }\n\n public onPointerUp(): void {\n this._fSelectionArea.hide();\n this._fDraggableDataContext.selectedItems.push(...this._selectedByMove);\n if (this._selectedByMove.length > 0) {\n this._fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeExecution implements IExecution<SelectionAreaFinalizeRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: SelectionAreaFinalizeRequest): void {\n if(!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) =>\n x instanceof SelectionAreaDragHandle\n );\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FSelectionAreaBase } from '../../f-selection-area-base';\nimport { FEventTrigger } from '../../../domain';\n\nexport class SelectionAreaPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fSelectionArea: FSelectionAreaBase,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { isValidEventTrigger } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationExecution implements IExecution<SelectionAreaPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: SelectionAreaPreparationRequest): void {\n if (!this._isValid(request)) {\n return;\n }\n this._fDraggableDataContext.draggableItems = [\n new SelectionAreaDragHandle(\n this._fComponentsStore, request.fSelectionArea, this._fDraggableDataContext, this._fMediator\n )\n ];\n\n this._fDraggableDataContext.onPointerDownScale = 1;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost);\n }\n\n private _isValid(request: SelectionAreaPreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n}\n","import { SelectionAreaPreparationExecution } from './selection-area-preparation';\nimport { SelectionAreaFinalizeExecution } from './selection-area-finalize';\n\nexport const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [\n\n SelectionAreaPreparationExecution,\n\n SelectionAreaFinalizeExecution\n];\n","import { IRect } from '@foblex/2d';\nimport { Directive } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\n@Directive()\nexport abstract class FSelectionAreaBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract hide(): void;\n\n public abstract show(): void;\n\n public abstract draw(object: IRect): void;\n}\n","import { Component, ElementRef, inject, Input, OnInit } from '@angular/core';\nimport { FSelectionAreaBase } from './f-selection-area-base';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { SelectionAreaFinalizeRequest, SelectionAreaPreparationRequest } from './domain';\nimport { FEventTrigger, TriggerEvent } from '../domain';\n\n@Component({\n selector: \"f-selection-area\",\n template: ``,\n styleUrls: [ './f-selection-area.component.scss' ],\n host: {\n 'class': 'f-selection-area f-component'\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },\n ],\n})\nexport class FSelectionAreaComponent extends FSelectionAreaBase implements OnInit, IFDragAndDropPlugin {\n\n private _fMediator = inject(FMediator);\n private _elementReference = inject(ElementRef);\n\n @Input()\n public fTrigger: FEventTrigger = (event: TriggerEvent) => {\n return event.shiftKey;\n };\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override hide(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override show(): void {\n this.hostElement.style.display = 'block';\n }\n\n public override draw(object: IRect): void {\n const style = this.hostElement.style;\n style.left = object.x + 'px';\n style.top = object.y + 'px';\n style.width = object.width + 'px';\n style.height = object.height + 'px';\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this._fMediator.execute(new SelectionAreaPreparationRequest(event, this, this.fTrigger));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this._fMediator.execute(new SelectionAreaFinalizeRequest(event));\n }\n}\n","import { FSelectionAreaComponent } from './f-selection-area.component';\n\nexport const F_SELECTION_AREA_PROVIDERS = [\n\n FSelectionAreaComponent\n];\n","import { CANVAS_PROVIDERS } from './canvas';\nimport { CONNECTIONS_PROVIDERS } from './connections';\nimport { SINGLE_SELECT_PROVIDERS } from './single-select';\nimport { NODE_PROVIDERS } from './node';\nimport { NODE_RESIZE_PROVIDERS } from './node-resize';\nimport { F_MINIMAP_DRAG_AND_DROP_PROVIDERS } from '../f-minimap/domain/providers';\nimport { F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS } from '../f-external-item';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area';\nimport { DRAG_AND_DROP_COMMON_PROVIDERS } from './domain';\n\nexport const F_DRAGGABLE_PROVIDERS = [\n\n ...CANVAS_PROVIDERS,\n\n ...CONNECTIONS_PROVIDERS,\n\n ...DRAG_AND_DROP_COMMON_PROVIDERS,\n\n ...SINGLE_SELECT_PROVIDERS,\n\n ...F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS,\n\n ...NODE_PROVIDERS,\n\n ...NODE_RESIZE_PROVIDERS,\n\n ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,\n\n ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS\n];\n","import { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { FindInputAtPositionRequest } from './find-input-at-position.request';\nimport { inject, Injectable } from '@angular/core';\nimport { BrowserService } from '@foblex/platform';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { IClosestInput } from '../i-closest-input';\nimport { CalculateClosestInputRequest } from '../calculate-closest-input';\nimport { FSnapConnectionComponent } from '../../../f-connection';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\n\n@Injectable()\n@FExecutionRegister(FindInputAtPositionRequest)\nexport class FindInputAtPositionExecution\n implements IExecution<FindInputAtPositionRequest, FConnectorBase | undefined> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n private _fBrowser = inject(BrowserService);\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n\n private get _fSnapConnection(): FSnapConnectionComponent | undefined {\n return this._fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n public handle(payload: FindInputAtPositionRequest): FConnectorBase | undefined {\n const fInputs = this._findInputsAtPosition(payload,);\n return fInputs.length > 0 ? fInputs[ 0 ] : undefined;\n }\n\n private _findInputsAtPosition(request: FindInputAtPositionRequest): FConnectorBase[] {\n const result: FConnectorBase[] = [];\n\n result.push(...this._getConnectableInputsAtPosition(request));\n\n const fClosestInput = this._calculateClosetInput(request);\n if (fClosestInput) {\n result.unshift(fClosestInput.fConnector);\n }\n\n const fInput = this._getFirstConnectableInputOfNodeAtPosition(request);\n if (fInput) {\n result.push(fInput);\n }\n\n return result;\n }\n\n private _getConnectableInputsAtPosition(request: FindInputAtPositionRequest): FConnectorBase[] {\n return request.canBeConnectedInputs.filter((x) => {\n return RectExtensions.isIncludePoint(x.fRect, this._calculateDifference(request.pointerPosition));\n }).map((x) => x.fConnector);\n }\n\n private _calculateDifference(position: IPoint): IPoint {\n return Point.fromPoint(position)\n .elementTransform(this._fComponentsStore.flowHost)\n .div(this._fDraggableDataContext.onPointerDownScale)\n .sub(this._fDraggableDataContext.onPointerDownPosition);\n }\n\n //if the closest input is valid, return it\n private _calculateClosetInput(request: FindInputAtPositionRequest): IClosestInput | undefined {\n if (!this._fSnapConnection) {\n return undefined;\n }\n const position = Point.fromPoint(request.toConnectorRect).add(this._calculateDifference(request.pointerPosition));\n\n const fClosestInput = this._fMediator.execute<IClosestInput | undefined>(\n new CalculateClosestInputRequest(position, request.canBeConnectedInputs)\n );\n\n return this._isValidClosestInput(fClosestInput) ? fClosestInput : undefined;\n }\n\n private _isValidClosestInput(fClosestInput: IClosestInput | undefined): boolean {\n return !!fClosestInput && fClosestInput.distance < this._fSnapConnection!.fSnapThreshold;\n }\n\n //if node placed in position and fConnectOnNode is true, return the first connectable input of the node\n private _getFirstConnectableInputOfNodeAtPosition(request: FindInputAtPositionRequest): FConnectorBase | undefined {\n return this._getElementsFromPoint(request.pointerPosition)\n .map((x) => this._findConnectableNode(x))\n .filter((x) => !!x)\n .map((x) => this._findFirstConnectableInputOfNode(request.canBeConnectedInputs, x))\n .find((x) => !!x);\n }\n\n private _getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this._fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n private _findConnectableNode(element: HTMLElement): FNodeBase | undefined {\n return this._fNodes.find((x) => x.isContains(element) && x.fConnectOnNode);\n }\n\n private _findFirstConnectableInputOfNode(connectableInputs: IConnectorAndRect[], fNode: FNodeBase): FConnectorBase | undefined {\n return connectableInputs.find((x) => x.fConnector.fNodeId === fNode.fId)?.fConnector\n }\n}\n","import { FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\n\nexport class GetAllCanBeConnectedInputsAndRectsRequest {\n\n constructor(\n public fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase,\n ) {\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class GetConnectorAndRectRequest {\n\n constructor(\n public fConnector: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorAndRectRequest } from './get-connector-and-rect-request';\nimport { IRoundedRect } from '@foblex/2d';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\nimport { GetNormalizedElementRectRequest } from '../../get-normalized-element-rect';\nimport { FConnectorBase } from '../../../f-connectors';\n\n@Injectable()\n@FExecutionRegister(GetConnectorAndRectRequest)\nexport class GetConnectorAndRectExecution implements IExecution<GetConnectorAndRectRequest, IConnectorAndRect> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: GetConnectorAndRectRequest): IConnectorAndRect {\n return {\n fConnector: request.fConnector,\n fRect: this._getConnectorRect(request.fConnector)\n }\n }\n\n private _getConnectorRect(fConnector: FConnectorBase): IRoundedRect {\n return this._fMediator.execute<IRoundedRect>(new GetNormalizedElementRectRequest(fConnector.hostElement, true));\n }\n}\n","import { GetAllCanBeConnectedInputsAndRectsRequest } from './get-all-can-be-connected-inputs-and-rects.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\nimport { GetConnectorAndRectRequest } from '../get-connector-and-rect';\n\n@Injectable()\n@FExecutionRegister(GetAllCanBeConnectedInputsAndRectsRequest)\nexport class GetAllCanBeConnectedInputsAndRectsExecution\n implements IExecution<GetAllCanBeConnectedInputsAndRectsRequest, IConnectorAndRect[]> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fInputs(): FConnectorBase[] {\n return this._fComponentsStore.fInputs;\n }\n\n public handle(payload: GetAllCanBeConnectedInputsAndRectsRequest): IConnectorAndRect[] {\n return this._getCanBeConnectedInputs(payload.fOutputOrOutlet).map((x) => {\n return this._fMediator.execute(new GetConnectorAndRectRequest(x));\n });\n }\n\n private _getCanBeConnectedInputs(fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase): FConnectorBase[] {\n let fInputs: FConnectorBase[] = [];\n if (fOutputOrOutlet.canBeConnectedInputs?.length) {\n fInputs = this._fInputs.filter((x) => fOutputOrOutlet.canBeConnectedInputs.includes(x.fId));\n } else {\n fInputs = this._fInputs.filter((x) => x.canBeConnected);\n\n if(!fOutputOrOutlet.isSelfConnectable) {\n fInputs = this._filterSelfConnectable(fInputs, fOutputOrOutlet);\n }\n }\n return fInputs;\n }\n\n private _filterSelfConnectable(fInputs: FConnectorBase[], fOutputOrOutlet: FConnectorBase): FConnectorBase[] {\n return fInputs.filter((x) => fOutputOrOutlet.fNodeId !== x.fNodeId);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class MarkAllCanBeConnectedInputsRequest {\n\n constructor(\n public fInputs: FConnectorBase[],\n ) {\n }\n}\n","export const F_CSS_CLASS = {\n\n DRAG_AND_DROP: {\n\n DRAGGING: 'f-dragging',\n\n CONNECTIONS_DRAGGING: 'f-connections-dragging',\n },\n\n CONNECTOR: {\n\n OUTPUT_CONNECTED: 'f-node-output-connected',\n\n OUTPUT_NOT_CONNECTABLE: 'f-node-output-not-connectable',\n\n INPUT_CONNECTED: 'f-node-input-connected',\n\n INPUT_NOT_CONNECTABLE: 'f-node-input-not-connectable',\n\n INPUT_CAN_BE_CONNECTED_TO: 'f-node-input-can-be-connected-to',\n }\n}\n","import { MarkAllCanBeConnectedInputsRequest } from './mark-all-can-be-connected-inputs.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { F_CSS_CLASS } from '../../css-cls';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(MarkAllCanBeConnectedInputsRequest)\nexport class MarkAllCanBeConnectedInputsExecution\n implements IExecution<MarkAllCanBeConnectedInputsRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(payload: MarkAllCanBeConnectedInputsRequest): void {\n this._fComponentsStore.flowHost.classList.add(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);\n payload.fInputs.forEach((fInput) => this._markCanBeConnectedTo(fInput));\n }\n\n private _markCanBeConnectedTo(fInput: FConnectorBase): void {\n fInput.hostElement.classList.add(F_CSS_CLASS.CONNECTOR.INPUT_CAN_BE_CONNECTED_TO);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveInputFromStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveInputFromStoreRequest } from './remove-input-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveInputFromStoreRequest)\nexport class RemoveInputFromStoreExecution implements IExecution<RemoveInputFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveInputFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fInputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveOutletFromStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveOutletFromStoreRequest } from './remove-outlet-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveOutletFromStoreRequest)\nexport class RemoveOutletFromStoreExecution implements IExecution<RemoveOutletFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveOutletFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fOutlets, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveOutputFromStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveOutputFromStoreRequest } from './remove-output-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveOutputFromStoreRequest)\nexport class RemoveOutputFromStoreExecution implements IExecution<RemoveOutputFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveOutputFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fOutputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class UnmarkAllCanBeConnectedInputsRequest {\n\n constructor(\n public fInputs: FConnectorBase[],\n ) {\n }\n}\n","import { UnmarkAllCanBeConnectedInputsRequest } from './unmark-all-can-be-connected-inputs.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { F_CSS_CLASS } from '../../css-cls';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(UnmarkAllCanBeConnectedInputsRequest)\nexport class UnmarkAllCanBeConnectedInputsExecution\n implements IExecution<UnmarkAllCanBeConnectedInputsRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(payload: UnmarkAllCanBeConnectedInputsRequest): void {\n this._fComponentsStore.flowHost.classList.remove(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);\n payload.fInputs.forEach((fInput) => this._unmarkCanBeConnectedTo(fInput));\n }\n\n private _unmarkCanBeConnectedTo(fInput: FConnectorBase): void {\n fInput.hostElement.classList.remove(F_CSS_CLASS.CONNECTOR.INPUT_CAN_BE_CONNECTED_TO);\n }\n}\n","import { AddInputToStoreExecution } from './add-input-to-store';\nimport { AddOutletToStoreExecution } from './add-outlet-to-store';\nimport { AddOutputToStoreExecution } from './add-output-to-store';\nimport { RemoveInputFromStoreExecution } from './remove-input-from-store';\nimport { RemoveOutletFromStoreExecution } from './remove-outlet-from-store';\nimport { RemoveOutputFromStoreExecution } from './remove-output-from-store';\nimport { MarkAllCanBeConnectedInputsExecution } from './mark-all-can-be-connected-inputs';\nimport { UnmarkAllCanBeConnectedInputsExecution } from './unmark-all-can-be-connected-inputs';\nimport { GetAllCanBeConnectedInputsAndRectsExecution } from './get-all-can-be-connected-inputs-and-rects';\nimport { GetConnectorAndRectExecution } from './get-connector-and-rect';\nimport { CalculateClosestInputExecution } from './calculate-closest-input';\nimport { FindInputAtPositionExecution } from './find-input-at-position';\n\nexport const F_CONNECTORS_FEATURES = [\n\n AddInputToStoreExecution,\n\n AddOutletToStoreExecution,\n\n AddOutputToStoreExecution,\n\n CalculateClosestInputExecution,\n\n FindInputAtPositionExecution,\n\n GetAllCanBeConnectedInputsAndRectsExecution,\n\n GetConnectorAndRectExecution,\n\n MarkAllCanBeConnectedInputsExecution,\n\n RemoveInputFromStoreExecution,\n\n RemoveOutletFromStoreExecution,\n\n RemoveOutputFromStoreExecution,\n\n UnmarkAllCanBeConnectedInputsExecution\n];\n","import { FDraggableBase } from '../../../f-draggable';\n\nexport class AddDndToStoreRequest {\n\n constructor(\n public fComponent: FDraggableBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddDndToStoreRequest } from './add-dnd-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddDndToStoreRequest)\nexport class AddDndToStoreExecution implements IExecution<AddDndToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddDndToStoreRequest): void {\n this._fComponentsStore.fDraggable = request.fComponent;\n }\n}\n","export class EmitSelectionChangeEventRequest {\n\n}\n","export class ClearSelectionRequest {\n\n}\n","import { ClearSelectionRequest } from './clear-selection.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(ClearSelectionRequest)\nexport class ClearSelectionExecution implements IExecution<ClearSelectionRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: ClearSelectionRequest): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => x.unmarkAsSelected());\n this._fDraggableDataContext.selectedItems = [];\n this._fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class GetCanBeSelectedItemsRequest {\n}\n","import { inject, Injectable } from '@angular/core';\nimport { IRect, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { ICanBeSelectedElementAndRect } from './i-can-be-selected-element-and-rect';\nimport { GetCanBeSelectedItemsRequest } from './get-can-be-selected-items-request';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectionBase } from '../../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { GetNormalizedElementRectRequest } from '../../get-normalized-element-rect';\n\n@Injectable()\n@FExecutionRegister(GetCanBeSelectedItemsRequest)\nexport class GetCanBeSelectedItemsExecution implements IExecution<void, ICanBeSelectedElementAndRect[]> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get fNodes(): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(): ICanBeSelectedElementAndRect[] {\n return [ ...this.getNodesWithRects(), ...this.getConnectionsWithRects() ].filter((x) => {\n return !this._fDraggableDataContext.selectedItems.includes(x.element);\n });\n }\n\n private getNodesWithRects(): ICanBeSelectedElementAndRect[] {\n return this.fNodes.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n fRect: RectExtensions.mult(\n this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement, false)),\n this.transform.scale\n )\n };\n });\n }\n\n private getConnectionsWithRects(): ICanBeSelectedElementAndRect[] {\n return this.fConnections.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n fRect: RectExtensions.mult(\n this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.boundingElement, false)),\n this.transform.scale\n )\n };\n });\n }\n}\n","export class GetCurrentSelectionRequest {\n\n}\n","import { GetCurrentSelectionRequest } from './get-current-selection.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\nimport { ICurrentSelection } from './i-current-selection';\n\n@Injectable()\n@FExecutionRegister(GetCurrentSelectionRequest)\nexport class GetCurrentSelectionExecution implements IExecution<GetCurrentSelectionRequest, ICurrentSelection> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(): ICurrentSelection {\n return {\n nodes: this._getSelectedNodes(),\n groups: this._getSelectedGroups(),\n connections: this._getSelectedConnections()\n }\n }\n\n private _getSelectedNodes(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => x.hostElement.classList.contains('f-node'))\n .map(x => x.hostElement.dataset[ 'fNodeId' ]!);\n }\n\n private _getSelectedGroups(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => x.hostElement.classList.contains('f-group'))\n .map(x => x.hostElement.dataset[ 'fGroupId' ]!);\n }\n\n private _getSelectedConnections(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => !x.hostElement.classList.contains('f-node') && !x.hostElement.classList.contains('f-group'))\n .map(x => x.hostElement.id);\n }\n}\n","export class SelectRequest {\n\n constructor(\n public nodes: string[],\n public connections: string[]\n ) {\n }\n}\n","import { SelectRequest } from './select.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectRequest)\nexport class SelectExecution implements IExecution<SelectRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: SelectRequest): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => {\n x.unmarkAsSelected();\n });\n this._fDraggableDataContext.selectedItems = [];\n\n request.nodes.forEach((key) => {\n const node = this._fComponentsStore.fNodes.find((x) => x.fId === key);\n if(node) {\n node.markAsSelected();\n this._fDraggableDataContext.selectedItems.push(node);\n }\n });\n\n request.connections.forEach((key) => {\n const connection = this._fComponentsStore.fConnections.find((x) => x.fId === key);\n if(connection) {\n connection.markAsSelected();\n this._fDraggableDataContext.selectedItems.push(connection);\n }\n });\n\n this._fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class SelectAllRequest {\n\n}\n","import { SelectAllRequest } from './select-all.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectAllRequest)\nexport class SelectAllExecution implements IExecution<SelectAllRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: SelectAllRequest): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => {\n x.unmarkAsSelected();\n });\n this._fDraggableDataContext.selectedItems = [];\n this._fComponentsStore.fNodes.forEach((x) => {\n x.markAsSelected();\n this._fDraggableDataContext.selectedItems.push(x);\n });\n this._fComponentsStore.fConnections.forEach((x) => {\n x.markAsSelected();\n this._fDraggableDataContext.selectedItems.push(x);\n });\n this._fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class SelectAndUpdateNodeLayerRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","export class MoveFrontElementsBeforeTargetElementRequest {\n\n constructor(\n public fItemsContainer: HTMLElement, // fGroupsContainer || fNodesContainer || fConnectionsContainer\n public allElements: Element[],\n public elementsThatShouldBeInFront: Element[],\n public targetIndex: number\n ) {\n }\n}\n","import { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(MoveFrontElementsBeforeTargetElementRequest)\nexport class MoveFrontElementsBeforeTargetElementExecution implements IExecution<MoveFrontElementsBeforeTargetElementRequest, void> {\n\n public handle(request: MoveFrontElementsBeforeTargetElementRequest): void {\n const elementsToMove: Element[] = [];\n for (let i = request.targetIndex + 1; i < request.allElements.length; i++) {\n const element = request.allElements[ i ];\n if (!request.elementsThatShouldBeInFront.includes(element)) {\n elementsToMove.push(element);\n }\n }\n elementsToMove.forEach((x) => {\n request.fItemsContainer.removeChild(x);\n request.fItemsContainer.insertBefore(x, request.allElements[ request.targetIndex ]);\n });\n }\n}\n","import { ISelectable } from '../../mixins';\n\nexport class UpdateItemAndChildrenLayersRequest {\n\n constructor(\n public item: ISelectable,\n public itemContainer: HTMLElement,\n ) {\n }\n}\n","export class GetDeepChildrenNodesAndGroupsRequest {\n\n constructor(\n public fId: string\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetDeepChildrenNodesAndGroupsRequest } from './get-deep-children-nodes-and-groups.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetDeepChildrenNodesAndGroupsRequest)\nexport class GetDeepChildrenNodesAndGroupsExecution\n implements IExecution<GetDeepChildrenNodesAndGroupsRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetDeepChildrenNodesAndGroupsRequest): FNodeBase[] {\n return this.getChildrenNodes(request.fId);\n }\n\n private getChildrenNodes(fId: string, visited: Set<string> = new Set()): FNodeBase[] {\n if (visited.has(fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fId);\n }\n visited.add(fId);\n\n const result = this.fComponentsStore.fNodes.filter((x) => x.fParentId === fId);\n result.forEach((x) => {\n result.push(...this.getChildrenNodes(x.fId, visited));\n });\n return result;\n }\n}\n","import { UpdateItemAndChildrenLayersRequest } from './update-item-and-children-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../get-deep-children-nodes-and-groups';\nimport { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element';\n\n@Injectable()\n@FExecutionRegister(UpdateItemAndChildrenLayersRequest)\nexport class UpdateItemAndChildrenLayersExecution implements IExecution<UpdateItemAndChildrenLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fConnectionsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: UpdateItemAndChildrenLayersRequest): void {\n\n switch (request.itemContainer) {\n case this.fGroupsContainer:\n this.handleGroup(request);\n break;\n case this.fNodesContainer:\n this.handleNode(request);\n break;\n case this.fConnectionsContainer:\n this.handleConnection(request);\n break;\n default:\n throw new Error('Unknown container');\n }\n }\n\n private handleGroup(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenGroups = this.getChildrenGroups(childrenNodesAndGroups);\n this.updateLayers(this.fGroupsContainer, request.item.hostElement as HTMLElement, childrenGroups);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n if (childrenNodes.length) {\n this.updateLayers(this.fNodesContainer, childrenNodes[ 0 ], childrenNodes);\n }\n }\n\n private handleNode(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, childrenNodes);\n }\n\n private handleConnection(request: UpdateItemAndChildrenLayersRequest): void {\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, []);\n }\n\n private updateLayers(itemContainer: HTMLElement, item: HTMLElement, elementsThatShouldBeInFront: HTMLElement[]): void {\n const allElements = Array.from(itemContainer.children) as HTMLElement[];\n const targetIndex = allElements.findIndex((x) => x === item);\n if (this.isAnythingNeedToBeMoved(allElements, targetIndex, elementsThatShouldBeInFront)) {\n this.fMediator.execute(\n new MoveFrontElementsBeforeTargetElementRequest(itemContainer, allElements, elementsThatShouldBeInFront, targetIndex)\n );\n }\n }\n\n private isAnythingNeedToBeMoved(allElements: HTMLElement[], targetIndex: number, elementsThatShouldBeInFront: HTMLElement[]): boolean {\n for (let i = targetIndex + 1; i < allElements.length; i++) {\n if (!elementsThatShouldBeInFront.includes(allElements[ i ])) {\n return true;\n }\n }\n return false;\n }\n\n private getChildrenGroups(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fGroupsContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fGroupsContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fNodesContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fNodesContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodesAndGroups(fId: string): HTMLElement[] {\n return this.fMediator.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId)).map((x) => x.hostElement);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../../update-item-and-children-layers';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(SelectAndUpdateNodeLayerRequest)\nexport class SelectAndUpdateNodeLayerExecution implements IHandler<SelectAndUpdateNodeLayerRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n public handle(request: SelectAndUpdateNodeLayerRequest): void {\n this.selectNodeIfNotSelected(request.fNode);\n\n this.fMediator.execute<void>(\n new UpdateItemAndChildrenLayersRequest(request.fNode, request.fNode.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(fNode: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(fNode) && !fNode.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(fNode);\n fNode.markAsSelected();\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { ClearSelectionExecution } from './clear-selection';\nimport { GetCurrentSelectionExecution } from './get-current-selection';\nimport { SelectExecution } from './select';\nimport { SelectAllExecution } from './select-all';\nimport { SelectAndUpdateNodeLayerExecution } from './select-and-update-node-layer';\nimport { GetCanBeSelectedItemsExecution } from './get-can-be-selected-items';\n\nexport const F_SELECTION_FEATURES = [\n\n ClearSelectionExecution,\n\n GetCanBeSelectedItemsExecution,\n\n GetCurrentSelectionExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution\n];\n","import { EventEmitter, inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { EmitSelectionChangeEventRequest } from './emit-selection-change-event-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\nimport { GetCurrentSelectionRequest, ICurrentSelection } from '../../f-selection';\nimport { NotifyTransformChangedRequest } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(EmitSelectionChangeEventRequest)\nexport class EmitSelectionChangeEventExecution implements IExecution<EmitSelectionChangeEventRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fSelectionChange(): EventEmitter<FSelectionChangeEvent> {\n return this._fComponentsStore.fDraggable!.fSelectionChange;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: EmitSelectionChangeEventRequest): void {\n if (\n !this._fDraggableDataContext.isSelectedChanged\n ) {\n return;\n }\n\n this._emitSelectionChange(this._getSelection());\n this._fDraggableDataContext.isSelectedChanged = false;\n this._fMediator.execute<void>(new NotifyTransformChangedRequest());\n }\n\n private _getSelection(): ICurrentSelection {\n return this._fMediator.execute<ICurrentSelection>(new GetCurrentSelectionRequest());\n }\n\n private _emitSelectionChange(selection: ICurrentSelection): void {\n this._fSelectionChange.emit(\n new FSelectionChangeEvent(selection.nodes, selection.groups, selection.connections)\n );\n }\n}\n","export class EndDragSequenceRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { EndDragSequenceRequest } from './end-drag-sequence-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { F_CSS_CLASS } from '../../css-cls';\n\n@Injectable()\n@FExecutionRegister(EndDragSequenceRequest)\nexport class EndDragSequenceExecution implements IExecution<EndDragSequenceRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: EndDragSequenceRequest): void {\n this._hostElement.classList.remove(F_CSS_CLASS.DRAG_AND_DROP.DRAGGING);\n\n this._fDraggableDataContext.reset();\n this._emitDragEnded();\n }\n\n private _emitDragEnded(): void {\n this._fComponentsStore.fDraggable?.fDragEnded?.emit();\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class OnPointerMoveRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { OnPointerMoveRequest } from './on-pointer-move-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\n\n@Injectable()\n@FExecutionRegister(OnPointerMoveRequest)\nexport class OnPointerMoveExecution implements IExecution<OnPointerMoveRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: OnPointerMoveRequest): void {\n this._setDifferenceToDraggableItems(\n this._getDifferenceBetweenPointerAndPointerDown(request.event)\n );\n }\n\n private _setDifferenceToDraggableItems(difference: IPoint): void {\n this._fDraggableDataContext.draggableItems.forEach((item) => {\n item.onPointerMove({ ...difference });\n });\n }\n\n private _getDifferenceBetweenPointerAndPointerDown(event: IPointerEvent): IPoint {\n return this._getPointerPositionInCanvas(event)\n .div(this._fDraggableDataContext.onPointerDownScale)\n .sub(this._fDraggableDataContext.onPointerDownPosition);\n }\n\n private _getPointerPositionInCanvas(event: IPointerEvent): Point {\n return Point.fromPoint(event.getPosition()).elementTransform(this._hostElement);\n }\n}\n","export class InitializeDragSequenceRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { InitializeDragSequenceRequest } from './initialize-drag-sequence-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(InitializeDragSequenceRequest)\nexport class InitializeDragSequenceExecution implements IExecution<InitializeDragSequenceRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: InitializeDragSequenceRequest): void {\n this._fDraggableDataContext.reset();\n }\n}\n","export class PrepareDragSequenceRequest {\n\n}\n","export class StartDragSequenceRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { StartDragSequenceRequest } from './start-drag-sequence-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { EmitSelectionChangeEventRequest } from '../emit-selection-change-event';\nimport { F_CSS_CLASS } from '../../css-cls';\n\n@Injectable()\n@FExecutionRegister(StartDragSequenceRequest)\nexport class StartDragSequenceExecution implements IExecution<StartDragSequenceRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: StartDragSequenceRequest): void {\n if (this._fDraggableDataContext.draggableItems.length > 0) {\n this._hostElement.classList.add(F_CSS_CLASS.DRAG_AND_DROP.DRAGGING);\n this._fMediator.execute<void>(new EmitSelectionChangeEventRequest());\n this._emitDragStarted();\n }\n }\n\n private _emitDragStarted(): void {\n this._fComponentsStore.fDraggable?.fDragStarted?.emit();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { PrepareDragSequenceRequest } from './prepare-drag-sequence-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { StartDragSequenceRequest } from '../start-drag-sequence';\n\n@Injectable()\n@FExecutionRegister(PrepareDragSequenceRequest)\nexport class PrepareDragSequenceExecution implements IExecution<PrepareDragSequenceRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: PrepareDragSequenceRequest): void {\n this._callPrepareDragSequence();\n\n this._fMediator.execute<void>(new StartDragSequenceRequest());\n }\n\n private _callPrepareDragSequence(): void {\n this._fDraggableDataContext.draggableItems.forEach((item) => {\n item.prepareDragSequence?.();\n });\n }\n}\n","export class RemoveDndFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveDndFromStoreRequest } from './remove-dnd-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveDndFromStoreRequest)\nexport class RemoveDndFromStoreExecution implements IExecution<RemoveDndFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveDndFromStoreRequest): void {\n this._fComponentsStore.fDraggable = undefined;\n }\n}\n","import { AddDndToStoreExecution } from './add-dnd-to-store';\nimport { EmitSelectionChangeEventExecution } from './emit-selection-change-event';\nimport { RemoveDndFromStoreExecution } from './remove-dnd-from-store';\nimport { PrepareDragSequenceExecution } from './prepare-drag-sequence';\nimport { EndDragSequenceExecution } from './end-drag-sequence';\nimport { InitializeDragSequenceExecution } from './initialize-drag-sequence';\nimport { OnPointerMoveExecution } from './on-pointer-move';\nimport { IsDragStartedExecution } from './is-drag-started';\nimport { StartDragSequenceExecution } from './start-drag-sequence';\n\nexport const F_DRAGGABLE_FEATURES = [\n\n AddDndToStoreExecution,\n\n EmitSelectionChangeEventExecution,\n\n EndDragSequenceExecution,\n\n OnPointerMoveExecution,\n\n InitializeDragSequenceExecution,\n\n PrepareDragSequenceExecution,\n\n IsDragStartedExecution,\n\n StartDragSequenceExecution,\n\n RemoveDndFromStoreExecution\n];\n","import { FFlowBase } from '../../../f-flow';\n\nexport class AddFlowToStoreRequest {\n\n constructor(\n public fComponent: FFlowBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddFlowToStoreRequest } from './add-flow-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddFlowToStoreRequest)\nexport class AddFlowToStoreExecution implements IExecution<AddFlowToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddFlowToStoreRequest): void {\n this._fComponentsStore.fFlow = request.fComponent;\n }\n}\n","export class GetFlowRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetFlowRequest } from './get-flow-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(GetFlowRequest)\nexport class GetFlowExecution implements IExecution<GetFlowRequest, FFlowBase> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetFlowRequest): FFlowBase {\n const result = this._fComponentsStore.fFlow;\n if (!result) {\n throw new Error(`Flow not found in store`);\n }\n return result;\n }\n}\n","export class GetFlowHostElementRequest {\n\n}\n","import { GetFlowHostElementRequest } from './get-flow-host-element.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetFlowHostElementRequest)\nexport class GetFlowHostElementExecution implements IExecution<GetFlowHostElementRequest, HTMLElement> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(): HTMLElement {\n return this._fComponentsStore.flowHost;\n }\n}\n","export class GetFlowStateConnectionsRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IFFlowStateConnection } from '../i-f-flow-state-connection';\nimport { FConnectionBase } from '../../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateConnectionsRequest)\nexport class GetFlowStateConnectionsExecution implements IExecution<GetFlowStateConnectionsRequest, IFFlowStateConnection[]> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetFlowStateConnectionsRequest): IFFlowStateConnection[] {\n return this._fComponentsStore.fConnections.map(this._mapToConnectionState);\n }\n\n private _mapToConnectionState(x: FConnectionBase): IFFlowStateConnection {\n return {\n id: x.fId,\n fOutputId: x.fOutputId,\n fInputId: x.fInputId,\n fType: x.fType,\n fBehavior: x.fBehavior,\n isSelected: x.isSelected()\n }\n }\n}\n","import { Type } from '@angular/core';\n\nexport class GetFlowStateNodesRequest {\n\n constructor(\n public type: Type<any>\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IFFlowStateNode } from '../i-f-flow-state-node';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IFFlowStateConnector } from '../i-f-flow-state-connector';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateNodesRequest)\nexport class GetFlowStateNodesExecution implements IExecution<GetFlowStateNodesRequest, IFFlowStateNode[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateNodesRequest): IFFlowStateNode[] {\n return this.fComponentsStore.fNodes.filter((x) => x instanceof request.type).map((x) => {\n return {\n id: x.fId,\n parent: x.fParentId,\n position: x.position,\n size: x.size,\n fOutputs: this._getOutputs(x.hostElement),\n fInputs: this._getInputs(x.hostElement),\n isSelected: x.isSelected()\n };\n });\n }\n\n private _getOutputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fOutputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.fId,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n\n private _getInputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fInputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.fId,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n}\n","export class GetFlowStateRequest {\n}\n","import { GetFlowStateRequest } from './get-flow-state.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IFFlowState } from './i-f-flow-state';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FGroupDirective, FNodeDirective } from '../../../f-node';\nimport { IPoint, ITransformModel, PointExtensions } from '@foblex/2d';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateRequest)\nexport class GetFlowStateExecution implements IExecution<GetFlowStateRequest, IFFlowState> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(payload: GetFlowStateRequest): IFFlowState {\n return {\n position: this._getCanvasPosition(this._fComponentsStore.fCanvas!.transform),\n scale: this._fComponentsStore.fCanvas!.transform.scale,\n nodes: this._fMediator.execute(new GetFlowStateNodesRequest(FNodeDirective)),\n groups: this._fMediator.execute(new GetFlowStateNodesRequest(FGroupDirective)),\n connections: this._fMediator.execute(new GetFlowStateConnectionsRequest())\n }\n }\n\n private _getCanvasPosition(transform: ITransformModel): IPoint {\n return PointExtensions.sum(transform.position, transform.scaledPosition);\n }\n}\n\n\n\n","import { GetFlowStateExecution } from './get-flow-state.execution';\nimport { GetFlowStateNodesExecution } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsExecution } from './get-flow-state-connections';\n\nexport const GET_FLOW_STATE_PROVIDERS = [\n\n GetFlowStateExecution,\n\n GetFlowStateNodesExecution,\n\n GetFlowStateConnectionsExecution\n];\n","export class RemoveFlowFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveFlowFromStoreRequest } from './remove-flow-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveFlowFromStoreRequest)\nexport class RemoveFlowFromStoreExecution implements IExecution<RemoveFlowFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveFlowFromStoreRequest): void {\n this._fComponentsStore.fFlow = undefined;\n }\n}\n","import { GetFlowHostElementExecution } from './get-flow-host-element';\nimport { AddFlowToStoreExecution } from './add-flow-to-store';\nimport { RemoveFlowFromStoreExecution } from './remove-flow-from-store';\nimport { GetFlowExecution } from './get-flow';\nimport { GET_FLOW_STATE_PROVIDERS } from './get-flow-state';\n\nexport const F_FLOW_FEATURES = [\n\n AddFlowToStoreExecution,\n\n GetFlowExecution,\n\n GetFlowHostElementExecution,\n\n ...GET_FLOW_STATE_PROVIDERS,\n\n RemoveFlowFromStoreExecution\n];\n","import { FLineAlignmentBase } from '../../../f-line-alignment';\n\nexport class AddLineAlignmentToStoreRequest {\n\n constructor(\n public fComponent: FLineAlignmentBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddLineAlignmentToStoreRequest } from './add-line-alignment-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddLineAlignmentToStoreRequest)\nexport class AddLineAlignmentToStoreExecution implements IExecution<AddLineAlignmentToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddLineAlignmentToStoreRequest): void {\n this._fComponentsStore.fLineAlignment = request.fComponent;\n }\n}\n","export class RemoveLineAlignmentFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveLineAlignmentFromStoreRequest } from './remove-line-alignment-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveLineAlignmentFromStoreRequest)\nexport class RemoveLineAlignmentFromStoreExecution implements IExecution<RemoveLineAlignmentFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveLineAlignmentFromStoreRequest): void {\n this._fComponentsStore.fLineAlignment = undefined;\n }\n}\n","import { AddLineAlignmentToStoreExecution } from './add-line-alignment-to-store';\nimport { RemoveLineAlignmentFromStoreExecution } from './remove-line-alignment-from-store';\n\nexport const F_LINE_ALIGNMENT_FEATURES = [\n\n AddLineAlignmentToStoreExecution,\n\n RemoveLineAlignmentFromStoreExecution\n];\n","import { FNodeBase } from '../../../f-node';\n\nexport class AddNodeToStoreRequest {\n\n constructor(\n public fComponent: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddNodeToStoreRequest } from './add-node-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddNodeToStoreRequest)\nexport class AddNodeToStoreExecution implements IExecution<AddNodeToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddNodeToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fNodes, request.fComponent);\n }\n}\n","export class CalculateNodesBoundingBoxRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxRequest } from './calculate-nodes-bounding-box.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(CalculateNodesBoundingBoxRequest)\nexport class CalculateNodesBoundingBoxExecution implements IExecution<CalculateNodesBoundingBoxRequest, IRect | null> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateNodesBoundingBoxRequest): IRect | null {\n return RectExtensions.union(this._getNodesRects());\n }\n\n private _getNodesRects(): IRect[] {\n return this._fComponentsStore.fNodes.map((x) => {\n return this._getElementRect(x.hostElement);\n });\n }\n\n private _getElementRect(element: HTMLElement | SVGElement): IRect {\n return RectExtensions.fromElement(element)\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class CalculateNodesBoundingBoxNormalizedPositionRequest {\n\n constructor(\n public fNodes?: FNodeBase[],\n ) {\n }\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxNormalizedPositionRequest } from './calculate-nodes-bounding-box-normalized-position.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(CalculateNodesBoundingBoxNormalizedPositionRequest)\nexport class CalculateNodesBoundingBoxNormalizedPositionExecution implements IExecution<CalculateNodesBoundingBoxNormalizedPositionRequest, IRect | null> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateNodesBoundingBoxNormalizedPositionRequest): IRect | null {\n return RectExtensions.union(this._getNodesRects(request.fNodes || this._fComponentsStore.fNodes));\n }\n\n private _getNodesRects(fNodes: FNodeBase[]): IRect[] {\n return fNodes.map((x) => {\n return this._getElementRect(x, RectExtensions.fromElement(x.hostElement));\n });\n }\n\n private _getElementRect(fNode: FNodeBase, rect: IRect): IRect {\n return RectExtensions.initialize(fNode.position.x, fNode.position.y, rect.width, rect.height)\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodePaddingRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodePaddingRequest } from './get-node-padding.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(GetNodePaddingRequest)\nexport class GetNodePaddingExecution\n implements IExecution<GetNodePaddingRequest, [ number, number, number, number ]> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: GetNodePaddingRequest): [ number, number, number, number ] {\n return request.fNode.fIncludePadding ? this.getPaddingData(request.fNode, request.rect) : [ 0, 0, 0, 0 ];\n }\n\n private getPaddingData(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n const style = this.fBrowser.window.getComputedStyle(node.hostElement);\n return [\n this.fBrowser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)\n ];\n }\n}\n","export class GetNodesRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetNodesRequest } from './get-nodes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodesRequest)\nexport class GetNodesExecution implements IExecution<GetNodesRequest, FNodeBase[]> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetNodesRequest): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetParentNodesRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetParentNodesRequest } from './get-parent-nodes.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetParentNodesRequest)\nexport class GetParentNodesExecution\n implements IExecution<GetParentNodesRequest, FNodeBase[]> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetParentNodesRequest): FNodeBase[] {\n return this._getParentNodes(request.fNode, new Set<string>(), []);\n }\n\n private _getParentNodes(fNode: FNodeBase, visited: Set<string>, result: FNodeBase[]): FNodeBase[] {\n if (visited.has(fNode.fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);\n }\n visited.add(fNode.fId);\n\n const parent = this._fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);\n if (!parent) {\n return result;\n }\n\n result.push(parent);\n return this._getParentNodes(parent, visited, result);\n }\n}\n","import { DestroyRef } from '@angular/core';\nimport { FNodeBase } from '../../../f-node';\n\nexport class UpdateNodeWhenStateOrSizeChangedRequest {\n\n constructor(\n public fComponent: FNodeBase,\n public destroyRef: DestroyRef,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { UpdateNodeWhenStateOrSizeChangedRequest } from './update-node-when-state-or-size-changed-request';\nimport { EFConnectableSide, FConnectorBase } from '../../../f-connectors';\nimport { NotifyDataChangedRequest } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\nimport { FResizeChannel } from '../../../reactivity';\nimport { RectExtensions } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(UpdateNodeWhenStateOrSizeChangedRequest)\nexport class UpdateNodeWhenStateOrSizeChangedExecution\n implements IExecution<UpdateNodeWhenStateOrSizeChangedRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: UpdateNodeWhenStateOrSizeChangedRequest): void {\n const { hostElement, connectors, stateChanges } = request.fComponent;\n\n new FChannelHub(\n new FResizeChannel(hostElement),\n stateChanges\n ).pipe(notifyOnStart(), debounceTime(10)).listen(request.destroyRef, () => {\n this._calculateConnectorsConnectableSide(connectors, hostElement);\n this._fMediator.execute<void>(new NotifyDataChangedRequest());\n });\n }\n\n private _calculateConnectorsConnectableSide(fConnectors: FConnectorBase[], fNodeHost: HTMLElement | SVGElement): void {\n fConnectors.forEach((x: FConnectorBase) => {\n x.fConnectableSide = this._calculateConnectorConnectableSide(x, fNodeHost);\n });\n }\n\n private _calculateConnectorConnectableSide(fConnector: FConnectorBase, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide | undefined;\n\n if (fConnector.userFConnectableSide === EFConnectableSide.AUTO) {\n result = this._getSideByDelta(fConnector.hostElement, fNodeHost);\n } else {\n result = fConnector.userFConnectableSide;\n }\n return result;\n }\n\n private _getSideByDelta(fConnectorHost: HTMLElement | SVGElement, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide | undefined;\n\n const childRect = RectExtensions.fromElement(fConnectorHost);\n const parentRect = fNodeHost.getBoundingClientRect();\n\n const deltaLeft = childRect.gravityCenter.x - parentRect.left;\n const deltaRight = parentRect.right - childRect.gravityCenter.x;\n const deltaTop = childRect.gravityCenter.y - parentRect.top;\n const deltaBottom = parentRect.bottom - childRect.gravityCenter.y;\n\n const minDelta = Math.min(deltaLeft, deltaRight, deltaTop, deltaBottom);\n\n if (minDelta === deltaLeft) {\n result = EFConnectableSide.LEFT;\n } else if (minDelta === deltaRight) {\n result = EFConnectableSide.RIGHT;\n } else if (minDelta === deltaTop) {\n result = EFConnectableSide.TOP;\n } else {\n result = EFConnectableSide.BOTTOM;\n }\n\n return result;\n }\n}\n\n","import { FNodeBase } from '../../../f-node';\n\nexport class RemoveNodeFromStoreRequest {\n\n constructor(\n public fComponent: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveNodeFromStoreRequest } from './remove-node-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveNodeFromStoreRequest)\nexport class RemoveNodeFromStoreExecution implements IExecution<RemoveNodeFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveNodeFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fNodes, request.fComponent);\n }\n}\n","import { AddNodeToStoreExecution } from './add-node-to-store';\nimport { RemoveNodeFromStoreExecution } from './remove-node-from-store';\nimport { UpdateNodeWhenStateOrSizeChangedExecution } from './update-node-when-state-or-size-changed';\nimport { GetNodesExecution } from './get-nodes';\nimport { CalculateNodesBoundingBoxExecution } from './calculate-nodes-bounding-box';\nimport {\n CalculateNodesBoundingBoxNormalizedPositionExecution\n} from './calculate-nodes-bounding-box-normalized-position';\nimport { GetNodePaddingExecution } from './get-node-padding';\nimport { GetParentNodesExecution } from './get-parent-nodes';\n\nexport const F_NODE_FEATURES = [\n\n AddNodeToStoreExecution,\n\n CalculateNodesBoundingBoxExecution,\n\n CalculateNodesBoundingBoxNormalizedPositionExecution,\n\n GetNodePaddingExecution,\n\n GetNodesExecution,\n\n GetParentNodesExecution,\n\n UpdateNodeWhenStateOrSizeChangedExecution,\n\n RemoveNodeFromStoreExecution\n];\n","import { FZoomBase } from '../../../f-zoom';\n\nexport class AddZoomToStoreRequest {\n\n constructor(\n public fComponent: FZoomBase\n ) {\n }\n}\n","export const F_ZOOM_TAG = 'F_ZOOM';\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddZoomToStoreRequest } from './add-zoom-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_ZOOM_TAG } from '../f-zoom-tag';\n\n@Injectable()\n@FExecutionRegister(AddZoomToStoreRequest)\nexport class AddZoomToStoreExecution implements IExecution<AddZoomToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddZoomToStoreRequest): void {\n this._fComponentsStore.fComponents = {\n [F_ZOOM_TAG]: request.fComponent\n };\n }\n}\n","export class RemoveZoomFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveZoomFromStoreRequest } from './remove-zoom-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_ZOOM_TAG } from '../f-zoom-tag';\n\n@Injectable()\n@FExecutionRegister(RemoveZoomFromStoreRequest)\nexport class RemoveZoomFromStoreExecution implements IExecution<RemoveZoomFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveZoomFromStoreRequest): void {\n this._fComponentsStore.fComponents = {\n [F_ZOOM_TAG]: undefined\n };\n }\n}\n","export class ResetZoomRequest {\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ResetZoomRequest } from './reset-zoom-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(ResetZoomRequest)\nexport class ResetZoomExecution implements IExecution<ResetZoomRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n public handle(request: ResetZoomRequest): void {\n this._fCanvas.resetScale();\n this._fCanvas.redraw();\n this._fCanvas.emitCanvasChangeEvent();\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class SetZoomRequest {\n\n constructor(\n public position: IPoint,\n public step: number,\n public direction: number,\n public animate: boolean = false\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SetZoomRequest } from './set-zoom-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_ZOOM_TAG } from '../f-zoom-tag';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FZoomBase } from '../../../f-zoom';\nimport { IsDragStartedRequest } from '../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SetZoomRequest)\nexport class SetZoomExecution implements IExecution<SetZoomRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow?.hostElement!;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n private get _fZoomComponent(): FZoomBase {\n return this._fComponentsStore.fComponents[F_ZOOM_TAG]!;\n }\n\n private get _isDragStarted(): boolean {\n return this._fMediator.execute<boolean>(new IsDragStartedRequest());\n }\n\n public handle(request: SetZoomRequest): void {\n if (this._isDragStarted || !this._fZoomComponent) {\n return;\n }\n\n const result = this._fCanvas.transform.scale + request.step * request.direction;\n\n this._fCanvas.setScale(this._clamp(result), this._castPositionToFlow(request.position));\n request.animate ? this._fCanvas.redrawWithAnimation() : this._fCanvas.redraw();\n this._fCanvas.emitCanvasChangeEvent();\n }\n\n private _clamp(value: number): number {\n return Math.max(this._fZoomComponent.minimum, Math.min(value, this._fZoomComponent.maximum));\n }\n\n private _castPositionToFlow(position: IPoint): IPoint {\n return Point.fromPoint(position).elementTransform(this._fHost);\n }\n}\n","import { AddZoomToStoreExecution } from './add-zoom-to-store';\nimport { RemoveZoomFromStoreExecution } from './remove-zoom-from-store';\nimport { SetZoomExecution } from './set-zoom';\nimport { ResetZoomExecution } from './reset-zoom';\n\nexport const F_ZOOM_FEATURES = [\n\n AddZoomToStoreExecution,\n\n RemoveZoomFromStoreExecution,\n\n ResetZoomExecution,\n\n SetZoomExecution\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class GetNormalizedPointRequest {\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { inject, Injectable } from '@angular/core';\nimport { GetNormalizedPointRequest } from './get-normalized-point-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedPointRequest)\nexport class GetNormalizedPointExecution implements IExecution<GetNormalizedPointRequest, IPoint> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: GetNormalizedPointRequest): IPoint {\n return Point.fromPoint(request.position).elementTransform(this._fComponentsStore.flowHost)\n .sub(this._transform.scaledPosition).sub(this._transform.position).div(this._transform.scale);\n }\n}\n","export class SortNodeLayersRequest {\n\n}\n","import { SortNodeLayersRequest } from './sort-node-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortNodeLayersRequest)\nexport class SortNodeLayersExecution implements IExecution<SortNodeLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fNodesContainerElements(): HTMLElement[] {\n return Array.from(this.fNodesContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n }\n\n public handle(request: SortNodeLayersRequest): void {\n this.getGroups().forEach((parent: FNodeBase) => {\n this.moveChildrenNodes(this.getSortedChildrenNodes(parent));\n });\n }\n\n private getGroups(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fGroupsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenNodes(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fNodesContainerElements;\n return this.getChildrenNodes(parent.fId)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(fId: string): HTMLElement[] {\n return this.fMediator.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fNodesContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenNodes(\n sortedChildrenGroups: HTMLElement[],\n ): void {\n const fragment = this.fBrowser.document.createDocumentFragment();\n sortedChildrenGroups.forEach((childGroup: HTMLElement) => {\n fragment.appendChild(childGroup); // Append automatically removes the element from its current position\n });\n this.fNodesContainer.appendChild(fragment);\n }\n}\n","export class SortItemsByParentRequest {\n\n constructor(\n public fItemsContainer: HTMLElement // fGroupsContainer || fNodesContainer\n ) {\n }\n}\n","import { SortItemsByParentRequest } from './sort-items-by-parent.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortItemsByParentRequest)\nexport class SortItemsByParentExecution implements IExecution<SortItemsByParentRequest, void> {\n\n private fItemsContainer!: HTMLElement;\n\n private get _fItemElements(): HTMLElement[] {\n return Array.from(this.fItemsContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: SortItemsByParentRequest): void {\n this.fItemsContainer = request.fItemsContainer;\n this._getItemsOfContainer().forEach((fItem: FNodeBase) => {\n this.moveChildrenItems(this._getSortedChildrenItems(fItem), fItem);\n });\n }\n\n private _getItemsOfContainer(): FNodeBase[] {\n return this.fComponentsStore.fNodes\n .filter((x) => this.fItemsContainer.contains(x.hostElement));\n }\n\n private _getSortedChildrenItems(\n fItem: FNodeBase,\n ): HTMLElement[] {\n const indexInContainer = this._fItemElements.indexOf(fItem.hostElement);\n return this._getChildrenItems(fItem.fId)\n .filter((child: HTMLElement) => this._fItemElements.indexOf(child) < indexInContainer)\n .sort((a, b) => this._fItemElements.indexOf(a) - this._fItemElements.indexOf(b));\n }\n\n private _getChildrenItems(fId: string): HTMLElement[] {\n return this.fMediator.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fItemsContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenItems(\n sortedChildrenItems: HTMLElement[],\n parent: FNodeBase,\n ): void {\n let nextSibling = parent.hostElement.nextElementSibling;\n\n const fragment = this.fBrowser.document.createDocumentFragment();\n\n sortedChildrenItems.forEach((child: HTMLElement) => {\n fragment.appendChild(child); // Append automatically removes the element from its current position\n });\n this.fItemsContainer.insertBefore(fragment, nextSibling);\n }\n}\n","export class SortItemLayersRequest {\n\n}\n","import { SortItemLayersRequest } from './sort-item-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SortNodeLayersRequest } from './sort-node-layers-by-groups';\nimport { SortItemsByParentRequest } from './sort-items-by-parent';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SortItemLayersRequest)\nexport class SortItemLayersExecution implements IExecution<SortItemLayersRequest, void> {\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: SortItemLayersRequest): void {\n if(!this.fComponentsStore.fCanvas) {\n return;\n }\n this.fMediator.execute(new SortItemsByParentRequest(this.fComponentsStore.fCanvas.fGroupsContainer.nativeElement));\n this.fMediator.execute(new SortNodeLayersRequest());\n this.fMediator.execute(new SortItemsByParentRequest(this.fComponentsStore.fCanvas.fNodesContainer.nativeElement));\n }\n}\n","import { BrowserService } from '@foblex/platform';\n\nexport function createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","export type FEventTrigger = (event: TriggerEvent) => boolean;\n\nexport type TriggerEvent = MouseEvent | TouchEvent | WheelEvent;\n\nexport function isValidEventTrigger(event: TriggerEvent, fTrigger: FEventTrigger): boolean {\n return fTrigger(event);\n}\n\nexport function defaultEventTrigger(event: TriggerEvent): boolean {\n return true;\n}\n","export interface IFActionTrigger<TAction = string, TEvent = Event> {\n\n event: EFTriggerEvent;\n\n action: TAction;\n\n validator?: (event: TEvent) => boolean;\n}\n\nexport enum EFTriggerEvent {\n WHEEL = 'wheel',\n DOUBLE_CLICK = 'dblclick',\n MOUSE_DOWN = 'mousedown',\n MOUSE_UP = 'mouseup',\n MOUSE_MOVE = 'mousemove',\n KEY_DOWN = 'keydown',\n KEY_UP = 'keyup'\n}\n","export function isMobile(): boolean {\n // @ts-ignore\n return /android|iPad|iPhone|iPod/i.test(navigator.userAgent || navigator.vendor || window[ 'opera' ])\n}\n","export function Deprecated(newMethodName: string, removalVersion: string = '18.0.0'): MethodDecorator {\n return function (\n target: Object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<any>\n ): TypedPropertyDescriptor<any> | void {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]) {\n console.warn(\n `Method \"${String(propertyKey)}\" is deprecated. Use \"${newMethodName}\" instead. This method will be removed in version ${removalVersion}.`,\n );\n return originalMethod.apply(this, args);\n };\n return descriptor;\n };\n}\n\n","export function LogExecutionTime(label?: string): MethodDecorator {\n return function (\n target: Object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<any>\n ): TypedPropertyDescriptor<any> | void {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]) {\n console.time(label || String(propertyKey));\n const result = originalMethod.apply(this, args);\n\n if (result instanceof Promise) {\n return result.finally(() => console.timeEnd(label || String(propertyKey)));\n }\n\n console.timeEnd(label || String(propertyKey));\n return result;\n };\n\n return descriptor;\n };\n}\n","import { GetNormalizedElementRectExecution } from './get-normalized-element-rect';\nimport {\n MoveFrontElementsBeforeTargetElementExecution,\n UpdateItemAndChildrenLayersExecution\n} from './update-item-and-children-layers';\nimport { GetNormalizedPointExecution } from './get-normalized-point';\nimport { SortItemLayersExecution, SortItemsByParentExecution, SortNodeLayersExecution } from './sort-item-layers';\nimport { GetDeepChildrenNodesAndGroupsExecution } from './get-deep-children-nodes-and-groups';\nimport { GetElementRoundedRectExecution } from './get-element-rounded-rect';\nimport { F_SELECTION_FEATURES } from './f-selection';\nimport { F_BACKGROUND_FEATURES } from './f-background';\nimport { F_CANVAS_FEATURES } from './f-canvas';\nimport { F_CONNECTION_FEATURES } from './f-connection';\nimport { F_CONNECTORS_FEATURES } from './f-connectors';\nimport { F_FLOW_FEATURES } from './f-flow';\nimport { F_DRAGGABLE_FEATURES } from './f-draggable';\nimport { F_NODE_FEATURES } from './f-node';\nimport { F_LINE_ALIGNMENT_FEATURES } from './f-line-alignment';\nimport { F_ZOOM_FEATURES } from './f-zoom';\n\nexport const COMMON_PROVIDERS = [\n\n ...F_CANVAS_FEATURES,\n\n ...F_CONNECTION_FEATURES,\n\n ...F_BACKGROUND_FEATURES,\n\n ...F_CONNECTORS_FEATURES,\n\n ...F_DRAGGABLE_FEATURES,\n\n ...F_FLOW_FEATURES,\n\n ...F_LINE_ALIGNMENT_FEATURES,\n\n ...F_NODE_FEATURES,\n\n GetElementRoundedRectExecution,\n\n ...F_SELECTION_FEATURES,\n\n ...F_ZOOM_FEATURES,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetNormalizedElementRectExecution,\n\n GetNormalizedPointExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n];\n","import {\n ChangeDetectionStrategy,\n Component, DestroyRef,\n ElementRef, inject, Input, OnChanges,\n OnInit, SimpleChanges\n} from \"@angular/core\";\nimport {\n IPoint, ISize, ITransformModel,\n PointExtensions, SizeExtensions, TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { createSVGElement } from '../../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { FChannel, FChannelHub, notifyOnStart } from '../../reactivity';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-rect-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FRectPatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FRectPatternComponent implements OnInit, OnChanges, IFBackgroundPattern {\n\n private _destroyRef = inject(DestroyRef);\n\n private _elementReference = inject(ElementRef);\n\n private _stateChanges = new FChannel();\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n @Input()\n public vColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public hColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public vSize: number = 20;\n\n @Input()\n public hSize: number = 20;\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _size: ISize = SizeExtensions.initialize(this.hSize, this.vSize);\n\n private _pattern!: SVGPatternElement;\n private _vLine!: SVGLineElement;\n private _hLine!: SVGLineElement;\n\n constructor(\n private _fBrowser: BrowserService\n ) {\n this._createPattern();\n }\n\n private _createPattern(): void {\n this._pattern = createSVGElement('pattern', this._fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._vLine = createSVGElement('line', this._fBrowser);\n this._pattern.appendChild(this._vLine);\n\n this._hLine = createSVGElement('line', this._fBrowser);\n this._pattern.appendChild(this._hLine);\n }\n\n public ngOnInit(): void {\n this._listenStateChanges();\n }\n\n private _listenStateChanges(): void {\n new FChannelHub(this._stateChanges).pipe(notifyOnStart()).listen(this._destroyRef, () => this._redraw());\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['vSize'] || changes['hSize'] || changes['vColor'] || changes['hColor']) {\n this._refresh();\n }\n }\n\n private _redraw(): void {\n this._calculatePattern();\n this._redrawPattern();\n\n this.redrawLine(this._vLine, this.vColor, this._size.width, 0, this._size.width, this._size.height);\n this.redrawLine(this._hLine, this.hColor, 0, this._size.height, this._size.width, this._size.height);\n }\n\n private _calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._size = SizeExtensions.initialize(this.hSize * this._transform.scale, this.vSize * this._transform.scale);\n }\n\n private _redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._size.width }`);\n this._pattern.setAttribute('height', `${ this._size.height }`);\n }\n\n private redrawLine(line: SVGLineElement, color: string, x1: number, y1: number, x2: number, y2: number): void {\n line.setAttribute('stroke', `${ color }`);\n line.setAttribute('x1', `${ x1 }`);\n line.setAttribute('x2', `${ x2 }`);\n line.setAttribute('y1', `${ y1 }`);\n line.setAttribute('y2', `${ y2 }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._refresh();\n }\n\n private _refresh(): void {\n this._stateChanges.notify();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, DestroyRef,\n ElementRef, inject, Input, OnChanges, OnDestroy,\n OnInit, SimpleChanges\n} from \"@angular/core\";\nimport {\n IPoint,\n ITransformModel,\n PointExtensions,\n TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../../domain';\nimport { FChannel, FChannelHub, notifyOnStart } from '../../reactivity';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-circle-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FCirclePatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FCirclePatternComponent implements OnInit, OnChanges, IFBackgroundPattern {\n\n private _destroyRef = inject(DestroyRef);\n\n private _elementReference = inject(ElementRef);\n\n private _stateChanges = new FChannel();\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n @Input()\n public color: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public radius: number = 20;\n\n private _scaledRadius: number = 20;\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _pattern!: SVGPatternElement;\n private _circle!: SVGCircleElement;\n\n constructor(\n private _fBrowser: BrowserService\n ) {\n this._createPattern();\n }\n\n private _createPattern(): void {\n this._pattern = createSVGElement('pattern', this._fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._circle = createSVGElement('circle', this._fBrowser);\n this._pattern.appendChild(this._circle);\n }\n\n public ngOnInit(): void {\n this._listenStateChanges();\n }\n\n private _listenStateChanges(): void {\n new FChannelHub(this._stateChanges).pipe(notifyOnStart()).listen(this._destroyRef, () => this._redraw());\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['radius'] || changes['color']) {\n this._refresh();\n }\n }\n\n private _redraw(): void {\n this._calculatePattern();\n this._redrawPattern();\n this._redrawElement();\n }\n\n private _calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._scaledRadius = this.radius * this._transform.scale;\n }\n\n private _redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._scaledRadius }`);\n this._pattern.setAttribute('height', `${ this._scaledRadius }`);\n }\n\n private _redrawElement(): void {\n this._circle.setAttribute('fill', this.color);\n this._circle.setAttribute('cx', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('cy', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('r', `${ this._scaledRadius / this.radius }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._refresh();\n }\n\n private _refresh(): void {\n this._stateChanges.notify();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { ITransformModel } from '@foblex/2d';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_BACKGROUND = new InjectionToken<FBackgroundBase>('F_BACKGROUND');\n\n@Directive()\nexport abstract class FBackgroundBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract setTransform(transform: ITransformModel): void;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ContentChild,\n ElementRef, inject, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { ITransformModel } from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from './domain';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddBackgroundToStoreRequest,\n AddPatternToBackgroundRequest,\n RemoveBackgroundFromStoreRequest\n} from '../domain';\n\n@Component({\n selector: \"f-background\",\n template: \"<svg><ng-content></ng-content></svg>\",\n styleUrls: [ \"./f-background.component.scss\" ],\n host: {\n 'class': 'f-component f-background'\n },\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FBackgroundComponent\n extends FBackgroundBase implements OnInit, AfterContentInit, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @ContentChild(F_BACKGROUND_PATTERN, { static: false })\n public fBackgroundPattern: IFBackgroundPattern | undefined;\n\n private _fMediator = inject(FMediator);\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddBackgroundToStoreRequest(this));\n }\n\n public ngAfterContentInit(): void {\n this._fMediator.execute(new AddPatternToBackgroundRequest(this.fBackgroundPattern!));\n }\n\n public setTransform(transform: ITransformModel): void {\n this.fBackgroundPattern?.setTransform(transform);\n }\n\n public ngOnDestroy() {\n this._fMediator.execute(new RemoveBackgroundFromStoreRequest(this));\n }\n}\n","import { FBackgroundComponent } from './f-background.component';\nimport { FRectPatternComponent } from './f-rect-pattern';\nimport { FCirclePatternComponent } from './f-circle-pattern';\n\nexport const F_BACKGROUND_PROVIDERS = [\n\n FBackgroundComponent,\n\n FRectPatternComponent,\n\n FCirclePatternComponent\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import { PointExtensions, TransformModelExtensions, IPoint } from '@foblex/2d';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public abstract fCanvasChange: EventEmitter<FCanvasChangeEvent>;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fGroupsContainer: ElementRef<HTMLElement>;\n\n public abstract fNodesContainer: ElementRef<HTMLElement>;\n\n public abstract fConnectionsContainer: ElementRef<HTMLElement>;\n\n public transform = TransformModelExtensions.default();\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = position;\n }\n\n public abstract setScale(scale: number, toPosition: IPoint): void;\n\n public abstract resetScale(): void;\n\n public emitCanvasChangeEvent(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter, inject, Input, OnDestroy, OnInit, Output, ViewChild,\n} from \"@angular/core\";\nimport {\n FCanvasBase, F_CANVAS\n} from './f-canvas-base';\nimport { IPoint, PointExtensions, TransformModelExtensions } from '@foblex/2d';\nimport {\n FCanvasChangeEvent,\n} from './domain';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddCanvasToStoreRequest,\n CenterGroupOrNodeRequest,\n FitToFlowRequest,\n InputCanvasPositionRequest,\n InputCanvasScaleRequest, isMobile, RemoveCanvasFromStoreRequest,\n ResetScaleAndCenterRequest, ResetScaleRequest, SetBackgroundTransformRequest, transitionEnd, UpdateScaleRequest,\n} from '../domain';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { Deprecated } from '../domain';\n\n@Component({\n selector: 'f-canvas',\n templateUrl: './f-canvas.component.html',\n styleUrls: [ './f-canvas.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-canvas',\n },\n providers: [\n { provide: F_CANVAS, useExisting: FCanvasComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FCanvasComponent extends FCanvasBase implements OnInit, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n\n @Output()\n public override fCanvasChange: EventEmitter<FCanvasChangeEvent> = new EventEmitter<FCanvasChangeEvent>();\n\n @Input()\n public set position(value: IPoint | undefined) {\n this._fMediator.execute(new InputCanvasPositionRequest(this.transform, PointExtensions.castToPoint(value)));\n }\n\n @Input()\n public set scale(value: number | undefined) {\n this._fMediator.execute(new InputCanvasScaleRequest(this.transform, value));\n }\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @ViewChild('fGroupsContainer', { static: true })\n public override fGroupsContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fNodesContainer', { static: true })\n public override fNodesContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fConnectionsContainer', { static: true })\n public override fConnectionsContainer!: ElementRef<HTMLElement>;\n\n private _fMediator = inject(FMediator);\n\n public ngOnInit() {\n this._fMediator.execute(new AddCanvasToStoreRequest(this));\n }\n\n public override redraw(): void {\n this._fMediator.execute(new SetBackgroundTransformRequest(this.transform));\n this.hostElement.setAttribute(\"style\", `transform: ${ TransformModelExtensions.toString(this.transform) }`);\n this._fMediator.execute(new NotifyTransformChangedRequest());\n }\n\n public override redrawWithAnimation(): void {\n this._fMediator.execute(new SetBackgroundTransformRequest(this.transform));\n this.hostElement.setAttribute(\"style\", `transition: transform ${ isMobile() ? 80 : 150 }ms ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n transitionEnd(this.hostElement, () => this.redraw());\n }\n\n public centerGroupOrNode(id: string, animated: boolean = true): void {\n this._fMediator.execute(new CenterGroupOrNodeRequest(id, animated));\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n this._fMediator.execute(new FitToFlowRequest(toCenter, animated));\n }\n\n public resetScaleAndCenter(animated: boolean = true): void {\n this._fMediator.execute(new ResetScaleAndCenterRequest(animated));\n }\n\n public getScale(): number {\n return this.transform.scale || 1;\n }\n\n /**\n * @deprecated Method \"setZoom\" is deprecated. Use \"setScale\" instead. This method will be removed in version 18.0.0.`,\n */\n @Deprecated('setScale')\n public setZoom(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this.setScale(scale, toPosition);\n }\n public override setScale(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this._fMediator.execute(new UpdateScaleRequest(scale, toPosition));\n }\n\n /**\n * @deprecated Method \"resetZoom\" is deprecated. Use \"resetScale\" instead. This method will be removed in version 18.0.0.`,\n */\n @Deprecated('resetScale')\n public resetZoom(): void {\n this.resetScale();\n }\n public override resetScale(): void {\n this._fMediator.execute(new ResetScaleRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveCanvasFromStoreRequest());\n }\n}\n","<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","import { FCanvasComponent } from './f-canvas.component';\n\nexport const F_CANVAS_PROVIDERS = [\n\n FCanvasComponent,\n];\n","import { IRect, RectExtensions } from '@foblex/2d';\n\nexport class FMinimapData {\n\n constructor(\n public element: SVGSVGElement,\n public scale: number = 1,\n public viewBox: IRect = RectExtensions.initialize(0, 0, 0, 0)\n ) {\n }\n}\n","import {\n Directive, ElementRef, inject, Input, OnInit,\n} from \"@angular/core\";\nimport { setRectToViewBox } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { FMinimapData, IFMinimapScaleAndViewBox, MinimapCalculateSvgScaleAndViewBoxRequest } from './domain';\n\n@Directive({\n selector: 'svg[fMinimapFlow]'\n})\nexport class FMinimapFlowDirective {\n\n @Input()\n public fMinSize: number = 1000;\n\n private _fMediator = inject(FMediator);\n\n private _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGSVGElement {\n return this._elementReference.nativeElement;\n }\n\n public model: FMinimapData = new FMinimapData(this.hostElement);\n\n public redraw(): void {\n const { scale, viewBox} = this._fMediator.execute<IFMinimapScaleAndViewBox>(\n new MinimapCalculateSvgScaleAndViewBoxRequest(this.hostElement, this.fMinSize)\n );\n this.model = new FMinimapData(this.hostElement, scale, viewBox);\n\n setRectToViewBox(viewBox, this.hostElement);\n }\n}\n","import {\n Directive, ElementRef, inject,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { MinimapDrawNodesRequest } from './domain';\n\n@Directive({\n selector: 'g[fMinimapCanvas]'\n})\nexport class FMinimapCanvasDirective {\n\n private _fMediator = inject(FMediator);\n\n private _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGGElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(): void {\n this._clearCanvas();\n\n this._fMediator.execute<SVGRectElement[]>(new MinimapDrawNodesRequest())\n .forEach((x) => {\n this.hostElement.appendChild(x);\n });\n }\n\n private _clearCanvas(): void {\n this.hostElement.innerHTML = '';\n }\n}\n","import { Directive, ElementRef, inject } from \"@angular/core\";\nimport { IRect, setRectToElement } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { MinimapCalculateViewBoxRequest } from './domain';\n\n@Directive({\n selector: 'rect[fMinimapView]',\n host: {\n 'class': 'f-component f-minimap-view',\n }\n})\nexport class FMinimapViewDirective {\n\n private _fMediator = inject(FMediator);\n\n private _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGGElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(): void {\n setRectToElement(\n this._fMediator.execute<IRect>(new MinimapCalculateViewBoxRequest()),\n this.hostElement\n );\n }\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef,\n inject, Input, ViewChild,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { MinimapDragFinalizeRequest, MinimapDragPreparationRequest } from './domain';\nimport { ListenTransformChangesRequest } from '../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../reactivity';\nimport { BrowserService } from '@foblex/platform';\n\n@Component({\n selector: 'f-minimap',\n templateUrl: './f-minimap.component.html',\n styleUrls: [ './f-minimap.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-minimap',\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FMinimapComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FMinimapComponent implements AfterViewInit, IFDragAndDropPlugin {\n\n private _destroyRef = inject(DestroyRef);\n private _fMediator = inject(FMediator);\n private _fBrowser = inject(BrowserService);\n\n @ViewChild(FMinimapCanvasDirective, { static: true })\n public fMinimapCanvas!: FMinimapCanvasDirective;\n\n @ViewChild(FMinimapFlowDirective, { static: true })\n public fMinimapFlow!: FMinimapFlowDirective;\n\n @ViewChild(FMinimapViewDirective, { static: true })\n public fMinimapView!: FMinimapViewDirective;\n\n @Input()\n public fMinSize: number = 1000;\n\n public ngAfterViewInit(): void {\n this._listenTransformChanges();\n }\n\n private _listenTransformChanges(): void {\n this._fMediator.execute<FChannelHub>(new ListenTransformChangesRequest()).pipe(\n notifyOnStart(), debounceTime(5)\n ).listen(this._destroyRef, () => this._redraw());\n }\n\n private _redraw(): void {\n if (!this._fBrowser.isBrowser()) {\n return;\n }\n this.fMinimapFlow.redraw();\n this.fMinimapView.redraw();\n this.fMinimapCanvas.redraw();\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this._fMediator.execute(new MinimapDragPreparationRequest(event, this.fMinimapFlow.model));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this._fMediator.execute(new MinimapDragFinalizeRequest(event));\n }\n}\n","<svg fMinimapFlow width=\"100%\" height=\"100%\" fLockedContext [fMinSize]=\"fMinSize\">\n <g fMinimapCanvas></g>\n <rect fMinimapView x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" stroke=\"none\"/>\n</svg>\n\n","import { FMinimapComponent } from './f-minimap.component';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\n\nexport const F_MINIMAP_PROVIDERS = [\n\n FMinimapComponent,\n\n FMinimapCanvasDirective,\n\n FMinimapViewDirective,\n\n FMinimapFlowDirective,\n];\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_FLOW = new InjectionToken<FFlowBase>('F_FLOW');\n\nexport abstract class FFlowBase implements IHasHostElement {\n\n public abstract fId: string;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fLoaded: EventEmitter<void>;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, DestroyRef, ElementRef, EventEmitter, inject,\n Input, OnDestroy, OnInit, Output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport {\n ClearSelectionRequest,\n CalculateNodesBoundingBoxNormalizedPositionRequest,\n GetNormalizedPointRequest,\n GetCurrentSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest,\n SelectRequest,\n IFFlowState,\n GetFlowStateRequest, RemoveFlowFromStoreRequest, AddFlowToStoreRequest, SortItemLayersRequest, ICurrentSelection\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n FDraggableDataContext\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport {\n NotifyDataChangedRequest,\n F_STORAGE_PROVIDERS,\n ListenCountChangesRequest,\n ListenDataChangesRequest\n} from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { COMMON_PROVIDERS } from '../domain';\nimport { F_DRAGGABLE_PROVIDERS } from '../f-draggable';\nimport { FChannelHub } from '../reactivity';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: 'f-flow',\n templateUrl: './f-flow.component.html',\n styleUrls: [ './f-flow.component.scss' ],\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-flow\",\n },\n providers: [\n FMediator,\n ...F_STORAGE_PROVIDERS,\n FDraggableDataContext,\n FConnectionFactory,\n ...COMMON_PROVIDERS,\n ...F_DRAGGABLE_PROVIDERS,\n { provide: F_FLOW, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n private _destroyRef = inject(DestroyRef);\n\n private _fMediator = inject(FMediator);\n\n private _elementReference = inject(ElementRef);\n\n @Input('fFlowId')\n public override fId: string = `f-flow-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @Output()\n public override fLoaded: EventEmitter<void> = new EventEmitter<void>();\n\n private _isLoaded: boolean = false;\n\n constructor(\n private fBrowser: BrowserService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddFlowToStoreRequest(this));\n }\n\n public ngAfterContentInit(): void {\n if (!this.fBrowser.isBrowser()) {\n return;\n }\n this._listenCountChanges();\n this._listenDataChanges();\n }\n\n private _listenCountChanges(): void {\n this._fMediator.execute<FChannelHub>(\n new ListenCountChangesRequest()\n ).listen(this._destroyRef, () => {\n this._fMediator.execute(new SortItemLayersRequest())\n });\n }\n\n private _listenDataChanges(): void {\n this._fMediator.execute<FChannelHub>(\n new ListenDataChangesRequest()\n ).listen(this._destroyRef,() => {\n this._fMediator.execute(new RedrawConnectionsRequest());\n\n this._emitLoaded();\n });\n }\n\n private _emitLoaded(): void {\n if (!this._isLoaded) {\n this._isLoaded = true;\n this.fLoaded.emit();\n }\n }\n\n public redraw(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public reset(): void {\n this._isLoaded = false;\n }\n\n public getNodesBoundingBox(): IRect | null {\n return this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxNormalizedPositionRequest());\n }\n\n public getSelection(): ICurrentSelection {\n return this._fMediator.execute<ICurrentSelection>(new GetCurrentSelectionRequest());\n }\n\n public getPositionInFlow(position: IPoint): IRect {\n return this._fMediator.execute(new GetNormalizedPointRequest(position));\n }\n\n public getState(): IFFlowState {\n return this._fMediator.execute(new GetFlowStateRequest());\n }\n\n public selectAll(): void {\n this._fMediator.execute<void>(new SelectAllRequest());\n }\n\n public select(nodes: string[], connections: string[]): void {\n this._fMediator.execute<void>(new SelectRequest(nodes, connections));\n }\n\n public clearSelection(): void {\n this._fMediator.execute<void>(new ClearSelectionRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveFlowFromStoreRequest());\n }\n}\n","<ng-container>\n <ng-content select=\"[fDefinitions]\"></ng-content>\n\n <ng-content select=\"f-background\"></ng-content>\n\n <ng-content select=\"f-line-alignment\"></ng-content>\n\n <ng-content select=\"f-canvas\"></ng-content>\n\n <ng-content select=\"f-selection-area\"></ng-content>\n\n <ng-content select=\"f-minimap\"></ng-content>\n</ng-container>\n","import { FFlowComponent } from './f-flow.component';\n\nexport const F_FLOW_PROVIDERS = [\n FFlowComponent\n];\n","export enum EFZoomAction {\n\n WHEEL = 'wheel',\n\n DOUBLE_CLICK = 'dbl-click',\n}\n","export enum EFZoomDirection {\n\n ZOOM_IN = 1,\n\n ZOOM_OUT = -1,\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n public abstract minimum: number;\n\n public abstract maximum: number;\n\n public abstract step: number;\n\n public abstract dblClickStep: number;\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n Directive,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges\n} from \"@angular/core\";\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddZoomToStoreRequest,\n Deprecated,\n EFTriggerEvent,\n GetCanvasRequest,\n GetFlowHostElementRequest,\n IFActionTrigger,\n RemoveZoomFromStoreRequest,\n ResetZoomRequest,\n SetZoomRequest\n} from '../domain';\nimport { FCanvasBase } from '../f-canvas';\nimport { IPoint, IRect, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { isNode } from '../f-node';\nimport { EFZoomDirection } from './e-f-zoom-direction';\nimport { EFZoomAction } from './e-f-zoom-action';\n\n@Directive({\n selector: \"f-canvas[fZoom]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n\n private _fMediator = inject(FMediator);\n private _rendered = inject(Renderer2);\n\n private _triggersListener: Function[] = [];\n\n private _isEnabled: boolean = false;\n\n @Input({ alias: 'fZoom', transform: booleanAttribute })\n protected set fZoom(isEnabled: boolean) {\n if (isEnabled !== this._isEnabled) {\n this._isEnabled = isEnabled;\n this._listenTriggers();\n }\n }\n\n @Input()\n public fZoomTriggers: IFActionTrigger<EFZoomAction>[] = [\n { event: EFTriggerEvent.WHEEL, action: EFZoomAction.WHEEL },\n { event: EFTriggerEvent.DOUBLE_CLICK, action: EFZoomAction.DOUBLE_CLICK }\n ];\n\n @Input({ alias: 'fZoomMinimum', transform: numberAttribute })\n public override minimum: number = 0.1;\n\n @Input({ alias: 'fZoomMaximum', transform: numberAttribute })\n public override maximum: number = 4;\n\n @Input({ alias: 'fZoomStep', transform: numberAttribute })\n public override step: number = 0.1;\n\n @Input({ alias: 'fZoomDblClickStep', transform: numberAttribute })\n public override dblClickStep: number = 0.5;\n\n private get _fHost(): HTMLElement {\n return this._fMediator.execute(new GetFlowHostElementRequest());\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fMediator.execute(new GetCanvasRequest());\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddZoomToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this._listenTriggers();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'fZoomTriggers' ]) {\n this._listenTriggers();\n }\n }\n\n private _listenTriggers(): void {\n if (!this._fHost) {\n return;\n }\n\n this._disposeListeners();\n this._validateTriggers();\n\n this.fZoomTriggers.forEach((x) => {\n this._triggersListener.push(\n this._rendered.listen(this._fHost, x.event, this._getAction(x))\n );\n });\n }\n\n private _validateTriggers(): void {\n\n const SUPPORTED_EVENTS = Object.values(EFTriggerEvent);\n const SUPPORTED_ACTIONS = Object.values(EFZoomAction);\n\n this.fZoomTriggers.forEach((trigger) => {\n if (!SUPPORTED_EVENTS.includes(trigger.event)) {\n throw new Error(`Unsupported event: ${ trigger.event }`);\n }\n\n if (!SUPPORTED_ACTIONS.includes(trigger.action)) {\n throw new Error(`Unsupported action: ${ trigger.action }`);\n }\n });\n }\n\n private _getAction(trigger: IFActionTrigger): (event: Event) => void {\n switch (trigger.action) {\n case EFZoomAction.WHEEL:\n return (event: Event) => this._onWheel(event as WheelEvent, trigger);\n case EFZoomAction.DOUBLE_CLICK:\n return (event: Event) => this._onDoubleClick(event as MouseEvent, trigger);\n default:\n throw new Error(`Unknown action: ${ trigger.action }`);\n }\n }\n\n private _onWheel = (event: WheelEvent, trigger: IFActionTrigger) => {\n if (trigger.validator && !trigger.validator(event)) {\n return;\n }\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n this.setZoom(\n PointExtensions.initialize(event.clientX, event.clientY),\n this.step, this._calculateDirection(event.deltaY), false\n );\n }\n\n private _calculateDirection(deltaY: number): number {\n return deltaY > 0 ? EFZoomDirection.ZOOM_OUT : EFZoomDirection.ZOOM_IN;\n }\n\n private _onDoubleClick = (event: MouseEvent, trigger: IFActionTrigger) => {\n if (trigger.validator && !trigger.validator(event)) {\n return;\n }\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n this.setZoom(\n PointExtensions.initialize(event.clientX, event.clientY),\n this.dblClickStep, EFZoomDirection.ZOOM_IN, true\n );\n }\n\n private _getToCenterPosition(position: IPoint | undefined, rect: IRect): IPoint {\n return PointExtensions.initialize(position?.x || rect.gravityCenter.x, position?.y || rect.gravityCenter.y);\n }\n\n public zoomIn(position?: IPoint): void {\n this._onZoomToCenter(EFZoomDirection.ZOOM_IN, position);\n }\n\n public zoomOut(position?: IPoint): void {\n this._onZoomToCenter(EFZoomDirection.ZOOM_OUT, position);\n }\n\n private _onZoomToCenter(direction: EFZoomDirection, position?: IPoint): void {\n this.setZoom(\n this._getToCenterPosition(position, RectExtensions.fromElement(this._fHost)),\n this.step, direction, false\n );\n }\n\n public setZoom(position: IPoint, step: number, direction: EFZoomDirection, animated: boolean) {\n this._fMediator.execute(\n new SetZoomRequest(position, step, direction, animated)\n );\n }\n\n /**\n * @deprecated Method \"getScale\" is deprecated. Use \"getZoomValue\" instead. This method will be removed in version 18.0.0.`,\n */\n @Deprecated('getZoomValue')\n public getScale(): number {\n return this.getZoomValue();\n }\n\n public getZoomValue(): number {\n return this._fCanvas.transform.scale || 1;\n }\n\n public reset(): void {\n this._fMediator.execute(new ResetZoomRequest());\n }\n\n private _disposeListeners(): void {\n this._triggersListener.forEach((listener) => listener());\n this._triggersListener = [];\n }\n\n public ngOnDestroy(): void {\n this._disposeListeners();\n this._fMediator.execute(new RemoveZoomFromStoreRequest());\n }\n}\n","import { FZoomDirective } from './f-zoom.directive';\n\nexport const F_ZOOM_PROVIDERS = [\n\n FZoomDirective\n];\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { F_CONNECTION_PROVIDERS, } from './f-connection';\nimport { F_NODE_PROVIDERS } from './f-node';\nimport { F_FLOW_PROVIDERS } from './f-flow';\nimport { F_BACKGROUND_PROVIDERS } from './f-backgroud';\nimport { F_CANVAS_PROVIDERS } from './f-canvas';\nimport { F_CONNECTORS_PROVIDERS } from './f-connectors';\nimport { FDraggableDirective } from './f-draggable';\nimport { F_EXTERNAL_ITEM_PROVIDERS } from './f-external-item';\nimport { F_SELECTION_AREA_PROVIDERS } from './f-selection-area';\nimport { F_LINE_ALIGNMENT_PROVIDERS } from './f-line-alignment';\nimport { F_MINIMAP_PROVIDERS } from './f-minimap';\nimport { F_ZOOM_PROVIDERS } from './f-zoom';\n\n@NgModule({\n declarations: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uniqueId","i1.FComponentsStore","i2","createSVGElement","i2.FComponentsStore","MIXIN_BASE","i1.FConnectionTextPathDirective","i1.FConnectionFactory","i3.FConnectionTextComponent","i4.FConnectionDragHandleComponent","i5.FConnectionGradientComponent","i6.FConnectionPathComponent","i7.FConnectionSelectionComponent","i2.FDraggableDataContext","i3","i1","i3.FComponentsStore","i4","i1.FExternalItemService","i3.FDraggableDataContext","i1.FDraggableDataContext","i1.FMinimapCanvasDirective","i2.FMinimapViewDirective","i3.FMinimapFlowDirective","i1.FBackgroundComponent","i2.FRectPatternComponent","i3.FCirclePatternComponent","i4.FCanvasComponent","i5.FZoomDirective","i6.FConnectionTextComponent","i7.FConnectionTextPathDirective","i8.FConnectionDragHandleComponent","i9.FConnectionGradientComponent","i10.FConnectionPathComponent","i11.FConnectionSelectionComponent","i12.FConnectionComponent","i13.FConnectionCenterDirective","i14.FConnectionForCreateComponent","i15.FMarkerDirective","i16.FSnapConnectionComponent","i17.FNodeInputDirective","i18.FNodeOutletDirective","i19.FNodeOutputDirective","i20.FExternalItemDirective","i21.FFlowComponent","i22.FLineAlignmentComponent","i23.FMinimapComponent","i24.FMinimapCanvasDirective","i25.FMinimapViewDirective","i26.FMinimapFlowDirective","i27.FGroupDirective","i28.FNodeDirective","i29.FDragHandleDirective","i30.FResizeHandleDirective","i31.FSelectionAreaComponent"],"mappings":"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"}