@foblex/flow 14.0.0 → 16.0.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 (666) hide show
  1. package/esm2022/domain/create-connection-markers/create-connection-markers.execution.mjs +60 -0
  2. package/esm2022/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.mjs +38 -0
  3. package/esm2022/domain/emit-transform-changes/emit-transform-changes.execution.mjs +23 -0
  4. package/esm2022/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.mjs +46 -0
  5. package/esm2022/domain/f-canvas/center-group-or-node/center-group-or-node.execution.mjs +48 -0
  6. package/esm2022/domain/f-canvas/fit-to-flow/fit-to-flow.execution.mjs +55 -0
  7. package/esm2022/domain/f-canvas/input-canvas-position/input-canvas-position.execution.mjs +32 -0
  8. package/esm2022/domain/f-canvas/input-canvas-scale/input-canvas-scale.execution.mjs +27 -0
  9. package/esm2022/domain/f-canvas/reset-scale/reset-scale.execution.mjs +28 -0
  10. package/esm2022/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.mjs +50 -0
  11. package/esm2022/domain/f-canvas/update-scale/update-scale.execution.mjs +33 -0
  12. package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.mjs +38 -0
  13. package/esm2022/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.mjs +54 -0
  14. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.mjs +27 -0
  15. package/esm2022/domain/f-selection/clear-selection/clear-selection.execution.mjs +25 -0
  16. package/esm2022/domain/f-selection/get-selection/get-selection.execution.mjs +34 -0
  17. package/esm2022/domain/f-selection/select/select.execution.mjs +43 -0
  18. package/esm2022/domain/f-selection/select-all/select-all.execution.mjs +37 -0
  19. package/esm2022/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.mjs +34 -0
  20. package/esm2022/domain/get-can-be-selected-items/get-can-be-selected-items.execution.mjs +56 -0
  21. package/esm2022/domain/get-connection-line/get-connection-line.execution.mjs +66 -0
  22. package/esm2022/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.mjs +34 -0
  23. package/esm2022/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.mjs +42 -0
  24. package/esm2022/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.mjs +32 -0
  25. package/esm2022/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.mjs +49 -0
  26. package/esm2022/domain/get-flow-state/get-flow-state.execution.mjs +38 -0
  27. package/esm2022/domain/get-nodes-rect/get-nodes-rect.execution.mjs +30 -0
  28. package/esm2022/domain/get-position-in-flow/get-position-in-flow.execution.mjs +31 -0
  29. package/esm2022/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.mjs +33 -0
  30. package/esm2022/domain/is-connection-under-node/is-connection-under-node.execution.mjs +75 -0
  31. package/esm2022/domain/redraw-connections/redraw-connections.execution.mjs +62 -0
  32. package/esm2022/domain/show-connections-after-calculations/show-connections-after-calculations.execution.mjs +25 -0
  33. package/esm2022/domain/sort-item-layers/sort-item-layers.execution.mjs +29 -0
  34. package/esm2022/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.mjs +56 -0
  35. package/esm2022/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.mjs +58 -0
  36. package/esm2022/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.mjs +25 -0
  37. package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.mjs +29 -0
  38. package/esm2022/domain/update-item-and-children-layers/update-item-and-children-layers.execution.mjs +93 -0
  39. package/{esm2020 → esm2022}/f-backgroud/f-background-base.mjs +4 -4
  40. package/{esm2020 → esm2022}/f-backgroud/f-background.component.mjs +7 -7
  41. package/esm2022/f-backgroud/f-circle-pattern/f-circle-pattern.component.mjs +104 -0
  42. package/esm2022/f-backgroud/f-rect-pattern/f-rect-pattern.component.mjs +122 -0
  43. package/{esm2020 → esm2022}/f-canvas/f-canvas-base.mjs +4 -4
  44. package/esm2022/f-canvas/f-canvas.component.mjs +86 -0
  45. package/esm2022/f-connection/common/f-connection-base.mjs +66 -0
  46. package/esm2022/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +70 -0
  47. package/esm2022/f-connection/common/f-connection-text/f-connection-text.component.mjs +66 -0
  48. package/{esm2020 → esm2022}/f-connection/common/f-drag-handle/f-connection-drag-handle.component.mjs +7 -7
  49. package/esm2022/f-connection/common/f-gradient/f-connection-gradient.component.mjs +63 -0
  50. package/esm2022/f-connection/common/f-path/f-connection-path.component.mjs +59 -0
  51. package/{esm2020 → esm2022}/f-connection/common/f-selection/f-connection-selection.component.mjs +8 -8
  52. package/esm2022/f-connection/f-connection/f-connection.component.mjs +171 -0
  53. package/{esm2020 → esm2022}/f-connection/f-connection-builder/f-connection-factory.mjs +4 -4
  54. package/{esm2020 → esm2022}/f-connection/f-connection-center/f-connection-center.directive.mjs +4 -4
  55. package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +136 -0
  56. package/{esm2020 → esm2022}/f-connection/f-marker/f-marker-base.mjs +4 -4
  57. package/esm2022/f-connection/f-marker/f-marker.directive.mjs +58 -0
  58. package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +136 -0
  59. package/{esm2020 → esm2022}/f-connectors/f-node-input/f-node-input-base.mjs +4 -4
  60. package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +87 -0
  61. package/{esm2020 → esm2022}/f-connectors/f-node-outlet/f-node-outlet-base.mjs +4 -4
  62. package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +71 -0
  63. package/{esm2020 → esm2022}/f-connectors/f-node-output/f-node-output-base.mjs +4 -4
  64. package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +94 -0
  65. package/esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.mjs +23 -0
  66. package/esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.mjs +24 -0
  67. package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.mjs +35 -0
  68. package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.mjs +42 -0
  69. package/esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.mjs +54 -0
  70. package/esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.mjs +24 -0
  71. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.mjs +43 -0
  72. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.mjs +52 -0
  73. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.mjs +38 -0
  74. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.mjs +33 -0
  75. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.mjs +42 -0
  76. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.mjs +31 -0
  77. package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +61 -0
  78. package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.mjs +42 -0
  79. package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.mjs +26 -0
  80. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.mjs +84 -0
  81. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.mjs +34 -0
  82. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.mjs +49 -0
  83. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.mjs +24 -0
  84. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.mjs +63 -0
  85. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.mjs +43 -0
  86. package/{esm2020 → esm2022}/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +4 -4
  87. package/esm2022/f-draggable/domain/get-node-padding/get-node-padding.execution.mjs +32 -0
  88. package/esm2022/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.mjs +28 -0
  89. package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.mjs +47 -0
  90. package/esm2022/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.mjs +35 -0
  91. package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.mjs +33 -0
  92. package/{esm2020 → esm2022}/f-draggable/f-draggable-base.mjs +4 -4
  93. package/{esm2020 → esm2022}/f-draggable/f-draggable-data-context.mjs +4 -4
  94. package/esm2022/f-draggable/f-draggable.directive.mjs +160 -0
  95. package/{esm2020 → esm2022}/f-draggable/node/connection-base-drag-handler.mjs +4 -4
  96. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.mjs +84 -0
  97. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.mjs +43 -0
  98. 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 +69 -0
  99. 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 +69 -0
  100. package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +50 -0
  101. package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.validator.mjs +24 -0
  102. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.execution.mjs +58 -0
  103. package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.validator.mjs +40 -0
  104. package/esm2022/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.mjs +48 -0
  105. package/esm2022/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.mjs +48 -0
  106. package/esm2022/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.mjs +24 -0
  107. package/esm2022/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.mjs +33 -0
  108. package/esm2022/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.mjs +30 -0
  109. package/esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.mjs +40 -0
  110. package/esm2022/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.mjs +25 -0
  111. package/esm2022/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.mjs +24 -0
  112. package/esm2022/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.mjs +52 -0
  113. package/esm2022/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.mjs +40 -0
  114. package/esm2022/f-draggable/single-select/single-select.execution.mjs +88 -0
  115. package/esm2022/f-draggable/single-select/single-select.validator.mjs +26 -0
  116. package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.execution.mjs +56 -0
  117. package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.validator.mjs +24 -0
  118. package/esm2022/f-external-item/domain/external-item-preparation/external-item-preparation.execution.mjs +42 -0
  119. package/esm2022/f-external-item/domain/external-item-preparation/external-item-preparation.validator.mjs +28 -0
  120. package/{esm2020 → esm2022}/f-external-item/f-external-item-base.mjs +4 -4
  121. package/{esm2020 → esm2022}/f-external-item/f-external-item.directive.mjs +9 -9
  122. package/{esm2020 → esm2022}/f-external-item/f-external-item.service.mjs +4 -4
  123. package/esm2022/f-flow/f-flow.component.mjs +118 -0
  124. package/{esm2020 → esm2022}/f-flow.module.mjs +5 -5
  125. package/{esm2020 → esm2022}/f-line-alignment/f-line-alignment-base.mjs +4 -4
  126. package/esm2022/f-line-alignment/f-line-alignment.component.mjs +92 -0
  127. package/esm2022/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.mjs +41 -0
  128. package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.mjs +25 -0
  129. package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.mjs +24 -0
  130. package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.mjs +48 -0
  131. package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.mjs +27 -0
  132. package/esm2022/f-minimap/f-minimap-canvas.directive.mjs +66 -0
  133. package/{esm2020 → esm2022}/f-minimap/f-minimap-flow.directive.mjs +10 -10
  134. package/{esm2020 → esm2022}/f-minimap/f-minimap-view.directive.mjs +8 -8
  135. package/{esm2020 → esm2022}/f-minimap/f-minimap.component.mjs +6 -6
  136. package/{esm2020 → esm2022}/f-node/f-drag-handle/f-drag-handle.directive.mjs +7 -7
  137. package/esm2022/f-node/f-group.directive.mjs +145 -0
  138. package/esm2022/f-node/f-node.directive.mjs +146 -0
  139. package/esm2022/f-node/f-resize-handle/f-resize-handle.directive.mjs +43 -0
  140. package/{esm2020 → esm2022}/f-node/f-rotate-handle/f-rotate-handle.directive.mjs +5 -5
  141. package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.mjs +25 -0
  142. package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.mjs +24 -0
  143. package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.mjs +37 -0
  144. package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.mjs +30 -0
  145. package/{esm2020 → esm2022}/f-selection-area/domain/selection-area.drag-handle.mjs +4 -4
  146. package/{esm2020 → esm2022}/f-selection-area/f-selection-area-base.mjs +4 -4
  147. package/{esm2020 → esm2022}/f-selection-area/f-selection-area.component.mjs +9 -9
  148. package/{esm2020 → esm2022}/f-storage/f-components-store.mjs +4 -4
  149. package/{esm2020 → esm2022}/f-storage/f-transform-store.mjs +4 -4
  150. package/esm2022/f-zoom/f-zoom-base.mjs +97 -0
  151. package/esm2022/f-zoom/f-zoom.directive.mjs +59 -0
  152. package/esm2022/mixins/change-selection/change-selection.mjs +28 -0
  153. package/f-backgroud/f-background-base.d.ts +1 -1
  154. package/f-backgroud/f-background.component.d.ts +1 -1
  155. package/f-backgroud/f-circle-pattern/f-circle-pattern.component.d.ts +1 -1
  156. package/f-backgroud/f-rect-pattern/f-rect-pattern.component.d.ts +1 -1
  157. package/f-canvas/f-canvas-base.d.ts +1 -1
  158. package/f-canvas/f-canvas.component.d.ts +1 -1
  159. package/f-connection/common/f-connection-base.d.ts +1 -1
  160. package/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +1 -1
  161. package/f-connection/common/f-connection-text/f-connection-text.component.d.ts +1 -1
  162. package/f-connection/common/f-drag-handle/f-connection-drag-handle.component.d.ts +1 -1
  163. package/f-connection/common/f-gradient/f-connection-gradient.component.d.ts +1 -1
  164. package/f-connection/common/f-path/f-connection-path.component.d.ts +1 -1
  165. package/f-connection/common/f-selection/f-connection-selection.component.d.ts +1 -1
  166. package/f-connection/f-connection/f-connection.component.d.ts +1 -1
  167. package/f-connection/f-connection-center/f-connection-center.directive.d.ts +1 -1
  168. package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +1 -1
  169. package/f-connection/f-marker/f-marker-base.d.ts +1 -1
  170. package/f-connection/f-marker/f-marker.directive.d.ts +1 -1
  171. package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +1 -1
  172. package/f-connectors/f-node-input/f-node-input-base.d.ts +1 -1
  173. package/f-connectors/f-node-input/f-node-input.directive.d.ts +1 -1
  174. package/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +1 -1
  175. package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +1 -1
  176. package/f-connectors/f-node-output/f-node-output-base.d.ts +1 -1
  177. package/f-connectors/f-node-output/f-node-output.directive.d.ts +1 -1
  178. package/f-draggable/f-draggable-base.d.ts +1 -1
  179. package/f-draggable/f-draggable.directive.d.ts +1 -1
  180. package/f-draggable/node/connection-base-drag-handler.d.ts +1 -1
  181. package/f-external-item/f-external-item-base.d.ts +1 -1
  182. package/f-external-item/f-external-item.directive.d.ts +1 -1
  183. package/f-flow/f-flow.component.d.ts +1 -1
  184. package/f-line-alignment/f-line-alignment-base.d.ts +1 -1
  185. package/f-line-alignment/f-line-alignment.component.d.ts +1 -1
  186. package/f-minimap/f-minimap-canvas.directive.d.ts +1 -1
  187. package/f-minimap/f-minimap-flow.directive.d.ts +1 -1
  188. package/f-minimap/f-minimap-view.directive.d.ts +1 -1
  189. package/f-minimap/f-minimap.component.d.ts +1 -1
  190. package/f-node/f-drag-handle/f-drag-handle.directive.d.ts +1 -1
  191. package/f-node/f-group.directive.d.ts +1 -1
  192. package/f-node/f-node.directive.d.ts +1 -1
  193. package/f-node/f-resize-handle/f-resize-handle.directive.d.ts +1 -1
  194. package/f-selection-area/f-selection-area-base.d.ts +1 -1
  195. package/f-selection-area/f-selection-area.component.d.ts +1 -1
  196. package/f-zoom/f-zoom.directive.d.ts +1 -1
  197. package/{fesm2020 → fesm2022}/foblex-flow.mjs +841 -841
  198. package/{fesm2015 → fesm2022}/foblex-flow.mjs.map +1 -1
  199. package/mixins/change-selection/change-selection.d.ts +1 -1
  200. package/mixins/change-visibility/change-visibility.d.ts +1 -1
  201. package/mixins/constructor.d.ts +2 -2
  202. package/package.json +5 -11
  203. package/esm2020/domain/create-connection-markers/create-connection-markers.execution.mjs +0 -61
  204. package/esm2020/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.mjs +0 -39
  205. package/esm2020/domain/emit-transform-changes/emit-transform-changes.execution.mjs +0 -24
  206. package/esm2020/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.mjs +0 -47
  207. package/esm2020/domain/f-canvas/center-group-or-node/center-group-or-node.execution.mjs +0 -49
  208. package/esm2020/domain/f-canvas/fit-to-flow/fit-to-flow.execution.mjs +0 -56
  209. package/esm2020/domain/f-canvas/input-canvas-position/input-canvas-position.execution.mjs +0 -33
  210. package/esm2020/domain/f-canvas/input-canvas-scale/input-canvas-scale.execution.mjs +0 -28
  211. package/esm2020/domain/f-canvas/reset-scale/reset-scale.execution.mjs +0 -29
  212. package/esm2020/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.mjs +0 -51
  213. package/esm2020/domain/f-canvas/update-scale/update-scale.execution.mjs +0 -34
  214. package/esm2020/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.mjs +0 -39
  215. package/esm2020/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.mjs +0 -55
  216. package/esm2020/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.mjs +0 -28
  217. package/esm2020/domain/f-selection/clear-selection/clear-selection.execution.mjs +0 -26
  218. package/esm2020/domain/f-selection/get-selection/get-selection.execution.mjs +0 -35
  219. package/esm2020/domain/f-selection/select/select.execution.mjs +0 -44
  220. package/esm2020/domain/f-selection/select-all/select-all.execution.mjs +0 -38
  221. package/esm2020/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.mjs +0 -35
  222. package/esm2020/domain/get-can-be-selected-items/get-can-be-selected-items.execution.mjs +0 -57
  223. package/esm2020/domain/get-connection-line/get-connection-line.execution.mjs +0 -67
  224. package/esm2020/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.mjs +0 -35
  225. package/esm2020/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.mjs +0 -43
  226. package/esm2020/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.mjs +0 -33
  227. package/esm2020/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.mjs +0 -50
  228. package/esm2020/domain/get-flow-state/get-flow-state.execution.mjs +0 -39
  229. package/esm2020/domain/get-nodes-rect/get-nodes-rect.execution.mjs +0 -31
  230. package/esm2020/domain/get-position-in-flow/get-position-in-flow.execution.mjs +0 -32
  231. package/esm2020/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.mjs +0 -34
  232. package/esm2020/domain/is-connection-under-node/is-connection-under-node.execution.mjs +0 -76
  233. package/esm2020/domain/redraw-connections/redraw-connections.execution.mjs +0 -63
  234. package/esm2020/domain/show-connections-after-calculations/show-connections-after-calculations.execution.mjs +0 -26
  235. package/esm2020/domain/sort-item-layers/sort-item-layers.execution.mjs +0 -30
  236. package/esm2020/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.mjs +0 -57
  237. package/esm2020/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.mjs +0 -59
  238. package/esm2020/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.mjs +0 -26
  239. package/esm2020/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.mjs +0 -30
  240. package/esm2020/domain/update-item-and-children-layers/update-item-and-children-layers.execution.mjs +0 -94
  241. package/esm2020/f-backgroud/f-circle-pattern/f-circle-pattern.component.mjs +0 -104
  242. package/esm2020/f-backgroud/f-rect-pattern/f-rect-pattern.component.mjs +0 -122
  243. package/esm2020/f-canvas/f-canvas.component.mjs +0 -86
  244. package/esm2020/f-connection/common/f-connection-base.mjs +0 -66
  245. package/esm2020/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +0 -70
  246. package/esm2020/f-connection/common/f-connection-text/f-connection-text.component.mjs +0 -66
  247. package/esm2020/f-connection/common/f-gradient/f-connection-gradient.component.mjs +0 -63
  248. package/esm2020/f-connection/common/f-path/f-connection-path.component.mjs +0 -59
  249. package/esm2020/f-connection/f-connection/f-connection.component.mjs +0 -171
  250. package/esm2020/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +0 -136
  251. package/esm2020/f-connection/f-marker/f-marker.directive.mjs +0 -58
  252. package/esm2020/f-connection/f-snap-connection/f-snap-connection.component.mjs +0 -136
  253. package/esm2020/f-connectors/f-node-input/f-node-input.directive.mjs +0 -87
  254. package/esm2020/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +0 -71
  255. package/esm2020/f-connectors/f-node-output/f-node-output.directive.mjs +0 -94
  256. package/esm2020/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.mjs +0 -24
  257. package/esm2020/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.mjs +0 -25
  258. package/esm2020/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.mjs +0 -36
  259. package/esm2020/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.mjs +0 -43
  260. package/esm2020/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.mjs +0 -55
  261. package/esm2020/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.mjs +0 -25
  262. package/esm2020/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.mjs +0 -44
  263. package/esm2020/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.mjs +0 -53
  264. package/esm2020/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.mjs +0 -39
  265. package/esm2020/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.mjs +0 -34
  266. package/esm2020/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.mjs +0 -43
  267. package/esm2020/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.mjs +0 -32
  268. package/esm2020/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +0 -61
  269. package/esm2020/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.mjs +0 -43
  270. package/esm2020/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.mjs +0 -27
  271. package/esm2020/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.mjs +0 -85
  272. package/esm2020/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.mjs +0 -35
  273. package/esm2020/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.mjs +0 -50
  274. package/esm2020/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.mjs +0 -25
  275. package/esm2020/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.mjs +0 -64
  276. package/esm2020/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.mjs +0 -44
  277. package/esm2020/f-draggable/domain/get-node-padding/get-node-padding.execution.mjs +0 -33
  278. package/esm2020/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.mjs +0 -29
  279. package/esm2020/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.mjs +0 -48
  280. package/esm2020/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.mjs +0 -36
  281. package/esm2020/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.mjs +0 -34
  282. package/esm2020/f-draggable/f-draggable.directive.mjs +0 -160
  283. package/esm2020/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.mjs +0 -85
  284. package/esm2020/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.mjs +0 -44
  285. package/esm2020/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 +0 -70
  286. package/esm2020/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 +0 -70
  287. package/esm2020/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +0 -51
  288. package/esm2020/f-draggable/node/node-move-finalize/node-move-finalize.validator.mjs +0 -25
  289. package/esm2020/f-draggable/node/node-move-preparation/node-move-preparation.execution.mjs +0 -59
  290. package/esm2020/f-draggable/node/node-move-preparation/node-move-preparation.validator.mjs +0 -41
  291. package/esm2020/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.mjs +0 -49
  292. package/esm2020/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.mjs +0 -49
  293. package/esm2020/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.mjs +0 -25
  294. package/esm2020/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.mjs +0 -34
  295. package/esm2020/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.mjs +0 -31
  296. package/esm2020/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.mjs +0 -41
  297. package/esm2020/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.mjs +0 -26
  298. package/esm2020/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.mjs +0 -25
  299. package/esm2020/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.mjs +0 -53
  300. package/esm2020/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.mjs +0 -41
  301. package/esm2020/f-draggable/single-select/single-select.execution.mjs +0 -89
  302. package/esm2020/f-draggable/single-select/single-select.validator.mjs +0 -27
  303. package/esm2020/f-external-item/domain/external-item-finalize/external-item-finalize.execution.mjs +0 -57
  304. package/esm2020/f-external-item/domain/external-item-finalize/external-item-finalize.validator.mjs +0 -25
  305. package/esm2020/f-external-item/domain/external-item-preparation/external-item-preparation.execution.mjs +0 -43
  306. package/esm2020/f-external-item/domain/external-item-preparation/external-item-preparation.validator.mjs +0 -29
  307. package/esm2020/f-flow/f-flow.component.mjs +0 -118
  308. package/esm2020/f-line-alignment/f-line-alignment.component.mjs +0 -92
  309. package/esm2020/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.mjs +0 -42
  310. package/esm2020/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.mjs +0 -26
  311. package/esm2020/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.mjs +0 -25
  312. package/esm2020/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.mjs +0 -49
  313. package/esm2020/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.mjs +0 -28
  314. package/esm2020/f-minimap/f-minimap-canvas.directive.mjs +0 -66
  315. package/esm2020/f-node/f-group.directive.mjs +0 -145
  316. package/esm2020/f-node/f-node.directive.mjs +0 -146
  317. package/esm2020/f-node/f-resize-handle/f-resize-handle.directive.mjs +0 -43
  318. package/esm2020/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.mjs +0 -26
  319. package/esm2020/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.mjs +0 -25
  320. package/esm2020/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.mjs +0 -38
  321. package/esm2020/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.mjs +0 -31
  322. package/esm2020/f-zoom/f-zoom-base.mjs +0 -97
  323. package/esm2020/f-zoom/f-zoom.directive.mjs +0 -59
  324. package/esm2020/mixins/change-selection/change-selection.mjs +0 -28
  325. package/fesm2015/foblex-flow.mjs +0 -7927
  326. package/fesm2020/foblex-flow.mjs.map +0 -1
  327. /package/{esm2020 → esm2022}/domain/constants.mjs +0 -0
  328. /package/{esm2020 → esm2022}/domain/create-connection-markers/create-connection-markers-request.mjs +0 -0
  329. /package/{esm2020 → esm2022}/domain/create-connection-markers/index.mjs +0 -0
  330. /package/{esm2020 → esm2022}/domain/create-dom-element.mjs +0 -0
  331. /package/{esm2020 → esm2022}/domain/create-rounded-rect-from-element/create-rounded-rect-from-element-request.mjs +0 -0
  332. /package/{esm2020 → esm2022}/domain/create-rounded-rect-from-element/index.mjs +0 -0
  333. /package/{esm2020 → esm2022}/domain/emit-transform-changes/emit-transform-changes.request.mjs +0 -0
  334. /package/{esm2020 → esm2022}/domain/emit-transform-changes/index.mjs +0 -0
  335. /package/{esm2020 → esm2022}/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.mjs +0 -0
  336. /package/{esm2020 → esm2022}/domain/f-background/add-pattern-to-background/index.mjs +0 -0
  337. /package/{esm2020 → esm2022}/domain/f-background/index.mjs +0 -0
  338. /package/{esm2020 → esm2022}/domain/f-background/providers.mjs +0 -0
  339. /package/{esm2020 → esm2022}/domain/f-canvas/center-group-or-node/center-group-or-node-request.mjs +0 -0
  340. /package/{esm2020 → esm2022}/domain/f-canvas/center-group-or-node/index.mjs +0 -0
  341. /package/{esm2020 → esm2022}/domain/f-canvas/fit-to-flow/fit-to-flow-request.mjs +0 -0
  342. /package/{esm2020 → esm2022}/domain/f-canvas/fit-to-flow/index.mjs +0 -0
  343. /package/{esm2020 → esm2022}/domain/f-canvas/index.mjs +0 -0
  344. /package/{esm2020 → esm2022}/domain/f-canvas/input-canvas-position/index.mjs +0 -0
  345. /package/{esm2020 → esm2022}/domain/f-canvas/input-canvas-position/input-canvas-position-request.mjs +0 -0
  346. /package/{esm2020 → esm2022}/domain/f-canvas/input-canvas-scale/index.mjs +0 -0
  347. /package/{esm2020 → esm2022}/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.mjs +0 -0
  348. /package/{esm2020 → esm2022}/domain/f-canvas/providers.mjs +0 -0
  349. /package/{esm2020 → esm2022}/domain/f-canvas/reset-scale/index.mjs +0 -0
  350. /package/{esm2020 → esm2022}/domain/f-canvas/reset-scale/reset-scale-request.mjs +0 -0
  351. /package/{esm2020 → esm2022}/domain/f-canvas/reset-scale-and-center/index.mjs +0 -0
  352. /package/{esm2020 → esm2022}/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.mjs +0 -0
  353. /package/{esm2020 → esm2022}/domain/f-canvas/update-scale/index.mjs +0 -0
  354. /package/{esm2020 → esm2022}/domain/f-canvas/update-scale/update-scale-request.mjs +0 -0
  355. /package/{esm2020 → esm2022}/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.mjs +0 -0
  356. /package/{esm2020 → esm2022}/domain/f-connection/find-closest-input-using-snap-threshold/index.mjs +0 -0
  357. /package/{esm2020 → esm2022}/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.mjs +0 -0
  358. /package/{esm2020 → esm2022}/domain/f-connection/get-all-can-be-connected-input-positions/index.mjs +0 -0
  359. /package/{esm2020 → esm2022}/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.mjs +0 -0
  360. /package/{esm2020 → esm2022}/domain/f-connection/get-connector-with-rect/i-connector-with-rect.mjs +0 -0
  361. /package/{esm2020 → esm2022}/domain/f-connection/get-connector-with-rect/index.mjs +0 -0
  362. /package/{esm2020 → esm2022}/domain/f-connection/index.mjs +0 -0
  363. /package/{esm2020 → esm2022}/domain/f-connection/providers.mjs +0 -0
  364. /package/{esm2020 → esm2022}/domain/f-selection/clear-selection/clear-selection.request.mjs +0 -0
  365. /package/{esm2020 → esm2022}/domain/f-selection/clear-selection/index.mjs +0 -0
  366. /package/{esm2020 → esm2022}/domain/f-selection/get-selection/get-selection.request.mjs +0 -0
  367. /package/{esm2020 → esm2022}/domain/f-selection/get-selection/index.mjs +0 -0
  368. /package/{esm2020 → esm2022}/domain/f-selection/index.mjs +0 -0
  369. /package/{esm2020 → esm2022}/domain/f-selection/providers.mjs +0 -0
  370. /package/{esm2020 → esm2022}/domain/f-selection/select/index.mjs +0 -0
  371. /package/{esm2020 → esm2022}/domain/f-selection/select/select.request.mjs +0 -0
  372. /package/{esm2020 → esm2022}/domain/f-selection/select-all/index.mjs +0 -0
  373. /package/{esm2020 → esm2022}/domain/f-selection/select-all/select-all.request.mjs +0 -0
  374. /package/{esm2020 → esm2022}/domain/f-selection/select-and-update-node-layer/index.mjs +0 -0
  375. /package/{esm2020 → esm2022}/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.mjs +0 -0
  376. /package/{esm2020 → esm2022}/domain/get-can-be-selected-items/get-can-be-selected-items-request.mjs +0 -0
  377. /package/{esm2020 → esm2022}/domain/get-can-be-selected-items/i-selectable-with-rect.mjs +0 -0
  378. /package/{esm2020 → esm2022}/domain/get-can-be-selected-items/index.mjs +0 -0
  379. /package/{esm2020 → esm2022}/domain/get-connection-line/get-connection-line.request.mjs +0 -0
  380. /package/{esm2020 → esm2022}/domain/get-connection-line/index.mjs +0 -0
  381. /package/{esm2020 → esm2022}/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.mjs +0 -0
  382. /package/{esm2020 → esm2022}/domain/get-deep-children-nodes-and-groups/index.mjs +0 -0
  383. /package/{esm2020 → esm2022}/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.mjs +0 -0
  384. /package/{esm2020 → esm2022}/domain/get-element-rect-in-flow/index.mjs +0 -0
  385. /package/{esm2020 → esm2022}/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.mjs +0 -0
  386. /package/{esm2020 → esm2022}/domain/get-flow-state/get-flow-state-connections/index.mjs +0 -0
  387. /package/{esm2020 → esm2022}/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.mjs +0 -0
  388. /package/{esm2020 → esm2022}/domain/get-flow-state/get-flow-state-nodes/index.mjs +0 -0
  389. /package/{esm2020 → esm2022}/domain/get-flow-state/get-flow-state.request.mjs +0 -0
  390. /package/{esm2020 → esm2022}/domain/get-flow-state/i-f-flow-state-connection.mjs +0 -0
  391. /package/{esm2020 → esm2022}/domain/get-flow-state/i-f-flow-state-connector.mjs +0 -0
  392. /package/{esm2020 → esm2022}/domain/get-flow-state/i-f-flow-state-node.mjs +0 -0
  393. /package/{esm2020 → esm2022}/domain/get-flow-state/i-f-flow-state.mjs +0 -0
  394. /package/{esm2020 → esm2022}/domain/get-flow-state/index.mjs +0 -0
  395. /package/{esm2020 → esm2022}/domain/get-flow-state/providers.mjs +0 -0
  396. /package/{esm2020 → esm2022}/domain/get-nodes-rect/get-nodes-rect.request.mjs +0 -0
  397. /package/{esm2020 → esm2022}/domain/get-nodes-rect/index.mjs +0 -0
  398. /package/{esm2020 → esm2022}/domain/get-position-in-flow/get-position-in-flow-request.mjs +0 -0
  399. /package/{esm2020 → esm2022}/domain/get-position-in-flow/index.mjs +0 -0
  400. /package/{esm2020 → esm2022}/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.mjs +0 -0
  401. /package/{esm2020 → esm2022}/domain/get-scaled-node-rects-with-flow-position/index.mjs +0 -0
  402. /package/{esm2020 → esm2022}/domain/i-map.mjs +0 -0
  403. /package/{esm2020 → esm2022}/domain/index.mjs +0 -0
  404. /package/{esm2020 → esm2022}/domain/is-connection-under-node/index.mjs +0 -0
  405. /package/{esm2020 → esm2022}/domain/is-connection-under-node/is-connection-under-node.request.mjs +0 -0
  406. /package/{esm2020 → esm2022}/domain/providers.mjs +0 -0
  407. /package/{esm2020 → esm2022}/domain/redraw-connections/index.mjs +0 -0
  408. /package/{esm2020 → esm2022}/domain/redraw-connections/redraw-connections-request.mjs +0 -0
  409. /package/{esm2020 → esm2022}/domain/show-connections-after-calculations/index.mjs +0 -0
  410. /package/{esm2020 → esm2022}/domain/show-connections-after-calculations/show-connections-after-calculations-request.mjs +0 -0
  411. /package/{esm2020 → esm2022}/domain/sort-item-layers/index.mjs +0 -0
  412. /package/{esm2020 → esm2022}/domain/sort-item-layers/sort-item-layers.request.mjs +0 -0
  413. /package/{esm2020 → esm2022}/domain/sort-item-layers/sort-items-by-parent/index.mjs +0 -0
  414. /package/{esm2020 → esm2022}/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.mjs +0 -0
  415. /package/{esm2020 → esm2022}/domain/sort-item-layers/sort-node-layers-by-groups/index.mjs +0 -0
  416. /package/{esm2020 → esm2022}/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.mjs +0 -0
  417. /package/{esm2020 → esm2022}/domain/subscribe-on-transform-changes/index.mjs +0 -0
  418. /package/{esm2020 → esm2022}/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.request.mjs +0 -0
  419. /package/{esm2020 → esm2022}/domain/update-item-and-children-layers/index.mjs +0 -0
  420. /package/{esm2020 → esm2022}/domain/update-item-and-children-layers/move-front-elements-before-target-element/index.mjs +0 -0
  421. /package/{esm2020 → esm2022}/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.mjs +0 -0
  422. /package/{esm2020 → esm2022}/domain/update-item-and-children-layers/update-item-and-children-layers.request.mjs +0 -0
  423. /package/{esm2020 → esm2022}/errors/conflict-error.mjs +0 -0
  424. /package/{esm2020 → esm2022}/errors/create-error-class.mjs +0 -0
  425. /package/{esm2020 → esm2022}/errors/errors.mjs +0 -0
  426. /package/{esm2020 → esm2022}/errors/index.mjs +0 -0
  427. /package/{esm2020 → esm2022}/errors/not-found-error.mjs +0 -0
  428. /package/{esm2020 → esm2022}/f-backgroud/domain/i-f-background-pattern.mjs +0 -0
  429. /package/{esm2020 → esm2022}/f-backgroud/domain/index.mjs +0 -0
  430. /package/{esm2020 → esm2022}/f-backgroud/f-circle-pattern/index.mjs +0 -0
  431. /package/{esm2020 → esm2022}/f-backgroud/f-rect-pattern/index.mjs +0 -0
  432. /package/{esm2020 → esm2022}/f-backgroud/index.mjs +0 -0
  433. /package/{esm2020 → esm2022}/f-backgroud/providers.mjs +0 -0
  434. /package/{esm2020 → esm2022}/f-canvas/domain/f-canvas-change.event.mjs +0 -0
  435. /package/{esm2020 → esm2022}/f-canvas/domain/index.mjs +0 -0
  436. /package/{esm2020 → esm2022}/f-canvas/index.mjs +0 -0
  437. /package/{esm2020 → esm2022}/f-canvas/providers.mjs +0 -0
  438. /package/{esm2020 → esm2022}/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.mjs +0 -0
  439. /package/{esm2020 → esm2022}/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.mjs +0 -0
  440. /package/{esm2020 → esm2022}/f-connection/common/domain/calculate-center-between-points/index.mjs +0 -0
  441. /package/{esm2020 → esm2022}/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.mjs +0 -0
  442. /package/{esm2020 → esm2022}/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.mjs +0 -0
  443. /package/{esm2020 → esm2022}/f-connection/common/domain/calculate-connection-center/index.mjs +0 -0
  444. /package/{esm2020 → esm2022}/f-connection/common/domain/f-bezier.path-builder.mjs +0 -0
  445. /package/{esm2020 → esm2022}/f-connection/common/domain/f-segment.path-builder.mjs +0 -0
  446. /package/{esm2020 → esm2022}/f-connection/common/domain/f-straight.path-builder.mjs +0 -0
  447. /package/{esm2020 → esm2022}/f-connection/common/domain/index.mjs +0 -0
  448. /package/{esm2020 → esm2022}/f-connection/common/e-f-connection-behavior.mjs +0 -0
  449. /package/{esm2020 → esm2022}/f-connection/common/e-f-connection-type.mjs +0 -0
  450. /package/{esm2020 → esm2022}/f-connection/common/f-connection-identifiers.mjs +0 -0
  451. /package/{esm2020 → esm2022}/f-connection/common/f-connection-text/i-connection-text.mjs +0 -0
  452. /package/{esm2020 → esm2022}/f-connection/common/f-connection-text/index.mjs +0 -0
  453. /package/{esm2020 → esm2022}/f-connection/common/f-connection.injection-token.mjs +0 -0
  454. /package/{esm2020 → esm2022}/f-connection/common/f-drag-handle/index.mjs +0 -0
  455. /package/{esm2020 → esm2022}/f-connection/common/f-gradient/i-connection-gradient.mjs +0 -0
  456. /package/{esm2020 → esm2022}/f-connection/common/f-gradient/index.mjs +0 -0
  457. /package/{esm2020 → esm2022}/f-connection/common/f-path/get-path-marker-id.mjs +0 -0
  458. /package/{esm2020 → esm2022}/f-connection/common/f-path/i-connection-path.mjs +0 -0
  459. /package/{esm2020 → esm2022}/f-connection/common/f-path/index.mjs +0 -0
  460. /package/{esm2020 → esm2022}/f-connection/common/f-selection/index.mjs +0 -0
  461. /package/{esm2020 → esm2022}/f-connection/common/i-has-connection-color.mjs +0 -0
  462. /package/{esm2020 → esm2022}/f-connection/common/i-has-connection-from-to.mjs +0 -0
  463. /package/{esm2020 → esm2022}/f-connection/common/i-has-connection-text.mjs +0 -0
  464. /package/{esm2020 → esm2022}/f-connection/common/index.mjs +0 -0
  465. /package/{esm2020 → esm2022}/f-connection/f-connection/index.mjs +0 -0
  466. /package/{esm2020 → esm2022}/f-connection/f-connection-builder/f-connection-builders.mjs +0 -0
  467. /package/{esm2020 → esm2022}/f-connection/f-connection-builder/i-f-connection-builder-request.mjs +0 -0
  468. /package/{esm2020 → esm2022}/f-connection/f-connection-builder/i-f-connection-builder-response.mjs +0 -0
  469. /package/{esm2020 → esm2022}/f-connection/f-connection-builder/i-f-connection-builder.mjs +0 -0
  470. /package/{esm2020 → esm2022}/f-connection/f-connection-builder/i-f-connection-factory-request.mjs +0 -0
  471. /package/{esm2020 → esm2022}/f-connection/f-connection-builder/index.mjs +0 -0
  472. /package/{esm2020 → esm2022}/f-connection/f-connection-center/index.mjs +0 -0
  473. /package/{esm2020 → esm2022}/f-connection/f-connection-for-create/index.mjs +0 -0
  474. /package/{esm2020 → esm2022}/f-connection/f-marker/e-f-marker-type.mjs +0 -0
  475. /package/{esm2020 → esm2022}/f-connection/f-marker/index.mjs +0 -0
  476. /package/{esm2020 → esm2022}/f-connection/f-snap-connection/index.mjs +0 -0
  477. /package/{esm2020 → esm2022}/f-connection/index.mjs +0 -0
  478. /package/{esm2020 → esm2022}/f-connection/providers.mjs +0 -0
  479. /package/{esm2020 → esm2022}/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.mjs +0 -0
  480. /package/{esm2020 → esm2022}/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.mjs +0 -0
  481. /package/{esm2020 → esm2022}/f-connectors/domain/calculate-connector-connectable-side/index.mjs +0 -0
  482. /package/{esm2020 → esm2022}/f-connectors/domain/index.mjs +0 -0
  483. /package/{esm2020 → esm2022}/f-connectors/e-f-connectable-side.mjs +0 -0
  484. /package/{esm2020 → esm2022}/f-connectors/f-connector-base.mjs +0 -0
  485. /package/{esm2020 → esm2022}/f-connectors/f-node-input/index.mjs +0 -0
  486. /package/{esm2020 → esm2022}/f-connectors/f-node-outlet/index.mjs +0 -0
  487. /package/{esm2020 → esm2022}/f-connectors/f-node-outlet/is-node-outlet.mjs +0 -0
  488. /package/{esm2020 → esm2022}/f-connectors/f-node-output/index.mjs +0 -0
  489. /package/{esm2020 → esm2022}/f-connectors/f-node-output/is-node-output.mjs +0 -0
  490. /package/{esm2020 → esm2022}/f-connectors/index.mjs +0 -0
  491. /package/{esm2020 → esm2022}/f-connectors/providers.mjs +0 -0
  492. /package/{esm2020 → esm2022}/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.mjs +0 -0
  493. /package/{esm2020 → esm2022}/f-draggable/canvas/canvas-move-finalize/index.mjs +0 -0
  494. /package/{esm2020 → esm2022}/f-draggable/canvas/canvas-move-finalize/providers.mjs +0 -0
  495. /package/{esm2020 → esm2022}/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.mjs +0 -0
  496. /package/{esm2020 → esm2022}/f-draggable/canvas/canvas-move-preparation/index.mjs +0 -0
  497. /package/{esm2020 → esm2022}/f-draggable/canvas/canvas-move-preparation/providers.mjs +0 -0
  498. /package/{esm2020 → esm2022}/f-draggable/canvas/canvas.drag-handler.mjs +0 -0
  499. /package/{esm2020 → esm2022}/f-draggable/canvas/index.mjs +0 -0
  500. /package/{esm2020 → esm2022}/f-draggable/canvas/providers.mjs +0 -0
  501. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.mjs +0 -0
  502. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/create-connection-finalize/index.mjs +0 -0
  503. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.mjs +0 -0
  504. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.mjs +0 -0
  505. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.mjs +0 -0
  506. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.mjs +0 -0
  507. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.mjs +0 -0
  508. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.mjs +0 -0
  509. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.mjs +0 -0
  510. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/create-connection-preparation/index.mjs +0 -0
  511. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/f-create-connection.event.mjs +0 -0
  512. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.mjs +0 -0
  513. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.mjs +0 -0
  514. /package/{esm2020 → esm2022}/f-draggable/connections/create-connection/index.mjs +0 -0
  515. /package/{esm2020 → esm2022}/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.mjs +0 -0
  516. /package/{esm2020 → esm2022}/f-draggable/connections/get-input-under-pointer/index.mjs +0 -0
  517. /package/{esm2020 → esm2022}/f-draggable/connections/index.mjs +0 -0
  518. /package/{esm2020 → esm2022}/f-draggable/connections/providers.mjs +0 -0
  519. /package/{esm2020 → esm2022}/f-draggable/connections/reassign-connection/f-reassign-connection.event.mjs +0 -0
  520. /package/{esm2020 → esm2022}/f-draggable/connections/reassign-connection/index.mjs +0 -0
  521. /package/{esm2020 → esm2022}/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.mjs +0 -0
  522. /package/{esm2020 → esm2022}/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.mjs +0 -0
  523. /package/{esm2020 → esm2022}/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.mjs +0 -0
  524. /package/{esm2020 → esm2022}/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.mjs +0 -0
  525. /package/{esm2020 → esm2022}/f-draggable/domain/get-node-padding/get-node-padding.request.mjs +0 -0
  526. /package/{esm2020 → esm2022}/f-draggable/domain/get-node-padding/index.mjs +0 -0
  527. /package/{esm2020 → esm2022}/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.mjs +0 -0
  528. /package/{esm2020 → esm2022}/f-draggable/domain/get-normalized-node-rect/index.mjs +0 -0
  529. /package/{esm2020 → esm2022}/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.mjs +0 -0
  530. /package/{esm2020 → esm2022}/f-draggable/domain/get-normalized-parent-node-rect/index.mjs +0 -0
  531. /package/{esm2020 → esm2022}/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.mjs +0 -0
  532. /package/{esm2020 → esm2022}/f-draggable/domain/get-parent-nodes/index.mjs +0 -0
  533. /package/{esm2020 → esm2022}/f-draggable/domain/index.mjs +0 -0
  534. /package/{esm2020 → esm2022}/f-draggable/domain/is-array-has-parent-node/index.mjs +0 -0
  535. /package/{esm2020 → esm2022}/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.mjs +0 -0
  536. /package/{esm2020 → esm2022}/f-draggable/domain/providers.mjs +0 -0
  537. /package/{esm2020 → esm2022}/f-draggable/f-selection-change-event.mjs +0 -0
  538. /package/{esm2020 → esm2022}/f-draggable/i-draggable-item.mjs +0 -0
  539. /package/{esm2020 → esm2022}/f-draggable/i-f-drag-and-drop-plugin.mjs +0 -0
  540. /package/{esm2020 → esm2022}/f-draggable/index.mjs +0 -0
  541. /package/{esm2020 → esm2022}/f-draggable/node/connection-source.drag-handler.mjs +0 -0
  542. /package/{esm2020 → esm2022}/f-draggable/node/connection-target.drag-handler.mjs +0 -0
  543. /package/{esm2020 → esm2022}/f-draggable/node/connection.drag-handler.mjs +0 -0
  544. /package/{esm2020 → esm2022}/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.mjs +0 -0
  545. /package/{esm2020 → esm2022}/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.mjs +0 -0
  546. /package/{esm2020 → esm2022}/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.mjs +0 -0
  547. /package/{esm2020 → esm2022}/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/index.mjs +0 -0
  548. /package/{esm2020 → esm2022}/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/index.mjs +0 -0
  549. /package/{esm2020 → 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 +0 -0
  550. /package/{esm2020 → esm2022}/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/index.mjs +0 -0
  551. /package/{esm2020 → 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 +0 -0
  552. /package/{esm2020 → esm2022}/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.mjs +0 -0
  553. /package/{esm2020 → esm2022}/f-draggable/node/create-move-nodes-drag-model-from-selection/index.mjs +0 -0
  554. /package/{esm2020 → esm2022}/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.mjs +0 -0
  555. /package/{esm2020 → esm2022}/f-draggable/node/index.mjs +0 -0
  556. /package/{esm2020 → esm2022}/f-draggable/node/node-move-finalize/index.mjs +0 -0
  557. /package/{esm2020 → esm2022}/f-draggable/node/node-move-finalize/node-move-finalize.request.mjs +0 -0
  558. /package/{esm2020 → esm2022}/f-draggable/node/node-move-finalize/providers.mjs +0 -0
  559. /package/{esm2020 → esm2022}/f-draggable/node/node-move-preparation/index.mjs +0 -0
  560. /package/{esm2020 → esm2022}/f-draggable/node/node-move-preparation/node-move-preparation.request.mjs +0 -0
  561. /package/{esm2020 → esm2022}/f-draggable/node/node-move-preparation/providers.mjs +0 -0
  562. /package/{esm2020 → esm2022}/f-draggable/node/node-resize-by-child.drag-handler.mjs +0 -0
  563. /package/{esm2020 → esm2022}/f-draggable/node/node.drag-handler.mjs +0 -0
  564. /package/{esm2020 → esm2022}/f-draggable/node/providers.mjs +0 -0
  565. /package/{esm2020 → esm2022}/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.mjs +0 -0
  566. /package/{esm2020 → esm2022}/f-draggable/node-resize/apply-child-resize-restrictions/index.mjs +0 -0
  567. /package/{esm2020 → esm2022}/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.mjs +0 -0
  568. /package/{esm2020 → esm2022}/f-draggable/node-resize/apply-parent-resize-restrictions/index.mjs +0 -0
  569. /package/{esm2020 → esm2022}/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.mjs +0 -0
  570. /package/{esm2020 → esm2022}/f-draggable/node-resize/calculate-changed-position/index.mjs +0 -0
  571. /package/{esm2020 → esm2022}/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.mjs +0 -0
  572. /package/{esm2020 → esm2022}/f-draggable/node-resize/calculate-changed-size/index.mjs +0 -0
  573. /package/{esm2020 → esm2022}/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.mjs +0 -0
  574. /package/{esm2020 → esm2022}/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.mjs +0 -0
  575. /package/{esm2020 → esm2022}/f-draggable/node-resize/get-node-resize-restrictions/index.mjs +0 -0
  576. /package/{esm2020 → esm2022}/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.mjs +0 -0
  577. /package/{esm2020 → esm2022}/f-draggable/node-resize/get-normalized-children-nodes-rect/index.mjs +0 -0
  578. /package/{esm2020 → esm2022}/f-draggable/node-resize/index.mjs +0 -0
  579. /package/{esm2020 → esm2022}/f-draggable/node-resize/node-resize-finalize/index.mjs +0 -0
  580. /package/{esm2020 → esm2022}/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.mjs +0 -0
  581. /package/{esm2020 → esm2022}/f-draggable/node-resize/node-resize-finalize/providers.mjs +0 -0
  582. /package/{esm2020 → esm2022}/f-draggable/node-resize/node-resize-preparation/index.mjs +0 -0
  583. /package/{esm2020 → esm2022}/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.mjs +0 -0
  584. /package/{esm2020 → esm2022}/f-draggable/node-resize/node-resize-preparation/providers.mjs +0 -0
  585. /package/{esm2020 → esm2022}/f-draggable/node-resize/node-resize.drag-handler.mjs +0 -0
  586. /package/{esm2020 → esm2022}/f-draggable/node-resize/providers.mjs +0 -0
  587. /package/{esm2020 → esm2022}/f-draggable/node-resize/resize-direction.mjs +0 -0
  588. /package/{esm2020 → esm2022}/f-draggable/providers.mjs +0 -0
  589. /package/{esm2020 → esm2022}/f-draggable/single-select/index.mjs +0 -0
  590. /package/{esm2020 → esm2022}/f-draggable/single-select/providers.mjs +0 -0
  591. /package/{esm2020 → esm2022}/f-draggable/single-select/single-select.request.mjs +0 -0
  592. /package/{esm2020 → esm2022}/f-external-item/domain/external-item-finalize/external-item-finalize.request.mjs +0 -0
  593. /package/{esm2020 → esm2022}/f-external-item/domain/external-item-finalize/index.mjs +0 -0
  594. /package/{esm2020 → esm2022}/f-external-item/domain/external-item-finalize/providers.mjs +0 -0
  595. /package/{esm2020 → esm2022}/f-external-item/domain/external-item-preparation/external-item-preparation.request.mjs +0 -0
  596. /package/{esm2020 → esm2022}/f-external-item/domain/external-item-preparation/index.mjs +0 -0
  597. /package/{esm2020 → esm2022}/f-external-item/domain/external-item-preparation/providers.mjs +0 -0
  598. /package/{esm2020 → esm2022}/f-external-item/domain/external-item.drag-handler.mjs +0 -0
  599. /package/{esm2020 → esm2022}/f-external-item/domain/f-create-node.event.mjs +0 -0
  600. /package/{esm2020 → esm2022}/f-external-item/domain/index.mjs +0 -0
  601. /package/{esm2020 → esm2022}/f-external-item/domain/providers.mjs +0 -0
  602. /package/{esm2020 → esm2022}/f-external-item/index.mjs +0 -0
  603. /package/{esm2020 → esm2022}/f-external-item/is-external-item.mjs +0 -0
  604. /package/{esm2020 → esm2022}/f-external-item/providers.mjs +0 -0
  605. /package/{esm2020 → esm2022}/f-flow/f-flow-base.mjs +0 -0
  606. /package/{esm2020 → esm2022}/f-flow/index.mjs +0 -0
  607. /package/{esm2020 → esm2022}/f-flow/providers.mjs +0 -0
  608. /package/{esm2020 → esm2022}/f-line-alignment/domain/i-line-alignment-rect.mjs +0 -0
  609. /package/{esm2020 → esm2022}/f-line-alignment/domain/i-line-alignment-result.mjs +0 -0
  610. /package/{esm2020 → esm2022}/f-line-alignment/domain/i-nearest-coordinate-result.mjs +0 -0
  611. /package/{esm2020 → esm2022}/f-line-alignment/domain/index.mjs +0 -0
  612. /package/{esm2020 → esm2022}/f-line-alignment/domain/line-element.mjs +0 -0
  613. /package/{esm2020 → esm2022}/f-line-alignment/domain/line-service.mjs +0 -0
  614. /package/{esm2020 → esm2022}/f-line-alignment/domain/nearest-coordinate.mjs +0 -0
  615. /package/{esm2020 → esm2022}/f-line-alignment/index.mjs +0 -0
  616. /package/{esm2020 → esm2022}/f-line-alignment/providers.mjs +0 -0
  617. /package/{esm2020 → esm2022}/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.mjs +0 -0
  618. /package/{esm2020 → esm2022}/f-minimap/domain/calculate-flow-point-from-minimap-point/index.mjs +0 -0
  619. /package/{esm2020 → esm2022}/f-minimap/domain/check-rect-is-finite.mjs +0 -0
  620. /package/{esm2020 → esm2022}/f-minimap/domain/f-minimap-data.mjs +0 -0
  621. /package/{esm2020 → esm2022}/f-minimap/domain/f-minimap.drag-handler.mjs +0 -0
  622. /package/{esm2020 → esm2022}/f-minimap/domain/index.mjs +0 -0
  623. /package/{esm2020 → esm2022}/f-minimap/domain/minimap-drag-finalize/index.mjs +0 -0
  624. /package/{esm2020 → esm2022}/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.mjs +0 -0
  625. /package/{esm2020 → esm2022}/f-minimap/domain/minimap-drag-finalize/providers.mjs +0 -0
  626. /package/{esm2020 → esm2022}/f-minimap/domain/minimap-drag-preparation/index.mjs +0 -0
  627. /package/{esm2020 → esm2022}/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.mjs +0 -0
  628. /package/{esm2020 → esm2022}/f-minimap/domain/minimap-drag-preparation/providers.mjs +0 -0
  629. /package/{esm2020 → esm2022}/f-minimap/domain/providers.mjs +0 -0
  630. /package/{esm2020 → esm2022}/f-minimap/index.mjs +0 -0
  631. /package/{esm2020 → esm2022}/f-minimap/providers.mjs +0 -0
  632. /package/{esm2020 → esm2022}/f-node/domain/index.mjs +0 -0
  633. /package/{esm2020 → esm2022}/f-node/domain/is-group.mjs +0 -0
  634. /package/{esm2020 → esm2022}/f-node/domain/is-node.mjs +0 -0
  635. /package/{esm2020 → esm2022}/f-node/f-drag-handle/index.mjs +0 -0
  636. /package/{esm2020 → esm2022}/f-node/f-node-base.mjs +0 -0
  637. /package/{esm2020 → esm2022}/f-node/f-resize-handle/e-f-resize-handle-type.mjs +0 -0
  638. /package/{esm2020 → esm2022}/f-node/f-resize-handle/index.mjs +0 -0
  639. /package/{esm2020 → esm2022}/f-node/f-resize-observer.mjs +0 -0
  640. /package/{esm2020 → esm2022}/f-node/f-rotate-handle/index.mjs +0 -0
  641. /package/{esm2020 → esm2022}/f-node/index.mjs +0 -0
  642. /package/{esm2020 → esm2022}/f-node/providers.mjs +0 -0
  643. /package/{esm2020 → esm2022}/f-selection-area/domain/index.mjs +0 -0
  644. /package/{esm2020 → esm2022}/f-selection-area/domain/providers.mjs +0 -0
  645. /package/{esm2020 → esm2022}/f-selection-area/domain/selection-area-finalize/index.mjs +0 -0
  646. /package/{esm2020 → esm2022}/f-selection-area/domain/selection-area-finalize/providers.mjs +0 -0
  647. /package/{esm2020 → esm2022}/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.mjs +0 -0
  648. /package/{esm2020 → esm2022}/f-selection-area/domain/selection-area-preparation/index.mjs +0 -0
  649. /package/{esm2020 → esm2022}/f-selection-area/domain/selection-area-preparation/providers.mjs +0 -0
  650. /package/{esm2020 → esm2022}/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.mjs +0 -0
  651. /package/{esm2020 → esm2022}/f-selection-area/index.mjs +0 -0
  652. /package/{esm2020 → esm2022}/f-selection-area/providers.mjs +0 -0
  653. /package/{esm2020 → esm2022}/f-storage/index.mjs +0 -0
  654. /package/{esm2020 → esm2022}/f-zoom/index.mjs +0 -0
  655. /package/{esm2020 → esm2022}/f-zoom/providers.mjs +0 -0
  656. /package/{esm2020 → esm2022}/foblex-flow.mjs +0 -0
  657. /package/{esm2020 → esm2022}/i-has-host-element.mjs +0 -0
  658. /package/{esm2020 → esm2022}/i-has-state-changes.mjs +0 -0
  659. /package/{esm2020 → esm2022}/mixins/change-selection/i-can-change-selection.mjs +0 -0
  660. /package/{esm2020 → esm2022}/mixins/change-selection/index.mjs +0 -0
  661. /package/{esm2020 → esm2022}/mixins/change-visibility/change-visibility.mjs +0 -0
  662. /package/{esm2020 → esm2022}/mixins/change-visibility/i-can-change-visibility.mjs +0 -0
  663. /package/{esm2020 → esm2022}/mixins/change-visibility/index.mjs +0 -0
  664. /package/{esm2020 → esm2022}/mixins/constructor.mjs +0 -0
  665. /package/{esm2020 → esm2022}/mixins/index.mjs +0 -0
  666. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
@@ -1 +0,0 @@
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/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/f-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/f-transform-store.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers.execution.ts","../../../projects/f-flow/src/domain/create-rounded-rect-from-element/create-rounded-rect-from-element-request.ts","../../../projects/f-flow/src/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.request.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.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/providers.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/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/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/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.ts","../../../projects/f-flow/src/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.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-element-rect-in-flow/get-element-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow.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/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.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-move-finalize/canvas-move-finalize.execution.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.validator.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-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/domain/is-group.ts","../../../projects/f-flow/src/f-node/domain/is-node.ts","../../../projects/f-flow/src/f-node/f-drag-handle/f-drag-handle.directive.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/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-resize-observer.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/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-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/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.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.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/create-connection/create-connection-preparation/create-connection-preparation.validator.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/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.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.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-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/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/providers.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.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/get-parent-nodes/get-parent-nodes.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.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/providers.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/get-node-move-restrictions/get-node-move-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-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/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/node-move-preparation.validator.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/domain/is-connection-under-node/is-connection-under-node.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/providers.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-finalize/node-resize-finalize.execution.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.validator.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/single-select.validator.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/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.drag-handler.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.validator.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/providers.ts","../../../projects/f-flow/src/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/f-external-item/is-external-item.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/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/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/f-minimap.drag-handler.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-drag-preparation/minimap-drag-preparation.request.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/check-rect-is-finite.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap-data.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/domain/get-can-be-selected-items/get-can-be-selected-items-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.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.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-selection/get-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/get-selection/get-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/get-can-be-selected-items/get-can-be-selected-items.execution.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.request.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state.request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/providers.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.request.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.execution.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow-request.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow.execution.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.execution.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections-request.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections.execution.ts","../../../projects/f-flow/src/domain/show-connections-after-calculations/show-connections-after-calculations-request.ts","../../../projects/f-flow/src/domain/show-connections-after-calculations/show-connections-after-calculations.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/subscribe-on-transform-changes/subscribe-on-transform-changes.request.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.ts","../../../projects/f-flow/src/domain/constants.ts","../../../projects/f-flow/src/domain/create-dom-element.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-line-alignment/domain/line-element.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-service.ts","../../../projects/f-flow/src/f-line-alignment/domain/nearest-coordinate.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-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","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 { Observable, Subject } from 'rxjs';\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';\n\n@Injectable()\nexport class FComponentsStore {\n\n private readonly componentsDataChanges: Subject<void> = new Subject<void>();\n public get componentsData$(): Observable<void> {\n return this.componentsDataChanges.asObservable();\n }\n\n private readonly componentsCountChanges: Subject<void> = new Subject<void>();\n public get componentsCount$(): Observable<void> {\n return this.componentsCountChanges.asObservable();\n }\n\n public get flowHost(): HTMLElement {\n return this.fFlow?.hostElement!;\n }\n\n public get transform(): ITransformModel {\n return this.fCanvas?.transform!;\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 findNode(element: HTMLElement | SVGElement): FNodeBase | undefined {\n return this.fNodes.find(n => n.isContains(element));\n }\n\n public addComponent<T>(collection: T[], component: T): void {\n collection.push(component);\n this.componentsCountChanges.next();\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.componentsCountChanges.next();\n }\n }\n\n public componentDataChanged(): void {\n this.componentsDataChanges.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class FTransformStore {\n\n public readonly changes: Subject<void> = new Subject<void>();\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","export class CreateRoundedRectFromElementRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateRoundedRectFromElementRequest } from './create-rounded-rect-from-element-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { RoundedRect, RectExtensions } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(CreateRoundedRectFromElementRequest)\nexport class CreateRoundedRectFromElementExecution implements IExecution<CreateRoundedRectFromElementRequest, RoundedRect> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: CreateRoundedRectFromElementRequest): RoundedRect {\n return this.setRadiusFromElement(RoundedRect.fromRect(RectExtensions.fromElement(request.element)), request.element);\n }\n\n private setRadiusFromElement(rect: RoundedRect, element: HTMLElement | SVGElement): RoundedRect {\n const styles = this.getComputedStyle(element);\n rect.radius1 = this.toPixels(styles.borderTopLeftRadius, element, styles.fontSize);\n rect.radius2 = this.toPixels(styles.borderTopRightRadius, element, styles.fontSize);\n rect.radius3 = this.toPixels(styles.borderBottomRightRadius, element, styles.fontSize);\n rect.radius4 = this.toPixels(styles.borderBottomLeftRadius, element, styles.fontSize);\n return rect;\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","export class EmitTransformChangesRequest {\n\n}\n","import { EmitTransformChangesRequest } from './emit-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FTransformStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(EmitTransformChangesRequest)\nexport class EmitTransformChangesExecution\n implements IExecution<EmitTransformChangesRequest, void> {\n\n constructor(\n private fTransformStore: FTransformStore,\n ) {\n }\n\n public handle(request: EmitTransformChangesRequest): void {\n this.fTransformStore.changes.next();\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 { AddPatternToBackgroundExecution } from './add-pattern-to-background';\n\nexport const F_BACKGROUND_FEATURES = [\n\n AddPatternToBackgroundExecution\n];\n","export class CenterGroupOrNodeRequest {\n\n constructor(\n public id: string,\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CenterGroupOrNodeRequest } from './center-group-or-node-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { F_CANVAS_ANIMATION_DURATION } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(CenterGroupOrNodeRequest)\nexport class CenterGroupOrNodeExecution implements IExecution<CenterGroupOrNodeRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\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 request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\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 { 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 { F_CANVAS_ANIMATION_DURATION, GetNodesRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FitToFlowRequest)\nexport class FitToFlowExecution implements IExecution<FitToFlowRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: FitToFlowRequest): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || 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 request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\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","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 { 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\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\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 { 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\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\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 ResetScaleRequest {\n}\n","import { 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\n@Injectable()\n@FExecutionRegister(ResetScaleRequest)\nexport class ResetScaleExecution implements IExecution<ResetScaleRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\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 { 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 { F_CANVAS_ANIMATION_DURATION, GetNodesRectRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(ResetScaleAndCenterRequest)\nexport class ResetScaleAndCenterExecution implements IExecution<ResetScaleAndCenterRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: ResetScaleAndCenterRequest): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || 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 request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\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 { 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\n@Injectable()\n@FExecutionRegister(UpdateScaleRequest)\nexport class UpdateScaleExecution implements IExecution<UpdateScaleRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\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';\n\nexport const F_CANVAS_FEATURES = [\n\n CenterGroupOrNodeExecution,\n\n FitToFlowExecution,\n\n InputCanvasPositionExecution,\n\n InputCanvasScaleExecution,\n\n ResetScaleExecution,\n\n ResetScaleAndCenterExecution,\n\n UpdateScaleExecution\n];\n","import { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\nexport class FindClosestInputUsingSnapThresholdRequest {\n\n constructor(\n public position: IPoint,\n public canBeConnectedInputs: IConnectorWithRect[],\n public snapThreshold: number\n ) {\n }\n}\n","import { FindClosestInputUsingSnapThresholdRequest } from './find-closest-input-using-snap-threshold.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\n@Injectable()\n@FExecutionRegister(FindClosestInputUsingSnapThresholdRequest)\nexport class FindClosestInputUsingSnapThresholdExecution\n implements IExecution<FindClosestInputUsingSnapThresholdRequest, IConnectorWithRect | undefined> {\n\n\n public handle(payload: FindClosestInputUsingSnapThresholdRequest): IConnectorWithRect | 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 minDistance < payload.snapThreshold ? result : 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 GetElementRectInFlowRequest {\n constructor(\n public element: HTMLElement | SVGElement\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetElementRectInFlowRequest } from './get-element-rect-in-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { IRoundedRect, RoundedRect, IPoint, ISize, Point, SizeExtensions, ITransformModel } from '@foblex/2d';\nimport { CreateRoundedRectFromElementRequest } from '../create-rounded-rect-from-element';\n\n@Injectable()\n@FExecutionRegister(GetElementRectInFlowRequest)\nexport class GetElementRectInFlowExecution implements IExecution<GetElementRectInFlowRequest, IRoundedRect> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetElementRectInFlowRequest): IRoundedRect {\n const systemRect = this.fMediator.send<IRoundedRect>(new CreateRoundedRectFromElementRequest(request.element));\n const position = this.transformElementPositionInFlow(systemRect);\n const size = this.transformElementSizeInFlow(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 transformElementPositionInFlow(rect: IRoundedRect): IPoint {\n return Point.fromPoint(rect).elementTransform(this.flowHost).sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n\n private transformElementSizeInFlow(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this.transform.scale, rect.height / this.transform.scale);\n }\n}\n","import { 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 { GetElementRectInFlowRequest } from '../../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(GetConnectorWithRectRequest)\nexport class GetConnectorWithRectExecution implements IExecution<GetConnectorWithRectRequest, IConnectorWithRect> {\n\n constructor(\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: GetConnectorWithRectRequest): IConnectorWithRect {\n return {\n fConnector: request.connector,\n fRect: this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(request.connector.hostElement))\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.id === fId);\n }\n\n private findOutletById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === 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 { FindClosestInputUsingSnapThresholdExecution } from './find-closest-input-using-snap-threshold';\nimport { GetAllCanBeConnectedInputPositionsExecution } from './get-all-can-be-connected-input-positions';\nimport { GetConnectorWithRectExecution } from './get-connector-with-rect';\n\nexport const F_CONNECTION_FEATURES = [\n\n FindClosestInputUsingSnapThresholdExecution,\n\n GetAllCanBeConnectedInputPositionsExecution,\n\n GetConnectorWithRectExecution,\n];\n","export class ClearSelectionRequest {\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 { FLineAlignmentBase } from '../f-line-alignment';\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 fLineAlignment: FLineAlignmentBase | undefined;\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","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';\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 this.fDraggableDataContext.draggableItems.forEach((x) => x.complete?.());\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 initialize(): void {\n this.onPointerDownPosition = this.fComponentsStore.fCanvas!.transform.position;\n }\n\n public move(difference: IPoint): void {\n this.fComponentsStore.fCanvas!.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeValidator implements IValidator<CanvasMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CanvasDragHandler\n );\n }\n}\n","import { CanvasMoveFinalizeExecution } from './canvas-move-finalize.execution';\nimport { CanvasMoveFinalizeValidator } from './canvas-move-finalize.validator';\n\nexport const CANVAS_MOVE_FINALIZE_PROVIDERS = [\n\n CanvasMoveFinalizeExecution,\n\n CanvasMoveFinalizeValidator,\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?.isBackgroundElement(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.findNode(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","export enum EFConnectableSide {\n\n LEFT = 'left',\n\n RIGHT = 'right',\n\n TOP = 'top',\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._fConnectableSide === EFConnectableSide.AUTO) {\n result = this.getSideByDelta(request.fConnector.hostElement, request.fNodeHost);\n } else {\n result = request.fConnector._fConnectableSide;\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 { Subject } from 'rxjs';\nimport { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport abstract class FConnectorBase implements IHasStateChanges, IHasHostElement {\n\n public abstract id: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract canBeConnected: boolean;\n\n public abstract isConnected: boolean;\n\n public isSelfConnectable: boolean = true;\n\n public fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\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 isConnected: boolean = false;\n\n public get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isGroup(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fGroup]');\n}\n\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import {\n Directive, ElementRef, InjectionToken\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_DRAG_HANDLE: InjectionToken<FDragHandleDirective> = 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 public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\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, 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: InjectionToken<FResizeHandleDirective> = 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 public _type: EFResizeHandleType = EFResizeHandleType.LEFT_TOP;\n @Input('fResizeHandleType')\n public set type(type: EFResizeHandleType) {\n this._type = castToEnum(type, 'fResizeHandleType', EFResizeHandleType);\n }\n public get type(): EFResizeHandleType {\n return this._type;\n }\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 constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\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 { 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 { Subject } from 'rxjs';\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { FConnectorBase } from '../f-connectors';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { ICanChangeSelection, mixinChangeSelection } from '../mixins';\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 IHasStateChanges, ICanChangeSelection, IHasHostElement {\n\n public abstract override fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\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 abstract connectors: FConnectorBase[];\n\n public abstract addConnector(connector: FConnectorBase): void;\n\n public abstract removeConnector(connector: FConnectorBase): void;\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","import { Observable } from 'rxjs';\n\nexport class FResizeObserver extends Observable<ResizeObserverEntry[]> {\n\n constructor(element: HTMLElement) {\n super(subscriber => {\n const observer = new ResizeObserver(entries => {\n subscriber.next(entries);\n });\n\n observer.observe(element);\n\n return function unsubscribe() {\n observer.unobserve(element);\n observer.disconnect();\n }\n });\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\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 { merge, Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../i-has-host-element';\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 private subscriptions$: Subscription = new Subscription();\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 public override connectors: FConnectorBase[] = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\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 this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, 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 EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\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 { merge, Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { IHasHostElement } from '../i-has-host-element';\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 private subscriptions$: Subscription = new Subscription();\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 public override connectors: FConnectorBase[] = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\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 this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, 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 EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import { FNodeDirective } from './f-node.directive';\nimport { FDragHandleDirective } from './f-drag-handle';\nimport { FResizeHandleDirective } from './f-resize-handle';\nimport { FGroupDirective } from './f-group.directive';\n\nexport const F_NODE_PROVIDERS = [\n\n FGroupDirective,\n\n FNodeDirective,\n\n FDragHandleDirective,\n\n FResizeHandleDirective,\n];\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } 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 { FComponentsStore } from '../../f-storage';\nimport { castToBoolean, castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n exportAs: 'fNodeInput',\n host: {\n '[attr.data-f-input-id]': 'id',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled',\n '[class.f-node-input-not-connectable]': '!canBeConnected',\n },\n providers: [ { provide: F_NODE_INPUT, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnInit, OnDestroy {\n\n @Input('fInputId')\n public override id: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fInputMultiple')\n public override multiple: boolean = true;\n\n @Input('fInputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fInputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fInputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.addComponent(this.fComponentsStore.fInputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-input-connected', isConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fInputs, 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 public override isConnected: boolean = false;\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 { Directive, ElementRef, 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 { FComponentsStore } from '../../f-storage';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { castToBoolean } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n exportAs: 'fNodeOutlet',\n host: {\n '[attr.data-f-outlet-id]': 'id',\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 id: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input('fOutletDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public override fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override _fConnectableSide: 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 constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutlet must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutlets, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutlets, 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 isConnected: boolean = false;\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 { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } 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 { FComponentsStore } from '../../f-storage';\nimport { castToBoolean, castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n exportAs: 'fNodeOutput',\n host: {\n '[attr.data-f-output-id]': 'id',\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-not-connectable]': '!canBeConnected',\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, OnDestroy {\n\n @Input('fOutputId')\n public override id: string = `f-node-output-${ uniqueId++ }`;\n\n @Input('fOutputMultiple')\n public override multiple: boolean = false;\n\n @Input('fOutputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fOutputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fOutputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n @Input()\n public override isSelfConnectable: boolean = true;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutput must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-output-connected', isConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutputs, 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 { 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 { 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.id === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === 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.id === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === 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 this.emitEvent(request.event);\n this.dragHandler.complete();\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.id === this.dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === 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()).id,\n this.getInputUnderPointer(event)?.id,\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 { IDraggableItem } from '../../i-draggable-item';\nimport {\n FindClosestInputUsingSnapThresholdRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n GetConnectionLineRequest,\n GetConnectorWithRectRequest,\n IConnectorWithRect\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 initialize(): void {\n if (this.fSnapConnection) {\n this.fSnapConnection.fOutputId = this.fOutput.id;\n this.fSnapConnection.initialize();\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fOutput.id)\n );\n }\n this.fConnection.fOutputId = this.fOutput.id;\n this.fConnection.initialize();\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.move(PointExtensions.initialize());\n }\n\n public move(difference: IPoint): void {\n this.drawTempConnection(this.toConnectorRect.addPoint(difference));\n this.drawSnapConnection(this.getClosetInput(difference));\n }\n\n private drawTempConnection(fInputRect: RoundedRect): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n EFConnectableSide.TOP,\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, EFConnectableSide.TOP);\n this.fConnection.redraw();\n }\n\n private drawSnapConnection(fInputWithRect: IConnectorWithRect | undefined): void {\n if (fInputWithRect) {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IConnectorWithRect | undefined {\n return this.fMediator.send<IConnectorWithRect | undefined>(\n new FindClosestInputUsingSnapThresholdRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n this.fSnapConnection!.fSnapThreshold\n )\n );\n }\n\n public complete(): void {\n this.fConnection.redraw();\n this.fConnection.hide();\n this.fSnapConnection?.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeValidator implements IValidator<CreateConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CreateConnectionDragHandler\n );\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.findNode(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.findNode(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 { 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';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationExecution\n implements IHandler<CreateConnectionPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): void {\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 getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(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 { Injectable } from '@angular/core';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationValidator implements IValidator<CreateConnectionPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): boolean {\n return !!this.getNode(request.event) && this.isValidConditions();\n }\n\n private getNode(event: IPointerEvent): FNodeBase | undefined {\n return this.fComponentsStore.findNode(event.targetElement);\n }\n\n private isValidConditions(): boolean {\n return !this.fDraggableDataContext.draggableItems.length && !!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","export class FReassignConnectionEvent {\n\n constructor(\n public fConnectionId: string,\n public fOutputId: string,\n public oldFInputId: string,\n public newFInputId: string | undefined\n ) {\n }\n}\n","import { 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 get fDraggable(): FDraggableBase {\n return this.fComponentsStore.fDraggable!;\n }\n\n private get dragHandler(): ReassignConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ReassignConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private emitEvent(event: IPointerEvent): void {\n const input = this.getInputUnderPointer(event);\n if (\n !input || !this.isReassignToDifferentInput(input)\n ) {\n return;\n }\n this.fDraggable.fReassignConnection.emit(\n new FReassignConnectionEvent(\n this.dragHandler.fConnection.fId,\n this.dragHandler.fConnection.fOutputId,\n this.dragHandler.fConnection.fInputId,\n input.id\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 private isReassignToDifferentInput(inputsUnderPointer: FConnectorBase): boolean {\n return this.dragHandler.fConnection.fInputId !== inputsUnderPointer.id;\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n FindClosestInputUsingSnapThresholdRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n GetConnectionLineRequest, GetConnectorWithRectRequest,\n IConnectorWithRect\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { ILine, IPoint, 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 initialize(): void {\n if (this.fSnapConnection) {\n this.fSnapConnection.fOutputId = this.fConnection.fOutputId;\n this.fSnapConnection.initialize();\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fConnection.fOutputId)\n );\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 getOutput(): FConnectorBase {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.fConnection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.id === this.fConnection.fInputId)!\n }\n\n public move(difference: IPoint): void {\n this.drawConnection({ fRect: this.toConnectorRect.addPoint(difference), fConnector: this.fInputWithRect.fConnector });\n this.drawSnapConnection(this.getClosetInput(difference));\n }\n\n private drawConnection(fInputWithRect: IConnectorWithRect): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fConnection.redraw();\n }\n\n private drawSnapConnection(fInputWithRect: IConnectorWithRect | undefined): void {\n if (fInputWithRect) {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IConnectorWithRect | undefined {\n return this.fMediator.send<IConnectorWithRect | undefined>(\n new FindClosestInputUsingSnapThresholdRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n this.fSnapConnection!.fSnapThreshold\n )\n );\n }\n\n public complete(): void {\n this.drawConnection(this.fInputWithRect);\n this.fSnapConnection?.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeValidator implements IValidator<ReassignConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ReassignConnectionDragHandler\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 { 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","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', '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;\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 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 const point = this.calculateCircleCenter(penultimatePoint, endPoint, 8);\n this.hostElement.setAttribute('cx', point.x.toString());\n this.hostElement.setAttribute('cy', 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 {\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 { Subject } from 'rxjs';\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 { IHasStateChanges } from '../../i-has-state-changes';\nimport { FMarkerBase } from '../f-marker';\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 IHasStateChanges, 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 readonly stateChanges: Subject<void> = new Subject<void>();\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;\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 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, Input, 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 { FComponentsStore } 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';\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, OnDestroy {\n\n public override fId: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fType(): EFConnectionType {\n return this._type;\n }\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 constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fTempConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fTempConnection = undefined;\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 ChangeDetectionStrategy,\n Component, ContentChildren,\n ElementRef,\n Input,\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 { FComponentsStore } 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';\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, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-${ uniqueId++ }`;\n\n private _fText: string = '';\n @Input()\n public override set fText(value: string) {\n this._fText = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fText(): string {\n return this._fText;\n }\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n private _fOutputId!: string;\n @Input()\n public override set fOutputId(value: string) {\n this._fOutputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOutputId(): string {\n return this._fOutputId;\n }\n\n private _fInputId!: string;\n @Input()\n public override set fInputId(value: string) {\n this._fInputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fInputId(): string {\n return this._fInputId;\n }\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n @Input()\n public override set fBehavior(value: string | EFConnectionBehavior) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = value as unknown as EFConnectionType; //castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n @Input('fReassignDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input()\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 public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fConnections, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fConnections, 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, Input, OnDestroy, OnInit\n} from \"@angular/core\";\nimport { F_MARKER, FMarkerBase } from './f-marker-base';\nimport { EFMarkerType } from './e-f-marker-type';\nimport { FComponentsStore } from '../../f-storage';\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 constructor(\n private fComponentsStore: FComponentsStore,\n private elementReference: ElementRef<HTMLElement>,\n ) {\n super();\n this.hostElement.style.display = 'none';\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fMarkers, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fMarkers, this);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, Input, 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 { FComponentsStore } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\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, OnDestroy {\n\n public override fId: string = `f-snap-connection-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n @Input()\n public fSnapThreshold: number = 20;\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\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 constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fSnapConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fSnapConnection = undefined;\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 { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point } 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 { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationExecution implements IExecution<ReassignConnectionPreparationRequest, 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 private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\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: ReassignConnectionPreparationRequest): void {\n const connectionToReassign = this.getConnectionHandler(\n this.getDragHandleElement(request.event.getPosition())\n )!;\n if (connectionToReassign.fDraggingDisabled) {\n return;\n }\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(\n connectionToReassign, this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement\n )\n );\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new ReassignConnectionDragHandler(this.fMediator, this.fComponentsStore, connectionToReassign)\n ];\n }\n\n private getDragHandleElement(position: IPoint): HTMLElement {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\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 public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPoint } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationValidator implements IValidator<ReassignConnectionPreparationRequest> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): boolean {\n return !!this.getDragHandleElements(request.event.getPosition()).length\n && !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getDragHandleElements(position: IPoint): HTMLElement[] {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n });\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import {\n CreateConnectionDragHandlerExecution,\n CreateConnectionFinalizeExecution,\n CreateConnectionFinalizeValidator,\n CreateConnectionFromOutletPreparationExecution,\n CreateConnectionFromOutputPreparationExecution,\n CreateConnectionFromOutputPreparationValidator,\n CreateConnectionPreparationExecution,\n CreateConnectionPreparationValidator,\n GetCanBeConnectedOutputByOutletExecution,\n GetCanBeConnectedOutputByOutletValidator\n} from './create-connection';\nimport {\n ReassignConnectionFinalizeExecution,\n ReassignConnectionFinalizeValidator,\n ReassignConnectionPreparationExecution, ReassignConnectionPreparationValidator,\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 CreateConnectionFinalizeValidator,\n\n CreateConnectionDragHandlerExecution,\n\n CreateConnectionFromOutletPreparationExecution,\n\n GetCanBeConnectedOutputByOutletExecution,\n\n GetCanBeConnectedOutputByOutletValidator,\n\n CreateConnectionFromOutputPreparationExecution,\n\n CreateConnectionFromOutputPreparationValidator,\n\n CreateConnectionPreparationExecution,\n\n CreateConnectionPreparationValidator,\n\n ReassignConnectionFinalizeExecution,\n\n ReassignConnectionFinalizeValidator,\n\n ReassignConnectionPreparationExecution,\n\n ReassignConnectionPreparationValidator,\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","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedNodeRectRequest } from './get-normalized-node-rect.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedNodeRectRequest)\nexport class GetNormalizedNodeRectExecution\n implements IExecution<GetNormalizedNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetNormalizedNodeRectRequest): IRect {\n return this.normalizeRect(RectExtensions.fromElement(request.fNode.hostElement), request.fNode.position);\n }\n\n private normalizeRect(scaledRect: IRect, position: IPoint): IRect {\n const rect = RectExtensions.div(scaledRect, this.fComponentsStore.fCanvas!.transform.scale);\n\n return RectExtensions.initialize(position.x, position.y, rect.width, rect.height);\n }\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 { GetNormalizedNodeRectRequest } from '../get-normalized-node-rect';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { GetNodePaddingRequest } from '../get-node-padding';\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.getNormalizedNodeRect(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 getNormalizedNodeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\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 GetParentNodesRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { 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 constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\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 { FNodeBase } from '../../../f-node';\n\nexport class IsArrayHasParentNodeRequest {\n\n constructor(\n public fNode: FNodeBase,\n public fNodes: FNodeBase[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IsArrayHasParentNodeRequest } from './is-array-has-parent-node.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetParentNodesRequest } from '../get-parent-nodes';\n\n@Injectable()\n@FExecutionRegister(IsArrayHasParentNodeRequest)\nexport class IsArrayHasParentNodeExecution\n implements IExecution<IsArrayHasParentNodeRequest, boolean> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: IsArrayHasParentNodeRequest): boolean {\n return this.isParentNodeInArray(this.getParentNodeIds(request.fNode), request.fNodes);\n }\n\n private getParentNodeIds(fNode: FNodeBase): string[] {\n return this.getParentNodes(fNode).map((x) => x.fId);\n }\n\n private getParentNodes(fNode: FNodeBase): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(fNode));\n }\n\n private isParentNodeInArray(parentNodeIds: string[], fNodes: FNodeBase[]): boolean {\n return fNodes.some((x) => parentNodeIds.includes(x.fId));\n }\n}\n\n\n","import { GetNormalizedNodeRectExecution } from './get-normalized-node-rect';\nimport { GetParentNodesExecution } from './get-parent-nodes';\nimport { IsArrayHasParentNodeExecution } from './is-array-has-parent-node';\nimport { GetNormalizedParentNodeRectExecution } from './get-normalized-parent-node-rect';\nimport { GetNodePaddingExecution } from './get-node-padding';\n\nexport const DRAG_AND_DROP_COMMON_PROVIDERS = [\n\n GetNodePaddingExecution,\n\n GetNormalizedNodeRectExecution,\n\n GetNormalizedParentNodeRectExecution,\n\n GetParentNodesExecution,\n\n IsArrayHasParentNodeExecution\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 { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { ILine, 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 initialize(): 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 return this.fComponentsStore.fOutputs.find((x) => x.id === this.connection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.id === this.connection.fInputId)!\n }\n\n public abstract move(difference: IPoint): void;\n\n protected getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): 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, IPoint, RoundedRect } from '@foblex/2d';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionDragHandler extends ConnectionBaseDragHandler {\n\n private sourceRestrictions!: INodeMoveRestrictions;\n private targetRestrictions!: INodeMoveRestrictions;\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public setOutputRestrictions(min: IPoint, max: IPoint) {\n this.sourceRestrictions = { min, max };\n }\n\n public setInputRestrictions(min: IPoint, max: IPoint) {\n this.targetRestrictions = { min, max };\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.sourceRestrictions)),\n RoundedRect.fromRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.targetRestrictions)),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n GetConnectionLineRequest,\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 minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRect(this.fOutputWithRect.fRect),\n RoundedRect.fromRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { 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 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: 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.id));\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;\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.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionTargetDragHandler {\n return new ConnectionTargetDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\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, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n GetConnectionLineRequest\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 minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n RoundedRect.fromRect(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.id));\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.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionSourceDragHandler {\n return new ConnectionSourceDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { FNodeBase } from '../../../../../f-node';\n\nexport class GetNodeMoveRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public hasParentNodeInSelected: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeMoveRestrictionsRequest } from './get-node-move-restrictions.request';\nimport { IRect, PointExtensions } from '@foblex/2d';\nimport { INodeMoveRestrictions } from './i-node-move-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedNodeRectRequest, GetNormalizedParentNodeRectRequest } from '../../../../domain';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodeMoveRestrictionsRequest)\nexport class GetNodeMoveRestrictionsExecution\n implements IExecution<GetNodeMoveRestrictionsRequest, INodeMoveRestrictions> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNodeMoveRestrictionsRequest): INodeMoveRestrictions {\n if (request.fNode.fParentId && !request.hasParentNodeInSelected) {\n const fParentNodeRect = this.getParentNodeRect(request.fNode);\n const fCurrentNodeRect = this.getCurrentNodeRect(request.fNode);\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 return { ...DEFAULT_RESTRICTIONS };\n }\n\n private getCurrentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(fNode));\n }\n\n private getParentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n}\n\nconst DEFAULT_RESTRICTIONS: INodeMoveRestrictions = {\n min: PointExtensions.initialize(-Infinity, -Infinity),\n max: PointExtensions.initialize(Infinity, Infinity)\n};\n","export class CreateMoveNodesDragModelFromSelectionRequest {\n\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { FNodeBase } from '../../f-node';\nimport {\n INodeMoveRestrictions\n} from './create-move-nodes-drag-model-from-selection';\n\nexport class NodeDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n public fNode: FNodeBase,\n public minDistance: IPoint,\n public maxDistance: IPoint,\n ) {\n this.onPointerDownPosition = { ...fNode.position };\n }\n\n public move(difference: IPoint): void {\n const restrictedDifference = this.getDifference(difference, { min: this.minDistance, max: this.maxDistance });\n\n this.redrawNode(this.getNewPosition(restrictedDifference));\n this.fDraggableDataContext.fLineAlignment?.handle(restrictedDifference);\n }\n\n private getNewPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this.onPointerDownPosition).add(difference);\n }\n\n private getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): 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 private redrawNode(position: IPoint): void {\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n }\n\n public complete(): void {\n this.fNode.positionChange.emit(this.fNode.position);\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\n public move(difference: IPoint): void {\n\n }\n\n public complete(): void {\n\n }\n}\n","import { 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 { GetNodeMoveRestrictionsRequest, INodeMoveRestrictions } from './domain/get-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 { GetParentNodesRequest, IsArrayHasParentNodeRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\nimport { flatMap } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)\nexport class CreateMoveNodesDragModelFromSelectionExecution\n implements IExecution<CreateMoveNodesDragModelFromSelectionRequest, IDraggableItem[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: CreateMoveNodesDragModelFromSelectionRequest): IDraggableItem[] {\n const itemsToDrag = this.getNodesWithRestrictions(this.getSelectedNodes());\n return this.getDragHandlersWithConnections(\n this.getDragHandlersFromNodes(itemsToDrag),\n this.getAllOutputIds(itemsToDrag),\n this.getAllInputIds(itemsToDrag)\n );\n }\n\n private getSelectedNodes(): FNodeBase[] {\n return this.fDraggableDataContext.selectedItems\n .map((x) => this.fComponentsStore.findNode(x.hostElement))\n .filter((x): x is FNodeBase => !!x);\n }\n\n private getNodesWithRestrictions(selectedNodes: FNodeBase[]): INodeWithDistanceRestrictions[] {\n const result: INodeWithDistanceRestrictions[] = [];\n\n selectedNodes.forEach((x) => {\n const hasParentNodeInSelected = this.fMediator.send<boolean>(new IsArrayHasParentNodeRequest(x, selectedNodes));\n const restrictions = this.fMediator.send<INodeMoveRestrictions>(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));\n const parentNodes = this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(x));\n result.push({ node: x, parentNodes, ...restrictions }, ...this.getChildrenItemsToDrag(x, restrictions));\n });\n\n return result;\n }\n\n private getChildrenItemsToDrag(node: FNodeBase, restrictions: INodeMoveRestrictions): INodeWithDistanceRestrictions[] {\n return this.getChildrenNodes(node.fId).map((x) => ({ node: x, ...restrictions }));\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private getAllOutputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getOutputsForNode(item.node).map((x) => x.id));\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.node).map((x) => x.id));\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.fDraggableDataContext, node.node, node.min, node.max),\n ...(node.parentNodes || []).map((parent) => 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((dragHandler) => {\n this.fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler as NodeDragHandler, inputIds, result));\n this.fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler as NodeDragHandler, outputIds, result));\n });\n return result;\n }\n}\n","import { CreateMoveNodesDragModelFromSelectionExecution } from './create-move-nodes-drag-model-from-selection.execution';\nimport { GetNodeMoveRestrictionsExecution } from './domain/get-node-move-restrictions';\nimport { PutInputConnectionHandlersToArrayExecution } from './domain/put-input-connection-handlers-to-array';\nimport { PutOutputConnectionHandlersToArrayExecution } from './domain/put-output-connection-handlers-to-array';\n\nexport const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [\n\n GetNodeMoveRestrictionsExecution,\n\n PutInputConnectionHandlersToArrayExecution,\n\n PutOutputConnectionHandlersToArrayExecution,\n\n CreateMoveNodesDragModelFromSelectionExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { 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 { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\nimport { SelectAndUpdateNodeLayerRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationExecution implements IExecution<NodeMovePreparationRequest, 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: NodeMovePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const itemsToDrag: IDraggableItem[] = this.createDragModelFromSelection();\n\n this.initializeLineAlignment(this.filterNodesFromDraggableItems(itemsToDrag));\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.findNode(targetElement)!;\n }\n\n private createDragModelFromSelection(): IDraggableItem[] {\n return this.fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest());\n }\n\n private initializeLineAlignment(nodesToDrag: FNodeBase[]): void {\n this.fDraggableDataContext.fLineAlignment?.initialize(\n this.fComponentsStore.fNodes,\n nodesToDrag\n );\n }\n\n private filterNodesFromDraggableItems(items: IDraggableItem[]): FNodeBase[] {\n return items.filter((x) => x instanceof NodeDragHandler).map(x => (x as NodeDragHandler).fNode);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-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';\nimport { isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FValidatorRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationValidator implements IValidator<NodeMovePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): 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.findNode(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-drag-handle');\n }\n}\n","import { NodeMovePreparationExecution } from './node-move-preparation.execution';\nimport { NodeMovePreparationValidator } from './node-move-preparation.validator';\n\nexport const NODE_MOVE_PREPARATION_PROVIDERS = [\n\n NodeMovePreparationExecution,\n\n NodeMovePreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class IsConnectionUnderNodeRequest {\n\n}\n","import { 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/is-connection-under-node/is-connection-under-node.request';\n\n@Injectable()\n@FExecutionRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeExecution implements IExecution<NodeMoveFinalizeRequest, 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: NodeMoveFinalizeRequest): void {\n const difference = this.getDifferenceWithLineAlignment(\n this.getDifferenceBetweenPreparationAndFinalize(request.event.getPosition())\n );\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.move({ ...difference });\n x.complete?.();\n });\n this.fMediator.send(new IsConnectionUnderNodeRequest());\n this.fDraggableDataContext.fLineAlignment?.complete();\n }\n\n private getDifferenceBetweenPreparationAndFinalize(position: IPoint): Point {\n return Point.fromPoint(position).elementTransform(this.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getDifferenceWithLineAlignment(difference: IPoint): IPoint {\n const intersection = this.fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);\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","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragHandler } from '../node.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeValidator implements IValidator<NodeMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) => x instanceof NodeDragHandler);\n }\n}\n","import { NodeMoveFinalizeExecution } from './node-move-finalize.execution';\nimport { NodeMoveFinalizeValidator } from './node-move-finalize.validator';\n\nexport const NODE_MOVE_FINALIZE_PROVIDERS = [\n\n NodeMoveFinalizeExecution,\n\n NodeMoveFinalizeValidator,\n];\n","import { CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS } from './create-move-nodes-drag-model-from-selection';\nimport { NODE_MOVE_FINALIZE_PROVIDERS } from './node-move-finalize';\nimport { NODE_MOVE_PREPARATION_PROVIDERS } from './node-move-preparation';\n\nexport const NODE_PROVIDERS = [\n\n ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,\n\n ...NODE_MOVE_FINALIZE_PROVIDERS,\n\n ...NODE_MOVE_PREPARATION_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(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType]);\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';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\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 { GetNodePaddingRequest, GetNormalizedNodeRectRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } 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,\n this.getNodePadding(request.fNode, request.rect)\n ) : null;\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private normalizeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\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 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 } 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';\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 childRect = this.fMediator.send<IRect | null>(new GetNormalizedChildrenNodesRectRequest(request.fNode, request.rect));\n const parentRect = this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(request.fNode));\n\n return {\n parentRect,\n childRect,\n }\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 { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\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 this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport { GetNormalizedNodeRectRequest } from '../domain';\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';\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 constructor(\n private fMediator: FMediator,\n public fNode: FNodeBase,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n\n public initialize(): void {\n this.originalRect = this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(this.fNode));\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 move(difference: IPoint): void {\n const changedRect = this.changePosition(difference, this.changeSize(difference));\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): 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 complete(): 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 { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeValidator implements IValidator<NodeResizeFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof NodeResizeDragHandler\n );\n }\n}\n","import { NodeResizeFinalizeExecution } from './node-resize-finalize.execution';\nimport { NodeResizeFinalizeValidator } from './node-resize-finalize.validator';\n\nexport const NODE_RESIZE_FINALIZE_PROVIDERS = [\n\n NodeResizeFinalizeExecution,\n\n NodeResizeFinalizeValidator,\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.findNode(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.findNode(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';\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 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 getSelectableItem(event: IPointerEvent): ICanChangeSelection | undefined {\n return this.fComponentsStore.findNode(event.targetElement) || this.getConnectionHandler(event.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 }\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 { Injectable } from '@angular/core';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(SingleSelectRequest)\nexport class SingleSelectValidator implements IValidator<SingleSelectRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SingleSelectRequest): boolean {\n return this.fComponentsStore.fFlow!.hostElement.contains(request.event.targetElement)\n && !this.fDraggableDataContext.draggableItems.length;\n }\n}\n","import { SingleSelectExecution } from './single-select.execution';\nimport { SingleSelectValidator } from './single-select.validator';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n SingleSelectExecution,\n\n SingleSelectValidator\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';\n\n@Directive()\nexport abstract class FDraggableBase extends DragAndDropBase {\n\n public abstract fSelectionChange: EventEmitter<FSelectionChangeEvent>;\n\n public abstract fCreateNode: EventEmitter<FCreateNodeEvent>;\n\n public abstract fReassignConnection: EventEmitter<FReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<FCreateConnectionEvent>;\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 { 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 { GetElementRectInFlowRequest } 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 this.emitEvent(\n this.getExternalItemElementsFromPoint(request.event.getPosition())\n );\n\n this.dragHandler.complete();\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 GetElementRectInFlowRequest(this.dragHandler.placeholder!));\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 initialize(): 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 move(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 complete(): void {\n this.fBrowser.document.body.removeChild(this.placeholder!);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\n\n\n@Injectable()\n@FValidatorRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeValidator implements IValidator<ExternalItemFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ExternalItemDragHandler\n );\n }\n}\n","import { ExternalItemFinalizeExecution } from './external-item-finalize.execution';\nimport { ExternalItemFinalizeValidator } from './external-item-finalize.validator';\n\nexport const EXTERNAL_ITEM_FINALIZE_PROVIDERS = [\n\n ExternalItemFinalizeExecution,\n\n ExternalItemFinalizeValidator,\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\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","import { EXTERNAL_ITEM_PREPARATION_PROVIDERS } from './external-item-preparation';\nimport { EXTERNAL_ITEM_FINALIZE_PROVIDERS } from './external-item-finalize';\n\nexport const F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS = [\n\n ...EXTERNAL_ITEM_FINALIZE_PROVIDERS,\n\n ...EXTERNAL_ITEM_PREPARATION_PROVIDERS,\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","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 { 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, ContentChildren,\n Directive,\n ElementRef,\n EventEmitter, Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit, Optional, Output, QueryList\n} from \"@angular/core\";\nimport { FDraggableBase } from './f-draggable-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from './f-draggable-data-context';\nimport { Subscription } from 'rxjs';\nimport { IPoint, Point } from '@foblex/2d';\nimport { NodeMoveFinalizeRequest, NodeMovePreparationRequest } 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 { EmitTransformChangesRequest, GetSelectionRequest } from '../domain';\nimport {\n ExternalItemFinalizeRequest,\n ExternalItemPreparationRequest,\n FCreateNodeEvent,\n isExternalItem\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';\n\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable'\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\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: EventEmitter<FSelectionChangeEvent> = new EventEmitter<FSelectionChangeEvent>();\n\n // @Output()\n // public override fConnectionIntersectNode: EventEmitter<ConnectionIntersectNodeEvent> = new EventEmitter<ConnectionIntersectNodeEvent>();\n\n @Output()\n public override fCreateNode: EventEmitter<FCreateNodeEvent> = new EventEmitter<FCreateNodeEvent>();\n\n @Output()\n public override fReassignConnection: EventEmitter<FReassignConnectionEvent> = new EventEmitter<FReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection: EventEmitter<FCreateConnectionEvent> = new EventEmitter<FCreateConnectionEvent>();\n\n @ContentChildren(F_DRAG_AND_DROP_PLUGIN, { descendants: true })\n private plugins!: QueryList<IFDragAndDropPlugin>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fDraggableDataContext: FDraggableDataContext,\n @Inject(NgZone) @Optional() ngZone: ICanRunOutsideAngular,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n super(ngZone);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fDraggable = this;\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this.fBrowser.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n this.fDraggableDataContext.reset();\n let result: boolean = event.isMouseLeftButton();\n\n this.plugins.forEach((p) => {\n p.onPointerDown?.(event);\n });\n\n this.fMediator.send<void>(new SingleSelectRequest(event));\n\n this.fMediator.send<void>(new ReassignConnectionPreparationRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionPreparationRequest(event));\n\n if (!result) {\n this.finalizeDragSequence();\n }\n return result;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n\n this.plugins.forEach((p) => {\n p.prepareDragSequence?.(event);\n });\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 CanvasMovePreparationRequest(event));\n\n this.fMediator.send<void>(new ExternalItemPreparationRequest(event));\n\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.initialize?.();\n });\n\n if (this.fDraggableDataContext.draggableItems.length > 0) {\n this.hostElement.classList.add('f-dragging');\n this.emitSelectionChangeEvent();\n }\n }\n\n protected override onSelect(event: Event): void {\n\n this.plugins.forEach((p) => {\n p.onSelect?.(event);\n });\n\n if (this.isTargetItemExternal(event)) {\n 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 public override onPointerMove(event: IPointerEvent): void {\n const pointerPositionInCanvas = Point.fromPoint(event.getPosition()).elementTransform(this.hostElement);\n const difference: IPoint = pointerPositionInCanvas.div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.move({ ...difference });\n });\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n\n this.plugins.forEach((p) => {\n p.onPointerUp?.(event);\n });\n\n this.fMediator.send<void>(new ReassignConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeResizeFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new CanvasMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new ExternalItemFinalizeRequest(event));\n\n this.hostElement.classList.remove('f-dragging');\n\n this.fDraggableDataContext.reset();\n }\n\n protected override finalizeDragSequence(): void {\n this.emitSelectionChangeEvent();\n }\n\n private emitSelectionChangeEvent(): void {\n if (\n !this.fDraggableDataContext.isSelectedChanged\n ) {\n return;\n }\n this.fSelectionChange.emit(this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest()));\n this.fDraggableDataContext.isSelectedChanged = false;\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n this.subscriptions$.unsubscribe();\n }\n}\n\n","export class FSelectionChangeEvent {\n\n constructor(\n public nodes: string[],\n public connections: string[],\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 { 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.complete?.();\n });\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 initialize(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');\n }\n\n public move(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 complete(): 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 { 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","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 { 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 { IRect, RectExtensions } from '@foblex/2d';\n\nexport function checkRectIsFinite(rect: IRect): IRect {\n if (!Number.isFinite(rect.width) || !Number.isFinite(rect.height) || !Number.isFinite(rect.x) || !Number.isFinite(rect.y)) {\n return RectExtensions.initialize(0, 0, 0, 0);\n }\n return rect;\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 { 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';\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","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.complete?.();\n });\n }\n}\n","export class GetCanBeSelectedItemsRequest {\n}\n","import { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { EmitTransformChangesRequest, ISelectableWithRect } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { GetCanBeSelectedItemsRequest } from '../../domain/get-can-be-selected-items/get-can-be-selected-items-request';\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: ISelectableWithRect[] = [];\n\n private selectedByMove: ICanChangeSelection[] = [];\n\n private get canvasPosition(): Point {\n return Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position).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 initialize(): 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 move(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 EmitTransformChangesRequest());\n }\n\n public complete(): 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, 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 public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator\n ) {\n super();\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';\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 { 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 GetSelectionRequest {\n\n}\n","import { GetSelectionRequest } from './get-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(GetSelectionRequest)\nexport class GetSelectionExecution implements IExecution<GetSelectionRequest, FSelectionChangeEvent> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(): FSelectionChangeEvent {\n\n let selectedNodes: string[] = [];\n let selectedConnections: string[] = [];\n\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n if (x.hostElement.classList.contains('f-node')) {\n selectedNodes.push(x.hostElement.dataset['fNodeId']!)\n } else {\n selectedConnections.push(x.hostElement.id);\n }\n });\n\n return new FSelectionChangeEvent(selectedNodes, selectedConnections);\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 { GetSelectionExecution } from './get-selection';\nimport { SelectExecution } from './select';\nimport { SelectAllExecution } from './select-all';\nimport {\n SelectAndUpdateNodeLayerExecution\n} from './select-and-update-node-layer/select-and-update-node-layer.execution';\n\nexport const F_SELECTION_FEATURES = [\n\n ClearSelectionExecution,\n\n GetSelectionExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution\n];\n","import { Injectable } from '@angular/core';\nimport { IRect, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { ISelectableWithRect } from './i-selectable-with-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 { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(GetCanBeSelectedItemsRequest)\nexport class GetCanBeSelectedItemsExecution implements IExecution<void, ISelectableWithRect[]> {\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 fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(): ISelectableWithRect[] {\n return [ ...this.getNodesWithRects(), ...this.getConnectionsWithRects() ].filter((x) => {\n return !this.fDraggableDataContext.selectedItems.includes(x.element);\n });\n }\n\n private getNodesWithRects(): ISelectableWithRect[] {\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 GetElementRectInFlowRequest(x.hostElement)),\n this.transform.scale\n )\n };\n });\n }\n\n private getConnectionsWithRects(): ISelectableWithRect[] {\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 GetElementRectInFlowRequest(x.boundingElement)),\n this.transform.scale\n )\n };\n });\n }\n}\n","import { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class GetConnectionLineRequest {\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}\n","import { GetConnectionLineRequest } from './get-connection-line.request';\nimport { Injectable } from '@angular/core';\nimport { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetIntersections, ILine, IPoint, IRect, IRoundedRect, Line, Point } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetConnectionLineRequest)\nexport class GetConnectionLineExecution implements IExecution<GetConnectionLineRequest, ILine> {\n\n private behaviorHandlers = {\n\n [ EFConnectionBehavior.FLOATING.toString() ]: this.floatingBehavior,\n\n [ EFConnectionBehavior.FIXED_CENTER.toString() ]: this.fixedCenterBehavior,\n\n [ EFConnectionBehavior.FIXED.toString() ]: this.fixedOutboundBehaviour,\n }\n\n public handle(payload: GetConnectionLineRequest): ILine {\n return this.behaviorHandlers[ payload.behavior ](payload);\n }\n\n private floatingBehavior(payload: GetConnectionLineRequest): ILine {\n const fromResult = GetIntersections.getRoundedRectIntersections(payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect)[ 0 ];\n const toResult = GetIntersections.getRoundedRectIntersections(payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect)[ 0 ];\n return new Line(\n fromResult ? fromResult : payload.outputRect.gravityCenter,\n toResult ? toResult : payload.inputRect.gravityCenter\n );\n }\n\n private fixedCenterBehavior(payload: GetConnectionLineRequest): ILine {\n return new Line(\n payload.outputRect.gravityCenter,\n payload.inputRect.gravityCenter\n );\n }\n\n private fixedOutboundBehaviour(payload: GetConnectionLineRequest): ILine {\n return new Line(\n positionFixedOutbound[ payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide ](payload.outputRect as IRoundedRect),\n positionFixedOutbound[ payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide ](payload.inputRect as IRoundedRect)\n );\n }\n}\n\nconst positionFixedOutbound = {\n [ EFConnectableSide.TOP ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.BOTTOM ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y + rect.height;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.LEFT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n [ EFConnectableSide.RIGHT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x + rect.width;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n};\n\n\n\n\n","export class GetFlowStateConnectionsRequest {\n\n}\n","import { 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';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateConnectionsRequest)\nexport class GetFlowStateConnectionsExecution implements IExecution<GetFlowStateConnectionsRequest, IFFlowStateConnection[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateConnectionsRequest): IFFlowStateConnection[] {\n return this.fComponentsStore.fConnections.map((x) => {\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}\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.id,\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.id,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n}\n","export class GetFlowStateRequest {\n}\n","import { GetFlowStateRequest } from './get-flow-state.request';\nimport { 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 constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\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 GetScaledNodeRectsWithFlowPositionRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { GetScaledNodeRectsWithFlowPositionRequest } from './get-scaled-node-rects-with-flow-position.request';\nimport { 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(GetScaledNodeRectsWithFlowPositionRequest)\nexport class GetScaledNodeRectsWithFlowPositionExecution implements IExecution<GetScaledNodeRectsWithFlowPositionRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetScaledNodeRectsWithFlowPositionRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => {\n const rect = RectExtensions.fromElement(x.hostElement);\n return RectExtensions.initialize(x.position.x, x.position.y, rect.width, rect.height);\n });\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","export class GetNodesRectRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { GetNodesRectRequest } from './get-nodes-rect.request';\nimport { 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(GetNodesRectRequest)\nexport class GetNodesRectExecution implements IExecution<GetNodesRectRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetNodesRectRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => RectExtensions.fromElement(x.hostElement));\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class GetPositionInFlowRequest {\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { GetPositionInFlowRequest } from './get-position-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetPositionInFlowRequest)\nexport class GetPositionInFlowExecution implements IExecution<GetPositionInFlowRequest, IPoint> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetPositionInFlowRequest): IPoint {\n return Point.fromPoint(request.position).elementTransform(this.flowHost)\n .sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n}\n","import { IRect, ITransformModel } from '@foblex/2d';\nimport { 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 { FDraggableDataContext, NodeDragHandler } from '../../f-draggable';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(IsConnectionUnderNodeRequest)\nexport class IsConnectionUnderNodeExecution implements IExecution<IsConnectionUnderNodeRequest, 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 // private getOutgoingConnectionsHandler: GetOutgoingConnectionsHandler,\n // private getIncomingConnectionsHandler: GetIncomingConnectionsHandler\n ) {\n }\n\n public handle(): void {\n\n const isValid = this.isValidRequest();\n if (!isValid) {\n return;\n }\n\n const fNode = (this.fDraggableDataContext.draggableItems[ 0 ] as NodeDragHandler).fNode;\n\n const outputsOfNode = this.getOutputsForNode(fNode);\n const inputsOfNode = this.getInputsForNode(fNode);\n\n const isCantBeConnectedByOutput = outputsOfNode.some((x) => !x.canBeConnected);\n\n const isCantBeConnectedByInput = this.fComponentsStore.fConnections.some((x) => {\n return inputsOfNode.find((input) => input.id === x.fInputId);\n });\n\n if (!isCantBeConnectedByInput && outputsOfNode.length && !isCantBeConnectedByOutput && inputsOfNode.length) {\n const output = outputsOfNode[ 0 ];\n const input = inputsOfNode[ 0 ];\n // const outgoingConnections = this.getOutgoingConnectionsHandler.handle([ output ]);\n // const incomingConnections = this.getIncomingConnectionsHandler.handle([ input ]);\n // if (outgoingConnections.length === 0 && incomingConnections.length === 0) {\n // const connections = this.findConnectionsUnderNode(fNode);\n // if (connections.length) {\n // //TODO: need to implement\n // }\n // }\n }\n }\n\n private isValidRequest(): boolean {\n const result =\n this.fDraggableDataContext.draggableItems.length === 1 &&\n this.fDraggableDataContext.draggableItems[ 0 ] instanceof NodeDragHandler;\n\n return result;\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private findConnectionsUnderNode(node: FNodeBase): FConnectionBase[] {\n const nodeRect = this.fMediator.send<IRect>(new GetElementRectInFlowRequest(node.hostElement));\n return this.fComponentsStore.fConnections.filter((x) => {\n // const intersection = [];// RectExtensions.intersectionWithVector(nodeRect, x.line.point1, x.line.point2, 0, 0, 0, 0);\n return ([]).length > 0\n });\n }\n}\n// @Injectable()\n// export class GetIncomingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(inputs: FConnectorBase[]): FConnectionBase[] {\n// const inputsIds = inputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return inputsIds.includes(x.fInputId);\n// })!;\n// }\n// }\n// @Injectable()\n// export class GetOutgoingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(outputs: FConnectorBase[]): FConnectionBase[] {\n// const outputsIds = outputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return outputsIds.includes(x.fOutputId);\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 { GetConnectionLineRequest } from '../get-connection-line';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { CreateConnectionMarkersRequest } from '../create-connection-markers';\nimport { IRoundedRect } from '@foblex/2d';\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.id === connection.fOutputId);\n const input = this.fComponentsStore.fInputs.find((x) => x.id === 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));\n this.fComponentsStore.fInputs.forEach((input) => input.setConnected(false));\n }\n\n private setupConnection(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): void {\n output.setConnected(true);\n input.setConnected(true);\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 const outputRect = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(output.hostElement));\n const inputRect = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(input.hostElement));\n return this.fMediator.send(new GetConnectionLineRequest(\n outputRect,\n inputRect,\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 ShowConnectionsAfterCalculationsRequest {\n}\n","import { Injectable } from '@angular/core';\nimport { ShowConnectionsAfterCalculationsRequest } from './show-connections-after-calculations-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(ShowConnectionsAfterCalculationsRequest)\nexport class ShowConnectionsAfterCalculationsExecution implements IExecution<ShowConnectionsAfterCalculationsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: ShowConnectionsAfterCalculationsRequest): void {\n this.fComponentsStore.fConnections.forEach((connection) => {\n connection.hostElement.style.display = 'unset';\n });\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 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","export class SubscribeOnTransformChangesRequest {\n\n}\n","import { SubscribeOnTransformChangesRequest } from './subscribe-on-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { merge, Observable } from 'rxjs';\nimport { FComponentsStore, FTransformStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(SubscribeOnTransformChangesRequest)\nexport class SubscribeOnTransformChangesExecution\n implements IExecution<SubscribeOnTransformChangesRequest, Observable<void>> {\n\n constructor(\n private fTransformStore: FTransformStore,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: SubscribeOnTransformChangesRequest): Observable<void> {\n return merge(\n this.fTransformStore.changes,\n this.fComponentsStore.componentsData$,\n this.fComponentsStore.componentsCount$\n );\n }\n}\n","export const F_CANVAS_ANIMATION_DURATION = 150;\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","import { GetConnectionLineExecution } from './get-connection-line';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { GetNodesRectExecution } from './get-nodes-rect';\nimport { GetElementRectInFlowExecution } from './get-element-rect-in-flow';\nimport {\n MoveFrontElementsBeforeTargetElementExecution,\n UpdateItemAndChildrenLayersExecution\n} from './update-item-and-children-layers';\nimport { GetPositionInFlowExecution } from './get-position-in-flow';\nimport { CreateConnectionMarkersExecution } from './create-connection-markers';\nimport { GetCanBeSelectedItemsExecution } from './get-can-be-selected-items';\nimport { IsConnectionUnderNodeExecution } from './is-connection-under-node';\nimport { GetScaledNodeRectsWithFlowPositionExecution } from './get-scaled-node-rects-with-flow-position';\nimport { EmitTransformChangesExecution } from './emit-transform-changes';\nimport { SubscribeOnTransformChangesExecution } from './subscribe-on-transform-changes';\nimport { SortItemLayersExecution, SortItemsByParentExecution, SortNodeLayersExecution } from './sort-item-layers';\nimport { GetDeepChildrenNodesAndGroupsExecution } from './get-deep-children-nodes-and-groups';\nimport { CreateRoundedRectFromElementExecution } from './create-rounded-rect-from-element';\nimport { GET_FLOW_STATE_PROVIDERS } from './get-flow-state';\nimport { ShowConnectionsAfterCalculationsExecution } from './show-connections-after-calculations';\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';\n\nexport const COMMON_PROVIDERS = [\n\n ...F_CANVAS_FEATURES,\n\n ...F_CONNECTION_FEATURES,\n\n ...F_BACKGROUND_FEATURES,\n\n CreateConnectionMarkersExecution,\n\n CreateRoundedRectFromElementExecution,\n\n EmitTransformChangesExecution,\n\n ...F_SELECTION_FEATURES,\n\n GetCanBeSelectedItemsExecution,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetConnectionLineExecution,\n\n GetElementRectInFlowExecution,\n\n ...GET_FLOW_STATE_PROVIDERS,\n\n GetScaledNodeRectsWithFlowPositionExecution,\n\n GetNodesRectExecution,\n\n GetPositionInFlowExecution,\n\n IsConnectionUnderNodeExecution,\n\n RedrawConnectionsExecution,\n\n ShowConnectionsAfterCalculationsExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n SubscribeOnTransformChangesExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n];\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\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 { Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { createSVGElement } from '../../domain';\nimport { BrowserService } from '@foblex/platform';\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, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n private _vColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set vColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _hColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set hColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _vSize: number = 20;\n\n @Input()\n public set vSize(value: number) {\n this._vSize = value;\n this._stateChanges.next();\n }\n\n private _hSize: number = 20;\n\n @Input()\n public set hSize(value: number) {\n this._hSize = value;\n this._stateChanges.next();\n }\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 elementReference: ElementRef<HTMLElement>,\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._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\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 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 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._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\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 { Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\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, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n\n private _color: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set color(value: string) {\n this._color = value;\n this._stateChanges.next();\n }\n\n private _radius: number = 20;\n private _scaledRadius: number = 20;\n\n @Input()\n public set radius(value: number) {\n this._radius = value;\n this._stateChanges.next();\n }\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 elementReference: ElementRef<HTMLElement>,\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._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\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 redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n this.redrawElement();\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._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\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 isBackgroundElement(element: HTMLElement | SVGElement): boolean;\n\n public abstract setTransform(transform: ITransformModel): void;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ContentChild,\n ElementRef, 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 { FComponentsStore } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { AddPatternToBackgroundRequest } 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 extends FBackgroundBase implements OnInit, AfterContentInit, OnDestroy {\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 constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fBackground = this;\n }\n\n public ngAfterContentInit(): void {\n this.fMediator.send(new AddPatternToBackgroundRequest(this.fBackgroundPattern!));\n }\n\n public override isBackgroundElement(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setTransform(transform: ITransformModel): void {\n this.fBackgroundPattern?.setTransform(transform);\n }\n\n public ngOnDestroy() {\n this.fComponentsStore.fBackground = undefined;\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 { FNodeBase } from '../f-node';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public abstract fCanvasChange: EventEmitter<FCanvasChangeEvent>;\n\n public abstract fNodes: FNodeBase[];\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, Input, 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 { FComponentsStore } from '../f-storage';\nimport { FNodeBase } from '../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport {\n CenterGroupOrNodeRequest,\n EmitTransformChangesRequest,\n F_CANVAS_ANIMATION_DURATION,\n FitToFlowRequest,\n InputCanvasPositionRequest,\n InputCanvasScaleRequest,\n ResetScaleAndCenterRequest, ResetScaleRequest, UpdateScaleRequest,\n} 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 {\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 fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\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 constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.fCanvas = this;\n }\n\n public override redraw(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transform: ${ TransformModelExtensions.toString(this.transform) }`);\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public override redrawWithAnimation(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transition: transform ${ F_CANVAS_ANIMATION_DURATION }ms ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n setTimeout(() => {\n this.redraw();\n }, F_CANVAS_ANIMATION_DURATION);\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","<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 { 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 { IRect } from '@foblex/2d';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\n/**\n * A class to find the nearest coordinate.\n */\nexport class NearestCoordinateFinder {\n\n\n private elements: IRect[];\n private target: IRect;\n\n /**\n * Constructor to initialize the NearestCoordinateFinder.\n * @param elements - The array of IRect elements.\n * @param target - The target IRect element.\n * @param alignThreshold - The threshold to align the elements.\n */\n constructor(elements: IRect[], target: IRect, private alignThreshold: number = 10) {\n this.elements = elements;\n this.target = target;\n }\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByX(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceLeftLeft = this.target.x - element.x;\n const distanceLeftRight = this.target.x - (element.x + element.width);\n const distanceCenterCenter = this.target.gravityCenter.x - element.gravityCenter.x;\n const distanceRightLeft = (this.target.x + this.target.width) - element.x;\n const distanceRightRight = (this.target.x + this.target.width) - (element.x + element.width);\n\n if (\n Math.abs(distanceLeftLeft) <= this.alignThreshold ||\n Math.abs(distanceLeftRight) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceRightLeft) <= this.alignThreshold ||\n Math.abs(distanceRightRight) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.x;\n }\n if (Math.abs(distanceLeftLeft) < Math.abs(minDistance)) {\n minDistance = distanceLeftLeft;\n nearest = element.x;\n }\n if (Math.abs(distanceRightRight) < Math.abs(minDistance)) {\n minDistance = distanceRightRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceLeftRight) < Math.abs(minDistance)) {\n minDistance = distanceLeftRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceRightLeft) < Math.abs(minDistance)) {\n minDistance = distanceRightLeft;\n nearest = element.x;\n }\n }\n }\n return { value: nearest, distance: minDistance };\n }\n\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByY(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceTopTop = this.target.y - element.y;\n const distanceTopBottom = this.target.y - (element.y + element.height);\n const distanceCenterCenter = this.target.gravityCenter.y - element.gravityCenter.y;\n const distanceBottomTop = (this.target.y + this.target.height) - element.y;\n const distanceBottomBottom = (this.target.y + this.target.height) - (element.y + element.height);\n\n if (\n Math.abs(distanceTopTop) <= this.alignThreshold ||\n Math.abs(distanceTopBottom) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceBottomTop) <= this.alignThreshold ||\n Math.abs(distanceBottomBottom) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.y;\n }\n if (Math.abs(distanceTopTop) < Math.abs(minDistance)) {\n minDistance = distanceTopTop;\n nearest = element.y;\n }\n if (Math.abs(distanceBottomBottom) < Math.abs(minDistance)) {\n minDistance = distanceBottomBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceTopBottom) < Math.abs(minDistance)) {\n minDistance = distanceTopBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceBottomTop) < Math.abs(minDistance)) {\n minDistance = distanceBottomTop;\n nearest = element.y;\n }\n }\n }\n\n return { value: nearest, distance: minDistance };\n }\n}\n\n","import { IPoint } from '@foblex/2d';\nimport { Directive, InjectionToken } from '@angular/core';\nimport { ILineAlignmentResult } from './domain';\nimport { FNodeBase } from '../f-node';\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 | SVGElement;\n\n public abstract initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void;\n\n public abstract findNearestCoordinate(difference: IPoint): ILineAlignmentResult;\n\n public abstract handle(difference: IPoint): void;\n\n public abstract complete(): void;\n}\n","import { Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { IPoint, IRect, ISize, ITransformModel, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { ILineAlignmentResult, LineService, NearestCoordinateFinder } from './domain';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from '../f-draggable';\nimport { FNodeBase } from '../f-node';\nimport { GetElementRectInFlowRequest } from '../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\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 extends FLineAlignmentBase implements OnInit {\n\n @Input()\n public fAlignThreshold: number = 10;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n private lineService: LineService;\n\n private size: ISize = SizeExtensions.initialize();\n\n private draggedNodeRect: IRect = RectExtensions.initialize();\n\n private rects: IRect[] = [];\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 elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n fBrowser: BrowserService\n ) {\n super();\n this.lineService = new LineService(fBrowser, this.hostElement);\n }\n\n public ngOnInit(): void {\n this.fDraggableDataContext.fLineAlignment = this;\n }\n\n public override initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void {\n this.size = this.flowHost.getBoundingClientRect();\n this.rects = [];\n const draggedNodeRects = currentNodes.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n this.draggedNodeRect = RectExtensions.union(draggedNodeRects) || RectExtensions.initialize();\n\n const allNodesExcludeCurrents = allNodes.filter((x) => {\n return !currentNodes.includes(x);\n });\n\n this.rects = allNodesExcludeCurrents.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n }\n\n public override handle(difference: IPoint): void {\n this.drawIntersectingLines(difference);\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 public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);\n const finder = new NearestCoordinateFinder(this.rects, rect, this.fAlignThreshold);\n\n return { xResult: finder.findNearestCoordinateByX(), yResult: finder.findNearestCoordinateByY() };\n }\n\n public override complete(): void {\n this.lineService.hideVerticalLine();\n this.lineService.hideHorizontalLine();\n }\n}\n","import { FLineAlignmentComponent } from './f-line-alignment.component';\n\nexport const F_LINE_ALIGNMENT_PROVIDERS = [\n FLineAlignmentComponent\n];\n","import {\n Directive, ElementRef, Input,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { checkRectIsFinite, FMinimapData } from './domain';\nimport { GetNodesRectRequest } from '../domain';\n\n@Directive({\n selector: 'svg[fMinimapFlow]'\n})\nexport class FMinimapFlowDirective {\n\n public model: FMinimapData;\n\n @Input()\n public fMinSize: number = 1000;\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGSVGElement>,\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore\n ) {\n this.model = new FMinimapData(this.hostElement);\n }\n\n public update(): void {\n const nodesRect = this.getProcessedNodesRect();\n const minimapRect = this.getMinimapRect();\n\n const scale = this.calculateViewScale(nodesRect, minimapRect);\n const viewBox = this.calculateViewBox(nodesRect, minimapRect, scale);\n this.model = new FMinimapData(this.hostElement, scale, viewBox);\n this.setViewBox(viewBox);\n }\n\n private getProcessedNodesRect(): IRect {\n const normalizedRect = this.normalizeRect(this.getNodesRect());\n return this.ensureMinimumSize(normalizedRect);\n }\n\n private getNodesRect(): IRect {\n const rect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize(0, 0, 0, 0);\n return RectExtensions.elementTransform(rect, this.flowHost)\n }\n\n private getMinimapRect(): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(this.hostElement), this.flowHost);\n }\n\n private normalizeRect(rect: IRect): IRect {\n return RectExtensions.div(rect, this.fComponentsStore.transform.scale);\n }\n\n private ensureMinimumSize(rect: IRect): IRect {\n return RectExtensions.initialize(\n rect.x - (Math.max(rect.width, this.fMinSize) - rect.width) / 2,\n rect.y - (Math.max(rect.height, this.fMinSize) - rect.height) / 2,\n Math.max(rect.width, this.fMinSize),\n Math.max(rect.height, this.fMinSize)\n );\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 private setViewBox(viewBox: IRect): void {\n viewBox = checkRectIsFinite(viewBox);\n this.hostElement.setAttribute('viewBox', `${ viewBox.x } ${ viewBox.y } ${ viewBox.width } ${ viewBox.height }`);\n }\n}\n","import {\n Directive, ElementRef,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport {\n IRect,\n RectExtensions\n} from '@foblex/2d';\nimport { FNodeBase, FNodeDirective } from '../f-node';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../domain';\nimport { checkRectIsFinite } from './domain';\n\n@Directive({\n selector: 'g[fMinimapCanvas]'\n})\nexport class FMinimapCanvasDirective {\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore.transform.scale;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public redraw(): void {\n this.clearCanvas();\n this.fComponentsStore.fNodes.forEach((x) => this.renderNode(x));\n }\n\n private clearCanvas(): void {\n this.hostElement.innerHTML = '';\n }\n\n private renderNode(node: FNodeBase): void {\n const element = createSVGElement('rect', this.fBrowser);\n this.configureNodeElement(element, node);\n this.hostElement.appendChild(element);\n }\n\n private configureNodeElement(element: SVGRectElement, node: FNodeBase): void {\n this.setElementAttributes(element, this.getNodeRect(node));\n this.applyClassList(element, node, node instanceof FNodeDirective);\n }\n\n private getNodeRect(node: FNodeBase): IRect {\n const nodeRectInFlow = RectExtensions.elementTransform(RectExtensions.fromElement(node.hostElement), this.flowHost);\n return RectExtensions.div(nodeRectInFlow, this.flowScale);\n }\n\n private setElementAttributes(element: SVGRectElement, rect: IRect): void {\n rect = checkRectIsFinite(rect);\n element.setAttribute('x', rect.x.toString());\n element.setAttribute('y', rect.y.toString());\n element.setAttribute('width', rect.width.toString());\n element.setAttribute('height', rect.height.toString());\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","import { Directive, ElementRef } from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { checkRectIsFinite } 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 public get hostElement(): SVGRectElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore!.transform!.scale!;\n }\n\n constructor(\n private elementReference: ElementRef<SVGRectElement>,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public update(): void {\n const viewBox = RectExtensions.div(RectExtensions.fromElement(this.fComponentsStore.flowHost), this.flowScale);\n this.setAttributes(viewBox);\n }\n\n private setAttributes(viewBox: IRect): void {\n viewBox = checkRectIsFinite(viewBox);\n this.hostElement.setAttribute('x', '0');\n this.hostElement.setAttribute('y', '0');\n this.hostElement.setAttribute('width', viewBox.width.toString());\n this.hostElement.setAttribute('height', viewBox.height.toString());\n }\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy, Component,\n ElementRef, Input, OnDestroy, ViewChild,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { SubscribeOnTransformChangesRequest } from '../domain';\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';\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, OnDestroy, IFDragAndDropPlugin {\n\n private subscriptions$: Subscription = new Subscription();\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 constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator\n ) {\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions$.add(this.subscribeOnTransformChanges());\n }\n\n private subscribeOnTransformChanges(): Subscription {\n return this.getTransformChanges().pipe(debounceTime(5)).subscribe(() => {\n this.fMinimapFlow.update();\n this.fMinimapView.update();\n this.fMinimapCanvas.redraw();\n });\n }\n\n private getTransformChanges(): Observable<void> {\n return this.fMediator.send<Observable<void>>(new SubscribeOnTransformChangesRequest());\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 public ngOnDestroy(): void {\n this.subscriptions$.unsubscribe();\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 fFlowId: string;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fLoaded: EventEmitter<void>;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter, Injector,\n Input, OnDestroy, OnInit, Output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport { Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport {\n ClearSelectionRequest,\n GetScaledNodeRectsWithFlowPositionRequest,\n GetPositionInFlowRequest,\n GetSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest,\n SelectRequest,\n SortItemLayersRequest,\n IFFlowState,\n GetFlowStateRequest\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n FDraggableDataContext, FSelectionChangeEvent\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport { FComponentsStore, FTransformStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { COMMON_PROVIDERS } from '../domain';\nimport { F_DRAGGABLE_PROVIDERS } from '../f-draggable';\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]': 'fFlowId',\n class: \"f-component f-flow\",\n },\n providers: [\n FMediator,\n FComponentsStore,\n FTransformStore,\n FDraggableDataContext,\n FConnectionFactory,\n ...COMMON_PROVIDERS,\n ...F_DRAGGABLE_PROVIDERS,\n\n { provide: F_FLOW, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n private subscription$: Subscription = new Subscription();\n\n @Input()\n public override fFlowId: 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 elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fFlow = this;\n }\n\n public ngAfterContentInit(): void {\n if (!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscription$.add(\n this.subscribeOnElementsChanges()\n );\n this.subscription$.add(\n this.subscribeOnComponentsCountChanges()\n );\n }\n\n private subscribeOnComponentsCountChanges(): Subscription {\n return this.fComponentsStore.componentsCount$.pipe(startWith(null), debounceTime(1)).subscribe(() => {\n this.fMediator.send(new SortItemLayersRequest());\n });\n }\n\n private subscribeOnElementsChanges(): Subscription {\n return this.fComponentsStore.componentsData$.pipe(startWith(null), debounceTime(1)).subscribe(() => {\n this.fMediator.send(new RedrawConnectionsRequest());\n\n if (!this.isLoaded) {\n this.isLoaded = true;\n this.fLoaded.emit();\n }\n });\n }\n\n public redraw(): void {\n this.fComponentsStore.componentDataChanged();\n }\n\n public reset(): void {\n this.isLoaded = false;\n }\n\n public getAllNodesRect(): IRect | null {\n return this.fMediator.send<IRect | null>(new GetScaledNodeRectsWithFlowPositionRequest());\n }\n\n public getSelection(): FSelectionChangeEvent {\n return this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest());\n }\n\n public getPositionInFlow(position: IPoint): IRect {\n return this.fMediator.send(new GetPositionInFlowRequest(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.subscription$.unsubscribe();\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 { InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../f-canvas';\nimport { FComponentsStore } from '../f-storage';\nimport { isNode } from '../f-node';\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 get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get fCanvas(): FCanvasBase {\n return this.fComponentsStore.fCanvas as FCanvasBase;\n }\n\n protected constructor(\n protected fComponentsStore: FComponentsStore\n ) {\n }\n\n protected toggleZoom(): void {\n if (this.isEnabled) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n private subscribe(): void {\n this.listeners();\n if (!this.flowHost) {\n return;\n }\n\n this.flowHost.addEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.addEventListener('dblclick', this.onDoubleClick.bind(this));\n this.listeners = () => {\n this.flowHost.removeEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.removeEventListener('dblclick', this.onDoubleClick.bind(this));\n };\n }\n\n public getScale(): number {\n return this.fCanvas.transform.scale || 1;\n }\n\n private onWheel(event: WheelEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.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.flowHost);\n\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redraw();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n private onDoubleClick(event: MouseEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.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.flowHost);\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.flowHost);\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 unsubscribe(): 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 { FComponentsStore } from '../f-storage';\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 constructor(\n fComponentsStore: FComponentsStore,\n ) {\n super(fComponentsStore);\n }\n\n public ngAfterViewInit(): void {\n super.toggleZoom();\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\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":["createSVGElement","i2.FComponentsStore","i1.FTransformStore","uniqueId","i1.FComponentsStore","i2","i1","i1.FDraggableDataContext","i2.FDraggableDataContext","MIXIN_BASE","i3","i1.FConnectionTextPathDirective","i1.FConnectionFactory","i4.FConnectionTextComponent","i5.FConnectionDragHandleComponent","i6.FConnectionGradientComponent","i7.FConnectionPathComponent","i8.FConnectionSelectionComponent","i4","i3.FConnectionBase","OFFSET","i3.FDraggableDataContext","i3.FExternalItemService","i1.FExternalItemService","i2.FMinimapCanvasDirective","i3.FMinimapViewDirective","i4.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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"}