@foblex/flow 1.2.1 → 1.2.3

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 (794) hide show
  1. package/common-behaviours/change-position.d.ts +2 -1
  2. package/common-behaviours/change-zoom/change-zoom.d.ts +1 -1
  3. package/common-behaviours/fit-to-parent/fit-to-parent.d.ts +1 -1
  4. package/common-behaviours/i-transformable.d.ts +4 -0
  5. package/common-behaviours/index.d.ts +1 -0
  6. package/common-behaviours/one-to-one-centering/one-to-one-centering.d.ts +1 -1
  7. package/components/f-flow/f-backgroud/domain/i-f-background-pattern.d.ts +6 -0
  8. package/components/f-flow/f-backgroud/domain/index.d.ts +1 -0
  9. package/components/f-flow/f-backgroud/domain/public-api.d.ts +1 -0
  10. package/{internal → components/f-flow}/f-backgroud/f-background-base.d.ts +4 -8
  11. package/components/f-flow/f-backgroud/f-background.component.d.ts +20 -0
  12. package/components/f-flow/f-backgroud/f-cell-pattern/f-cell-pattern.component.d.ts +31 -0
  13. package/components/f-flow/f-backgroud/f-cell-pattern/index.d.ts +1 -0
  14. package/components/f-flow/f-backgroud/f-cell-pattern/public-api.d.ts +1 -0
  15. package/components/f-flow/f-backgroud/index.d.ts +4 -0
  16. package/components/f-flow/f-backgroud/public-api.d.ts +3 -0
  17. package/{directives/f-containers/f-items-container/canvas-change.event.d.ts → components/f-flow/f-canvas/domain/f-canvas-change.event.d.ts} +1 -1
  18. package/components/f-flow/f-canvas/domain/index.d.ts +1 -0
  19. package/components/f-flow/f-canvas/domain/public-api.d.ts +1 -0
  20. package/{directives/f-containers/f-items-container/f-items-container-base.d.ts → components/f-flow/f-canvas/f-canvas-base.d.ts} +13 -12
  21. package/components/f-flow/f-canvas/f-canvas.component.d.ts +28 -0
  22. package/components/f-flow/f-canvas/f-zoom/f-zoom-base.d.ts +26 -0
  23. package/components/f-flow/f-canvas/f-zoom/f-zoom.directive.d.ts +17 -0
  24. package/components/f-flow/f-canvas/index.d.ts +4 -0
  25. package/components/f-flow/f-canvas/public-api.d.ts +3 -0
  26. package/components/f-flow/f-definitions/domain/i-connection-marker.d.ts +5 -0
  27. package/components/f-flow/f-definitions/f-definitions-base.d.ts +10 -0
  28. package/components/f-flow/f-definitions/f-definitions.component.d.ts +20 -0
  29. package/components/f-flow/f-definitions/f-markers/f-connection-marker-end-selected.directive.d.ts +13 -0
  30. package/components/f-flow/f-definitions/f-markers/f-connection-marker-end.directive.d.ts +14 -0
  31. package/components/f-flow/f-definitions/f-markers/f-connection-marker-start-selected.directive.d.ts +13 -0
  32. package/components/f-flow/f-definitions/f-markers/f-connection-marker-start.directive.d.ts +14 -0
  33. package/components/f-flow/f-definitions/f-markers/index.d.ts +4 -0
  34. package/components/f-flow/f-definitions/f-markers/public-api.d.ts +4 -0
  35. package/components/f-flow/f-definitions/index.d.ts +3 -0
  36. package/components/f-flow/f-definitions/public-api.d.ts +2 -0
  37. package/components/f-flow/f-flow-base.d.ts +5 -35
  38. package/components/f-flow/f-flow.component.d.ts +22 -32
  39. package/components/f-flow/f-parent.injection-token.d.ts +5 -0
  40. package/components/f-flow/index.d.ts +4 -0
  41. package/components/f-flow/public-api.d.ts +3 -0
  42. package/components/index.d.ts +0 -3
  43. package/components/public-api.d.ts +0 -3
  44. package/domain/errors.d.ts +3 -0
  45. package/domain/get-all-nodes-rect.handler.d.ts +10 -0
  46. package/domain/get-connection-vector/get-connection-vector.handler.d.ts +12 -0
  47. package/domain/get-connection-vector/get-connection-vector.request.d.ts +11 -0
  48. package/domain/get-connection-vector/index.d.ts +2 -0
  49. package/domain/get-connection.handler.d.ts +12 -0
  50. package/domain/get-connector-side-in-node/e-connector-side.d.ts +6 -0
  51. package/domain/get-connector-side-in-node/get-connector-side-in-node.handler.d.ts +5 -0
  52. package/domain/get-connector-side-in-node/index.d.ts +2 -0
  53. package/domain/get-element-rect-in-flow.handler.d.ts +12 -0
  54. package/domain/get-incoming-connections.handler.d.ts +13 -0
  55. package/domain/get-input-rect-in-flow.handler.d.ts +19 -0
  56. package/domain/get-outgoing-connections.handler.d.ts +13 -0
  57. package/domain/get-output-rect-in-flow.handler.d.ts +19 -0
  58. package/domain/index.d.ts +12 -0
  59. package/domain/providers.d.ts +10 -0
  60. package/domain/update-node-layer.handler.d.ts +12 -0
  61. package/esm2022/common-behaviours/change-position.mjs +1 -1
  62. package/esm2022/common-behaviours/change-zoom/change-zoom.mjs +1 -1
  63. package/esm2022/common-behaviours/fit-to-parent/fit-to-parent.mjs +1 -1
  64. package/esm2022/common-behaviours/i-transformable.mjs +2 -0
  65. package/esm2022/common-behaviours/index.mjs +2 -1
  66. package/esm2022/common-behaviours/one-to-one-centering/one-to-one-centering.mjs +1 -1
  67. package/esm2022/components/f-flow/f-backgroud/domain/i-f-background-pattern.mjs +3 -0
  68. package/esm2022/components/f-flow/f-backgroud/domain/index.mjs +2 -0
  69. package/esm2022/components/f-flow/f-backgroud/domain/public-api.mjs +2 -0
  70. package/esm2022/components/f-flow/f-backgroud/f-background-base.mjs +11 -0
  71. package/esm2022/components/f-flow/f-backgroud/f-background.component.mjs +60 -0
  72. package/esm2022/components/f-flow/f-backgroud/f-cell-pattern/f-cell-pattern.component.mjs +90 -0
  73. package/esm2022/components/f-flow/f-backgroud/f-cell-pattern/index.mjs +2 -0
  74. package/esm2022/components/f-flow/f-backgroud/f-cell-pattern/public-api.mjs +2 -0
  75. package/esm2022/components/f-flow/f-backgroud/index.mjs +5 -0
  76. package/esm2022/components/f-flow/f-backgroud/public-api.mjs +4 -0
  77. package/esm2022/components/f-flow/f-canvas/domain/f-canvas-change.event.mjs +7 -0
  78. package/esm2022/components/f-flow/f-canvas/domain/index.mjs +2 -0
  79. package/esm2022/components/f-flow/f-canvas/domain/public-api.mjs +2 -0
  80. package/esm2022/components/f-flow/f-canvas/f-canvas-base.mjs +26 -0
  81. package/esm2022/components/f-flow/f-canvas/f-canvas.component.mjs +91 -0
  82. package/esm2022/components/f-flow/f-canvas/f-zoom/f-zoom-base.mjs +94 -0
  83. package/esm2022/components/f-flow/f-canvas/f-zoom/f-zoom.directive.mjs +59 -0
  84. package/esm2022/components/f-flow/f-canvas/f-zoom/index.mjs +3 -0
  85. package/esm2022/components/f-flow/f-canvas/f-zoom/public-api.mjs +2 -0
  86. package/esm2022/components/f-flow/f-canvas/index.mjs +5 -0
  87. package/esm2022/components/f-flow/f-canvas/public-api.mjs +4 -0
  88. package/esm2022/components/f-flow/f-definitions/domain/i-connection-marker.mjs +3 -0
  89. package/esm2022/components/f-flow/f-definitions/f-definitions-base.mjs +11 -0
  90. package/esm2022/components/f-flow/f-definitions/f-definitions.component.mjs +73 -0
  91. package/esm2022/components/f-flow/f-definitions/f-markers/f-connection-marker-end-selected.directive.mjs +36 -0
  92. package/esm2022/components/f-flow/f-definitions/f-markers/f-connection-marker-end.directive.mjs +39 -0
  93. package/esm2022/components/f-flow/f-definitions/f-markers/f-connection-marker-start-selected.directive.mjs +36 -0
  94. package/esm2022/components/f-flow/f-definitions/f-markers/f-connection-marker-start.directive.mjs +39 -0
  95. package/esm2022/components/f-flow/f-definitions/f-markers/index.mjs +5 -0
  96. package/esm2022/components/f-flow/f-definitions/f-markers/public-api.mjs +5 -0
  97. package/esm2022/components/f-flow/f-definitions/index.mjs +4 -0
  98. package/esm2022/components/f-flow/f-definitions/public-api.mjs +3 -0
  99. package/esm2022/components/f-flow/f-flow-base.mjs +4 -72
  100. package/esm2022/components/f-flow/f-flow.component.mjs +98 -80
  101. package/esm2022/components/f-flow/f-parent.injection-token.mjs +3 -0
  102. package/esm2022/components/f-flow/index.mjs +5 -1
  103. package/esm2022/components/f-flow/public-api.mjs +4 -1
  104. package/esm2022/components/index.mjs +1 -4
  105. package/esm2022/components/public-api.mjs +1 -4
  106. package/esm2022/domain/errors.mjs +10 -0
  107. package/esm2022/domain/get-all-nodes-rect.handler.mjs +23 -0
  108. package/esm2022/domain/get-connection-vector/get-connection-vector.handler.mjs +72 -0
  109. package/esm2022/domain/get-connection-vector/get-connection-vector.request.mjs +10 -0
  110. package/esm2022/domain/get-connection-vector/index.mjs +3 -0
  111. package/esm2022/domain/get-connection.handler.mjs +21 -0
  112. package/esm2022/domain/get-connector-side-in-node/e-connector-side.mjs +8 -0
  113. package/esm2022/domain/get-connector-side-in-node/get-connector-side-in-node.handler.mjs +26 -0
  114. package/esm2022/domain/get-connector-side-in-node/index.mjs +3 -0
  115. package/esm2022/domain/get-element-rect-in-flow.handler.mjs +28 -0
  116. package/esm2022/domain/get-incoming-connections.handler.mjs +23 -0
  117. package/esm2022/domain/get-input-rect-in-flow.handler.mjs +25 -0
  118. package/esm2022/domain/get-outgoing-connections.handler.mjs +23 -0
  119. package/esm2022/domain/get-output-rect-in-flow.handler.mjs +25 -0
  120. package/esm2022/domain/index.mjs +13 -0
  121. package/esm2022/domain/providers.mjs +21 -0
  122. package/esm2022/domain/update-node-layer.handler.mjs +29 -0
  123. package/esm2022/f-components-store.mjs +68 -0
  124. package/esm2022/f-connection/common/cast-to-connection-behavior.mjs +9 -0
  125. package/esm2022/f-connection/common/cast-to-connection-type.mjs +9 -0
  126. package/esm2022/f-connection/common/e-connection-behavior.mjs +6 -0
  127. package/esm2022/f-connection/common/e-connection-type.mjs +7 -0
  128. package/esm2022/f-connection/common/f-connection-base.mjs +57 -0
  129. package/esm2022/f-connection/common/f-connection-identifiers.mjs +22 -0
  130. package/esm2022/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +62 -0
  131. package/esm2022/f-connection/common/f-connection-text/f-connection-text.component.mjs +66 -0
  132. package/esm2022/f-connection/common/f-connection-text/i-connection-text.mjs +3 -0
  133. package/esm2022/f-connection/common/f-connection-text/index.mjs +4 -0
  134. package/esm2022/f-connection/common/f-connection.injection-token.mjs +3 -0
  135. package/esm2022/f-connection/common/f-drag-handle/f-connection-drag-handle.component.mjs +30 -0
  136. package/esm2022/f-connection/common/f-drag-handle/index.mjs +2 -0
  137. package/esm2022/f-connection/common/f-gradient/f-connection-gradient.component.mjs +63 -0
  138. package/esm2022/f-connection/common/f-gradient/i-connection-gradient.mjs +3 -0
  139. package/esm2022/f-connection/common/f-gradient/index.mjs +3 -0
  140. package/esm2022/f-connection/common/f-path/f-connection-path.component.mjs +59 -0
  141. package/esm2022/f-connection/common/f-path/i-connection-path.mjs +3 -0
  142. package/esm2022/f-connection/common/f-path/index.mjs +3 -0
  143. package/esm2022/f-connection/common/f-selection/f-connection-selection.component.mjs +37 -0
  144. package/esm2022/f-connection/common/f-selection/index.mjs +2 -0
  145. package/esm2022/f-connection/common/i-has-connection-color.mjs +2 -0
  146. package/esm2022/f-connection/common/i-has-connection-from-to.mjs +2 -0
  147. package/esm2022/f-connection/common/i-has-connection-text.mjs +2 -0
  148. package/esm2022/f-connection/common/index.mjs +17 -0
  149. package/esm2022/f-connection/common/mixins/change-connection-selection.mixin.mjs +20 -0
  150. package/esm2022/f-connection/common/mixins/change-connection-visibility.mixin.mjs +14 -0
  151. package/esm2022/f-connection/common/mixins/index.mjs +3 -0
  152. package/esm2022/f-connection/common/path-constructor/bezier-path.mjs +7 -0
  153. package/esm2022/f-connection/common/path-constructor/i-path-constructor.mjs +2 -0
  154. package/esm2022/f-connection/common/path-constructor/index.mjs +6 -0
  155. package/esm2022/f-connection/common/path-constructor/path-constructor.mjs +14 -0
  156. package/esm2022/f-connection/common/path-constructor/segment-path/connector-side-point.mjs +9 -0
  157. package/esm2022/f-connection/common/path-constructor/segment-path/edge-center-calculator.mjs +10 -0
  158. package/esm2022/f-connection/common/path-constructor/segment-path/index.mjs +6 -0
  159. package/esm2022/f-connection/common/path-constructor/segment-path/path-bend.mjs +19 -0
  160. package/esm2022/f-connection/common/path-constructor/segment-path/point-utils.mjs +14 -0
  161. package/esm2022/f-connection/common/path-constructor/segment-path/segment-path.mjs +123 -0
  162. package/esm2022/f-connection/common/path-constructor/straight-path/index.mjs +2 -0
  163. package/esm2022/f-connection/common/path-constructor/straight-path/straight-path.mjs +9 -0
  164. package/esm2022/f-connection/f-connection/f-connection.component.mjs +96 -0
  165. package/esm2022/f-connection/f-connection/index.mjs +2 -0
  166. package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +90 -0
  167. package/esm2022/f-connection/f-connection-for-create/index.mjs +2 -0
  168. package/esm2022/f-connection/index.mjs +4 -0
  169. package/esm2022/f-connection/public-api.mjs +3 -0
  170. package/esm2022/f-draggable/canvas/canvas.drag-handler.mjs +20 -0
  171. package/esm2022/f-draggable/canvas/canvas.on-pointer-up.mjs +23 -0
  172. package/esm2022/f-draggable/canvas/canvas.prepare-drag-sequence.mjs +37 -0
  173. package/esm2022/f-draggable/canvas/index.mjs +5 -0
  174. package/esm2022/f-draggable/canvas/providers.mjs +7 -0
  175. package/esm2022/f-draggable/components/f-external-item/f-external-item-base.mjs +11 -0
  176. package/esm2022/f-draggable/components/f-external-item/f-external-item.directive.mjs +44 -0
  177. package/esm2022/f-draggable/components/f-external-item/f-external-item.service.mjs +28 -0
  178. package/esm2022/f-draggable/components/f-external-item/index.mjs +5 -0
  179. package/esm2022/f-draggable/components/f-external-item/is-external-item.mjs +7 -0
  180. package/esm2022/f-draggable/components/f-external-item/public-api.mjs +2 -0
  181. package/esm2022/f-draggable/components/f-line-alignment/domain/i-line-alignment-rect.mjs +2 -0
  182. package/esm2022/f-draggable/components/f-line-alignment/domain/i-line-alignment-result.mjs +2 -0
  183. package/esm2022/f-draggable/components/f-line-alignment/domain/i-nearest-coordinate-result.mjs +2 -0
  184. package/esm2022/f-draggable/components/f-line-alignment/domain/index.mjs +7 -0
  185. package/esm2022/f-draggable/components/f-line-alignment/domain/line-element.mjs +23 -0
  186. package/esm2022/f-draggable/components/f-line-alignment/domain/line-service.mjs +33 -0
  187. package/esm2022/f-draggable/components/f-line-alignment/domain/nearest-coordinate.mjs +100 -0
  188. package/esm2022/f-draggable/components/f-line-alignment/f-line-alignment-base.mjs +11 -0
  189. package/esm2022/f-draggable/components/f-line-alignment/f-line-alignment.component.mjs +90 -0
  190. package/esm2022/f-draggable/components/f-line-alignment/index.mjs +4 -0
  191. package/esm2022/f-draggable/components/f-line-alignment/public-api.mjs +2 -0
  192. package/esm2022/f-draggable/components/f-selection-area/domain/i-selection-area-rect.mjs +2 -0
  193. package/esm2022/f-draggable/components/f-selection-area/domain/index.mjs +2 -0
  194. package/esm2022/f-draggable/components/f-selection-area/f-selection-area-base.mjs +11 -0
  195. package/esm2022/f-draggable/components/f-selection-area/f-selection-area.component.mjs +44 -0
  196. package/esm2022/f-draggable/components/f-selection-area/index.mjs +4 -0
  197. package/esm2022/f-draggable/components/f-selection-area/public-api.mjs +2 -0
  198. package/esm2022/f-draggable/components/index.mjs +4 -0
  199. package/esm2022/f-draggable/components/public-api.mjs +4 -0
  200. package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +34 -0
  201. package/esm2022/f-draggable/connections/create-connection/create-connection.event.mjs +7 -0
  202. package/esm2022/f-draggable/connections/create-connection/create-connection.on-pointer-up.mjs +50 -0
  203. package/esm2022/f-draggable/connections/create-connection/create-connection.prepare-drag-sequence.mjs +86 -0
  204. package/esm2022/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.mjs +34 -0
  205. package/esm2022/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/index.mjs +2 -0
  206. package/esm2022/f-draggable/connections/create-connection/index.mjs +6 -0
  207. package/esm2022/f-draggable/connections/create-connection/public-api.mjs +2 -0
  208. package/esm2022/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.mjs +43 -0
  209. package/esm2022/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.mjs +7 -0
  210. package/esm2022/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.mjs +34 -0
  211. package/esm2022/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/index.mjs +2 -0
  212. package/esm2022/f-draggable/connections/find-inputs-under-pointer/index.mjs +5 -0
  213. package/esm2022/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/index.mjs +2 -0
  214. package/esm2022/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.mjs +25 -0
  215. package/esm2022/f-draggable/connections/index.mjs +5 -0
  216. package/esm2022/f-draggable/connections/providers.mjs +14 -0
  217. package/esm2022/f-draggable/connections/public-api.mjs +3 -0
  218. package/esm2022/f-draggable/connections/reassign-connection/index.mjs +5 -0
  219. package/esm2022/f-draggable/connections/reassign-connection/public-api.mjs +2 -0
  220. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +37 -0
  221. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.event.mjs +9 -0
  222. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.on-pointer-up.mjs +36 -0
  223. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.prepare-drag-sequence.mjs +52 -0
  224. package/esm2022/f-draggable/e-draggable-type.mjs +11 -0
  225. package/esm2022/f-draggable/external-item/create-node.event.mjs +7 -0
  226. package/esm2022/f-draggable/external-item/external-item.drag-handler.mjs +38 -0
  227. package/esm2022/f-draggable/external-item/external-item.on-pointer-up.mjs +42 -0
  228. package/esm2022/f-draggable/external-item/external-item.prepare-drag-sequence.mjs +41 -0
  229. package/esm2022/f-draggable/external-item/index.mjs +6 -0
  230. package/esm2022/f-draggable/external-item/providers.mjs +7 -0
  231. package/esm2022/f-draggable/external-item/public-api.mjs +2 -0
  232. package/esm2022/f-draggable/f-draggable-base.mjs +15 -0
  233. package/esm2022/f-draggable/f-draggable-data-context.mjs +22 -0
  234. package/esm2022/f-draggable/f-draggable.directive.mjs +104 -0
  235. package/esm2022/f-draggable/i-draggable-item.mjs +2 -0
  236. package/esm2022/f-draggable/index.mjs +13 -0
  237. package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +31 -0
  238. package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +31 -0
  239. package/esm2022/f-draggable/node/connection.drag-handler.mjs +29 -0
  240. package/esm2022/f-draggable/node/domain/is-connection-under-node/index.mjs +2 -0
  241. package/esm2022/f-draggable/node/domain/is-connection-under-node/is-connection-under-node.handler.mjs +70 -0
  242. package/esm2022/f-draggable/node/index.mjs +8 -0
  243. package/esm2022/f-draggable/node/node.drag-handler.mjs +21 -0
  244. package/esm2022/f-draggable/node/node.on-pointer-up.mjs +44 -0
  245. package/esm2022/f-draggable/node/node.prepare-drag-sequence.mjs +101 -0
  246. package/esm2022/f-draggable/node/providers.mjs +9 -0
  247. package/esm2022/f-draggable/public-api.mjs +5 -0
  248. package/esm2022/f-draggable/selection-area/get-can-be-selected-items/get-can-be-selected-items.handler.mjs +54 -0
  249. package/esm2022/f-draggable/selection-area/get-can-be-selected-items/i-selectable-with-rect.mjs +2 -0
  250. package/esm2022/f-draggable/selection-area/get-can-be-selected-items/index.mjs +3 -0
  251. package/esm2022/f-draggable/selection-area/index.mjs +6 -0
  252. package/esm2022/f-draggable/selection-area/providers.mjs +9 -0
  253. package/esm2022/f-draggable/selection-area/selection-area.drag-handle.mjs +49 -0
  254. package/esm2022/f-draggable/selection-area/selection-area.on-pointer-up.mjs +23 -0
  255. package/esm2022/f-draggable/selection-area/selection-area.prepare-drag-sequence.mjs +32 -0
  256. package/esm2022/f-draggable/single-select/index.mjs +3 -0
  257. package/esm2022/f-draggable/single-select/providers.mjs +5 -0
  258. package/esm2022/f-draggable/single-select/single-select.on-pointer-down.mjs +64 -0
  259. package/esm2022/f-flow.module.mjs +80 -42
  260. package/esm2022/f-node/f-connectors/f-connector-base.mjs +15 -0
  261. package/esm2022/f-node/f-connectors/f-node-input/f-node-input-base.mjs +19 -0
  262. package/esm2022/f-node/f-connectors/f-node-input/f-node-input.directive.mjs +83 -0
  263. package/esm2022/f-node/f-connectors/f-node-input/index.mjs +4 -0
  264. package/esm2022/f-node/f-connectors/f-node-input/is-node-input.mjs +4 -0
  265. package/esm2022/f-node/f-connectors/f-node-input/public-api.mjs +2 -0
  266. package/esm2022/f-node/f-connectors/f-node-outlet/f-node-outlet-base.mjs +23 -0
  267. package/esm2022/f-node/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +66 -0
  268. package/esm2022/f-node/f-connectors/f-node-outlet/index.mjs +4 -0
  269. package/esm2022/f-node/f-connectors/f-node-outlet/is-node-outlet.mjs +4 -0
  270. package/esm2022/f-node/f-connectors/f-node-outlet/public-api.mjs +2 -0
  271. package/esm2022/f-node/f-connectors/f-node-output/f-node-output-base.mjs +19 -0
  272. package/esm2022/f-node/f-connectors/f-node-output/f-node-output.directive.mjs +71 -0
  273. package/esm2022/f-node/f-connectors/f-node-output/index.mjs +4 -0
  274. package/esm2022/f-node/f-connectors/f-node-output/is-node-output.mjs +4 -0
  275. package/esm2022/f-node/f-connectors/f-node-output/public-api.mjs +2 -0
  276. package/esm2022/f-node/f-connectors/index.mjs +5 -0
  277. package/esm2022/f-node/f-connectors/public-api.mjs +4 -0
  278. package/esm2022/f-node/f-drag-handle/f-drag-handle.directive.mjs +55 -0
  279. package/esm2022/f-node/f-drag-handle/index.mjs +3 -0
  280. package/esm2022/f-node/f-drag-handle/is-drag-handle.mjs +20 -0
  281. package/esm2022/f-node/f-drag-handle/public-api.mjs +2 -0
  282. package/esm2022/f-node/f-node-base.mjs +33 -0
  283. package/esm2022/f-node/f-node.component.mjs +88 -0
  284. package/esm2022/f-node/f-resize-observer.mjs +16 -0
  285. package/esm2022/f-node/index.mjs +7 -0
  286. package/esm2022/f-node/is-node.mjs +4 -0
  287. package/esm2022/f-node/public-api.mjs +4 -0
  288. package/esm2022/get-flow-uid.mjs +7 -0
  289. package/esm2022/public-api.mjs +4 -3
  290. package/f-components-store.d.ts +36 -0
  291. package/f-connection/common/cast-to-connection-behavior.d.ts +2 -0
  292. package/f-connection/common/cast-to-connection-type.d.ts +2 -0
  293. package/f-connection/common/e-connection-behavior.d.ts +4 -0
  294. package/f-connection/common/e-connection-type.d.ts +5 -0
  295. package/f-connection/common/f-connection-base.d.ts +54 -0
  296. package/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +20 -0
  297. package/{components/f-connection → f-connection}/common/f-connection-text/f-connection-text.component.d.ts +10 -7
  298. package/f-connection/common/f-connection-text/i-connection-text.d.ts +6 -0
  299. package/{components/f-connection → f-connection}/common/f-connection-text/index.d.ts +1 -0
  300. package/f-connection/common/f-connection.injection-token.d.ts +2 -0
  301. package/f-connection/common/f-gradient/f-connection-gradient.component.d.ts +22 -0
  302. package/f-connection/common/f-gradient/i-connection-gradient.d.ts +7 -0
  303. package/{components/f-connection → f-connection}/common/f-gradient/index.d.ts +1 -0
  304. package/f-connection/common/f-path/f-connection-path.component.d.ts +20 -0
  305. package/f-connection/common/f-path/i-connection-path.d.ts +9 -0
  306. package/{components/f-connection → f-connection}/common/f-path/index.d.ts +1 -0
  307. package/{components/f-connection → f-connection}/common/f-selection/f-connection-selection.component.d.ts +4 -5
  308. package/f-connection/common/i-has-connection-color.d.ts +4 -0
  309. package/f-connection/common/i-has-connection-from-to.d.ts +4 -0
  310. package/f-connection/common/i-has-connection-text.d.ts +3 -0
  311. package/f-connection/common/index.d.ts +16 -0
  312. package/f-connection/common/mixins/change-connection-selection.mixin.d.ts +12 -0
  313. package/f-connection/common/mixins/change-connection-visibility.mixin.d.ts +10 -0
  314. package/f-connection/common/mixins/index.d.ts +2 -0
  315. package/f-connection/common/path-constructor/bezier-path.d.ts +6 -0
  316. package/f-connection/common/path-constructor/i-path-constructor.d.ts +12 -0
  317. package/f-connection/common/path-constructor/index.d.ts +5 -0
  318. package/f-connection/common/path-constructor/path-constructor.d.ts +8 -0
  319. package/f-connection/common/path-constructor/segment-path/connector-side-point.d.ts +6 -0
  320. package/f-connection/common/path-constructor/segment-path/edge-center-calculator.d.ts +3 -0
  321. package/f-connection/common/path-constructor/segment-path/index.d.ts +5 -0
  322. package/f-connection/common/path-constructor/segment-path/path-bend.d.ts +4 -0
  323. package/f-connection/common/path-constructor/segment-path/point-utils.d.ts +6 -0
  324. package/f-connection/common/path-constructor/segment-path/segment-path.d.ts +10 -0
  325. package/f-connection/common/path-constructor/straight-path/index.d.ts +1 -0
  326. package/f-connection/common/path-constructor/straight-path/straight-path.d.ts +6 -0
  327. package/f-connection/f-connection/f-connection.component.d.ts +35 -0
  328. package/{components/f-connection → f-connection}/f-connection/index.d.ts +0 -1
  329. package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +36 -0
  330. package/f-connection/f-connection-for-create/index.d.ts +1 -0
  331. package/{components/f-connection → f-connection}/index.d.ts +1 -1
  332. package/f-connection/public-api.d.ts +2 -0
  333. package/f-draggable/canvas/canvas.drag-handler.d.ts +13 -0
  334. package/f-draggable/canvas/canvas.on-pointer-up.d.ts +10 -0
  335. package/f-draggable/canvas/canvas.prepare-drag-sequence.d.ts +13 -0
  336. package/f-draggable/canvas/index.d.ts +4 -0
  337. package/f-draggable/canvas/providers.d.ts +3 -0
  338. package/f-draggable/components/f-line-alignment/domain/i-line-alignment-rect.d.ts +6 -0
  339. package/f-draggable/components/f-line-alignment/domain/index.d.ts +6 -0
  340. package/f-draggable/components/f-line-alignment/domain/line-element.d.ts +9 -0
  341. package/f-draggable/components/f-line-alignment/domain/line-service.d.ts +11 -0
  342. package/f-draggable/components/f-line-alignment/domain/nearest-coordinate.d.ts +25 -0
  343. package/f-draggable/components/f-line-alignment/f-line-alignment-base.d.ts +15 -0
  344. package/f-draggable/components/f-line-alignment/f-line-alignment.component.d.ts +31 -0
  345. package/f-draggable/components/f-line-alignment/index.d.ts +3 -0
  346. package/f-draggable/components/f-line-alignment/public-api.d.ts +1 -0
  347. package/f-draggable/components/f-selection-area/domain/i-selection-area-rect.d.ts +6 -0
  348. package/f-draggable/components/f-selection-area/domain/index.d.ts +1 -0
  349. package/f-draggable/components/f-selection-area/f-selection-area-base.d.ts +13 -0
  350. package/f-draggable/components/f-selection-area/f-selection-area.component.d.ts +17 -0
  351. package/f-draggable/components/f-selection-area/index.d.ts +3 -0
  352. package/f-draggable/components/f-selection-area/public-api.d.ts +1 -0
  353. package/f-draggable/components/index.d.ts +3 -0
  354. package/f-draggable/components/public-api.d.ts +3 -0
  355. package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +19 -0
  356. package/f-draggable/connections/create-connection/create-connection.on-pointer-up.d.ts +16 -0
  357. package/f-draggable/connections/create-connection/create-connection.prepare-drag-sequence.d.ts +22 -0
  358. package/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.d.ts +13 -0
  359. package/{directives/f-draggable → f-draggable}/connections/create-connection/find-first-can-be-connected-output-by-outlet/index.d.ts +0 -1
  360. package/f-draggable/connections/create-connection/index.d.ts +5 -0
  361. package/f-draggable/connections/create-connection/public-api.d.ts +1 -0
  362. package/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.d.ts +18 -0
  363. package/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.d.ts +8 -0
  364. package/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.d.ts +13 -0
  365. package/{directives/f-draggable → f-draggable}/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/index.d.ts +0 -1
  366. package/{directives/f-draggable → f-draggable}/connections/find-inputs-under-pointer/inputs-under-pointer/index.d.ts +0 -1
  367. package/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.d.ts +12 -0
  368. package/{directives/f-draggable → f-draggable}/connections/index.d.ts +1 -0
  369. package/f-draggable/connections/providers.d.ts +4 -0
  370. package/f-draggable/connections/public-api.d.ts +2 -0
  371. package/f-draggable/connections/reassign-connection/index.d.ts +4 -0
  372. package/f-draggable/connections/reassign-connection/public-api.d.ts +1 -0
  373. package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +20 -0
  374. package/f-draggable/connections/reassign-connection/reassign-connection.on-pointer-up.d.ts +15 -0
  375. package/f-draggable/connections/reassign-connection/reassign-connection.prepare-drag-sequence.d.ts +19 -0
  376. package/{directives/f-draggable → f-draggable}/e-draggable-type.d.ts +1 -2
  377. package/{directives/f-draggable/external-item/external-item-on-pointer-move/external-item-on-pointer-move.handler.d.ts → f-draggable/external-item/external-item.drag-handler.d.ts} +5 -4
  378. package/f-draggable/external-item/external-item.on-pointer-up.d.ts +16 -0
  379. package/f-draggable/external-item/external-item.prepare-drag-sequence.d.ts +16 -0
  380. package/f-draggable/external-item/index.d.ts +5 -0
  381. package/f-draggable/external-item/providers.d.ts +3 -0
  382. package/f-draggable/f-draggable-base.d.ts +16 -0
  383. package/f-draggable/f-draggable-data-context.d.ts +16 -0
  384. package/f-draggable/f-draggable.directive.d.ts +31 -0
  385. package/{directives/f-draggable → f-draggable}/i-draggable-item.d.ts +2 -2
  386. package/{directives/f-draggable → f-draggable}/index.d.ts +4 -5
  387. package/f-draggable/node/connection-source.drag-handler.d.ts +19 -0
  388. package/f-draggable/node/connection-target.drag-handler.d.ts +19 -0
  389. package/f-draggable/node/connection.drag-handler.d.ts +18 -0
  390. package/f-draggable/node/domain/is-connection-under-node/index.d.ts +1 -0
  391. package/f-draggable/node/domain/is-connection-under-node/is-connection-under-node.handler.d.ts +22 -0
  392. package/f-draggable/node/index.d.ts +7 -0
  393. package/f-draggable/node/node.drag-handler.d.ts +14 -0
  394. package/f-draggable/node/node.on-pointer-up.d.ts +16 -0
  395. package/f-draggable/node/node.prepare-drag-sequence.d.ts +24 -0
  396. package/f-draggable/node/providers.d.ts +4 -0
  397. package/{directives/f-draggable → f-draggable}/public-api.d.ts +1 -1
  398. package/f-draggable/selection-area/get-can-be-selected-items/get-can-be-selected-items.handler.d.ts +20 -0
  399. package/f-draggable/selection-area/get-can-be-selected-items/i-selectable-with-rect.d.ts +6 -0
  400. package/f-draggable/selection-area/get-can-be-selected-items/index.d.ts +2 -0
  401. package/f-draggable/selection-area/index.d.ts +5 -0
  402. package/f-draggable/selection-area/providers.d.ts +4 -0
  403. package/f-draggable/selection-area/selection-area.drag-handle.d.ts +19 -0
  404. package/f-draggable/selection-area/selection-area.on-pointer-up.d.ts +10 -0
  405. package/f-draggable/selection-area/selection-area.prepare-drag-sequence.d.ts +15 -0
  406. package/f-draggable/single-select/index.d.ts +2 -0
  407. package/f-draggable/single-select/providers.d.ts +2 -0
  408. package/f-draggable/single-select/single-select.on-pointer-down.d.ts +17 -0
  409. package/f-flow.module.d.ts +27 -17
  410. package/{components → f-node}/f-connectors/f-connector-base.d.ts +5 -3
  411. package/{components → f-node}/f-connectors/f-node-input/f-node-input-base.d.ts +1 -1
  412. package/f-node/f-connectors/f-node-input/f-node-input.directive.d.ts +25 -0
  413. package/{components → f-node}/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +5 -4
  414. package/f-node/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +21 -0
  415. package/{components → f-node}/f-connectors/f-node-output/f-node-output-base.d.ts +3 -3
  416. package/f-node/f-connectors/f-node-output/f-node-output.directive.d.ts +22 -0
  417. package/{components → f-node}/f-connectors/index.d.ts +0 -2
  418. package/{components/f-node → f-node}/f-drag-handle/f-drag-handle.directive.d.ts +2 -2
  419. package/{components/f-node → f-node}/f-node-base.d.ts +10 -9
  420. package/f-node/f-node.component.d.ts +28 -0
  421. package/f-node/f-resize-observer.d.ts +4 -0
  422. package/{components/f-node → f-node}/index.d.ts +2 -1
  423. package/{components/f-node → f-node}/public-api.d.ts +1 -1
  424. package/fesm2022/foblex-flow.mjs +3371 -2461
  425. package/fesm2022/foblex-flow.mjs.map +1 -1
  426. package/get-flow-uid.d.ts +4 -0
  427. package/package.json +2 -2
  428. package/public-api.d.ts +3 -2
  429. package/components/f-connection/common/f-connection-base.d.ts +0 -30
  430. package/components/f-connection/common/f-connection-common.module.d.ts +0 -13
  431. package/components/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +0 -17
  432. package/components/f-connection/common/f-gradient/f-connection-gradient.component.d.ts +0 -21
  433. package/components/f-connection/common/f-path/f-connection-path.component.d.ts +0 -21
  434. package/components/f-connection/common/get-connection-intersect.d.ts +0 -2
  435. package/components/f-connection/common/i-input-output-model.d.ts +0 -5
  436. package/components/f-connection/common/index.d.ts +0 -10
  437. package/components/f-connection/common/public-api.d.ts +0 -6
  438. package/components/f-connection/f-connection/f-connection.component.d.ts +0 -28
  439. package/components/f-connection/f-connection/f-connection.module.d.ts +0 -9
  440. package/components/f-connection/f-temp-connection/f-temp-connection.component.d.ts +0 -27
  441. package/components/f-connection/f-temp-connection/f-temp-connection.module.d.ts +0 -9
  442. package/components/f-connection/f-temp-connection/index.d.ts +0 -3
  443. package/components/f-connection/f-temp-connection/temp-connection-input-output-model.d.ts +0 -7
  444. package/components/f-connection/public-api.d.ts +0 -3
  445. package/components/f-connectors/f-node-input/f-node-input.directive.d.ts +0 -20
  446. package/components/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +0 -20
  447. package/components/f-connectors/f-node-output/f-node-output.directive.d.ts +0 -19
  448. package/components/f-connectors/f-out-connector-base.d.ts +0 -4
  449. package/components/f-connectors/get-element-rect-in-canvas.d.ts +0 -2
  450. package/components/f-flow/i-flow-connector-parent.d.ts +0 -7
  451. package/components/f-node/f-foreign-object/f-foreign-object-base.d.ts +0 -20
  452. package/components/f-node/f-foreign-object/f-foreign-object.component.d.ts +0 -16
  453. package/components/f-node/f-foreign-object/index.d.ts +0 -2
  454. package/components/f-node/f-foreign-object/public-api.d.ts +0 -1
  455. package/components/f-node/f-node.component.d.ts +0 -22
  456. package/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.handler.d.ts +0 -16
  457. package/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.request.d.ts +0 -5
  458. package/directives/f-connect-if-intersect/connect-if-intersect/index.d.ts +0 -2
  459. package/directives/f-connect-if-intersect/f-connect-if-intersect-base.d.ts +0 -11
  460. package/directives/f-connect-if-intersect/f-connect-if-intersect.directive.d.ts +0 -16
  461. package/directives/f-connect-if-intersect/index.d.ts +0 -3
  462. package/directives/f-connect-if-intersect/public-api.d.ts +0 -2
  463. package/directives/f-containers/f-connections-container/f-connections-container-base.d.ts +0 -18
  464. package/directives/f-containers/f-connections-container/f-connections-container.component.d.ts +0 -14
  465. package/directives/f-containers/f-connections-container/index.d.ts +0 -2
  466. package/directives/f-containers/f-connections-container/public-api.d.ts +0 -1
  467. package/directives/f-containers/f-items-container/f-items-container.directive.d.ts +0 -13
  468. package/directives/f-containers/f-items-container/index.d.ts +0 -3
  469. package/directives/f-containers/f-items-container/public-api.d.ts +0 -2
  470. package/directives/f-containers/f-nodes-container/f-nodes-container-base.d.ts +0 -18
  471. package/directives/f-containers/f-nodes-container/f-nodes-container.component.d.ts +0 -12
  472. package/directives/f-containers/f-nodes-container/index.d.ts +0 -2
  473. package/directives/f-containers/f-nodes-container/public-api.d.ts +0 -1
  474. package/directives/f-containers/index.d.ts +0 -3
  475. package/directives/f-containers/public-api.d.ts +0 -3
  476. package/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.handler.d.ts +0 -12
  477. package/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.request.d.ts +0 -5
  478. package/directives/f-draggable/canvas/canvas-on-pointer-down/index.d.ts +0 -2
  479. package/directives/f-draggable/canvas/canvas-on-pointer-move/canvas.on-pointer-move.d.ts +0 -13
  480. package/directives/f-draggable/canvas/canvas-on-pointer-move/index.d.ts +0 -1
  481. package/directives/f-draggable/canvas/index.d.ts +0 -2
  482. package/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection-on-pointer-down.request.d.ts +0 -6
  483. package/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection.on-pointer-down.d.ts +0 -14
  484. package/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/index.d.ts +0 -2
  485. package/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection-on-pointer-up.request.d.ts +0 -7
  486. package/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection.on-pointer-up.d.ts +0 -11
  487. package/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/index.d.ts +0 -2
  488. package/directives/f-draggable/connections/create-connection/create-connection.on-pointer-move.d.ts +0 -16
  489. package/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.d.ts +0 -8
  490. package/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.request.d.ts +0 -5
  491. package/directives/f-draggable/connections/create-connection/index.d.ts +0 -5
  492. package/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.d.ts +0 -9
  493. package/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.d.ts +0 -8
  494. package/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.d.ts +0 -8
  495. package/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.request.d.ts +0 -5
  496. package/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.d.ts +0 -8
  497. package/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.request.d.ts +0 -5
  498. package/directives/f-draggable/connections/public-api.d.ts +0 -2
  499. package/directives/f-draggable/connections/reassign-connection/index.d.ts +0 -4
  500. package/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/index.d.ts +0 -2
  501. package/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection-on-pointer-down.request.d.ts +0 -6
  502. package/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection.on-pointer-down.d.ts +0 -11
  503. package/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/index.d.ts +0 -1
  504. package/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/reassign-connection.on-pointer-move.d.ts +0 -17
  505. package/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/index.d.ts +0 -2
  506. package/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection-on-pointer-up.request.d.ts +0 -7
  507. package/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection.on-pointer-up.d.ts +0 -11
  508. package/directives/f-draggable/default-drag-handler/default-drag.handler.d.ts +0 -5
  509. package/directives/f-draggable/default-drag-handler/index.d.ts +0 -1
  510. package/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.handler.d.ts +0 -10
  511. package/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.request.d.ts +0 -5
  512. package/directives/f-draggable/external-item/external-item-on-pointer-down/index.d.ts +0 -2
  513. package/directives/f-draggable/external-item/external-item-on-pointer-move/index.d.ts +0 -1
  514. package/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.handler.d.ts +0 -11
  515. package/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.request.d.ts +0 -7
  516. package/directives/f-draggable/external-item/external-item-on-pointer-up/index.d.ts +0 -2
  517. package/directives/f-draggable/external-item/index.d.ts +0 -4
  518. package/directives/f-draggable/f-draggable-base.d.ts +0 -47
  519. package/directives/f-draggable/f-draggable.directive.d.ts +0 -23
  520. package/directives/f-draggable/f-draggable.module.d.ts +0 -9
  521. package/directives/f-draggable/f-draggable.service.d.ts +0 -13
  522. package/directives/f-draggable/i-drag-handler.d.ts +0 -9
  523. package/directives/f-draggable/node/index.d.ts +0 -3
  524. package/directives/f-draggable/node/node-on-pointer-down/index.d.ts +0 -2
  525. package/directives/f-draggable/node/node-on-pointer-down/node-on-pointer-down.request.d.ts +0 -9
  526. package/directives/f-draggable/node/node-on-pointer-down/node.on-pointer-down.d.ts +0 -17
  527. package/directives/f-draggable/node/node-on-pointer-move/f-connection-source.drag-handler.d.ts +0 -15
  528. package/directives/f-draggable/node/node-on-pointer-move/f-connection-target.drag-handler.d.ts +0 -15
  529. package/directives/f-draggable/node/node-on-pointer-move/f-connection.drag-handler.d.ts +0 -14
  530. package/directives/f-draggable/node/node-on-pointer-move/index.d.ts +0 -4
  531. package/directives/f-draggable/node/node-on-pointer-move/node.on-pointer-move.d.ts +0 -15
  532. package/directives/f-draggable/node/node-on-pointer-up/index.d.ts +0 -2
  533. package/directives/f-draggable/node/node-on-pointer-up/node-on-pointer-up.request.d.ts +0 -7
  534. package/directives/f-draggable/node/node-on-pointer-up/node.on-pointer-up.d.ts +0 -11
  535. package/directives/f-draggable/selection/index.d.ts +0 -3
  536. package/directives/f-draggable/selection/selection-on-pointer-down/index.d.ts +0 -2
  537. package/directives/f-draggable/selection/selection-on-pointer-down/selection-on-pointer-down.request.d.ts +0 -8
  538. package/directives/f-draggable/selection/selection-on-pointer-down/selection.on-pointer-down.d.ts +0 -12
  539. package/directives/f-draggable/selection/selection-on-pointer-move/index.d.ts +0 -1
  540. package/directives/f-draggable/selection/selection-on-pointer-move/selection.on-pointer-move.d.ts +0 -20
  541. package/directives/f-draggable/selection/selection-on-pointer-up/index.d.ts +0 -2
  542. package/directives/f-draggable/selection/selection-on-pointer-up/selection-on-pointer-up.request.d.ts +0 -9
  543. package/directives/f-draggable/selection/selection-on-pointer-up/selection.on-pointer-up.d.ts +0 -8
  544. package/directives/f-line-alignment/domain/find-nearest-coordinate-by-x.d.ts +0 -3
  545. package/directives/f-line-alignment/domain/find-nearest-coordinate-by-y.d.ts +0 -3
  546. package/directives/f-line-alignment/domain/index.d.ts +0 -4
  547. package/directives/f-line-alignment/f-line-alignment.directive.d.ts +0 -25
  548. package/directives/f-line-alignment/index.d.ts +0 -2
  549. package/directives/f-line-alignment/public-api.d.ts +0 -1
  550. package/directives/f-selection/f-selection.directive.d.ts +0 -15
  551. package/directives/f-selection/index.d.ts +0 -1
  552. package/directives/f-selection/public-api.d.ts +0 -1
  553. package/directives/f-zoom/f-zoom-base.d.ts +0 -24
  554. package/directives/f-zoom/f-zoom.directive.d.ts +0 -15
  555. package/directives/index.d.ts +0 -7
  556. package/directives/public-api.d.ts +0 -7
  557. package/esm2022/components/f-connection/common/f-connection-base.mjs +0 -32
  558. package/esm2022/components/f-connection/common/f-connection-common.module.mjs +0 -44
  559. package/esm2022/components/f-connection/common/f-connection-identifiers.mjs +0 -21
  560. package/esm2022/components/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +0 -38
  561. package/esm2022/components/f-connection/common/f-connection-text/f-connection-text.component.mjs +0 -55
  562. package/esm2022/components/f-connection/common/f-connection-text/index.mjs +0 -3
  563. package/esm2022/components/f-connection/common/f-drag-handle/f-connection-drag-handle.component.mjs +0 -30
  564. package/esm2022/components/f-connection/common/f-drag-handle/index.mjs +0 -2
  565. package/esm2022/components/f-connection/common/f-gradient/f-connection-gradient.component.mjs +0 -59
  566. package/esm2022/components/f-connection/common/f-gradient/index.mjs +0 -2
  567. package/esm2022/components/f-connection/common/f-path/f-connection-path.component.mjs +0 -58
  568. package/esm2022/components/f-connection/common/f-path/index.mjs +0 -2
  569. package/esm2022/components/f-connection/common/f-selection/f-connection-selection.component.mjs +0 -34
  570. package/esm2022/components/f-connection/common/f-selection/index.mjs +0 -2
  571. package/esm2022/components/f-connection/common/get-connection-intersect.mjs +0 -10
  572. package/esm2022/components/f-connection/common/i-input-output-model.mjs +0 -2
  573. package/esm2022/components/f-connection/common/index.mjs +0 -11
  574. package/esm2022/components/f-connection/common/public-api.mjs +0 -7
  575. package/esm2022/components/f-connection/f-connection/f-connection.component.mjs +0 -86
  576. package/esm2022/components/f-connection/f-connection/f-connection.module.mjs +0 -28
  577. package/esm2022/components/f-connection/f-connection/index.mjs +0 -3
  578. package/esm2022/components/f-connection/f-temp-connection/f-temp-connection.component.mjs +0 -61
  579. package/esm2022/components/f-connection/f-temp-connection/f-temp-connection.module.mjs +0 -28
  580. package/esm2022/components/f-connection/f-temp-connection/index.mjs +0 -4
  581. package/esm2022/components/f-connection/f-temp-connection/temp-connection-input-output-model.mjs +0 -7
  582. package/esm2022/components/f-connection/index.mjs +0 -4
  583. package/esm2022/components/f-connection/public-api.mjs +0 -4
  584. package/esm2022/components/f-connectors/f-connector-base.mjs +0 -14
  585. package/esm2022/components/f-connectors/f-node-input/f-node-input-base.mjs +0 -19
  586. package/esm2022/components/f-connectors/f-node-input/f-node-input.directive.mjs +0 -71
  587. package/esm2022/components/f-connectors/f-node-input/index.mjs +0 -4
  588. package/esm2022/components/f-connectors/f-node-input/is-node-input.mjs +0 -4
  589. package/esm2022/components/f-connectors/f-node-input/public-api.mjs +0 -2
  590. package/esm2022/components/f-connectors/f-node-outlet/f-node-outlet-base.mjs +0 -22
  591. package/esm2022/components/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +0 -69
  592. package/esm2022/components/f-connectors/f-node-outlet/index.mjs +0 -4
  593. package/esm2022/components/f-connectors/f-node-outlet/is-node-outlet.mjs +0 -4
  594. package/esm2022/components/f-connectors/f-node-outlet/public-api.mjs +0 -2
  595. package/esm2022/components/f-connectors/f-node-output/f-node-output-base.mjs +0 -19
  596. package/esm2022/components/f-connectors/f-node-output/f-node-output.directive.mjs +0 -67
  597. package/esm2022/components/f-connectors/f-node-output/index.mjs +0 -4
  598. package/esm2022/components/f-connectors/f-node-output/is-node-output.mjs +0 -4
  599. package/esm2022/components/f-connectors/f-node-output/public-api.mjs +0 -2
  600. package/esm2022/components/f-connectors/f-out-connector-base.mjs +0 -4
  601. package/esm2022/components/f-connectors/get-element-rect-in-canvas.mjs +0 -8
  602. package/esm2022/components/f-connectors/index.mjs +0 -7
  603. package/esm2022/components/f-connectors/public-api.mjs +0 -4
  604. package/esm2022/components/f-flow/i-flow-connector-parent.mjs +0 -3
  605. package/esm2022/components/f-node/f-drag-handle/f-drag-handle.directive.mjs +0 -54
  606. package/esm2022/components/f-node/f-drag-handle/index.mjs +0 -3
  607. package/esm2022/components/f-node/f-drag-handle/is-drag-handle.mjs +0 -20
  608. package/esm2022/components/f-node/f-drag-handle/public-api.mjs +0 -2
  609. package/esm2022/components/f-node/f-foreign-object/f-foreign-object-base.mjs +0 -44
  610. package/esm2022/components/f-node/f-foreign-object/f-foreign-object.component.mjs +0 -49
  611. package/esm2022/components/f-node/f-foreign-object/index.mjs +0 -3
  612. package/esm2022/components/f-node/f-foreign-object/public-api.mjs +0 -2
  613. package/esm2022/components/f-node/f-node-base.mjs +0 -33
  614. package/esm2022/components/f-node/f-node.component.mjs +0 -62
  615. package/esm2022/components/f-node/index.mjs +0 -6
  616. package/esm2022/components/f-node/is-node.mjs +0 -4
  617. package/esm2022/components/f-node/public-api.mjs +0 -4
  618. package/esm2022/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.handler.mjs +0 -55
  619. package/esm2022/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.request.mjs +0 -6
  620. package/esm2022/directives/f-connect-if-intersect/connect-if-intersect/index.mjs +0 -3
  621. package/esm2022/directives/f-connect-if-intersect/f-connect-if-intersect-base.mjs +0 -10
  622. package/esm2022/directives/f-connect-if-intersect/f-connect-if-intersect.directive.mjs +0 -51
  623. package/esm2022/directives/f-connect-if-intersect/index.mjs +0 -4
  624. package/esm2022/directives/f-connect-if-intersect/public-api.mjs +0 -3
  625. package/esm2022/directives/f-containers/f-connections-container/f-connections-container-base.mjs +0 -32
  626. package/esm2022/directives/f-containers/f-connections-container/f-connections-container.component.mjs +0 -30
  627. package/esm2022/directives/f-containers/f-connections-container/index.mjs +0 -3
  628. package/esm2022/directives/f-containers/f-connections-container/public-api.mjs +0 -2
  629. package/esm2022/directives/f-containers/f-items-container/canvas-change.event.mjs +0 -7
  630. package/esm2022/directives/f-containers/f-items-container/f-items-container-base.mjs +0 -45
  631. package/esm2022/directives/f-containers/f-items-container/f-items-container.directive.mjs +0 -48
  632. package/esm2022/directives/f-containers/f-items-container/index.mjs +0 -4
  633. package/esm2022/directives/f-containers/f-items-container/public-api.mjs +0 -3
  634. package/esm2022/directives/f-containers/f-nodes-container/f-nodes-container-base.mjs +0 -39
  635. package/esm2022/directives/f-containers/f-nodes-container/f-nodes-container.component.mjs +0 -25
  636. package/esm2022/directives/f-containers/f-nodes-container/index.mjs +0 -3
  637. package/esm2022/directives/f-containers/f-nodes-container/public-api.mjs +0 -2
  638. package/esm2022/directives/f-containers/index.mjs +0 -4
  639. package/esm2022/directives/f-containers/public-api.mjs +0 -4
  640. package/esm2022/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.handler.mjs +0 -24
  641. package/esm2022/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.request.mjs +0 -6
  642. package/esm2022/directives/f-draggable/canvas/canvas-on-pointer-down/index.mjs +0 -3
  643. package/esm2022/directives/f-draggable/canvas/canvas-on-pointer-move/canvas.on-pointer-move.mjs +0 -20
  644. package/esm2022/directives/f-draggable/canvas/canvas-on-pointer-move/index.mjs +0 -2
  645. package/esm2022/directives/f-draggable/canvas/index.mjs +0 -3
  646. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection-on-pointer-down.request.mjs +0 -7
  647. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection.on-pointer-down.mjs +0 -75
  648. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/index.mjs +0 -3
  649. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection-on-pointer-up.request.mjs +0 -7
  650. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection.on-pointer-up.mjs +0 -31
  651. package/esm2022/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/index.mjs +0 -3
  652. package/esm2022/directives/f-draggable/connections/create-connection/create-connection.event.mjs +0 -7
  653. package/esm2022/directives/f-draggable/connections/create-connection/create-connection.on-pointer-move.mjs +0 -28
  654. package/esm2022/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.mjs +0 -20
  655. package/esm2022/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.request.mjs +0 -6
  656. package/esm2022/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/index.mjs +0 -3
  657. package/esm2022/directives/f-draggable/connections/create-connection/index.mjs +0 -6
  658. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.mjs +0 -25
  659. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.mjs +0 -7
  660. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.mjs +0 -20
  661. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.request.mjs +0 -6
  662. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/index.mjs +0 -3
  663. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/index.mjs +0 -5
  664. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/index.mjs +0 -3
  665. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.mjs +0 -14
  666. package/esm2022/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.request.mjs +0 -6
  667. package/esm2022/directives/f-draggable/connections/index.mjs +0 -4
  668. package/esm2022/directives/f-draggable/connections/public-api.mjs +0 -3
  669. package/esm2022/directives/f-draggable/connections/reassign-connection/index.mjs +0 -5
  670. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-connection.event.mjs +0 -9
  671. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/index.mjs +0 -3
  672. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection-on-pointer-down.request.mjs +0 -7
  673. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection.on-pointer-down.mjs +0 -36
  674. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/index.mjs +0 -2
  675. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/reassign-connection.on-pointer-move.mjs +0 -31
  676. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/index.mjs +0 -3
  677. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection-on-pointer-up.request.mjs +0 -7
  678. package/esm2022/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection.on-pointer-up.mjs +0 -26
  679. package/esm2022/directives/f-draggable/default-drag-handler/default-drag.handler.mjs +0 -11
  680. package/esm2022/directives/f-draggable/default-drag-handler/index.mjs +0 -2
  681. package/esm2022/directives/f-draggable/e-draggable-type.mjs +0 -12
  682. package/esm2022/directives/f-draggable/external-item/create-node.event.mjs +0 -7
  683. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.handler.mjs +0 -28
  684. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.request.mjs +0 -6
  685. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-down/index.mjs +0 -3
  686. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-move/external-item-on-pointer-move.handler.mjs +0 -30
  687. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-move/index.mjs +0 -2
  688. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.handler.mjs +0 -26
  689. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.request.mjs +0 -7
  690. package/esm2022/directives/f-draggable/external-item/external-item-on-pointer-up/index.mjs +0 -3
  691. package/esm2022/directives/f-draggable/external-item/index.mjs +0 -5
  692. package/esm2022/directives/f-draggable/external-item/public-api.mjs +0 -2
  693. package/esm2022/directives/f-draggable/f-draggable-base.mjs +0 -103
  694. package/esm2022/directives/f-draggable/f-draggable.directive.mjs +0 -53
  695. package/esm2022/directives/f-draggable/f-draggable.module.mjs +0 -37
  696. package/esm2022/directives/f-draggable/f-draggable.service.mjs +0 -23
  697. package/esm2022/directives/f-draggable/i-drag-handler.mjs +0 -2
  698. package/esm2022/directives/f-draggable/i-draggable-item.mjs +0 -2
  699. package/esm2022/directives/f-draggable/index.mjs +0 -14
  700. package/esm2022/directives/f-draggable/node/index.mjs +0 -4
  701. package/esm2022/directives/f-draggable/node/node-on-pointer-down/index.mjs +0 -3
  702. package/esm2022/directives/f-draggable/node/node-on-pointer-down/node-on-pointer-down.request.mjs +0 -9
  703. package/esm2022/directives/f-draggable/node/node-on-pointer-down/node.on-pointer-down.mjs +0 -88
  704. package/esm2022/directives/f-draggable/node/node-on-pointer-move/f-connection-source.drag-handler.mjs +0 -24
  705. package/esm2022/directives/f-draggable/node/node-on-pointer-move/f-connection-target.drag-handler.mjs +0 -24
  706. package/esm2022/directives/f-draggable/node/node-on-pointer-move/f-connection.drag-handler.mjs +0 -22
  707. package/esm2022/directives/f-draggable/node/node-on-pointer-move/index.mjs +0 -5
  708. package/esm2022/directives/f-draggable/node/node-on-pointer-move/node.on-pointer-move.mjs +0 -23
  709. package/esm2022/directives/f-draggable/node/node-on-pointer-up/index.mjs +0 -3
  710. package/esm2022/directives/f-draggable/node/node-on-pointer-up/node-on-pointer-up.request.mjs +0 -7
  711. package/esm2022/directives/f-draggable/node/node-on-pointer-up/node.on-pointer-up.mjs +0 -28
  712. package/esm2022/directives/f-draggable/public-api.mjs +0 -5
  713. package/esm2022/directives/f-draggable/selection/index.mjs +0 -4
  714. package/esm2022/directives/f-draggable/selection/selection-on-pointer-down/index.mjs +0 -3
  715. package/esm2022/directives/f-draggable/selection/selection-on-pointer-down/selection-on-pointer-down.request.mjs +0 -8
  716. package/esm2022/directives/f-draggable/selection/selection-on-pointer-down/selection.on-pointer-down.mjs +0 -61
  717. package/esm2022/directives/f-draggable/selection/selection-on-pointer-move/index.mjs +0 -2
  718. package/esm2022/directives/f-draggable/selection/selection-on-pointer-move/selection.on-pointer-move.mjs +0 -57
  719. package/esm2022/directives/f-draggable/selection/selection-on-pointer-up/index.mjs +0 -3
  720. package/esm2022/directives/f-draggable/selection/selection-on-pointer-up/selection-on-pointer-up.request.mjs +0 -8
  721. package/esm2022/directives/f-draggable/selection/selection-on-pointer-up/selection.on-pointer-up.mjs +0 -22
  722. package/esm2022/directives/f-external-item/f-external-item-base.mjs +0 -11
  723. package/esm2022/directives/f-external-item/f-external-item.directive.mjs +0 -44
  724. package/esm2022/directives/f-external-item/f-external-item.service.mjs +0 -25
  725. package/esm2022/directives/f-external-item/index.mjs +0 -5
  726. package/esm2022/directives/f-external-item/is-external-item.mjs +0 -7
  727. package/esm2022/directives/f-external-item/public-api.mjs +0 -2
  728. package/esm2022/directives/f-line-alignment/domain/find-nearest-coordinate-by-x.mjs +0 -40
  729. package/esm2022/directives/f-line-alignment/domain/find-nearest-coordinate-by-y.mjs +0 -40
  730. package/esm2022/directives/f-line-alignment/domain/i-line-alignment-result.mjs +0 -2
  731. package/esm2022/directives/f-line-alignment/domain/i-nearest-coordinate-result.mjs +0 -2
  732. package/esm2022/directives/f-line-alignment/domain/index.mjs +0 -5
  733. package/esm2022/directives/f-line-alignment/f-line-alignment.directive.mjs +0 -107
  734. package/esm2022/directives/f-line-alignment/index.mjs +0 -3
  735. package/esm2022/directives/f-line-alignment/public-api.mjs +0 -2
  736. package/esm2022/directives/f-selection/f-selection.directive.mjs +0 -41
  737. package/esm2022/directives/f-selection/index.mjs +0 -2
  738. package/esm2022/directives/f-selection/public-api.mjs +0 -2
  739. package/esm2022/directives/f-zoom/f-zoom-base.mjs +0 -89
  740. package/esm2022/directives/f-zoom/f-zoom.directive.mjs +0 -57
  741. package/esm2022/directives/f-zoom/index.mjs +0 -3
  742. package/esm2022/directives/f-zoom/public-api.mjs +0 -2
  743. package/esm2022/directives/index.mjs +0 -8
  744. package/esm2022/directives/public-api.mjs +0 -8
  745. package/esm2022/i-selectable.mjs +0 -2
  746. package/esm2022/internal/f-backgroud/f-background-base.mjs +0 -25
  747. package/esm2022/internal/f-backgroud/f-background.directive.mjs +0 -24
  748. package/esm2022/internal/f-backgroud/index.mjs +0 -3
  749. package/esm2022/internal/f-canvas/f-canvas-base.mjs +0 -25
  750. package/esm2022/internal/f-canvas/f-canvas.directive.mjs +0 -19
  751. package/esm2022/internal/f-canvas/index.mjs +0 -3
  752. package/esm2022/internal/index.mjs +0 -3
  753. package/esm2022/tokens.mjs +0 -4
  754. package/i-selectable.d.ts +0 -7
  755. package/internal/f-backgroud/f-background.directive.d.ts +0 -9
  756. package/internal/f-backgroud/index.d.ts +0 -2
  757. package/internal/f-canvas/f-canvas-base.d.ts +0 -12
  758. package/internal/f-canvas/f-canvas.directive.d.ts +0 -8
  759. package/internal/f-canvas/index.d.ts +0 -2
  760. package/internal/index.d.ts +0 -2
  761. package/tokens.d.ts +0 -3
  762. /package/{directives → components/f-flow/f-canvas}/f-zoom/index.d.ts +0 -0
  763. /package/{directives → components/f-flow/f-canvas}/f-zoom/public-api.d.ts +0 -0
  764. /package/{components/f-connection → f-connection}/common/f-connection-identifiers.d.ts +0 -0
  765. /package/{components/f-connection → f-connection}/common/f-drag-handle/f-connection-drag-handle.component.d.ts +0 -0
  766. /package/{components/f-connection → f-connection}/common/f-drag-handle/index.d.ts +0 -0
  767. /package/{components/f-connection → f-connection}/common/f-selection/index.d.ts +0 -0
  768. /package/{directives → f-draggable/components}/f-external-item/f-external-item-base.d.ts +0 -0
  769. /package/{directives → f-draggable/components}/f-external-item/f-external-item.directive.d.ts +0 -0
  770. /package/{directives → f-draggable/components}/f-external-item/f-external-item.service.d.ts +0 -0
  771. /package/{directives → f-draggable/components}/f-external-item/index.d.ts +0 -0
  772. /package/{directives → f-draggable/components}/f-external-item/is-external-item.d.ts +0 -0
  773. /package/{directives → f-draggable/components}/f-external-item/public-api.d.ts +0 -0
  774. /package/{directives → f-draggable/components}/f-line-alignment/domain/i-line-alignment-result.d.ts +0 -0
  775. /package/{directives → f-draggable/components}/f-line-alignment/domain/i-nearest-coordinate-result.d.ts +0 -0
  776. /package/{directives/f-draggable → f-draggable}/connections/create-connection/create-connection.event.d.ts +0 -0
  777. /package/{directives/f-draggable → f-draggable}/connections/find-inputs-under-pointer/index.d.ts +0 -0
  778. /package/{directives/f-draggable → f-draggable}/connections/reassign-connection/reassign-connection.event.d.ts +0 -0
  779. /package/{directives/f-draggable → f-draggable}/external-item/create-node.event.d.ts +0 -0
  780. /package/{directives/f-draggable → f-draggable}/external-item/public-api.d.ts +0 -0
  781. /package/{components → f-node}/f-connectors/f-node-input/index.d.ts +0 -0
  782. /package/{components → f-node}/f-connectors/f-node-input/is-node-input.d.ts +0 -0
  783. /package/{components → f-node}/f-connectors/f-node-input/public-api.d.ts +0 -0
  784. /package/{components → f-node}/f-connectors/f-node-outlet/index.d.ts +0 -0
  785. /package/{components → f-node}/f-connectors/f-node-outlet/is-node-outlet.d.ts +0 -0
  786. /package/{components → f-node}/f-connectors/f-node-outlet/public-api.d.ts +0 -0
  787. /package/{components → f-node}/f-connectors/f-node-output/index.d.ts +0 -0
  788. /package/{components → f-node}/f-connectors/f-node-output/is-node-output.d.ts +0 -0
  789. /package/{components → f-node}/f-connectors/f-node-output/public-api.d.ts +0 -0
  790. /package/{components → f-node}/f-connectors/public-api.d.ts +0 -0
  791. /package/{components/f-node → f-node}/f-drag-handle/index.d.ts +0 -0
  792. /package/{components/f-node → f-node}/f-drag-handle/is-drag-handle.d.ts +0 -0
  793. /package/{components/f-node → f-node}/f-drag-handle/public-api.d.ts +0 -0
  794. /package/{components/f-node → f-node}/is-node.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"foblex-flow.mjs","sources":["../../../projects/f-flow/src/i-selectable.ts","../../../projects/f-flow/src/components/f-connection/common/f-connection-base.ts","../../../projects/f-flow/src/components/f-connection/common/f-connection-identifiers.ts","../../../projects/f-flow/src/components/f-connection/common/f-path/f-connection-path.component.ts","../../../projects/f-flow/src/components/f-connection/common/f-gradient/f-connection-gradient.component.ts","../../../projects/f-flow/src/components/f-connection/common/f-gradient/f-connection-gradient.component.html","../../../projects/f-flow/src/components/f-connection/common/f-connection-text/f-connection-text-path.directive.ts","../../../projects/f-flow/src/components/f-connection/common/f-connection-text/f-connection-text.component.ts","../../../projects/f-flow/src/components/f-connection/common/f-connection-text/f-connection-text.component.html","../../../projects/f-flow/src/components/f-connection/f-temp-connection/f-temp-connection.component.ts","../../../projects/f-flow/src/components/f-connection/f-temp-connection/f-temp-connection.component.html","../../../projects/f-flow/src/components/f-connection/f-temp-connection/temp-connection-input-output-model.ts","../../../projects/f-flow/src/components/f-connection/common/f-drag-handle/f-connection-drag-handle.component.ts","../../../projects/f-flow/src/components/f-connection/common/f-selection/f-connection-selection.component.ts","../../../projects/f-flow/src/components/f-connection/common/f-connection-common.module.ts","../../../projects/f-flow/src/components/f-connection/common/get-connection-intersect.ts","../../../projects/f-flow/src/components/f-connection/f-temp-connection/f-temp-connection.module.ts","../../../projects/f-flow/src/tokens.ts","../../../projects/f-flow/src/internal/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/internal/f-canvas/f-canvas.directive.ts","../../../projects/f-flow/src/internal/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/internal/f-backgroud/f-background.directive.ts","../../../projects/f-flow/src/components/f-connectors/get-element-rect-in-canvas.ts","../../../projects/f-flow/src/components/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/components/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/components/f-connectors/f-node-input/is-node-input.ts","../../../projects/f-flow/src/components/f-flow/i-flow-connector-parent.ts","../../../projects/f-flow/src/components/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/components/f-connectors/f-out-connector-base.ts","../../../projects/f-flow/src/components/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/components/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/components/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/components/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/components/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/components/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/components/f-node/f-node-base.ts","../../../projects/f-flow/src/components/f-node/f-drag-handle/f-drag-handle.directive.ts","../../../projects/f-flow/src/components/f-node/f-drag-handle/is-drag-handle.ts","../../../projects/f-flow/src/components/f-node/f-foreign-object/f-foreign-object-base.ts","../../../projects/f-flow/src/components/f-node/f-foreign-object/f-foreign-object.component.ts","../../../projects/f-flow/src/components/f-node/f-foreign-object/f-foreign-object.component.html","../../../projects/f-flow/src/components/f-node/f-node.component.ts","../../../projects/f-flow/src/components/f-node/f-node.component.html","../../../projects/f-flow/src/components/f-node/is-node.ts","../../../projects/f-flow/src/directives/f-containers/f-connections-container/f-connections-container-base.ts","../../../projects/f-flow/src/directives/f-containers/f-connections-container/f-connections-container.component.ts","../../../projects/f-flow/src/directives/f-containers/f-connections-container/f-connections-container.component.html","../../../projects/f-flow/src/common-behaviours/change-zoom/change-zoom.ts","../../../projects/f-flow/src/common-behaviours/fit-to-parent/fit-to-parent.ts","../../../projects/f-flow/src/common-behaviours/one-to-one-centering/one-to-one-centering.ts","../../../projects/f-flow/src/common-behaviours/change-position.ts","../../../projects/f-flow/src/directives/f-containers/f-items-container/canvas-change.event.ts","../../../projects/f-flow/src/directives/f-containers/f-items-container/f-items-container-base.ts","../../../projects/f-flow/src/directives/f-containers/f-items-container/f-items-container.directive.ts","../../../projects/f-flow/src/directives/f-containers/f-nodes-container/f-nodes-container-base.ts","../../../projects/f-flow/src/directives/f-containers/f-nodes-container/f-nodes-container.component.ts","../../../projects/f-flow/src/directives/f-containers/f-nodes-container/f-nodes-container.component.html","../../../projects/f-flow/src/directives/f-draggable/e-draggable-type.ts","../../../projects/f-flow/src/directives/f-draggable/canvas/canvas-on-pointer-move/canvas.on-pointer-move.ts","../../../projects/f-flow/src/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.handler.ts","../../../projects/f-flow/src/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection.on-pointer-move.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection.on-pointer-down.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection.event.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection.on-pointer-up.ts","../../../projects/f-flow/src/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection-on-pointer-up.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/reassign-connection.on-pointer-move.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection.on-pointer-down.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-connection.event.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection.on-pointer-up.ts","../../../projects/f-flow/src/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection-on-pointer-up.request.ts","../../../projects/f-flow/src/directives/f-draggable/default-drag-handler/default-drag.handler.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/directives/f-external-item/is-external-item.ts","../../../projects/f-flow/src/directives/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/directives/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/external-item-on-pointer-move/external-item-on-pointer-move.handler.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.handler.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/create-node.event.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.handler.ts","../../../projects/f-flow/src/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.request.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-down/node-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-move/f-connection.drag-handler.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-move/f-connection-source.drag-handler.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-move/f-connection-target.drag-handler.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-move/node.on-pointer-move.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-down/node.on-pointer-down.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-up/node.on-pointer-up.ts","../../../projects/f-flow/src/directives/f-draggable/node/node-on-pointer-up/node-on-pointer-up.request.ts","../../../projects/f-flow/src/directives/f-draggable/selection/selection-on-pointer-move/selection.on-pointer-move.ts","../../../projects/f-flow/src/directives/f-draggable/selection/selection-on-pointer-down/selection.on-pointer-down.ts","../../../projects/f-flow/src/directives/f-draggable/selection/selection-on-pointer-down/selection-on-pointer-down.request.ts","../../../projects/f-flow/src/directives/f-draggable/selection/selection-on-pointer-up/selection.on-pointer-up.ts","../../../projects/f-flow/src/directives/f-draggable/selection/selection-on-pointer-up/selection-on-pointer-up.request.ts","../../../projects/f-flow/src/directives/f-draggable/f-draggable.service.ts","../../../projects/f-flow/src/directives/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/directives/f-line-alignment/domain/find-nearest-coordinate-by-x.ts","../../../projects/f-flow/src/directives/f-line-alignment/domain/find-nearest-coordinate-by-y.ts","../../../projects/f-flow/src/directives/f-line-alignment/f-line-alignment.directive.ts","../../../projects/f-flow/src/directives/f-selection/f-selection.directive.ts","../../../projects/f-flow/src/directives/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/directives/f-draggable/f-draggable.module.ts","../../../projects/f-flow/src/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.handler.ts","../../../projects/f-flow/src/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.request.ts","../../../projects/f-flow/src/directives/f-connect-if-intersect/f-connect-if-intersect-base.ts","../../../projects/f-flow/src/directives/f-connect-if-intersect/f-connect-if-intersect.directive.ts","../../../projects/f-flow/src/directives/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/directives/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/components/f-flow/f-flow-base.ts","../../../projects/f-flow/src/components/f-flow/f-flow.component.ts","../../../projects/f-flow/src/components/f-flow/f-flow.component.html","../../../projects/f-flow/src/components/f-connection/f-connection/f-connection.component.ts","../../../projects/f-flow/src/components/f-connection/f-connection/f-connection.component.html","../../../projects/f-flow/src/components/f-connection/f-connection/f-connection.module.ts","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["export interface ISelectable {\n\n hostElement: HTMLElement | SVGElement;\n\n select(): void;\n\n deselect(): void;\n\n isSelected(): boolean;\n}\n\nexport const F_SELECTED_CLASS = 'f-selected';\n","import { Directive } from '@angular/core';\nimport { IHasHostElement, IVector, VectorExtensions } from '@foblex/core';\nimport { FNodeOutputBase } from '../../f-connectors';\nimport { IInputOutputModel } from './i-input-output-model';\nimport { F_SELECTED_CLASS, ISelectable } from '../../../i-selectable';\nimport { FConnectionPathComponent } from './f-path';\nimport { IHasStateChanges } from '../../../i-has-state-changes';\nimport { Subject } from 'rxjs';\n\n@Directive()\nexport abstract class FConnectionBase<TOutput = FNodeOutputBase> implements IHasHostElement, ISelectable, IHasStateChanges {\n\n public abstract id: any;\n\n public abstract hostElement: SVGGElement;\n\n public abstract outputId: any;\n\n public abstract inputId: any;\n\n public fromTo: IInputOutputModel<TOutput> | undefined;\n\n public abstract fPath: FConnectionPathComponent;\n\n public path: string = '';\n\n public vector: IVector = VectorExtensions.initialize();\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public initialize(): void {\n\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public abstract initializeDrag(): void;\n\n public abstract redraw(): void;\n\n public abstract setVector(vector: IVector): void;\n\n public abstract completeDrag(): void;\n\n public deselect(): void {\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n}\n","export const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return 'connection_text_' + connectionId;\n },\n connectionForSelectionId(connectionId: string): string {\n return 'connection_for_selection_' + connectionId;\n },\n connectionId(connectionId: string): string {\n return 'connection_' + connectionId;\n },\n gradientId(connectionId: string): string {\n return '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 {\n ChangeDetectionStrategy,\n Component, ElementRef, Input, OnInit\n} from \"@angular/core\";\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\nimport { ISelectable } from '../../../../i-selectable';\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.stroke]': 'linkToGradient',\n },\n})\nexport class FConnectionPathComponent implements IHasHostElement, ISelectable, OnInit {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n ) {\n }\n\n public ngOnInit(): 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(#connection-marker-start-selected)`);\n this.hostElement.setAttribute('marker-end', `url(#connection-marker-end-selected)`);\n }\n\n public deselect(): void {\n if (this.fromTo?.input) {\n this.hostElement.setAttribute('marker-start', `url(#connection-marker-start-${ this.fromTo?.output?.color })`);\n this.hostElement.setAttribute('marker-end', `url(#connection-marker-end-${ this.fromTo?.input?.color })`);\n } else {\n this.hostElement.setAttribute('marker-start', `url(#connection-marker-start)`);\n this.hostElement.setAttribute('marker-end', `url(#connection-marker-end)`);\n }\n }\n\n public isSelected(): boolean {\n return this.hostElement.getAttribute('marker-start') === `url(#connection-marker-start-selected)`\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ElementRef, Input\n} from \"@angular/core\";\nimport { IHasHostElement, IVector, Point } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\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})\nexport class FConnectionGradientComponent implements IHasHostElement, AfterContentInit {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get gradientId(): string {\n return F_CONNECTION_IDENTIFIERS.gradientId(\n this.fromTo?.output.id + this.fromTo?.input?.id\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 ) {\n }\n\n public ngAfterContentInit(): void {\n this.stop1Element.setAttribute('offset', '0%');\n this.stop2Element.setAttribute('offset', '100%');\n }\n\n private updateGradient(): void {\n this.setFromColor(this.fromTo?.output.color);\n this.setToColor(this.fromTo?.input?.color);\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(vector: IVector): void {\n const x: number = vector.point2.x - vector.point1.x;\n const y: number = vector.point2.y - vector.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 { Directive, ElementRef, Input, OnInit } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\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 @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get linkToConnection(): string {\n return F_CONNECTION_IDENTIFIERS.linkToConnection(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n ) {\n }\n\n public ngOnInit(): void {\n this.hostElement.setAttribute('startOffset', '50%');\n this.hostElement.setAttribute('text-anchor', `middle`);\n }\n\n public getBBox(): DOMRect {\n return this.hostElement.getBBox();\n }\n\n public setOffset(offset: number): void {\n this.hostElement.setAttribute('startOffset', offset.toString());\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Input, ViewChild\n} from \"@angular/core\";\nimport { IHasHostElement, IVector, PointExtensions } from '@foblex/core';\nimport { FConnectionTextPathDirective } from './f-connection-text-path.directive';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\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})\nexport class FConnectionTextComponent implements IHasHostElement {\n\n @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get textId(): string {\n return F_CONNECTION_IDENTIFIERS.textId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n @ViewChild(FConnectionTextPathDirective, { static: true })\n public textPathDirective!: FConnectionTextPathDirective;\n\n constructor(\n private elementReference: ElementRef<SVGTextElement>\n ) {\n }\n\n public redraw(vector: IVector): void {\n\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(vector);\n\n this.hostElement.setAttribute('dy', isTextReverse ? '15' : '-8');\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(vector, this.fromTo?.output.name || '');\n // this.textPathDirective.setOffset(startOffset);\n\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 static isTextReverse(vector: IVector): boolean {\n return vector.point1.x > vector.point2.x;\n }\n\n private static getTextStartOffset(vector: IVector, name: string): number {\n const symbolWidth: number = 8;\n const vectorLength: number = PointExtensions.hypotenuse(vector.point1, vector.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 [fromTo]=\"fromTo\">\n {{ fromTo?.output?.name }}\n </svg:textPath>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ElementRef, InjectionToken, ViewChild\n} from \"@angular/core\";\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\nimport { FConnectionPathComponent } from '../common/f-path';\nimport { FConnectionGradientComponent } from '../common/f-gradient';\nimport { FConnectionTextComponent } from '../common/f-connection-text';\nimport { IVector } from '@foblex/core';\n\nexport const F_TEMP_CONNECTION_COMPONENT = new InjectionToken<FConnectionBase>('F_TEMP_CONNECTION_COMPONENT');\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"g[fTempConnection]\",\n templateUrl: \"./f-temp-connection.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-temp-connection\"\n },\n providers: [\n { provide: F_TEMP_CONNECTION_COMPONENT, useExisting: FTempConnectionComponent }\n ],\n})\nexport class FTempConnectionComponent\n extends FConnectionBase<FNodeOutputBase | FNodeOutletBase> implements AfterViewInit {\n\n public override id: string = `f-temp-connection-${ uniqueId++ }`;\n\n public override outputId: any;\n\n public override inputId: any;\n\n @ViewChild(FConnectionPathComponent, { static: true })\n public override fPath!: FConnectionPathComponent;\n\n @ViewChild(FConnectionGradientComponent, { static: true })\n public fGradient!: FConnectionGradientComponent;\n\n @ViewChild(FConnectionTextComponent, { static: true })\n public fText!: FConnectionTextComponent;\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>\n ) {\n super();\n }\n\n public ngAfterViewInit(): void {\n this.hostElement.style.display = \"none\";\n }\n\n public initializeDrag(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public setVector(vector: IVector): void {\n this.vector = vector;\n this.path = `M${ vector.point1.x },${ vector.point1.y }L${ vector.point2.x + 0.0001 },${ vector.point2.y + 0.0001 }`;\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fGradient.redraw(this.vector);\n this.fText.redraw(this.vector);\n }\n\n public completeDrag(): void {\n this.hostElement.style.display = \"none\";\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:linearGradient fConnectionGradient [fromTo]=\"fromTo\"></svg:linearGradient>\n <svg:g>\n <svg:path f-connection-path stroke-dasharray=\"10,10\" [attr.d]=\"path\" [fromTo]=\"fromTo\"></svg:path>\n </svg:g>\n <svg:text f-connection-text [fromTo]=\"fromTo\"></svg:text>\n</ng-container>\n","import { IInputOutputModel } from '../common/i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../f-connectors';\n\nexport class TempConnectionInputOutputModel\n implements IInputOutputModel<FNodeOutputBase | FNodeOutletBase, null> {\n\n public input = null;\n\n public constructor(\n public output: FNodeOutputBase | FNodeOutletBase\n ) {\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef\n} from \"@angular/core\";\nimport { IHasHostElement, IPoint } from '@foblex/core';\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(point: IPoint): void {\n this.hostElement.setAttribute('cx', point.x.toString());\n this.hostElement.setAttribute('cy', point.y.toString());\n }\n}\n\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Input\n} from \"@angular/core\";\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IInputOutputModel } from '../i-input-output-model';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\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 @Input()\n public fromTo: IInputOutputModel<FNodeOutputBase | FNodeOutletBase> | undefined;\n\n public get connectionForSelectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(\n this.fromTo?.output.id + this.fromTo?.input?.id\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n ) {\n }\n\n public setPath(path: string) {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent, FConnectionTextPathDirective\n} from './index';\n\n@NgModule({\n declarations: [\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionSelectionComponent,\n ],\n imports: [\n CommonModule\n ],\n exports: [\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionSelectionComponent,\n ]\n})\nexport class FConnectionCommonModule {\n}\n","import { IRect, IVector, RectExtensions } from '@foblex/core';\n\nexport function getConnectionIntersect(fromRect: IRect, toRect: IRect): IVector {\n\n const fromResult = RectExtensions.intersectionWithVector(fromRect, fromRect.gravityCenter, toRect.gravityCenter);\n const toResult = RectExtensions.intersectionWithVector(toRect, fromRect.gravityCenter, toRect.gravityCenter);\n\n return {\n point1: fromResult ? fromResult[ 1 ] : fromRect.gravityCenter,\n point2: toResult ? toResult[ 0 ] : toRect.gravityCenter,\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FTempConnectionComponent } from './f-temp-connection.component';\nimport { FConnectionCommonModule } from '../common';\n\n@NgModule({\n declarations: [\n FTempConnectionComponent,\n ],\n imports: [\n CommonModule,\n FConnectionCommonModule\n ],\n exports: [\n FTempConnectionComponent,\n ]\n})\nexport class FTempConnectionModule {\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_CONNECT_IF_INTERSECT = new InjectionToken('F_CONNECT_IF_INTERSECT');\n\nexport const F_CONNECTION_COMPONENT = new InjectionToken('F_CONNECTION_COMPONENT');\n","import { Directive, ElementRef, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n protected constructor(\n private elementReference: ElementRef<SVGSVGElement>\n ) {\n this.initialize();\n }\n\n protected initialize(): void {\n this.hostElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'http://www.w3.org/2000/svg');\n this.hostElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');\n this.hostElement.setAttribute('version', '1.1');\n this.hostElement.setAttribute('baseProfile', 'full');\n this.hostElement.style.cssText = 'user-select:none; width:100%; height:100%;';\n }\n}\n","import {\n Directive, ElementRef\n} from \"@angular/core\";\nimport { F_CANVAS, FCanvasBase } from './f-canvas-base';\n\n@Directive({\n selector: \"svg[fCanvas]\",\n standalone: true,\n providers: [ { provide: F_CANVAS, useExisting: FCanvasDirective } ],\n})\nexport class FCanvasDirective extends FCanvasBase {\n\n constructor(\n elementReference: ElementRef<SVGSVGElement>\n ) {\n super(elementReference);\n }\n}\n","import { Directive, ElementRef, InjectionToken } from '@angular/core';\nimport { IHasHostElement, ITransformModel, TransformModelExtensions } from '@foblex/core';\nimport { FCanvasBase } from '../f-canvas';\n\nexport const F_BACKGROUND = new InjectionToken<FBackgroundBase>('F_BACKGROUND');\n\n@Directive()\nexport abstract class FBackgroundBase implements IHasHostElement {\n\n public transform: ITransformModel = TransformModelExtensions.default();\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n protected constructor(\n private elementReference: ElementRef<SVGGElement>,\n private fCanvas: FCanvasBase\n ) {\n console.log('FBackgroundBase');\n }\n\n public isBackgroundElement(element: HTMLElement | SVGElement): boolean {\n return this.hostElement === element || this.hostElement.contains(element) || this.fCanvas.hostElement.contains(element);\n }\n}\n","import {\n Directive, ElementRef, Inject\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { F_CANVAS, FCanvasBase } from '../f-canvas';\n\n@Directive({\n selector: \"g[fBackground]\",\n standalone: true,\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundDirective } ],\n})\nexport class FBackgroundDirective extends FBackgroundBase {\n\n constructor(\n elementReference: ElementRef<SVGGElement>,\n @Inject(F_CANVAS) fCanvas: FCanvasBase\n ) {\n super(elementReference, fCanvas);\n }\n}\n","import { IRect, ITransformModel, Point, RectExtensions, SizeExtensions } from '@foblex/core';\n\nexport function getElementRectInCanvas(element: HTMLElement | SVGElement, transform: ITransformModel, svgHost: SVGSVGElement): IRect {\n const rect = RectExtensions.fromElement(element);\n const position = Point.fromPoint(rect).matrixTransform(svgHost).sub(transform.scaledPosition).sub(transform.position).div(transform.scale);\n const size = SizeExtensions.initialize(rect.width / transform.scale, rect.height / transform.scale);\n return RectExtensions.initialize(position.x, position.y, size.width, size.height);\n}\n","import { Subject } from 'rxjs';\nimport { IHasHostElement, IRect, ITransformModel } from '@foblex/core';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { getElementRectInCanvas } from './get-element-rect-in-canvas';\n\nexport abstract class FConnectorBase implements IHasStateChanges, IHasHostElement {\n\n public abstract id: any;\n\n public abstract color: 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 getElementRectInCanvas(transform: ITransformModel, svgHost: SVGSVGElement): IRect {\n return getElementRectInCanvas(this.hostElement, transform, svgHost);\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_INPUT_DIRECTIVE = new InjectionToken<FNodeInputBase>('F_NODE_INPUT_DIRECTIVE');\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 isNodeInput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeInput]');\n}\n","import { FConnectorBase } from '../f-connectors';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_FLOW_CONNECTOR_PARENT = new InjectionToken('F_FLOW_CONNECTOR_PARENT');\n\nexport interface IFlowConnectorParent {\n\n addConnector(connector: FConnectorBase): void;\n\n removeConnector(connector: FConnectorBase): void;\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, Optional, SkipSelf } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { F_NODE_INPUT_DIRECTIVE, FNodeInputBase } from './f-node-input-base';\nimport { F_FLOW_CONNECTOR_PARENT, IFlowConnectorParent } from '../../f-flow/i-flow-connector-parent';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n host: {\n '[attr.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_DIRECTIVE, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnDestroy {\n\n @Input()\n public override id: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fNodeInputColor')\n public fNodeInputColor: string | undefined;\n\n public get color(): string {\n return this.fNodeInputColor || 'black';\n }\n\n @Input('fNodeInputMultiple')\n public override multiple: boolean = true;\n\n @Input('fNodeInputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.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 get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_FLOW_CONNECTOR_PARENT) @Optional() @SkipSelf() private _parentFlow?: IFlowConnectorParent,\n ) {\n super();\n this._parentFlow?.addConnector(this);\n }\n\n public ngOnDestroy(): void {\n this._parentFlow?.removeConnector(this);\n }\n}\n","import { FConnectorBase } from './f-connector-base';\n\nexport abstract class FOutConnectorBase extends FConnectorBase {\n\n public abstract name: string;\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FOutConnectorBase } from '../f-out-connector-base';\n\nexport const F_NODE_OUTLET_DIRECTIVE = new InjectionToken<FNodeOutletBase>('F_NODE_OUTLET_DIRECTIVE');\n\n@Directive()\nexport abstract class FNodeOutletBase extends FOutConnectorBase {\n\n public abstract isConnectionFromOutlet: boolean;\n\n\n private outputs: FOutConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled;\n }\n\n public setOutputs(outputs: FOutConnectorBase[]): 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, Optional, SkipSelf } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { F_NODE_OUTLET_DIRECTIVE, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_FLOW_CONNECTOR_PARENT, IFlowConnectorParent } from '../../f-flow/i-flow-connector-parent';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-node-outlet\",\n '[class.f-node-outlet-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_OUTLET_DIRECTIVE, useExisting: FNodeOutletDirective } ],\n})\nexport class FNodeOutletDirective extends FNodeOutletBase implements OnDestroy {\n\n @Input()\n public override id: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input('fNodeOutletColor')\n public override color: string = 'black';\n\n @Input()\n public override name: string = '';\n\n @Input('fNodeOutletDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.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()\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_FLOW_CONNECTOR_PARENT) @Optional() @SkipSelf() private _parentFlow?: IFlowConnectorParent,\n ) {\n super();\n this._parentFlow?.addConnector(this);\n }\n\n public ngOnDestroy(): void {\n this._parentFlow?.removeConnector(this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FOutConnectorBase } from '../f-out-connector-base';\n\nexport const F_NODE_OUTPUT_DIRECTIVE = new InjectionToken<FNodeOutputBase>('F_NODE_OUTPUT_DIRECTIVE');\n\n@Directive()\nexport abstract class FNodeOutputBase extends FOutConnectorBase {\n\n public isConnected: boolean = false;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && !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, Optional, SkipSelf } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT_DIRECTIVE } from './f-node-output-base';\nimport { F_FLOW_CONNECTOR_PARENT, IFlowConnectorParent } from '../../f-flow/i-flow-connector-parent';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-node-output\",\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-connected]': 'isConnected'\n },\n providers: [ { provide: F_NODE_OUTPUT_DIRECTIVE, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnDestroy {\n\n @Input()\n public override id: any = `f-node-output-${ uniqueId++ }`;\n\n @Input('fNodeOutputColor')\n public override color: string = 'black';\n\n @Input()\n public override name: string = '';\n\n @Input('fNodeOutputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.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 get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_FLOW_CONNECTOR_PARENT) @Optional() @SkipSelf() private _parentFlow?: IFlowConnectorParent,\n ) {\n super();\n this._parentFlow?.addConnector(this);\n }\n\n public ngOnDestroy(): void {\n this._parentFlow?.removeConnector(this);\n }\n}\n","import { EventEmitter, InjectionToken, QueryList } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IHasHostElement, IPoint, PointExtensions } from '@foblex/core';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { F_SELECTED_CLASS, ISelectable } from '../../i-selectable';\nimport { FDragHandleDirective } from './f-drag-handle';\nimport { FForeignObjectBase } from './f-foreign-object';\nimport { FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from '../f-connectors';\n\nexport const F_NODE_COMPONENT = new InjectionToken<FNodeBase>('F_NODE_COMPONENT');\n\nexport abstract class FNodeBase implements IHasStateChanges, ISelectable, IHasHostElement {\n\n public abstract id: any;\n\n public abstract handles: QueryList<FDragHandleDirective>;\n\n public abstract fForeignObject: FForeignObjectBase;\n\n public abstract hostElement: SVGGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n public abstract refresh(): void;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n this.hostElement.setAttribute('transform', 'translate(' + this.position.x + ',' + this.position.y + ')');\n }\n\n public deselect(): void {\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public completeDrag(): void {\n this.positionChange.emit(this.position)\n }\n}\n","import {\n Directive, ElementRef, Inject, InjectionToken, Input, OnDestroy, Optional, SkipSelf\n} from \"@angular/core\";\nimport { Subject } from 'rxjs';\nimport { BooleanExtensions, IHasHostElement } from '@foblex/core';\nimport { IHasStateChanges } from '../../../i-has-state-changes';\nimport { F_NODE_COMPONENT } from '../f-node-base';\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 '[class.f-drag-handle-disabled]': 'disabled'\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement, IHasStateChanges, OnDestroy {\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public _parentNode: {} | undefined;\n\n @Input('fDragHandleDisabled')\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.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 get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE_COMPONENT) @Optional() @SkipSelf() _parentNode?: any,\n ) {\n this._parentNode = _parentNode;\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","export function isNodeDragHandle(element: HTMLElement | SVGElement): boolean {\n const dragHandle = getClosestDragHandle(element);\n return !!dragHandle && !isElementOrParentExcluded(element);\n}\n\nfunction isElementOrParentExcluded(element: HTMLElement | SVGElement): boolean {\n const isContains = isElementContainsClass(element);\n const parentElement = (element.parentElement as HTMLElement);\n const dragHandle = getClosestDragHandle(parentElement);\n if (!isContains && !!dragHandle) {\n return isElementOrParentExcluded(parentElement);\n }\n return isContains;\n}\n\nfunction getClosestDragHandle(element: HTMLElement | SVGElement): HTMLElement {\n return element.closest('[fDragHandle]') as HTMLElement;\n}\n\nfunction isElementContainsClass(element: HTMLElement | SVGElement): boolean {\n return element.classList.contains('f-drag-handle-disabled');\n}\n","import {\n AfterViewInit, Directive, InjectionToken, OnDestroy\n} from '@angular/core';\nimport { debounceTime, startWith, Subject, Subscription } from 'rxjs';\nimport { FResizeObserver, IHasHostElement, ITransformModel, RectExtensions } from '@foblex/core';\nimport { IHasStateChanges } from '../../../i-has-state-changes';\n\nexport const F_FOREIGN_OBJECT_COMPONENT = new InjectionToken<FForeignObjectBase>('F_FOREIGN_OBJECT_COMPONENT');\n\n@Directive()\nexport abstract class FForeignObjectBase implements AfterViewInit, IHasStateChanges, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n public _parentNode: {} | undefined;\n\n public abstract hostElement: SVGForeignObjectElement;\n\n public stateChanges: Subject<void> = new Subject<void>();\n\n public abstract transform: ITransformModel;\n\n protected constructor(\n _parentNode?: any,\n ) {\n this._parentNode = _parentNode;\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n\n return new FResizeObserver(this.hostElement.firstChild as HTMLElement).pipe(startWith(null)).subscribe(() => {\n this.redraw();\n this.stateChanges.next();\n });\n }\n\n public redraw(): void {\n const element = this.hostElement.firstChild as HTMLElement;\n // console.log(element.style);\n // if (!element.style.display) {\n // throw new Error('Foreign Object content should be with style display');\n // }\n if (element && !!element.getBoundingClientRect) {\n const rect = RectExtensions.fromElement(element);\n const scale = this.transform.scale;\n this.hostElement.setAttribute(\"width\", `${ rect.width / scale }`);\n this.hostElement.setAttribute(\"height\", `${ rect.height / scale }`);\n }\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, Input, Optional, SkipSelf\n} from \"@angular/core\";\nimport {\n FForeignObjectBase, F_FOREIGN_OBJECT_COMPONENT\n} from './f-foreign-object-base';\nimport { FFlowComponent } from '../../f-flow';\nimport { ITransformModel } from '@foblex/core';\nimport { F_NODE_COMPONENT } from '../index';\n\n@Component({\n selector: \"foreignObject[fForeignObject]\",\n exportAs: \"fComponent\",\n templateUrl: \"./f-foreign-object.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-foreign-object f-component\",\n '[attr.width]': 'defaultWidth',\n '[attr.height]': 'defaultHeight'\n },\n providers: [\n { provide: F_FOREIGN_OBJECT_COMPONENT, useExisting: FForeignObjectComponent }\n ]\n})\nexport class FForeignObjectComponent extends FForeignObjectBase {\n\n @Input('fDefaultWidth')\n public defaultWidth: number = 100;\n\n @Input('fDefaultHeight')\n public defaultHeight: number = 100;\n\n public get hostElement(): SVGForeignObjectElement {\n return this.elementReference.nativeElement;\n }\n\n public get transform(): ITransformModel {\n return this.flow.transform;\n }\n\n constructor(\n private elementReference: ElementRef<SVGForeignObjectElement>,\n private flow: FFlowComponent,\n @Inject(F_NODE_COMPONENT) @Optional() @SkipSelf() _parentNode?: any,\n ) {\n super(_parentNode);\n this.hostElement.style.cssText = 'overflow:visible;';\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content></ng-content>\n</ng-container>\n","import {\n ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, EventEmitter,\n Input, OnDestroy, OnInit, Output, QueryList,\n} from \"@angular/core\";\nimport { IHasHostElement, IPoint, PointExtensions, PointInput } from '@foblex/core';\nimport {\n FNodeBase, F_NODE_COMPONENT\n} from './f-node-base';\nimport { F_DRAG_HANDLE, FDragHandleDirective } from './f-drag-handle';\nimport { F_FOREIGN_OBJECT_COMPONENT, FForeignObjectBase } from './f-foreign-object';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"g[fNode]\",\n exportAs: \"fComponent\",\n templateUrl: \"./f-node.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n class: \"f-node f-component\"\n },\n providers: [\n { provide: F_NODE_COMPONENT, useExisting: FNodeComponent }\n ]\n})\nexport class FNodeComponent extends FNodeBase implements OnInit, IHasHostElement, OnDestroy {\n\n @Input()\n public override id: any = `f-node-${ uniqueId++ }`;\n\n @ContentChildren(F_DRAG_HANDLE, { descendants: true })\n public override handles!: QueryList<FDragHandleDirective>;\n\n @ContentChild(F_FOREIGN_OBJECT_COMPONENT, { static: true })\n public override fForeignObject!: FForeignObjectBase;\n\n @Input('fNodePosition')\n public override set position(value: PointInput) {\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 public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n super.redraw();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content></ng-content>\n</ng-container>\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, InjectionToken, QueryList } from '@angular/core';\nimport { FConnectionBase } from '../../../components/f-connection/common/f-connection-base';\nimport { FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from '../../../components';\n\nexport const F_CONNECTIONS_CONTAINER: InjectionToken<FConnectionsContainerBase> = new InjectionToken<FConnectionsContainerBase>('F_CONNECTIONS_CONTAINER');\n\n@Directive()\nexport abstract class FConnectionsContainerBase implements IHasHostElement {\n\n public abstract hostElement: SVGGElement;\n\n public abstract fConnections: QueryList<FConnectionBase<FNodeOutputBase>>;\n\n public abstract fTempConnection: FConnectionBase<FNodeOutputBase | FNodeOutletBase>;\n\n public findConnectionWithElement(element: HTMLElement | SVGElement): FConnectionBase<FNodeOutputBase> | undefined {\n return this.fConnections.toArray().find((x) => {\n return x.isContains(element);\n });\n }\n\n public findOutgoingConnections(outputs: FNodeOutputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return findOutgoingConnections(this.fConnections.toArray(), outputs);\n }\n\n public findIncomingConnections(inputs: FNodeInputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return findIncomingConnections(this.fConnections.toArray(), inputs);\n }\n}\n\nexport function findIncomingConnections(allConnections: FConnectionBase<FNodeOutputBase>[], inputs: FNodeInputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return allConnections.filter((x) => {\n return inputs.includes(x.fromTo!.input);\n })!;\n}\n\nexport function findOutgoingConnections(allConnections: FConnectionBase<FNodeOutputBase>[], outputs: FNodeOutputBase[]): FConnectionBase<FNodeOutputBase>[] {\n return allConnections.filter((x) => {\n return outputs.includes(x.fromTo!.output);\n })!;\n}\n","import { Component, ContentChildren, ElementRef, QueryList, ViewChild } from \"@angular/core\";\nimport { F_CONNECTIONS_CONTAINER, FConnectionsContainerBase } from './f-connections-container-base';\nimport { FConnectionBase } from '../../../components/f-connection/common/f-connection-base';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../components';\nimport { F_TEMP_CONNECTION_COMPONENT } from '../../../components';\nimport { F_CONNECTION_COMPONENT } from '../../../tokens';\n\n@Component({\n selector: \"g[fConnectionsContainer]\",\n templateUrl: './f-connections-container.component.html',\n exportAs: 'fComponent',\n host: {\n 'class': 'f-connections-container'\n },\n providers: [ { provide: F_CONNECTIONS_CONTAINER, useExisting: FConnectionsContainerComponent } ],\n})\nexport class FConnectionsContainerComponent extends FConnectionsContainerBase {\n\n @ContentChildren(F_CONNECTION_COMPONENT, { descendants: true })\n public override fConnections!: QueryList<FConnectionBase<FNodeOutputBase>>;\n\n @ViewChild(F_TEMP_CONNECTION_COMPONENT, { static: true })\n public override fTempConnection!: FConnectionBase<FNodeOutputBase | FNodeOutletBase>;\n\n public override get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n ) {\n super();\n }\n}\n\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content select=\"[fConnection]\"></ng-content>\n <svg:g fTempConnection></svg:g>\n</ng-container>\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanChangeZoom } from './i-can-change-zoom';\nimport { IPoint, ITransformable, PointExtensions } from '@foblex/core';\n\ntype CanChangeZoomConstructor = Constructor<ICanChangeZoom> & AbstractConstructor<ICanChangeZoom>;\n\nexport function mixinChangeZoom<T extends AbstractConstructor<ITransformable>>(base: T): CanChangeZoomConstructor & T;\nexport function mixinChangeZoom<T extends Constructor<ITransformable>>(base: T): CanChangeZoomConstructor & T {\n return class extends base {\n\n public setZoom(scaleValue: number, toPosition: IPoint): void {\n if (scaleValue !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = toPosition.x - (toPosition.x - summaryPosition.x) * scaleValue / this.transform.scale;\n const newY = toPosition.y - (toPosition.y - summaryPosition.y) * scaleValue / this.transform.scale;\n\n this.transform.scale = scaleValue;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n\n public setScalePosition(value: IPoint): void {\n this.transform.scaledPosition = value;\n }\n\n public resetZoom(): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanFitToParent } from './i-can-fit-to-parent';\nimport { IPoint, IRect, ITransformable, PointExtensions } from '@foblex/core';\n\ntype CanFitToParentConstructor = Constructor<ICanFitToParent> & AbstractConstructor<ICanFitToParent>;\n\nexport function mixinFitToParent<T extends AbstractConstructor<ITransformable>>(base: T): CanFitToParentConstructor & T;\nexport function mixinFitToParent<T extends Constructor<ITransformable>>(base: T): CanFitToParentConstructor & T {\n return class extends base {\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = rect.width / this.transform.scale;\n const itemsContainerHeight = rect.height / this.transform.scale;\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, 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 constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanOneToOneCentering } from './i-can-one-to-one-centering';\nimport { IPoint, IRect, ITransformable, PointExtensions } from '@foblex/core';\n\ntype CanOneToOneCenteringConstructor = Constructor<ICanOneToOneCentering> & AbstractConstructor<ICanOneToOneCentering>;\n\nexport function mixinOneToOneCentering<T extends AbstractConstructor<ITransformable>>(base: T): CanOneToOneCenteringConstructor & T;\nexport function mixinOneToOneCentering<T extends Constructor<ITransformable>>(base: T): CanOneToOneCenteringConstructor & T {\n return class extends base {\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 const itemsContainerWidth = rect.width / this.transform.scale;\n const itemsContainerHeight = rect.height / this.transform.scale;\n this.transform.scale = 1;\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, 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 constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from './constructor';\nimport { IPoint, ITransformable, PointExtensions } from '@foblex/core';\n\nexport interface ICanChangePosition {\n\n setPosition(position: IPoint): void;\n\n getPosition(): IPoint;\n}\n\ntype CanChangePositionConstructor = Constructor<ICanChangePosition> & AbstractConstructor<ICanChangePosition>;\n\nexport function mixinChangePosition<T extends AbstractConstructor<ITransformable>>(base: T): CanChangePositionConstructor & T;\nexport function mixinChangePosition<T extends Constructor<ITransformable>>(base: T): CanChangePositionConstructor & T {\n return class extends base {\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = PointExtensions.copy(position);\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { IPoint } from '@foblex/core';\n\nexport class CanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import {\n IHasHostElement,\n ITransformModel, PointExtensions,\n TransformModelExtensions\n} from '@foblex/core';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport {\n ICanChangePosition, ICanChangeZoom, ICanFitToParent, ICanOneToOneCentering,\n mixinChangePosition,\n mixinChangeZoom,\n mixinFitToParent,\n mixinOneToOneCentering\n} from '../../../common-behaviours';\nimport { CanvasChangeEvent } from './canvas-change.event';\n\nexport const F_ITEMS_CONTAINER = new InjectionToken<FItemsContainerBase>('F_ITEMS_CONTAINER');\n\nconst MIXIN_BASE = mixinChangePosition(\n mixinFitToParent(\n mixinOneToOneCentering(\n mixinChangeZoom(\n class {\n constructor(\n public transform: ITransformModel\n ) {\n }\n }))));\n\n@Directive()\nexport abstract class FItemsContainerBase\n extends MIXIN_BASE\n implements IHasHostElement, ICanChangePosition, ICanFitToParent, ICanOneToOneCentering, ICanChangeZoom {\n\n public abstract canvasChange: EventEmitter<CanvasChangeEvent>;\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n protected constructor(\n private elementReference: ElementRef<SVGGElement>,\n ) {\n super(TransformModelExtensions.default());\n this.parseData();\n }\n\n public parseData(): void {\n const transform = TransformModelExtensions.fromString(this.hostElement.getAttribute(\"transform\"));\n this.transform = transform ? transform : this.transform;\n }\n\n public redraw(): void {\n this.hostElement.setAttribute(\"transform\", TransformModelExtensions.toString(this.transform));\n }\n\n public redrawWithAnimation(): void {\n this.hostElement.setAttribute(\"style\", 'transition: transform 0.15s ease-in-out');\n this.redraw();\n setTimeout(() => {\n this.hostElement.removeAttribute(\"style\");\n }, 150)\n }\n\n public completeDrag(): void {\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n this.canvasChange.emit(\n new CanvasChangeEvent(position, this.transform.scale)\n );\n }\n}\n","import {\n Directive, ElementRef, EventEmitter, Input, Output,\n} from \"@angular/core\";\nimport {\n FItemsContainerBase, F_ITEMS_CONTAINER\n} from './f-items-container-base';\nimport { IPoint, PointExtensions } from '@foblex/core';\nimport { CanvasChangeEvent } from './canvas-change.event';\n\n@Directive({\n selector: \"g[fItemsContainer]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-items-container'\n },\n providers: [ { provide: F_ITEMS_CONTAINER, useExisting: FItemsContainerDirective } ],\n})\nexport class FItemsContainerDirective extends FItemsContainerBase {\n\n @Output()\n public override canvasChange: EventEmitter<CanvasChangeEvent> = new EventEmitter<CanvasChangeEvent>();\n\n @Input()\n public set position(value: IPoint | undefined) {\n if (!value) {\n return;\n }\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, value)) {\n this.transform.position = value;\n this.transform.scaledPosition = PointExtensions.initialize();\n this.redraw();\n }\n }\n\n @Input()\n public set scale(value: number | undefined) {\n if (!value) {\n return;\n }\n this.transform.scale = value;\n this.redraw();\n }\n\n constructor(\n elementReference: ElementRef<SVGGElement>\n ) {\n super(elementReference);\n }\n}\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, ElementRef, InjectionToken, NgZone, QueryList } from '@angular/core';\nimport { defer, merge, Observable, startWith, switchMap, take } from 'rxjs';\nimport { FNodeBase } from '../../../components';\nimport { IHasStateChanges } from '../../../i-has-state-changes';\n\nexport const F_NODES_CONTAINER = new InjectionToken<FNodesContainerBase>('F_NODES_CONTAINER');\n\n@Directive()\nexport abstract class FNodesContainerBase implements IHasHostElement, IHasStateChanges {\n\n public abstract hostElement: SVGGElement;\n\n public abstract fNodes: QueryList<FNodeBase>;\n\n public readonly stateChanges: Observable<void> = defer(() => {\n const items = this.fNodes;\n\n if (items) {\n return items.changes.pipe(\n startWith(items),\n switchMap(() => merge(...items.map(x => merge(x.fForeignObject.stateChanges, x.stateChanges)))),\n );\n }\n\n return this.ngZone.onStable.pipe(\n take(1),\n switchMap(() => this.stateChanges),\n );\n }) as Observable<void>;\n\n protected constructor(\n\n private ngZone: NgZone\n ) {\n }\n\n public findNode(element: HTMLElement | SVGElement): FNodeBase | undefined {\n return this.fNodes.find((x) => {\n return x.isContains!(element);\n });\n }\n\n public setNodeToTopLayer(node: FNodeBase): void {\n const elements = Array.from(this.hostElement.children);\n const elementsCount = elements.length;\n const targetIndex: number = elements.findIndex((x) => x === node.hostElement);\n if (targetIndex !== elementsCount - 1) {\n const afterElements = elements.splice(targetIndex + 1);\n afterElements.forEach((x) => {\n this.hostElement.removeChild(x);\n this.hostElement.insertBefore(x, node.hostElement);\n });\n }\n }\n}\n","import {\n Component, ContentChildren, ElementRef, NgZone, QueryList\n} from \"@angular/core\";\nimport { F_NODES_CONTAINER, FNodesContainerBase } from './f-nodes-container-base';\nimport { F_NODE_COMPONENT, FNodeBase } from '../../../components';\n\n@Component({\n selector: \"g[fNodesContainer]\",\n templateUrl: './f-nodes-container.component.html',\n exportAs: 'fComponent',\n host: {\n 'class': 'f-nodes-container'\n },\n providers: [ { provide: F_NODES_CONTAINER, useExisting: FNodesContainerComponent } ],\n})\nexport class FNodesContainerComponent extends FNodesContainerBase {\n\n public override get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n @ContentChildren(F_NODE_COMPONENT, { descendants: true })\n public override fNodes!: QueryList<FNodeBase>;\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n ngZone: NgZone\n ) {\n super(ngZone);\n }\n}\n\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <ng-content select=\"[fNode]\"></ng-content>\n</ng-container>\n","export enum EDraggableType {\n\n NODE = 'node',\n\n REASSIGN_CONNECTION = 'reassign-connection',\n\n TEMP_CONNECTION = 'temp-connection',\n\n CONNECTION = 'connection',\n\n CANVAS = 'canvas',\n\n PALETTE_ITEM = 'palette-item',\n\n DEFAULT = 'default',\n\n SELECTION = 'selection'\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/core';\nimport { FItemsContainerBase } from '../../../f-containers/f-items-container';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { IDraggableItem } from '../../i-draggable-item';\n\nexport class CanvasOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CANVAS;\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fItemsContainer: FItemsContainerBase\n ) {\n this.onPointerDownPosition = this.fItemsContainer.transform.position;\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n this.fItemsContainer.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this.fItemsContainer.redraw();\n }\n\n public complete(): void {\n this.fItemsContainer.completeDrag();\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { CanvasOnPointerDownRequest } from './canvas-on-pointer-down.request';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { FItemsContainerBase } from '../../../f-containers';\nimport { FBackgroundBase } from '../../../../internal';\nimport { CanvasOnPointerMove } from '../canvas-on-pointer-move';\n\nexport class CanvasOnPointerDownHandler\n implements IHandler<CanvasOnPointerDownRequest, IDragHandler | undefined> {\n\n constructor(\n private fBackground: FBackgroundBase,\n private fItemsContainer: FItemsContainerBase,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: CanvasOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n if (this.fBackground.isBackgroundElement(payload.event.targetElement) && payload.event.isMouseLeftButton()) {\n result = {\n onPointerDownScale: 1,\n onPointerDownPosition: pointerPositionInCanvas.div(1),\n draggableItems: [\n new CanvasOnPointerMove(this.fItemsContainer)\n ]\n };\n }\n return result;\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nexport class CanvasOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\n\nexport class CreateConnectionOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel,\n ) {\n }\n}\n","import {\n IPoint,\n IRect,\n ITransformModel,\n Point,\n RectExtensions,\n} from '@foblex/core';\nimport { getConnectionIntersect } from '../../../../components/f-connection/common/get-connection-intersect';\nimport { FConnectionBase } from '../../../../components/f-connection/common/f-connection-base';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../../components';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\n\nexport class CreateConnectionOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.TEMP_CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n public connection: FConnectionBase<FNodeOutputBase | FNodeOutletBase>,\n private mouseDownPoint: IPoint,\n transform: ITransformModel,\n hostElement: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(transform, hostElement);\n this.onPointerDownToConnectorRect = RectExtensions.initialize(this.mouseDownPoint.x, this.mouseDownPoint.y, 0, 0);\n }\n\n public initialize(): void {\n this.connection.initializeDrag();\n this.move(new Point(0, 0));\n }\n\n public move(difference: IPoint): void {\n const toPoint = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n const vector = getConnectionIntersect(\n this.onPointerDownFromConnectorRect,\n toPoint\n );\n\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n this.connection.completeDrag();\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FindFirstCanBeConnectedOutputByOutletRequest } from './find-first-can-be-connected-output-by-outlet.request';\nimport { FFlowBase, FNodeOutputBase } from '../../../../../components';\n\nexport class FindFirstCanBeConnectedOutputByOutletHandler\n implements IHandler<FindFirstCanBeConnectedOutputByOutletRequest, FNodeOutputBase | undefined> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: FindFirstCanBeConnectedOutputByOutletRequest): FNodeOutputBase | undefined {\n let result: FNodeOutputBase | undefined;\n\n const node = this.fFlow.fNodesContainer.fNodes.find((x) => x.isContains(payload.outlet.hostElement));\n if (!node) {\n throw new Error('Node not found');\n }\n\n const outputsOfNode = this.fFlow.outputs.filter((x) => {\n return node.isContains(x.hostElement) && x.canBeConnected;\n });\n\n if (outputsOfNode.length > 0) {\n result = outputsOfNode[ 0 ];\n }\n\n return result;\n }\n}\n","import { FNodeOutletBase } from '../../../../../components';\n\nexport class FindFirstCanBeConnectedOutputByOutletRequest {\n\n constructor(\n public outlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler, IPoint, Point } from '@foblex/core';\nimport { CreateConnectionOnPointerDownRequest } from './create-connection-on-pointer-down.request';\nimport { IDragHandler } from '../../../i-drag-handler';\nimport {\n FFlowBase, FNodeBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet, isNodeOutput, TempConnectionInputOutputModel\n} from '../../../../../components';\nimport { FNodesContainerBase } from '../../../../f-containers/f-nodes-container';\nimport { CreateConnectionOnPointerMove } from '../create-connection.on-pointer-move';\nimport {\n FConnectionsContainerBase\n} from '../../../../f-containers/f-connections-container/f-connections-container-base';\nimport {\n FindFirstCanBeConnectedOutputByOutletHandler,\n FindFirstCanBeConnectedOutputByOutletRequest\n} from '../find-first-can-be-connected-output-by-outlet';\n\nexport class CreateConnectionOnPointerDown\n implements IHandler<CreateConnectionOnPointerDownRequest, IDragHandler | undefined> {\n\n private get fConnectionsContainer(): FConnectionsContainerBase {\n return this.fFlow.fConnectionsContainer;\n }\n\n private get fNodesContainer(): FNodesContainerBase {\n return this.fFlow.fNodesContainer;\n }\n\n constructor(\n private fFlow: FFlowBase,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: CreateConnectionOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const node = this.fNodesContainer.findNode(payload.event.targetElement);\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n if (node) {\n\n if (isNodeOutlet(payload.event.targetElement)) {\n const outlet = this.fFlow.outlets.find((x) => {\n return x.hostElement.contains(payload.event.targetElement);\n });\n if (!outlet) {\n throw new Error('Outlet not found');\n }\n const nodeOutputs = this.fFlow.outputs.filter((x) => node.isContains(x.hostElement));\n outlet.setOutputs(nodeOutputs);\n\n if (outlet.canBeConnected) {\n const outletCenter = outlet.getElementRectInCanvas(payload.transform, this.hostElement).gravityCenter;\n if (outlet.isConnectionFromOutlet) {\n result = this.createConnectionHandler(payload, pointerPositionInCanvas, outlet, outletCenter);\n } else {\n const output = new FindFirstCanBeConnectedOutputByOutletHandler(this.fFlow).handle(\n new FindFirstCanBeConnectedOutputByOutletRequest(outlet)\n );\n if (!output) {\n throw new Error('Output not found');\n }\n result = this.createConnectionHandler(payload, pointerPositionInCanvas, output, outletCenter);\n }\n }\n } else if (this.isNodeOutput(payload.event.targetElement, node)) {\n const output = this.fFlow.outputs.find((x) => {\n return x.hostElement.contains(payload.event.targetElement);\n });\n if (!output) {\n throw new Error('Output not found');\n }\n if (output.canBeConnected) {\n const outputCenter = output.getElementRectInCanvas(payload.transform, this.hostElement).gravityCenter;\n result = this.createConnectionHandler(payload, pointerPositionInCanvas, output, outputCenter);\n }\n }\n }\n\n return result;\n }\n\n private createConnectionHandler(\n payload: CreateConnectionOnPointerDownRequest,\n pointerPositionInCanvas: Point,\n output: FNodeOutputBase | FNodeOutletBase,\n outputCenter: IPoint\n ): IDragHandler {\n\n // @ts-ignore\n this.fConnectionsContainer.fTempConnection.fromTo = new TempConnectionInputOutputModel(output);\n\n return {\n onPointerDownScale: payload.transform.scale,\n onPointerDownPosition: pointerPositionInCanvas.div(payload.transform.scale),\n draggableItems: [\n new CreateConnectionOnPointerMove(\n this.fConnectionsContainer.fTempConnection, outputCenter, payload.transform, this.hostElement\n )\n ]\n };\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n const outlets = this.fFlow.outlets.filter((x) => node.isContains(x.hostElement));\n return isNodeOutput(targetElement) && !outlets.length;\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase, FNodeBase, FNodeInputBase } from '../../../../../components';\nimport {\n FirstNotConnectedInputOfNodeUnderPointerRequest\n} from './first-not-connected-input-of-node-under-pointer.request';\n\nexport class FirstNotConnectedInputOfNodeUnderPointerHandler\n implements IHandler<FirstNotConnectedInputOfNodeUnderPointerRequest, FNodeInputBase | undefined> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: FirstNotConnectedInputOfNodeUnderPointerRequest): FNodeInputBase | undefined {\n const position = payload.event.getPosition();\n const elementsFromPoint = document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n\n const nodes = elementsFromPoint.map((element) => {\n return this.fFlow.fNodesContainer.fNodes.find((x) => x.isContains(element))\n }).filter((x) => !!x) as FNodeBase[];\n\n const inputs = nodes.map((x) => {\n return this.fFlow.inputs.filter((i) => x.isContains(i.hostElement)).find((i) => {\n return !i.isConnected && i.canBeConnected;\n });\n });\n const result = inputs.find((x) => !!x);\n\n return result;\n }\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class FirstNotConnectedInputOfNodeUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase, FNodeInputBase, isNodeInput } from '../../../../../components';\nimport {\n InputsUnderPointerRequest\n} from './inputs-under-pointer.request';\n\nexport class InputsUnderPointerHandler\n implements IHandler<InputsUnderPointerRequest, FNodeInputBase[]> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: InputsUnderPointerRequest): FNodeInputBase[] {\n const position = payload.event.getPosition();\n const elementsFromPoint = document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n return elementsFromPoint.filter((x) => isNodeInput(x as HTMLElement)).map((element) => {\n return this.fFlow.inputs.find((x) => x.isContains(element))!\n }).filter((x) => !!x);\n }\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class InputsUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { ReassignConnectionOnPointerMove } from '../reassign-connection';\nimport { CreateConnectionOnPointerMove } from '../create-connection';\n\nexport class FindInputsUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: CreateConnectionOnPointerMove | ReassignConnectionOnPointerMove\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FindInputsUnderPointerRequest } from './find-inputs-under-pointer.request';\nimport { FFlowBase, FNodeInputBase } from '../../../../components';\nimport { InputsUnderPointerHandler, InputsUnderPointerRequest } from './inputs-under-pointer';\nimport {\n FirstNotConnectedInputOfNodeUnderPointerHandler,\n FirstNotConnectedInputOfNodeUnderPointerRequest\n} from './first-not-connected-input-of-node-under-pointer';\n\nexport class FindInputsUnderPointerHandler\n implements IHandler<FindInputsUnderPointerRequest, FNodeInputBase[]> {\n\n constructor(\n private fFlow: FFlowBase\n ) {\n }\n\n public handle(payload: FindInputsUnderPointerRequest): FNodeInputBase[] {\n const inputsUnderPointer = this.getInputsUnderPointer(payload);\n\n return inputsUnderPointer.filter((x) => {\n const targetNode = this.fFlow.fNodesContainer.fNodes.find((y) => y.isContains(x.hostElement));\n const sourceNode = this.fFlow.fNodesContainer.fNodes.find((y) => y.isContains(payload.dragHandler.connection.fromTo!.output.hostElement));\n return sourceNode?.hostElement !== targetNode?.hostElement;\n });\n }\n\n private getInputsUnderPointer(payload: FindInputsUnderPointerRequest): FNodeInputBase[] {\n let inputs = new InputsUnderPointerHandler(this.fFlow).handle(\n new InputsUnderPointerRequest(payload.event)\n );\n\n const input = new FirstNotConnectedInputOfNodeUnderPointerHandler(this.fFlow).handle(\n new FirstNotConnectedInputOfNodeUnderPointerRequest(payload.event)\n );\n\n if (input) {\n inputs.push(input);\n }\n inputs = inputs.filter((x) => x.canBeConnected);\n return inputs;\n }\n}\n","export class CreateConnectionEvent<T = any> {\n\n constructor(\n public outputId: T,\n public inputId: T\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../../components';\nimport { CreateConnectionOnPointerUpRequest } from './create-connection-on-pointer-up.request';\nimport { EDraggableType } from '../../../e-draggable-type';\nimport { FindInputsUnderPointerHandler, FindInputsUnderPointerRequest } from '../../find-inputs-under-pointer';\nimport { CreateConnectionOnPointerMove } from '../create-connection.on-pointer-move';\nimport { EventEmitter } from '@angular/core';\nimport { CreateConnectionEvent } from '../create-connection.event';\nimport {\n FindFirstCanBeConnectedOutputByOutletHandler,\n FindFirstCanBeConnectedOutputByOutletRequest\n} from '../find-first-can-be-connected-output-by-outlet';\n\nexport class CreateConnectionOnPointerUp\n implements IHandler<CreateConnectionOnPointerUpRequest, void> {\n\n constructor(\n private fFlow: FFlowBase,\n private onCreateConnection: EventEmitter<CreateConnectionEvent>\n ) {\n }\n\n public handle(payload: CreateConnectionOnPointerUpRequest): void {\n const isCreateConnection = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.TEMP_CONNECTION);\n if (isCreateConnection) {\n const handler = payload.dragHandler.draggableItems[ 0 ] as CreateConnectionOnPointerMove;\n\n const inputsUnderPointer = new FindInputsUnderPointerHandler(this.fFlow).handle(\n new FindInputsUnderPointerRequest(payload.event, handler)\n );\n\n if (inputsUnderPointer.length > 0) {\n let output: FNodeOutputBase | FNodeOutletBase | undefined = handler.connection.fromTo!.output;\n\n const isOutlet = isNodeOutlet(output.hostElement);\n if (isOutlet) {\n\n output = new FindFirstCanBeConnectedOutputByOutletHandler(this.fFlow).handle(\n new FindFirstCanBeConnectedOutputByOutletRequest(output as FNodeOutletBase)\n );\n if (!output) {\n throw new Error('Output not found');\n }\n }\n this.onCreateConnection.emit(new CreateConnectionEvent(output.id, inputsUnderPointer[ 0 ]?.id));\n }\n handler.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../../i-drag-handler';\n\nexport class CreateConnectionOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IPoint, IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { FConnectionBase } from '../../../../../components/f-connection/common/f-connection-base';\nimport { FNodeOutputBase } from '../../../../../components';\nimport { getConnectionIntersect } from '../../../../../components/f-connection/common/get-connection-intersect';\nimport { IDraggableItem } from '../../../i-draggable-item';\nimport { EDraggableType } from '../../../e-draggable-type';\n\nexport class ReassignConnectionOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.REASSIGN_CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n public connection: FConnectionBase<FNodeOutputBase>,\n private canvasTransform: ITransformModel,\n private canvasHost: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost);\n this.onPointerDownToConnectorRect = RectExtensions.initialize(this.connection.vector.point2.x, this.connection.vector.point2.y, 0, 0);\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const toRect = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n\n const vector = getConnectionIntersect(this.onPointerDownFromConnectorRect, toRect);\n\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n const fromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(this.canvasTransform, this.canvasHost);\n const toConnectorRect = this.connection.fromTo!.input!.getElementRectInCanvas(this.canvasTransform, this.canvasHost);\n const vector = getConnectionIntersect(fromConnectorRect, toConnectorRect);\n\n this.connection.setVector(vector);\n this.connection.completeDrag();\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { IDragHandler } from '../../../i-drag-handler';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS } from '../../../../../components/f-connection/common/f-drag-handle';\nimport { FConnectionBase } from '../../../../../components/f-connection/common/f-connection-base';\nimport { FFlowBase, FNodeOutputBase } from '../../../../../components';\nimport { ReassignConnectionOnPointerMove } from '../reassign-on-pointer-move';\nimport { ReassignConnectionOnPointerDownRequest } from './reassign-connection-on-pointer-down.request';\nimport { FConnectionsContainerBase } from '../../../../f-containers/f-connections-container/f-connections-container-base';\n\nexport class ReassignConnectionOnPointerDown\n implements IHandler<ReassignConnectionOnPointerDownRequest, IDragHandler | undefined> {\n\n private get fConnectionsContainer(): FConnectionsContainerBase {\n return this.fFlow.fConnectionsContainer;\n }\n\n constructor(\n private fFlow: FFlowBase,\n private hostElement: SVGSVGElement,\n ) {\n }\n\n public handle(payload: ReassignConnectionOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n const position = payload.event.getPosition();\n const allElements = document.elementsFromPoint(position.x, position.y);\n\n const dragHandlesOfConnections = allElements.filter((x) => {\n return !!this.fConnectionsContainer.findConnectionWithElement(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n });\n\n let connectionToReassign: FConnectionBase<FNodeOutputBase> | undefined;\n if (dragHandlesOfConnections.length) {\n connectionToReassign = this.fConnectionsContainer.findConnectionWithElement(dragHandlesOfConnections[ 0 ] as HTMLElement);\n }\n\n if (connectionToReassign && payload.event.isMouseLeftButton()) {\n result = {\n onPointerDownScale: payload.transform.scale,\n onPointerDownPosition: pointerPositionInCanvas.div(payload.transform.scale),\n draggableItems: [\n new ReassignConnectionOnPointerMove(\n connectionToReassign, payload.transform, this.hostElement\n )\n ]\n }\n }\n\n return result;\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\n\nexport class ReassignConnectionOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel\n ) {\n }\n}\n","export class ReassignConnectionEvent<T = any> {\n\n constructor(\n public connectionId: T,\n public outputId: T,\n public oldInputId: T,\n public newInputId: T\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FFlowBase } from '../../../../../components';\nimport { ReassignConnectionOnPointerMove } from '../reassign-on-pointer-move/reassign-connection.on-pointer-move';\nimport { ReassignConnectionOnPointerUpRequest } from './reassign-connection-on-pointer-up.request';\nimport { EDraggableType } from '../../../e-draggable-type';\nimport { FindInputsUnderPointerHandler, FindInputsUnderPointerRequest } from '../../find-inputs-under-pointer';\nimport { EventEmitter } from '@angular/core';\nimport { ReassignConnectionEvent } from '../reassign-connection.event';\n\nexport class ReassignConnectionOnPointerUp\n implements IHandler<ReassignConnectionOnPointerUpRequest, void> {\n\n constructor(\n private fFlow: FFlowBase,\n private onReassignConnection: EventEmitter<ReassignConnectionEvent>\n ) {\n }\n\n public handle(payload: ReassignConnectionOnPointerUpRequest): void {\n console.log('ReassignConnectionOnPointerUp', payload);\n const isReassignConnection = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.REASSIGN_CONNECTION);\n if (isReassignConnection) {\n console.log('ReassignConnectionOnPointerUp - isReassignConnection');\n const handler = payload.dragHandler.draggableItems[ 0 ] as ReassignConnectionOnPointerMove;\n\n const inputsUnderPointer = new FindInputsUnderPointerHandler(this.fFlow).handle(\n new FindInputsUnderPointerRequest(payload.event, handler)\n );\n console.log(inputsUnderPointer);\n\n if (inputsUnderPointer.length > 0) {\n if (handler.connection.fromTo?.input?.id !== inputsUnderPointer[ 0 ]?.id) {\n\n this.onReassignConnection.emit(\n new ReassignConnectionEvent(\n handler.connection.id, handler.connection.fromTo?.output.id,\n handler.connection.fromTo?.input?.id,\n inputsUnderPointer[ 0 ]?.id\n )\n );\n }\n }\n handler.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../../i-drag-handler';\n\nexport class ReassignConnectionOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { IDragHandler } from '../i-drag-handler';\n\nexport class DefaultDragHandler\n implements IHandler<void, IDragHandler> {\n\n public handle(): IDragHandler {\n\n return {\n onPointerDownScale: 1,\n onPointerDownPosition: new Point(0, 0),\n draggableItems: []\n };\n }\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class ExternalItemOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase implements IHasHostElement {\n\n public abstract id: any;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract data: any;\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()\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]': 'id',\n class: \"f-component f-external-item\",\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective extends FExternalItemBase implements OnInit, OnDestroy {\n\n @Input()\n public override id: 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 data: any;\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 }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { DomElementExtensions, IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/core';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FExternalItemBase } from '../../../f-external-item';\nimport { IDraggableItem } from '../../i-draggable-item';\n\nexport class ExternalItemOnPointerMoveHandler implements IDraggableItem {\n\n public readonly type = EDraggableType.PALETTE_ITEM;\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public initialize(): void {\n this.onPointerDownRect = RectExtensions.fromElement(this.externalItem.hostElement);\n this.placeholder = DomElementExtensions.deepCloneNode(this.externalItem.hostElement);\n document.body.appendChild(this.placeholder);\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 getPlaceholderRect(): IRect {\n return RectExtensions.fromElement(this.placeholder!);\n }\n\n public complete(): void {\n document.body.removeChild(this.placeholder!);\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { ExternalItemOnPointerDownRequest } from './external-item-on-pointer-down.request';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\nimport {\n ExternalItemOnPointerMoveHandler\n} from '../external-item-on-pointer-move';\n\nexport class ExternalItemOnPointerDownHandler\n implements IHandler<ExternalItemOnPointerDownRequest, IDragHandler | undefined> {\n\n constructor(\n private fExternalItemService: FExternalItemService,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: ExternalItemOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n if (isExternalItem(payload.event.targetElement)) {\n const item = this.fExternalItemService.getItem(getExternalItem(payload.event.targetElement));\n if (!item) {\n throw new Error('External item not found');\n }\n\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n result = {\n onPointerDownScale: 1,\n onPointerDownPosition: pointerPositionInCanvas.div(1),\n draggableItems: [\n new ExternalItemOnPointerMoveHandler(item)\n ]\n };\n }\n return result;\n }\n}\n","import { IRect } from '@foblex/core';\n\nexport class CreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { ExternalItemOnPointerUpRequest } from './external-item-on-pointer-up.request';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { ExternalItemOnPointerMoveHandler } from '../external-item-on-pointer-move';\nimport { FFlowBase, getElementRectInCanvas } from '../../../../components';\nimport { EventEmitter } from '@angular/core';\nimport { CreateNodeEvent } from '../create-node.event';\n\nexport class ExternalItemOnPointerUpHandler\n implements IHandler<ExternalItemOnPointerUpRequest, void> {\n\n constructor(\n private fFlow: FFlowBase,\n private onCreateNode: EventEmitter<CreateNodeEvent>\n ) {\n }\n\n public handle(payload: ExternalItemOnPointerUpRequest): void {\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.fFlow.hostElement);\n let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);\n\n const isDragPaletteItem = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.PALETTE_ITEM);\n\n if (isDragPaletteItem) {\n const dragHandler = payload.dragHandler.draggableItems[ 0 ] as ExternalItemOnPointerMoveHandler\n dragHandler.move(difference);\n\n const isPointerInCanvasRect = document.elementsFromPoint(payload.event.getPosition().x, payload.event.getPosition().y).some((x) => x === this.fFlow.hostElement);\n if (isPointerInCanvasRect) {\n const rectInCanvas = getElementRectInCanvas(dragHandler.placeholder!, this.fFlow.transform, this.fFlow.hostElement);\n this.onCreateNode.emit(\n new CreateNodeEvent(rectInCanvas, dragHandler.externalItem.data)\n );\n }\n dragHandler.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../i-drag-handler';\n\nexport class ExternalItemOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\nimport { ISelectable } from '../../../../i-selectable';\n\nexport class NodeOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel,\n public selectedItems: ISelectable[],\n public isMoveCurrentNode: boolean = false\n ) {\n }\n}\n","import { IPoint, ITransformModel, IVector, Point, VectorExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectionBase } from '../../../../components/f-connection/common/f-connection-base';\nimport { FNodeOutputBase } from '../../../../components';\nimport { getConnectionIntersect } from '../../../../components/f-connection/common/get-connection-intersect';\n\nexport class FConnectionDragHandler implements IDraggableItem {\n\n public readonly type = EDraggableType.CONNECTION;\n\n private onPointerDownVector: IVector = VectorExtensions.initialize();\n\n constructor(\n public connection: FConnectionBase<FNodeOutputBase>,\n canvasTransform: ITransformModel,\n canvasHost: SVGSVGElement\n ) {\n this.onPointerDownVector = getConnectionIntersect(\n this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost),\n this.connection.fromTo!.input!.getElementRectInCanvas(canvasTransform, canvasHost)\n );\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const fromPoint = Point.fromPoint(this.onPointerDownVector.point1).add(difference);\n const toPoint = Point.fromPoint(this.onPointerDownVector.point2).add(difference);\n\n this.connection.setVector(VectorExtensions.initialize(fromPoint, toPoint));\n this.connection.redraw();\n }\n\n public complete(): void {\n }\n}\n","import { IPoint, IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectionBase } from '../../../../components/f-connection/common/f-connection-base';\nimport { FNodeOutputBase } from '../../../../components';\nimport { getConnectionIntersect } from '../../../../components/f-connection/common/get-connection-intersect';\n\nexport class FConnectionSourceDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n private connection: FConnectionBase<FNodeOutputBase>,\n canvasTransform: ITransformModel,\n canvasHost: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost);\n this.onPointerDownToConnectorRect = this.connection.fromTo!.input!.getElementRectInCanvas(canvasTransform, canvasHost);\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const fromPoint = RectExtensions.addPoint(this.onPointerDownFromConnectorRect, difference);\n const vector = getConnectionIntersect(fromPoint, this.onPointerDownToConnectorRect);\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n }\n}\n","import { IPoint, IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectionBase } from '../../../../components/f-connection/common/f-connection-base';\nimport { FNodeOutputBase } from '../../../../components';\nimport { getConnectionIntersect } from '../../../../components/f-connection/common/get-connection-intersect';\n\nexport class FConnectionTargetDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CONNECTION;\n\n private readonly onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private readonly onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n constructor(\n private connection: FConnectionBase<FNodeOutputBase>,\n canvasTransform: ITransformModel,\n canvasHost: SVGSVGElement\n ) {\n this.onPointerDownFromConnectorRect = this.connection.fromTo!.output.getElementRectInCanvas(canvasTransform, canvasHost);\n this.onPointerDownToConnectorRect = this.connection.fromTo!.input!.getElementRectInCanvas(canvasTransform, canvasHost);\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const toPoint = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n const vector = getConnectionIntersect(this.onPointerDownFromConnectorRect, toPoint);\n this.connection.setVector(vector);\n this.connection.redraw();\n }\n\n public complete(): void {\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FNodeBase } from '../../../../components';\nimport { FLineAlignmentDirective } from '../../../f-line-alignment';\n\nexport class NodeOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.NODE;\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fLineAlignment: FLineAlignmentDirective | undefined,\n public fNode: FNodeBase\n ) {\n this.onPointerDownPosition = this.fNode.position;\n }\n\n public initialize(): void {\n }\n\n public move(difference: IPoint): void {\n const position = Point.fromPoint(this.onPointerDownPosition).add(difference);\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n this.fLineAlignment?.handle(difference);\n }\n\n public complete(): void {\n this.fNode.completeDrag();\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { NodeOnPointerDownRequest } from './node-on-pointer-down.request';\nimport { FFlowBase, isNodeDragHandle } from '../../../../components';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { FNodesContainerBase } from '../../../f-containers';\nimport { FConnectionsContainerBase } from '../../../f-containers';\nimport { FNodeInputBase, FNodeOutputBase } from '../../../../components';\nimport { FNodeBase } from '../../../../components';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport {\n FConnectionDragHandler,\n FConnectionSourceDragHandler,\n FConnectionTargetDragHandler,\n NodeOnPointerMove\n} from '../node-on-pointer-move';\nimport { FLineAlignmentDirective } from '../../../f-line-alignment';\n\nexport class NodeOnPointerDown\n implements IHandler<NodeOnPointerDownRequest, IDragHandler | undefined> {\n\n private get fConnectionsContainer(): FConnectionsContainerBase {\n return this.fFlow.fConnectionsContainer;\n }\n\n private get fNodesContainer(): FNodesContainerBase {\n return this.fFlow.fNodesContainer;\n }\n\n constructor(\n private fLineAlignment: FLineAlignmentDirective | undefined,\n private fFlow: FFlowBase,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: NodeOnPointerDownRequest): IDragHandler | undefined {\n let result: IDragHandler | undefined;\n\n const node = this.fNodesContainer.findNode(payload.event.targetElement);\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n if (node) {\n if (isNodeDragHandle(payload.event.targetElement)) {\n if (!payload.selectedItems.includes(node) && payload.isMoveCurrentNode) {\n payload.selectedItems.push(node);\n node.select();\n }\n this.fNodesContainer.setNodeToTopLayer(node!);\n const itemsToDrag: IDraggableItem[] = this.calculateDraggableConnectionsAndNodes(payload);\n\n const draggedNodes = itemsToDrag.filter((x) => {\n return x.type === EDraggableType.NODE;\n }).map((x) => (x as NodeOnPointerMove).fNode);\n\n this.fLineAlignment?.initialize(this.fNodesContainer.fNodes.toArray(), draggedNodes);\n\n result = {\n onPointerDownScale: payload.transform.scale,\n onPointerDownPosition: pointerPositionInCanvas.div(payload.transform.scale),\n draggableItems: itemsToDrag\n }\n }\n }\n\n return result;\n }\n\n private calculateDraggableConnectionsAndNodes(payload: NodeOnPointerDownRequest): IDraggableItem[] {\n let itemsToDrag: IDraggableItem[] = [];\n\n const selectedNodes = payload.selectedItems.map((x) => {\n return this.fNodesContainer.findNode(x.hostElement);\n }).filter((x) => !!x) as FNodeBase[];\n\n const nodeDragHandlers = selectedNodes.map((x) => new NodeOnPointerMove(this.fLineAlignment, x));\n itemsToDrag = nodeDragHandlers;\n\n const allOutputs: FNodeOutputBase[] = selectedNodes.reduce((result: FNodeOutputBase[], x: FNodeBase) => {\n return result.concat(this.getOutputsForNode(x));\n }, []);\n\n const allInputs: FNodeInputBase[] = selectedNodes.reduce((result: FNodeInputBase[], x: FNodeBase) => {\n return result.concat(this.getInputsForNode(x));\n }, []);\n\n nodeDragHandlers.forEach((nodeHandler) => {\n const outputConnections = this.fConnectionsContainer.findOutgoingConnections(this.getOutputsForNode(nodeHandler.fNode));\n outputConnections.forEach((c) => {\n if (allInputs.includes(c.fromTo!.input!)) {\n itemsToDrag.push(new FConnectionDragHandler(c, payload.transform, this.hostElement));\n } else {\n itemsToDrag.push(new FConnectionSourceDragHandler(c, payload.transform, this.hostElement));\n }\n });\n const inputConnections = this.fConnectionsContainer.findIncomingConnections(this.getInputsForNode(nodeHandler.fNode));\n inputConnections.forEach((c) => {\n if (allOutputs.includes(c.fromTo!.output! as FNodeOutputBase)) {\n const index = itemsToDrag.findIndex((x) => x.type === EDraggableType.CONNECTION && (x as FConnectionDragHandler).connection.id === c.id);\n if (index !== -1) {\n itemsToDrag.push(new FConnectionDragHandler(c, payload.transform, this.hostElement));\n }\n } else {\n itemsToDrag.push(new FConnectionTargetDragHandler(c, payload.transform, this.hostElement));\n }\n });\n //itemsToDrag.push(new NodeOnPointerMove(this.fLineAlignment, x.fNode));\n });\n return itemsToDrag;\n }\n\n private getInputsForNode(node: FNodeBase): FNodeInputBase[] {\n return this.fFlow.inputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getOutputsForNode(node: FNodeBase): FNodeOutputBase[] {\n return this.fFlow.outputs.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { NodeOnPointerUpRequest } from './node-on-pointer-up.request';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FConnectIfIntersectBase } from '../../../f-connect-if-intersect';\nimport { FLineAlignmentDirective } from '../../../f-line-alignment';\n\nexport class NodeOnPointerUp\n implements IHandler<NodeOnPointerUpRequest, void> {\n\n constructor(\n private fLineAlignment: FLineAlignmentDirective | undefined,\n private fConnectIfIntersect: FConnectIfIntersectBase | undefined,\n public hostElement: SVGSVGElement,\n ) {\n }\n\n public handle(payload: NodeOnPointerUpRequest): void {\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);\n\n const isDragNodes = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.NODE);\n\n if (isDragNodes) {\n const nearestIntersection = this.fLineAlignment?.findNearestCoordinate(difference);\n if (nearestIntersection) {\n difference.x = nearestIntersection.xResult.value ? (difference.x - nearestIntersection.xResult.distance!) : difference.x;\n difference.y = nearestIntersection.yResult.value ? (difference.y - nearestIntersection.yResult.distance!) : difference.y;\n }\n\n payload.dragHandler.draggableItems.forEach((x) => {\n x.move(difference);\n x.complete();\n });\n this.fConnectIfIntersect?.handle(payload.dragHandler.draggableItems);\n this.fLineAlignment?.complete();\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../i-drag-handler';\n\nexport class NodeOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FSelectionDirective } from '../../../f-selection';\nimport { ISelectable } from '../../../../i-selectable';\nimport { FFlowBase, getElementRectInCanvas } from '../../../../components';\n\nexport class SelectionOnPointerMove implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.SELECTION;\n\n public selectedItems: ISelectable[] = [];\n\n private readonly items: { element: ISelectable, rect: IRect }[] = [];\n\n private canvasPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fFlow: FFlowBase,\n private fSelection: FSelectionDirective | undefined,\n private selectedOnStart: ISelectable[],\n private onPointerDownPosition: IPoint = PointExtensions.initialize(),\n ) {\n const nodeRects = fFlow.fNodesContainer.fNodes.map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(getElementRectInCanvas(x.hostElement, fFlow.transform, this.fFlow.hostElement), fFlow.transform.scale)\n };\n });\n\n const lineRects = fFlow.fConnectionsContainer.fConnections.map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(getElementRectInCanvas(x.fPath.hostElement, fFlow.transform, this.fFlow.hostElement), fFlow.transform.scale)\n };\n });\n this.items = [ ...nodeRects, ...lineRects ].filter((x) => {\n return !selectedOnStart.includes(x.element);\n });\n this.canvasPosition = Point.fromPoint(fFlow.transform.position).add(fFlow.transform.scaledPosition);\n }\n\n public initialize(): void {\n this.fSelection?.show();\n this.fSelection?.draw({ ...this.onPointerDownPosition, width: 0, height: 0 });\n }\n\n public move(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this.onPointerDownPosition);\n const x: number = Math.min(this.onPointerDownPosition.x, currentPoint.x);\n const y: number = Math.min(this.onPointerDownPosition.y, currentPoint.y);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n this.fSelection?.draw({ x, y, width, height });\n this.selectedItems = [];\n this.items.forEach((item) => {\n item.element.deselect();\n const itemRect = RectExtensions.addPoint(item.rect, this.canvasPosition);\n if (\n RectExtensions.intersectionWithRect(itemRect, RectExtensions.initialize(x, y, width, height))\n ) {\n item.element.select();\n this.selectedItems.push(item.element);\n }\n });\n }\n\n public complete(): void {\n this.fSelection?.hide();\n this.selectedItems.push(...this.selectedOnStart || [])\n }\n}\n","import { IHandler, MouseEventExtensions, Point } from '@foblex/core';\nimport { FFlowBase, isNodeOutlet, isNodeOutput } from '../../../../components';\nimport { SelectionOnPointerDownRequest } from './selection-on-pointer-down.request';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { SelectionOnPointerMove } from '../selection-on-pointer-move';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { FSelectionDirective } from '../../../f-selection';\n\nexport class SelectionOnPointerDown implements IHandler<SelectionOnPointerDownRequest, IDragHandler> {\n\n constructor(\n private fFlow: FFlowBase,\n private fSelection: FSelectionDirective | undefined,\n private hostElement: SVGSVGElement\n ) {\n }\n\n public handle(payload: SelectionOnPointerDownRequest): IDragHandler {\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n\n let node = this.fFlow.fNodesContainer.findNode(payload.event.targetElement);\n const connection = this.fFlow.fConnectionsContainer.findConnectionWithElement(payload.event.targetElement);\n\n payload.selectedItems.forEach((x) => {\n if (x !== node || (!isNodeOutlet(payload.event.targetElement) && !isNodeOutput(payload.event.targetElement))) {\n x.deselect();\n }\n });\n const isMultiselect =\n MouseEventExtensions.isCommandButton(payload.event.originalEvent) ||\n MouseEventExtensions.isShiftPressed(payload.event.originalEvent);\n if (!isMultiselect) {\n payload.selectedItems = [];\n }\n if (node) {\n if (node) {\n if (!payload.selectedItems.includes(node)) {\n payload.selectedItems.push(node);\n } else {\n payload.selectedItems.splice(payload.selectedItems.indexOf(node), 1);\n }\n }\n\n } else if (connection) {\n if (!payload.selectedItems.includes(connection)) {\n payload.selectedItems.push(connection);\n } else {\n payload.selectedItems.splice(payload.selectedItems.indexOf(connection), 1);\n }\n }\n payload.selectedItems.forEach((x) => {\n if (!x.isSelected()) {\n x.select();\n }\n });\n\n let draggableItems: IDraggableItem[] = [];\n if (MouseEventExtensions.isShiftPressed(payload.event.originalEvent)) {\n draggableItems = [\n new SelectionOnPointerMove(this.fFlow, this.fSelection, payload.selectedItems, pointerPositionInCanvas)\n ];\n }\n return {\n onPointerDownScale: 1,\n onPointerDownPosition: pointerPositionInCanvas.div(1),\n draggableItems: draggableItems,\n selectedItems: payload.selectedItems\n }\n }\n}\n","import { IPointerEvent, ITransformModel } from '@foblex/core';\nimport { ISelectable } from '../../../../i-selectable';\n\nexport class SelectionOnPointerDownRequest {\n\n constructor(\n public event: IPointerEvent,\n public transform: ITransformModel,\n public selectedItems: ISelectable[]\n ) {\n }\n}\n","import { IHandler, Point } from '@foblex/core';\nimport { SelectionOnPointerUpRequest } from './selection-on-pointer-up.request';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { ISelectable } from '../../../../i-selectable';\nimport { SelectionOnPointerMove } from '../selection-on-pointer-move';\n\nexport class SelectionOnPointerUp\n implements IHandler<SelectionOnPointerUpRequest, ISelectable[]> {\n\n constructor(\n public hostElement: SVGSVGElement,\n ) {\n }\n\n public handle(payload: SelectionOnPointerUpRequest): ISelectable[] {\n let result: ISelectable[] = payload.selectedItems;\n const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);\n let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);\n\n const isSelection = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.SELECTION);\n\n if (isSelection) {\n payload.dragHandler.draggableItems.forEach((x) => {\n x.move(difference);\n x.complete();\n });\n result = (payload.dragHandler.draggableItems[ 0 ] as SelectionOnPointerMove).selectedItems;\n }\n return result;\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { IDragHandler } from '../../i-drag-handler';\nimport { ISelectable } from '../../../../i-selectable';\n\nexport class SelectionOnPointerUpRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: IDragHandler,\n public selectedItems: ISelectable[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FFlowBase } from '../../components';\nimport { ITransformModel } from '@foblex/core';\n\n@Injectable()\nexport class FDraggableService {\n\n private fFlow: FFlowBase | undefined;\n\n public get hostElement(): SVGSVGElement {\n return this.fFlow!.hostElement;\n }\n\n public get transform(): ITransformModel {\n return this.fFlow!.transform;\n }\n\n constructor(\n ) {\n }\n\n public setFlow(fFlow: FFlowBase): void {\n this.fFlow = fFlow;\n }\n\n public onPointerDown(event: PointerEvent): void {\n\n }\n}\n","import {\n IDragAndDropBase, IHasHostElement, IPointerEvent, ITransformModel, Point\n} from '@foblex/core';\nimport { Subscription } from 'rxjs';\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, InjectionToken, NgZone, OnDestroy } from '@angular/core';\nimport { FItemsContainerBase } from '../f-containers';\nimport { FBackgroundBase } from '../../internal';\nimport { FFlowBase } from '../../components';\nimport { CanvasOnPointerDownHandler, CanvasOnPointerDownRequest } from './canvas';\nimport { IDragHandler } from './i-drag-handler';\nimport { DefaultDragHandler } from './default-drag-handler';\nimport {\n SelectionOnPointerDown,\n SelectionOnPointerDownRequest,\n SelectionOnPointerUp,\n SelectionOnPointerUpRequest\n} from './selection';\nimport {\n ReassignConnectionEvent, ReassignConnectionOnPointerDown,\n ReassignConnectionOnPointerDownRequest, ReassignConnectionOnPointerUp, ReassignConnectionOnPointerUpRequest\n} from './connections';\nimport { NodeOnPointerDown, NodeOnPointerDownRequest, NodeOnPointerUp, NodeOnPointerUpRequest } from './node';\nimport {\n CreateConnectionEvent, CreateConnectionOnPointerDown,\n CreateConnectionOnPointerDownRequest, CreateConnectionOnPointerUp, CreateConnectionOnPointerUpRequest\n} from './connections';\nimport { EDraggableType } from './e-draggable-type';\nimport { FConnectIfIntersectBase } from '../f-connect-if-intersect';\nimport { FLineAlignmentDirective } from '../f-line-alignment';\nimport { ISelectable } from '../../i-selectable';\nimport { FExternalItemService } from '../f-external-item';\nimport { FDraggableService } from './f-draggable.service';\nimport {\n CreateNodeEvent,\n ExternalItemOnPointerDownHandler,\n ExternalItemOnPointerDownRequest,\n ExternalItemOnPointerUpHandler, ExternalItemOnPointerUpRequest\n} from './external-item';\nimport { FSelectionDirective } from '../f-selection';\n\nexport const F_DND_DIRECTIVE = new InjectionToken<FDraggableBase>('F_DND_DIRECTIVE');\n\n@Directive()\nexport abstract class FDraggableBase extends IDragAndDropBase implements IHasHostElement, AfterViewInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n private get transform(): ITransformModel {\n return this.fItemsContainer.transform;\n }\n\n private get fItemsContainer(): FItemsContainerBase {\n return this.fFlow.fItemsContainer;\n }\n\n private get fBackground(): FBackgroundBase {\n return this.fFlow.fBackground;\n }\n\n private dragHandler: IDragHandler = new DefaultDragHandler().handle();\n\n private dragSelection!: SelectionOnPointerDown;\n private reassignConnection!: ReassignConnectionOnPointerDown;\n private dragCanvas!: CanvasOnPointerDownHandler;\n private dragNode!: NodeOnPointerDown;\n private createConnection!: CreateConnectionOnPointerDown;\n private dragExternalItem!: ExternalItemOnPointerDownHandler;\n\n public abstract onCreateConnection: EventEmitter<CreateConnectionEvent>;\n\n public abstract onReassignConnection: EventEmitter<ReassignConnectionEvent>;\n\n public abstract onCreateNode: EventEmitter<CreateNodeEvent>;\n\n public abstract fLineAlignment: FLineAlignmentDirective | undefined;\n\n public abstract fConnectIfIntersect: FConnectIfIntersectBase | undefined;\n\n public abstract fSelection: FSelectionDirective | undefined;\n\n private selectedItems: ISelectable[] = [];\n\n protected constructor(\n protected fFlow: FFlowBase,\n protected fDNDService: FDraggableService,\n protected fExternalItemService: FExternalItemService,\n private elementReference: ElementRef<SVGSVGElement>,\n ngZone: NgZone,\n ) {\n super(ngZone);\n this.fDNDService.setFlow(this.fFlow);\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(document);\n\n this.dragSelection = new SelectionOnPointerDown(this.fFlow, this.fSelection, this.hostElement);\n this.reassignConnection = new ReassignConnectionOnPointerDown(this.fFlow, this.hostElement);\n this.dragCanvas = new CanvasOnPointerDownHandler(this.fBackground, this.fItemsContainer, this.hostElement);\n this.dragNode = new NodeOnPointerDown(this.fLineAlignment, this.fFlow, this.hostElement);\n this.createConnection = new CreateConnectionOnPointerDown(this.fFlow, this.hostElement);\n this.dragExternalItem = new ExternalItemOnPointerDownHandler(this.fExternalItemService, this.hostElement);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n let result: boolean = event.isMouseLeftButton();\n const selection = this.dragSelection.handle(\n new SelectionOnPointerDownRequest(event, this.transform, this.selectedItems)\n );\n this.selectedItems = selection.selectedItems || [];\n\n const reassignConnection = this.reassignConnection.handle(\n new ReassignConnectionOnPointerDownRequest(event, this.transform)\n );\n\n const createConnection = this.createConnection.handle(\n new CreateConnectionOnPointerDownRequest(event, this.transform)\n );\n\n const dragNode = this.dragNode.handle(\n new NodeOnPointerDownRequest(event, this.transform, this.selectedItems)\n );\n\n const dragCanvas = this.dragCanvas.handle(\n new CanvasOnPointerDownRequest(event)\n );\n\n const dragExternalItem = this.dragExternalItem.handle(\n new ExternalItemOnPointerDownRequest(event)\n );\n\n const dragSelection = selection.draggableItems.length ? selection : undefined;\n\n const dragHandle = dragSelection || reassignConnection || createConnection || dragNode || dragCanvas || dragExternalItem;\n if (!dragHandle) {\n this.dragHandler = new DefaultDragHandler().handle();\n result = false;\n } else {\n this.dragHandler = dragHandle;\n }\n\n return result;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n const isDragNodes = this.dragHandler.draggableItems.some((x) => x.type === EDraggableType.NODE);\n if (isDragNodes) {\n this.dragHandler = this.dragNode.handle(\n new NodeOnPointerDownRequest(event, this.transform, this.selectedItems, true)\n )!;\n }\n this.dragHandler.draggableItems.forEach((item) => {\n item.initialize();\n });\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n const pointerPositionInCanvas = Point.fromPoint(event.getPosition()).matrixTransform(this.hostElement);\n const difference = pointerPositionInCanvas.div(this.dragHandler.onPointerDownScale).sub(this.dragHandler.onPointerDownPosition);\n this.dragHandler.draggableItems.forEach((item) => {\n item.move(difference);\n });\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n new ReassignConnectionOnPointerUp(this.fFlow, this.onReassignConnection).handle(\n new ReassignConnectionOnPointerUpRequest(event, this.dragHandler)\n );\n\n new CreateConnectionOnPointerUp(this.fFlow, this.onCreateConnection).handle(\n new CreateConnectionOnPointerUpRequest(event, this.dragHandler)\n );\n\n new NodeOnPointerUp(this.fLineAlignment, this.fConnectIfIntersect, this.hostElement).handle(\n new NodeOnPointerUpRequest(event, this.dragHandler)\n );\n\n this.selectedItems = new SelectionOnPointerUp(this.hostElement).handle(\n new SelectionOnPointerUpRequest(event, this.dragHandler, this.selectedItems)\n );\n\n new ExternalItemOnPointerUpHandler(this.fFlow, this.onCreateNode).handle(\n new ExternalItemOnPointerUpRequest(event, this.dragHandler)\n );\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n this.subscriptions$.unsubscribe();\n }\n}\n","import { IRect } from '@foblex/core';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\nconst ALIGN_THRESHOLD = 10;\n\nexport function findNearestCoordinateByX(elements: IRect[], target: IRect): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of elements) {\n const distanceLeftLeft = target.x - element.x;\n const distanceLeftRight = target.x - (element.x + element.width);\n const distanceCenterCenter = target.gravityCenter.x - element.gravityCenter.x;\n const distanceRightLeft = (target.x + target.width) - element.x;\n const distanceRightRight = (target.x + target.width) - (element.x + element.width);\n\n if (\n Math.abs(distanceLeftLeft) <= ALIGN_THRESHOLD ||\n Math.abs(distanceLeftRight) <= ALIGN_THRESHOLD ||\n Math.abs(distanceCenterCenter) <= ALIGN_THRESHOLD ||\n Math.abs(distanceRightLeft) <= ALIGN_THRESHOLD ||\n Math.abs(distanceRightRight) <= ALIGN_THRESHOLD\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","import { IRect } from '@foblex/core';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\nconst ALIGN_THRESHOLD = 10;\n\nexport function findNearestCoordinateByY(elements: IRect[], target: IRect): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of elements) {\n const distanceTopTop = target.y - element.y;\n const distanceTopBottom = target.y - (element.y + element.height);\n const distanceCenterCenter = target.gravityCenter.y - element.gravityCenter.y;\n const distanceBottomTop = (target.y + target.height) - element.y;\n const distanceBottomBottom = (target.y + target.height) - (element.y + element.height);\n\n if (\n Math.abs(distanceTopTop) <= ALIGN_THRESHOLD ||\n Math.abs(distanceTopBottom) <= ALIGN_THRESHOLD ||\n Math.abs(distanceCenterCenter) <= ALIGN_THRESHOLD ||\n Math.abs(distanceBottomTop) <= ALIGN_THRESHOLD ||\n Math.abs(distanceBottomBottom) <= ALIGN_THRESHOLD\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","import { Directive, ElementRef, Inject, InjectionToken } from '@angular/core';\nimport { IPoint, IRect, ISize, ITransformModel, LineFElement, RectExtensions, SizeExtensions } from '@foblex/core';\nimport { F_FLOW_COMPONENT, FFlowBase, FNodeBase, getElementRectInCanvas } from '../../components';\nimport { findNearestCoordinateByX, findNearestCoordinateByY, ILineAlignmentResult } from './domain';\n\nexport const F_LINE_ALIGNMENT = new InjectionToken<FLineAlignmentDirective>('F_LINE_ALIGNMENT');\n\n@Directive({\n selector: \"g[fLineAlignment]\",\n standalone: true,\n host: {\n 'class': 'f-line-alignment f-component'\n },\n providers: [\n { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentDirective }\n ],\n})\nexport class FLineAlignmentDirective {\n\n private get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private fHorizontalLine: LineFElement = new LineFElement();\n\n private fVerticalLine: LineFElement = new LineFElement();\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.fFlow.fItemsContainer.transform;\n }\n\n constructor(\n @Inject(F_FLOW_COMPONENT) private fFlow: FFlowBase,\n private elementReference: ElementRef<SVGGElement>\n ) {\n this.hostElement.appendChild(this.fHorizontalLine.hostElement);\n this.hostElement.appendChild(this.fVerticalLine.hostElement);\n }\n\n public initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void {\n this.size = this.fFlow.hostElement.getBoundingClientRect();\n this.rects = [];\n const draggedNodeRects = currentNodes.map((x) => {\n return getElementRectInCanvas(x.hostElement, this.transform, this.fFlow.hostElement);\n });\n this.draggedNodeRect = RectExtensions.union(draggedNodeRects);\n\n const allNodesExcludeCurrents = allNodes.filter((x) => {\n return !currentNodes.includes(x);\n });\n\n this.rects = allNodesExcludeCurrents.map((x) => {\n return getElementRectInCanvas(x.hostElement, this.transform, this.fFlow.hostElement);\n });\n console.log(this.rects);\n }\n\n public handle(difference: IPoint): void {\n this.drawIntersections(difference);\n }\n\n private drawIntersections(difference: IPoint): void {\n const intersect = this.findNearestCoordinate(difference);\n if (intersect.xResult.value !== undefined) {\n this.fVerticalLine.show();\n this.fVerticalLine.draw({\n x1: intersect.xResult.value * this.transform.scale + this.transform.position.x + this.transform.scaledPosition.x,\n x2: intersect.xResult.value * this.transform.scale + this.transform.position.x + this.transform.scaledPosition.x,\n y1: 0,\n y2: this.size.height\n });\n } else {\n this.fVerticalLine.hide();\n }\n if (intersect.yResult.value !== undefined) {\n this.fHorizontalLine.show();\n this.fHorizontalLine.draw({\n x1: 0,\n x2: this.size.width,\n y1: intersect.yResult.value * this.transform.scale + this.transform.position.y + this.transform.scaledPosition.y,\n y2: intersect.yResult.value * this.transform.scale + this.transform.position.y + this.transform.scaledPosition.y,\n });\n } else {\n this.fHorizontalLine.hide();\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n let result: ILineAlignmentResult = {\n xResult: { value: undefined, distance: undefined },\n yResult: { value: undefined, distance: undefined }\n };\n const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);\n const xResult = findNearestCoordinateByX(this.rects, rect);\n const yResult = findNearestCoordinateByY(this.rects, rect);\n result = { xResult, yResult };\n return result;\n }\n\n public complete(): void {\n this.fVerticalLine.hide();\n this.fHorizontalLine.hide();\n }\n}\n","import { Directive, ElementRef, InjectionToken } from '@angular/core';\nimport { IRectElementModel, RectFElement } from '@foblex/core';\n\nexport const F_SELECTION = new InjectionToken<FSelectionDirective>('F_SELECTION');\n\n@Directive({\n selector: \"g[fSelection]\",\n standalone: true,\n host: {\n 'class': 'f-selection f-component'\n },\n providers: [\n { provide: F_SELECTION, useExisting: FSelectionDirective }\n ],\n})\nexport class FSelectionDirective {\n\n private get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private fElement: RectFElement = new RectFElement();\n\n constructor(\n private elementReference: ElementRef<SVGGElement>\n ) {\n this.hostElement.appendChild(this.fElement.hostElement);\n }\n\n public hide(): void {\n this.fElement.hide();\n }\n\n public show(): void {\n this.fElement.show();\n }\n\n public draw(object: Partial<IRectElementModel>): void {\n this.fElement.draw(object);\n }\n}\n","import {\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n Output\n} from \"@angular/core\";\nimport { F_DND_DIRECTIVE, FDraggableBase } from './f-draggable-base';\nimport { F_FLOW_COMPONENT, FFlowBase } from '../../components';\nimport { F_LINE_ALIGNMENT, FLineAlignmentDirective } from '../f-line-alignment';\nimport { FExternalItemService } from '../f-external-item';\nimport { FDraggableService } from './f-draggable.service';\nimport { CreateConnectionEvent, ReassignConnectionEvent } from './connections';\nimport { CreateNodeEvent } from './external-item';\nimport { F_SELECTION, FSelectionDirective } from '../f-selection';\nimport {\n FConnectIfIntersectBase,\n} from '../f-connect-if-intersect';\nimport { F_CONNECT_IF_INTERSECT } from '../../tokens';\n\n@Directive({\n selector: \"svg[fDraggable]\",\n providers: [\n { provide: F_DND_DIRECTIVE, useExisting: FDraggableDirective }\n ]\n})\nexport class FDraggableDirective extends FDraggableBase {\n\n @Input()\n public override disabled: boolean = false;\n\n @ContentChild(F_LINE_ALIGNMENT, { static: true })\n public override fLineAlignment: FLineAlignmentDirective | undefined;\n\n @ContentChild(F_SELECTION, { static: true })\n public override fSelection: FSelectionDirective | undefined;\n\n @ContentChild(F_CONNECT_IF_INTERSECT)\n public override fConnectIfIntersect: FConnectIfIntersectBase | undefined;\n\n @Output()\n public override onCreateConnection: EventEmitter<CreateConnectionEvent> = new EventEmitter<CreateConnectionEvent>();\n\n @Output()\n public override onReassignConnection: EventEmitter<ReassignConnectionEvent> = new EventEmitter<ReassignConnectionEvent>();\n\n @Output()\n public override onCreateNode: EventEmitter<CreateNodeEvent> = new EventEmitter<CreateNodeEvent>();\n\n constructor(\n @Inject(F_FLOW_COMPONENT) fFlow: FFlowBase,\n fDNDService: FDraggableService,\n fExternalItemService: FExternalItemService,\n elementReference: ElementRef<SVGSVGElement>,\n ngZone: NgZone\n ) {\n super(fFlow, fDNDService, fExternalItemService, elementReference, ngZone);\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FDraggableDirective } from './f-draggable.directive';\nimport { FExternalItemDirective, FExternalItemService } from '../f-external-item';\nimport { FDraggableService } from './f-draggable.service';\n\n@NgModule({\n declarations: [\n FDraggableDirective,\n FExternalItemDirective,\n ],\n imports: [\n CommonModule\n ],\n providers: [\n FExternalItemService,\n FDraggableService\n ],\n exports: [\n FDraggableDirective,\n FExternalItemDirective,\n ]\n})\nexport class FDraggableModule {\n}\n","import { IHandler, RectExtensions } from '@foblex/core';\nimport { ConnectIfIntersectRequest } from './connect-if-intersect.request';\nimport { FConnectionBase } from '../../../components';\nimport { FFlowBase, FNodeBase, FNodeInputBase, FNodeOutputBase, getElementRectInCanvas } from '../../../components';\nimport { FItemsContainerBase } from '../../f-containers';\nimport { findIncomingConnections, findOutgoingConnections } from '../../f-containers';\nimport { EDraggableType } from '../../f-draggable';\nimport { NodeOnPointerMove } from '../../f-draggable';\n\nexport class ConnectIfIntersectHandler implements IHandler<ConnectIfIntersectRequest> {\n\n constructor(\n private connections: FConnectionBase<FNodeOutputBase>[],\n private fFlow: FFlowBase,\n private fItemsContainer: FItemsContainerBase\n ) {\n }\n\n public handle(request: ConnectIfIntersectRequest): void {\n const isValid = this.isValidRequest(request);\n if (!isValid) {\n return;\n }\n const fNode = (request.draggableItems[ 0 ] as NodeOnPointerMove).fNode;\n\n const outputsOfNode = this.getOutputsForNode(fNode);\n const inputsOfNode = this.getInputsForNode(fNode);\n\n const isCantBeConnectedByOutput = outputsOfNode.some((x) => !x.canBeConnected);\n const isCantBeConnectedByInput = this.connections.some((x) => {\n return inputsOfNode.find((input) => input.id === x.fromTo?.input?.id);\n });\n\n if (!isCantBeConnectedByInput && outputsOfNode.length && !isCantBeConnectedByOutput && inputsOfNode.length) {\n const output = outputsOfNode[ 0 ];\n const input = inputsOfNode[ 0 ];\n const outgoingConnections = findOutgoingConnections(this.connections, [ output ]);\n const incomingConnections = findIncomingConnections(this.connections, [ input ]);\n if (outgoingConnections.length === 0 && incomingConnections.length === 0) {\n const connections = this.findConnectionsUnderNode(fNode);\n if (connections.length) {\n console.log('connections', connections);\n }\n }\n }\n }\n\n private isValidRequest(request: ConnectIfIntersectRequest): boolean {\n const result =\n request?.draggableItems.length === 1 &&\n request?.draggableItems[ 0 ].type === EDraggableType.NODE;\n\n return result;\n }\n\n private getOutputsForNode(node: FNodeBase): FNodeOutputBase[] {\n return this.fFlow.outputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getInputsForNode(node: FNodeBase): FNodeInputBase[] {\n return this.fFlow.inputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private findConnectionsUnderNode(node: FNodeBase): FConnectionBase<FNodeOutputBase>[] {\n const nodeRect = getElementRectInCanvas(node.hostElement, this.fItemsContainer.transform, this.fFlow.hostElement);\n return this.connections.filter((x) => {\n const intersection = RectExtensions.intersectionWithVector(nodeRect, x.vector.point1, x.vector.point2);\n return (intersection || []).length > 0\n });\n }\n}\n","import { IDraggableItem } from '../../f-draggable';\n\nexport class ConnectIfIntersectRequest {\n\n constructor(\n public readonly draggableItems: IDraggableItem[]\n ) {\n }\n}\n","import { Directive, QueryList } from '@angular/core';\nimport { FConnectionBase, FNodeOutputBase } from '../../components';\nimport { IDraggableItem } from '../f-draggable';\n\n@Directive()\nexport abstract class FConnectIfIntersectBase {\n\n public abstract id: any;\n\n public abstract fConnections: QueryList<FConnectionBase<FNodeOutputBase>> | undefined;\n\n public abstract handle(draggableItems: IDraggableItem[]): void;\n}\n","import { ContentChildren, Directive, Inject, Input, QueryList } from '@angular/core';\nimport { IDraggableItem } from '../f-draggable';\nimport { FConnectIfIntersectBase } from './f-connect-if-intersect-base';\nimport {\n F_FLOW_COMPONENT,\n FConnectionBase,\n FFlowBase,\n FNodeOutputBase\n} from '../../components';\nimport { ConnectIfIntersectHandler, ConnectIfIntersectRequest } from './connect-if-intersect';\nimport { F_ITEMS_CONTAINER, FItemsContainerBase } from '../f-containers';\nimport { F_CONNECT_IF_INTERSECT, F_CONNECTION_COMPONENT } from '../../tokens';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"g[fConnectIfIntersect]\",\n standalone: true,\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-connect-if-intersect\"\n },\n providers: [\n { provide: F_CONNECT_IF_INTERSECT, useExisting: FConnectIfIntersectDirective }\n ]\n})\nexport class FConnectIfIntersectDirective extends FConnectIfIntersectBase {\n\n @Input()\n public override id: string = `f-connect-if-intersect-${ uniqueId++ }`;\n\n @ContentChildren(F_CONNECTION_COMPONENT, { descendants: true })\n public override fConnections!: QueryList<FConnectionBase<FNodeOutputBase>>;\n\n constructor(\n @Inject(F_FLOW_COMPONENT) private fFlow: FFlowBase,\n @Inject(F_ITEMS_CONTAINER) private fItemsContainer: FItemsContainerBase\n ) {\n super();\n }\n\n public override handle(draggableItems: IDraggableItem[]): void {\n new ConnectIfIntersectHandler(\n this.fConnections.toArray(), this.fFlow, this.fItemsContainer\n ).handle(\n new ConnectIfIntersectRequest(draggableItems)\n );\n }\n}\n","import { EventExtensions, Point, RectExtensions } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../../internal';\nimport { FItemsContainerBase } from '../f-containers';\nimport { FDraggableBase } from '../f-draggable';\nimport { isNode } from '../../components';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n protected isEnabled: boolean = false;\n\n private minimum: number = 0.3;\n private maximum: number = 4;\n\n private step: number = 1.1;\n\n private listeners: Function = EventExtensions.emptyListener();\n\n protected constructor(\n private fItemsContainer: FItemsContainerBase,\n private fDnd: FDraggableBase,\n private fCanvas: FCanvasBase,\n ) {\n }\n\n protected toggleZoom(): void {\n if (this.isEnabled && this.fCanvas.hostElement) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n private subscribe(): void {\n this.listeners();\n\n this.fCanvas.hostElement.addEventListener('wheel', this.onWheel.bind(this));\n this.fCanvas.hostElement.addEventListener('dblclick', this.onDoubleClick.bind(this));\n this.listeners = () => {\n this.fCanvas.hostElement.removeEventListener('wheel', this.onWheel.bind(this));\n this.fCanvas.hostElement.removeEventListener('dblclick', this.onDoubleClick.bind(this));\n };\n }\n\n public getScale(): number {\n return this.fItemsContainer.transform.scale || 1;\n }\n\n private onWheel(event: WheelEvent): void {\n event.preventDefault();\n\n if (this.fDnd.isDragStarted) {\n return;\n }\n\n let result: number = this.getScale();\n\n if (event.deltaY > 0) {\n if (this.getScale() / this.step >= this.minimum) {\n result = this.getScale() / this.step;\n }\n } else if (event.deltaY < 0) {\n if (this.getScale() * this.step <= this.maximum) {\n result = this.getScale() * this.step;\n }\n }\n\n const pointerPositionInCanvas = new Point(event.clientX, event.clientY).matrixTransform(this.fCanvas.hostElement);\n\n this.fItemsContainer.setZoom(result, pointerPositionInCanvas);\n this.fItemsContainer.redraw();\n this.fItemsContainer.completeDrag();\n }\n\n public onZoomToCenter(deltaY: number): void {\n const preventDefault = () => {\n };\n const rect = RectExtensions.fromElement(this.fCanvas.hostElement);\n\n this.onWheel({\n deltaY, preventDefault, clientX: rect.gravityCenter.x, clientY: rect.gravityCenter.y\n } as WheelEvent);\n }\n\n private onDoubleClick(event: MouseEvent): void {\n event.preventDefault();\n\n if (this.fDnd.isDragStarted || isNode(event.target as HTMLElement)) {\n return;\n }\n\n let result: number = this.getScale();\n\n if (this.getScale() * 1.7 <= this.maximum) {\n result = this.getScale() * 1.7;\n }\n const pointerPositionInCanvas = new Point(event.clientX, event.clientY).matrixTransform(this.fCanvas.hostElement);\n this.fItemsContainer.setZoom(result, pointerPositionInCanvas);\n this.fItemsContainer.redrawWithAnimation();\n this.fItemsContainer.completeDrag();\n }\n\n public reset(): void {\n this.fItemsContainer.resetZoom();\n this.fItemsContainer.redraw();\n this.fItemsContainer.completeDrag();\n }\n\n protected unsubscribe(): void {\n this.listeners();\n this.listeners = EventExtensions.emptyListener();\n }\n}\n","import {\n AfterViewInit,\n Directive, Inject, Input, OnDestroy\n} from \"@angular/core\";\nimport { BooleanExtensions } from '@foblex/core';\nimport { FZoomBase, F_ZOOM } from './f-zoom-base';\nimport { F_ITEMS_CONTAINER, FItemsContainerBase } from '../f-containers';\nimport { F_CANVAS, FCanvasBase } from '../../internal';\nimport { F_DND_DIRECTIVE, FDraggableBase } from '../f-draggable';\n\n@Directive({\n selector: \"g[fZoom]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-flow-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 = BooleanExtensions.castToBoolean(isEnabled);\n if (value !== this.isEnabled) {\n this.isEnabled = value;\n this.toggleZoom();\n }\n }\n\n constructor(\n @Inject(F_ITEMS_CONTAINER) fItemsContainer: FItemsContainerBase,\n @Inject(F_DND_DIRECTIVE) fDnd: FDraggableBase,\n @Inject(F_CANVAS) fCanvas: FCanvasBase\n ) {\n super(fItemsContainer, fDnd, fCanvas);\n }\n\n public ngAfterViewInit(): void {\n super.toggleZoom();\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Directive,\n ElementRef, EventEmitter,\n InjectionToken,\n NgZone,\n OnDestroy,\n QueryList\n} from '@angular/core';\nimport { IHasHostElement, IPoint, ITransformModel, Point, PointExtensions, RectExtensions } from '@foblex/core';\nimport { FItemsContainerBase, FZoomBase } from '../../directives';\nimport { FConnectorBase, FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from '../f-connectors';\nimport { debounceTime, merge, startWith, Subject, take, takeUntil } from 'rxjs';\nimport { FBackgroundBase } from '../../internal';\nimport { FConnectionsContainerBase } from '../../directives';\nimport { FNodesContainerBase } from '../../directives';\n\nexport const F_FLOW_COMPONENT = new InjectionToken<FFlowBase>('F_FLOW_COMPONENT');\n\n@Directive()\nexport abstract class FFlowBase implements IHasHostElement, AfterContentInit, OnDestroy {\n\n public abstract id: any;\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n private readonly onDestroy: Subject<void> = new Subject<void>();\n\n\n public abstract fNodesContainer: FNodesContainerBase;\n\n public abstract fConnectionsContainer: FConnectionsContainerBase;\n\n public abstract fZoom: FZoomBase | undefined;\n\n\n public abstract fItemsContainer: FItemsContainerBase;\n\n public abstract fBackground: FBackgroundBase;\n\n public abstract transform: ITransformModel;\n\n public abstract outlets: FNodeOutletBase[];\n\n public abstract outputs: FNodeOutputBase[];\n\n public abstract inputs: FNodeInputBase[];\n\n public connectorChanges: Subject<void> = new Subject<void>();\n\n public abstract onInitialized: EventEmitter<void>;\n\n protected constructor(\n private elementReference: ElementRef<SVGSVGElement>,\n private changeDetectorRef: ChangeDetectorRef,\n private ngZone: NgZone\n ) {\n }\n\n public ngAfterViewInit(): void {\n this.fNodesContainer.stateChanges.pipe(debounceTime(1), take(1)).subscribe(() => {\n this.onInitialized.emit();\n });\n }\n\n public ngAfterContentInit(): void {\n this.subscribeOnComponentsChanges();\n }\n\n protected subscribeOnComponentsChanges(): void {\n const changes = [\n this.fNodesContainer.fNodes.changes,\n this.fConnectionsContainer.fConnections.changes,\n this.connectorChanges\n ];\n\n merge(...changes).pipe(startWith(null), takeUntil(this.onDestroy)).subscribe(() => {\n const changedOrDestroyed = merge(...changes, this.onDestroy);\n\n merge(this.fNodesContainer.stateChanges).pipe(startWith(null), takeUntil(changedOrDestroyed)).subscribe(() => {\n\n this.fConnectionsContainer.fConnections.forEach((connection) => {\n const output = this.outputs.find((x) => x.id === connection.outputId);\n const input = this.inputs.find((x) => x.id === connection.inputId);\n if (input && output) {\n connection.fromTo = {\n output,\n input\n };\n connection.initialize();\n }\n });\n });\n });\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n const rect = RectExtensions.addPointToSize(\n RectExtensions.fromElement(this.fNodesContainer.hostElement),\n Point.fromPoint(toCenter).mult(2)\n );\n this.fItemsContainer.fitToParent(\n rect,\n RectExtensions.fromElement(this.hostElement),\n this.fNodesContainer.fNodes.map((x) => {\n return Point.fromPoint(x.position).sub(toCenter)\n })\n );\n animated ? this.fItemsContainer.redrawWithAnimation() : this.fItemsContainer.redraw();\n this.fItemsContainer.completeDrag();\n }\n\n public oneToOne(): void {\n this.fItemsContainer.oneToOneCentering(\n RectExtensions.fromElement(this.fNodesContainer.hostElement),\n RectExtensions.fromElement(this.hostElement),\n this.fNodesContainer.fNodes.map((x) => {\n return Point.fromPoint(x.position).sub(new Point(0, 0))\n })\n );\n this.fItemsContainer.redrawWithAnimation();\n this.fItemsContainer.completeDrag();\n }\n\n public zoomIn(): void {\n this.fZoom?.onZoomToCenter(-100);\n }\n\n public zoomOut(): void {\n this.fZoom?.onZoomToCenter(100);\n }\n\n public ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import {\n ChangeDetectorRef,\n Component, ContentChild,\n ElementRef, EventEmitter,\n Input,\n NgZone, Output,\n ViewChild\n} from '@angular/core';\nimport { FCanvasDirective } from '../../internal';\nimport { F_ITEMS_CONTAINER, F_ZOOM, FItemsContainerBase, FZoomBase } from '../../directives';\nimport { F_FLOW_COMPONENT, FFlowBase } from './f-flow-base';\nimport { ITransformModel } from '@foblex/core';\nimport { F_NODES_CONTAINER, FNodesContainerBase } from '../../directives';\nimport {\n F_CONNECTIONS_CONTAINER,\n FConnectionsContainerBase\n} from '../../directives';\nimport { F_BACKGROUND, FBackgroundBase } from '../../internal';\nimport { F_FLOW_CONNECTOR_PARENT, IFlowConnectorParent } from './i-flow-connector-parent';\nimport { FConnectorBase, FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from '../f-connectors';\n\nlet uniqueId: number = 0;\n\nexport const CONNECTION_MARKER_START = \"connection-marker-start\";\nexport const CONNECTION_MARKER_END = \"connection-marker-end\";\nexport const CONNECTION_MARKER_START_SELECTED = \"connection-marker-start-selected\";\nexport const CONNECTION_MARKER_END_SELECTED = \"connection-marker-end-selected\";\n\n@Component({\n selector: 'svg[fFlow]',\n templateUrl: './f-flow.component.html',\n hostDirectives: [\n {\n directive: FCanvasDirective\n }\n ],\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-flow\"\n },\n providers: [\n { provide: F_FLOW_COMPONENT, useExisting: FFlowComponent },\n { provide: F_FLOW_CONNECTOR_PARENT, useExisting: FFlowComponent }\n ],\n})\nexport class FFlowComponent extends FFlowBase implements IFlowConnectorParent {\n\n public readonly CONNECTION_MARKER_START = CONNECTION_MARKER_START;\n public readonly CONNECTION_MARKER_END = CONNECTION_MARKER_END;\n public readonly CONNECTION_MARKER_START_SELECTED = CONNECTION_MARKER_START_SELECTED;\n public readonly CONNECTION_MARKER_END_SELECTED = CONNECTION_MARKER_END_SELECTED;\n\n @Input()\n public override id: string = `f-flow-${ uniqueId++ }`;\n\n @ContentChild(F_NODES_CONTAINER, { static: true })\n public override fNodesContainer!: FNodesContainerBase;\n\n @ContentChild(F_CONNECTIONS_CONTAINER, { descendants: true })\n public override fConnectionsContainer!: FConnectionsContainerBase;\n\n @ContentChild(F_ITEMS_CONTAINER, { static: true })\n public override fItemsContainer!: FItemsContainerBase;\n\n @ViewChild(F_BACKGROUND, { static: true })\n public override fBackground!: FBackgroundBase;\n\n @ContentChild(F_ZOOM, { static: true })\n public override fZoom: FZoomBase | undefined;\n\n public override outlets: FNodeOutletBase[] = [];\n\n public override outputs: FNodeOutputBase[] = []\n\n public override inputs: FNodeInputBase[] = [];\n\n public override get transform(): ITransformModel {\n return this.fItemsContainer.transform;\n }\n\n @Output()\n public override onInitialized: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n elementReference: ElementRef<SVGSVGElement>,\n changeDetectorRef: ChangeDetectorRef,\n ngZone: NgZone\n ) {\n super(elementReference, changeDetectorRef, ngZone);\n }\n\n public addConnector(connector: FConnectorBase) {\n if (connector instanceof FNodeOutletBase) {\n this.outlets.push(connector);\n } else if (connector instanceof FNodeInputBase) {\n this.inputs.push(connector);\n } else if (connector instanceof FNodeOutputBase) {\n this.outputs.push(connector);\n }\n this.connectorChanges.next();\n }\n\n public removeConnector(connector: FConnectorBase) {\n if (connector instanceof FNodeOutletBase) {\n this.outlets = this.outlets.filter(x => x !== connector);\n } else if (connector instanceof FNodeInputBase) {\n this.inputs = this.inputs.filter(x => x !== connector);\n } else if (connector instanceof FNodeOutputBase) {\n this.outputs = this.outputs.filter(x => x !== connector);\n }\n this.connectorChanges.next();\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:g fBackground>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#background)\"></rect>\n </svg:g>\n <ng-content></ng-content>\n <svg:defs>\n <svg:marker [id]=\"CONNECTION_MARKER_START\" class=\"connection-marker-start\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END\" class=\"connection-marker-end\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_START_SELECTED\" class=\"connection-marker-start f-selected\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"CONNECTION_MARKER_END_SELECTED\" class=\"connection-marker-end f-selected\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\"></svg:path>\n </svg:marker>\n <ng-container *ngIf=\"fConnectionsContainer\">\n <ng-container *ngFor=\"let connection of fConnectionsContainer.fConnections.toArray()\">\n <svg:marker [id]=\"'connection-marker-start-' + connection.fromTo?.output?.color\" markerHeight=\"10\" markerWidth=\"10\" refY=\"5\" refX=\"5\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"2\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.output?.color\"></svg:circle>\n </svg:marker>\n <svg:marker [id]=\"'connection-marker-end-' + connection.fromTo?.input?.color\" markerHeight=\"10\" markerWidth=\"10\" orient=\"auto\" refX=\"5\" refY=\"3\">\n <svg:path d=\"M0,0 L6,3 0,6Z\" [attr.stroke]=\"'none'\" [attr.fill]=\"connection.fromTo?.input?.color\"></svg:path>\n </svg:marker>\n </ng-container>\n\n </ng-container>\n <svg:pattern id=\"background\" height=\"10\" width=\"10\" class=\"fb-background-pattern\"\n patternUnits=\"userSpaceOnUse\">\n <svg:circle cx=\"5\" cy=\"5\" r=\"0.5\"/>\n </svg:pattern>\n </svg:defs>\n</ng-container>\n","import {\n ChangeDetectionStrategy, Component, ElementRef, Inject, Input, ViewChild\n} from \"@angular/core\";\nimport { IVector } from '@foblex/core';\nimport { F_CONNECTION_COMPONENT } from '../../../tokens';\nimport {\n FConnectionBase,\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, getConnectionIntersect\n} from '../common';\nimport { F_FLOW_COMPONENT, FFlowBase } from '../../f-flow';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"g[fConnection]\",\n templateUrl: \"./f-connection.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-connection\"\n },\n providers: [ { provide: F_CONNECTION_COMPONENT, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent extends FConnectionBase {\n\n @Input()\n public override id: string = `f-connection-${ uniqueId++ }`;\n\n @Input()\n public override outputId: any;\n\n @Input()\n public override inputId: any;\n\n @ViewChild(FConnectionPathComponent, { static: true })\n public override fPath!: FConnectionPathComponent;\n\n @ViewChild(FConnectionGradientComponent, { static: true })\n public fGradient!: FConnectionGradientComponent;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(FConnectionTextComponent, { static: true })\n public fText!: FConnectionTextComponent;\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n @Inject(F_FLOW_COMPONENT) private flow: FFlowBase\n ) {\n super();\n }\n\n public override initialize(): void {\n const vector = getConnectionIntersect(\n this.fromTo!.output.getElementRectInCanvas(this.flow.transform, this.flow.hostElement),\n this.fromTo!.input.getElementRectInCanvas(this.flow.transform, this.flow.hostElement)\n );\n this.setVector(vector);\n this.redraw();\n }\n\n public initializeDrag(): void {\n }\n\n public setVector(vector: IVector): void {\n this.vector = vector;\n this.path = `M${ vector.point1.x },${ vector.point1.y }L${ vector.point2.x + 0.0001 },${ vector.point2.y + 0.0001 }`;\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.vector);\n this.fDragHandle.redraw(this.vector.point2);\n this.fText.redraw(this.vector);\n }\n\n public override select(): void {\n this.fPath.select();\n super.select();\n }\n\n public override deselect(): void {\n this.fPath.deselect();\n super.deselect();\n }\n\n public completeDrag(): void {\n this.redraw();\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:linearGradient fConnectionGradient [fromTo]=\"fromTo\"></svg:linearGradient>\n <svg:path fConnectionSelection [attr.d]=\"path\" [fromTo]=\"fromTo\"></svg:path>\n <svg:g>\n <svg:path f-connection-path [attr.d]=\"path\" [fromTo]=\"fromTo\"></svg:path>\n <svg:circle f-connection-drag-handle r=\"8\"></svg:circle>\n </svg:g>\n <svg:text f-connection-text [fromTo]=\"fromTo\"></svg:text>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FConnectionCommonModule } from '../common';\nimport { FConnectionComponent } from './f-connection.component';\n\n@NgModule({\n declarations: [\n FConnectionComponent\n ],\n imports: [\n CommonModule,\n FConnectionCommonModule\n ],\n exports: [\n FConnectionComponent\n ]\n})\nexport class FConnectionModule {\n}\n","import { NgModule } from '@angular/core';\nimport { FFlowComponent, FTempConnectionModule } from './components';\nimport { FConnectionCommonModule } from './components';\nimport { FNodeInputDirective, FNodeOutletDirective, FNodeOutputDirective } from './components';\nimport { FDragHandleDirective, FForeignObjectComponent, FNodeComponent } from './components';\nimport { CommonModule } from '@angular/common';\nimport { FConnectionsContainerComponent, FItemsContainerDirective, FNodesContainerComponent, FZoomDirective } from './directives';\nimport { FBackgroundDirective, FCanvasDirective } from './internal';\n\n@NgModule({\n declarations: [\n FFlowComponent,\n FNodeComponent,\n FZoomDirective,\n FForeignObjectComponent,\n FDragHandleDirective,\n FItemsContainerDirective,\n FNodesContainerComponent,\n FConnectionsContainerComponent,\n FNodeInputDirective,\n FNodeOutletDirective,\n FNodeOutputDirective,\n ],\n imports: [\n CommonModule,\n FTempConnectionModule,\n FCanvasDirective,\n FBackgroundDirective,\n ],\n providers: [],\n exports: [\n FFlowComponent,\n FNodeComponent,\n FZoomDirective,\n FForeignObjectComponent,\n FDragHandleDirective,\n FItemsContainerDirective,\n FNodesContainerComponent,\n FConnectionsContainerComponent,\n FConnectionCommonModule,\n FNodeInputDirective,\n FNodeOutletDirective,\n FNodeOutputDirective,\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FConnectionTextPathDirective","uniqueId","i1.FConnectionGradientComponent","i2.FConnectionPathComponent","i3.FConnectionTextComponent","i1.FCanvasBase","i1.FTempConnectionComponent","i1.FExternalItemService","i1.FFlowBase","i2.FDraggableService","i3.FExternalItemService","ALIGN_THRESHOLD","i1.FDraggableService","i2.FExternalItemService","i1.FCanvasDirective","i3.FBackgroundDirective","i1.FConnectionDragHandleComponent","i2.FConnectionGradientComponent","i3.FConnectionPathComponent","i4.FConnectionTextComponent","i5.FConnectionSelectionComponent"],"mappings":"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"}
1
+ {"version":3,"file":"foblex-flow.mjs","sources":["../../../projects/f-flow/src/components/f-flow/f-backgroud/domain/i-f-background-pattern.ts","../../../projects/f-flow/src/components/f-flow/f-backgroud/f-cell-pattern/f-cell-pattern.component.ts","../../../projects/f-flow/src/components/f-flow/f-backgroud/f-cell-pattern/f-cell-pattern.component.html","../../../projects/f-flow/src/components/f-flow/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/f-components-store.ts","../../../projects/f-flow/src/components/f-flow/f-backgroud/f-background.component.ts","../../../projects/f-flow/src/components/f-flow/f-backgroud/f-background.component.html","../../../projects/f-flow/src/components/f-flow/f-canvas/domain/f-canvas-change.event.ts","../../../projects/f-flow/src/domain/get-connector-side-in-node/e-connector-side.ts","../../../projects/f-flow/src/domain/get-connector-side-in-node/get-connector-side-in-node.handler.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/get-flow-uid.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/common/mixins/change-connection-selection.mixin.ts","../../../projects/f-flow/src/f-connection/common/mixins/change-connection-visibility.mixin.ts","../../../projects/f-flow/src/f-connection/common/path-constructor/segment-path/connector-side-point.ts","../../../projects/f-flow/src/f-connection/common/path-constructor/segment-path/edge-center-calculator.ts","../../../projects/f-flow/src/f-connection/common/path-constructor/segment-path/point-utils.ts","../../../projects/f-flow/src/f-connection/common/path-constructor/segment-path/path-bend.ts","../../../projects/f-flow/src/f-connection/common/path-constructor/segment-path/segment-path.ts","../../../projects/f-flow/src/f-connection/common/path-constructor/straight-path/straight-path.ts","../../../projects/f-flow/src/f-connection/common/path-constructor/bezier-path.ts","../../../projects/f-flow/src/f-connection/common/e-connection-type.ts","../../../projects/f-flow/src/f-connection/common/path-constructor/path-constructor.ts","../../../projects/f-flow/src/f-connection/common/f-connection-base.ts","../../../projects/f-flow/src/f-connection/common/e-connection-behavior.ts","../../../projects/f-flow/src/f-connection/common/cast-to-connection-behavior.ts","../../../projects/f-flow/src/f-connection/common/cast-to-connection-type.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/domain/get-connection-vector/get-connection-vector.handler.ts","../../../projects/f-flow/src/domain/get-connection-vector/get-connection-vector.request.ts","../../../projects/f-flow/src/domain/errors.ts","../../../projects/f-flow/src/domain/get-all-nodes-rect.handler.ts","../../../projects/f-flow/src/domain/get-connection.handler.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow.handler.ts","../../../projects/f-flow/src/domain/get-incoming-connections.handler.ts","../../../projects/f-flow/src/domain/get-outgoing-connections.handler.ts","../../../projects/f-flow/src/domain/get-input-rect-in-flow.handler.ts","../../../projects/f-flow/src/domain/get-output-rect-in-flow.handler.ts","../../../projects/f-flow/src/domain/update-node-layer.handler.ts","../../../projects/f-flow/src/domain/providers.ts","../../../projects/f-flow/src/f-node/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/f-node/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/f-node/f-connectors/f-node-input/is-node-input.ts","../../../projects/f-flow/src/f-node/f-node-base.ts","../../../projects/f-flow/src/f-node/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/f-node/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/f-node/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/f-node/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/f-node/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/f-node/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/f-node/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/f-node/f-drag-handle/f-drag-handle.directive.ts","../../../projects/f-flow/src/f-node/f-drag-handle/is-drag-handle.ts","../../../projects/f-flow/src/f-node/f-resize-observer.ts","../../../projects/f-flow/src/f-node/f-node.component.ts","../../../projects/f-flow/src/f-node/f-node.component.html","../../../projects/f-flow/src/f-node/is-node.ts","../../../projects/f-flow/src/components/f-flow/f-canvas/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/components/f-flow/f-canvas/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/common-behaviours/change-zoom/change-zoom.ts","../../../projects/f-flow/src/common-behaviours/fit-to-parent/fit-to-parent.ts","../../../projects/f-flow/src/common-behaviours/one-to-one-centering/one-to-one-centering.ts","../../../projects/f-flow/src/common-behaviours/change-position.ts","../../../projects/f-flow/src/components/f-flow/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/components/f-flow/f-canvas/f-canvas.component.ts","../../../projects/f-flow/src/components/f-flow/f-canvas/f-canvas.component.html","../../../projects/f-flow/src/components/f-flow/f-flow-base.ts","../../../projects/f-flow/src/components/f-flow/f-definitions/domain/i-connection-marker.ts","../../../projects/f-flow/src/components/f-flow/f-definitions/f-markers/f-connection-marker-end.directive.ts","../../../projects/f-flow/src/components/f-flow/f-definitions/f-markers/f-connection-marker-end-selected.directive.ts","../../../projects/f-flow/src/components/f-flow/f-definitions/f-markers/f-connection-marker-start.directive.ts","../../../projects/f-flow/src/components/f-flow/f-definitions/f-markers/f-connection-marker-start-selected.directive.ts","../../../projects/f-flow/src/components/f-flow/f-definitions/f-definitions-base.ts","../../../projects/f-flow/src/components/f-flow/f-definitions/f-definitions.component.ts","../../../projects/f-flow/src/components/f-flow/f-definitions/f-definitions.component.html","../../../projects/f-flow/src/f-draggable/e-draggable-type.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-draggable-data-context.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas.on-pointer-up.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas.prepare-drag-sequence.ts","../../../projects/f-flow/src/f-draggable/canvas/providers.ts","../../../projects/f-flow/src/f-draggable/components/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/f-draggable/components/f-external-item/is-external-item.ts","../../../projects/f-flow/src/f-draggable/components/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/f-draggable/components/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/f-draggable/components/f-line-alignment/domain/line-element.ts","../../../projects/f-flow/src/f-draggable/components/f-line-alignment/domain/line-service.ts","../../../projects/f-flow/src/f-draggable/components/f-line-alignment/domain/nearest-coordinate.ts","../../../projects/f-flow/src/f-draggable/components/f-line-alignment/f-line-alignment-base.ts","../../../projects/f-flow/src/f-draggable/components/f-line-alignment/f-line-alignment.component.ts","../../../projects/f-flow/src/f-draggable/components/f-selection-area/f-selection-area-base.ts","../../../projects/f-flow/src/f-draggable/components/f-selection-area/f-selection-area.component.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.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.event.ts","../../../projects/f-flow/src/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.ts","../../../projects/f-flow/src/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.ts","../../../projects/f-flow/src/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.ts","../../../projects/f-flow/src/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection.on-pointer-up.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection.prepare-drag-sequence.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.event.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection.on-pointer-up.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection.prepare-drag-sequence.ts","../../../projects/f-flow/src/f-draggable/connections/providers.ts","../../../projects/f-flow/src/f-draggable/external-item/create-node.event.ts","../../../projects/f-flow/src/f-draggable/external-item/external-item.drag-handler.ts","../../../projects/f-flow/src/f-draggable/external-item/external-item.prepare-drag-sequence.ts","../../../projects/f-flow/src/f-draggable/external-item/external-item.on-pointer-up.ts","../../../projects/f-flow/src/f-draggable/external-item/providers.ts","../../../projects/f-flow/src/f-draggable/node/connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-source.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-target.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/node.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/domain/is-connection-under-node/is-connection-under-node.handler.ts","../../../projects/f-flow/src/f-draggable/node/node.on-pointer-up.ts","../../../projects/f-flow/src/f-draggable/node/node.prepare-drag-sequence.ts","../../../projects/f-flow/src/f-draggable/node/providers.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.on-pointer-down.ts","../../../projects/f-flow/src/f-draggable/single-select/providers.ts","../../../projects/f-flow/src/f-draggable/selection-area/get-can-be-selected-items/get-can-be-selected-items.handler.ts","../../../projects/f-flow/src/f-draggable/selection-area/selection-area.drag-handle.ts","../../../projects/f-flow/src/f-draggable/selection-area/selection-area.prepare-drag-sequence.ts","../../../projects/f-flow/src/f-draggable/selection-area/selection-area.on-pointer-up.ts","../../../projects/f-flow/src/f-draggable/selection-area/providers.ts","../../../projects/f-flow/src/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/components/f-flow/f-parent.injection-token.ts","../../../projects/f-flow/src/components/f-flow/f-flow.component.ts","../../../projects/f-flow/src/components/f-flow/f-flow.component.html","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["import { ITransformModel } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\n\n setTransform(transform: ITransformModel): void;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef, Input,\n OnInit\n} from \"@angular/core\";\nimport { DomElementExtensions, ITransformModel, TransformModelExtensions } from '@foblex/core';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-cell-pattern\",\n standalone: true,\n templateUrl: \"./f-cell-pattern.component.html\",\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FCellPatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FCellPatternComponent implements OnInit, IFBackgroundPattern {\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n @Input()\n public verticalLineColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public horizontalLineColor: string = 'rgba(0,0,0,0.1)';\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n private transform: ITransformModel = TransformModelExtensions.default();\n\n public x: number = 0;\n\n public y: number = 0;\n\n private defaultCellSize: number = 20;\n\n public cellSize = this.defaultCellSize;\n\n private pattern!: SVGPatternElement;\n private horizontalLine!: SVGLineElement;\n private verticalLine!: SVGLineElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n }\n\n public ngOnInit(): void {\n this.createPatternDom();\n this.redraw();\n }\n\n private createPatternDom(): void {\n this.pattern = DomElementExtensions.createSvgElement('pattern');\n this.pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this.pattern);\n this.horizontalLine = DomElementExtensions.createSvgElement('line');\n this.horizontalLine.setAttribute('stroke', this.horizontalLineColor);\n this.pattern.appendChild(this.horizontalLine);\n this.verticalLine = DomElementExtensions.createSvgElement('line');\n this.verticalLine.setAttribute('stroke', this.verticalLineColor);\n this.pattern.appendChild(this.verticalLine);\n }\n\n private calculatePattern(): void {\n this.x = this.transform.position.x + this.transform.scaledPosition.x;\n this.y = this.transform.position.y + this.transform.scaledPosition.y;\n this.cellSize = this.defaultCellSize * this.transform.scale;\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n this.redrawHorizontalLine();\n this.redrawVerticalLine();\n this.changeDetectorRef.detectChanges();\n }\n\n private redrawPattern(): void {\n this.pattern.setAttribute('x', `${ this.x }`);\n this.pattern.setAttribute('y', `${ this.y }`);\n this.pattern.setAttribute('width', `${ this.cellSize }`);\n this.pattern.setAttribute('height', `${ this.cellSize }`);\n }\n\n private redrawHorizontalLine(): void {\n this.horizontalLine.setAttribute('x1', `0`);\n this.horizontalLine.setAttribute('x2', `${ this.cellSize }`);\n this.horizontalLine.setAttribute('y1', `${ this.cellSize }`);\n this.horizontalLine.setAttribute('y2', `${ this.cellSize }`);\n }\n\n private redrawVerticalLine(): void {\n this.verticalLine.setAttribute('x1', `${ this.cellSize }`);\n this.verticalLine.setAttribute('x2', `${ this.cellSize }`);\n this.verticalLine.setAttribute('y1', `0`);\n this.verticalLine.setAttribute('y2', `${ this.cellSize }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this.transform = transform;\n this.redraw();\n }\n}\n","<ng-container></ng-container>\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement, ITransformModel } from '@foblex/core';\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 { Injectable } from '@angular/core';\nimport {\n FBackgroundBase,\n FCanvasBase, FDefinitionsBase,\n FFlowBase,\n} from './components';\nimport { Subject } from 'rxjs';\nimport { FDraggableBase } from './f-draggable';\nimport { ITransformModel } from '@foblex/core';\nimport { FConnectionBase } from './f-connection';\nimport { FConnectorBase, FNodeBase, FNodeInputBase, FNodeOutletBase, FNodeOutputBase } from './f-node';\n\n@Injectable()\nexport class FComponentsStore {\n\n public readonly changes: Subject<void> = new Subject<void>();\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 fOutputs: FConnectorBase[] = [];\n\n public fInputs: FConnectorBase[] = [];\n\n public fOutlets: FConnectorBase[] = [];\n\n public fDefs: FDefinitionsBase | undefined;\n\n public fDraggable: FDraggableBase | undefined;\n\n public addOutput(output: FNodeOutputBase): void {\n this.fOutputs.push(output);\n this.changes.next();\n }\n\n public removeOutput(output: FNodeOutputBase): void {\n this.fOutputs = this.fOutputs.filter(o => o !== output);\n this.changes.next();\n }\n\n public addInput(input: FNodeInputBase): void {\n this.fInputs.push(input);\n this.changes.next();\n }\n\n public removeInput(input: FNodeInputBase): void {\n this.fInputs = this.fInputs.filter(i => i !== input);\n this.changes.next();\n }\n\n public addOutlet(outlet: FNodeOutletBase): void {\n this.fOutlets.push(outlet);\n this.changes.next();\n }\n\n public removeOutlet(outlet: FNodeOutletBase): void {\n this.fOutlets = this.fOutlets.filter(o => o !== outlet);\n this.changes.next();\n }\n\n public addNode(node: FNodeBase): void {\n this.fNodes.push(node);\n this.changes.next();\n }\n\n public findNode(element: HTMLElement | SVGElement): FNodeBase | undefined {\n return this.fNodes.find(n => n.isContains(element));\n }\n\n public removeNode(node: FNodeBase): void {\n this.fNodes = this.fNodes.filter(n => n !== node);\n this.changes.next();\n }\n\n public addConnection(connection: FConnectionBase): void {\n this.fConnections.push(connection);\n this.changes.next();\n }\n\n public removeConnection(connection: FConnectionBase): void {\n this.fConnections = this.fConnections.filter(c => c !== connection);\n this.changes.next();\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, ContentChild,\n ElementRef, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { FComponentsStore } from '../../../f-components-store';\nimport { DomElementExtensions, ITransformModel, TransformModelExtensions } from '@foblex/core';\nimport { F_BACKGROUND_PATTERN } from './domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-background\",\n templateUrl: \"./f-background.component.html\",\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: true })\n public fBackgroundPattern: FBackgroundBase | undefined;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fBackground = this;\n }\n\n public ngAfterContentInit(): void {\n const children = this.fBackgroundPattern?.hostElement.getElementsByTagName('pattern') || [];\n const pattern = children.length ? children[ 0 ] : undefined;\n if (pattern) {\n const defs = DomElementExtensions.createSvgElement('defs');\n pattern.id = 'f-background-marker-' + uniqueId++;\n this.fBackgroundPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this.hostElement?.firstChild?.appendChild(defs);\n const rect = DomElementExtensions.createSvgElement('rect');\n rect.setAttribute('fill', 'url(#' + pattern.id + ')');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n this.hostElement.firstChild?.appendChild(rect);\n const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n this.fBackgroundPattern?.setTransform(transform);\n }\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","<svg>\n <ng-content></ng-content>\n\n<!-- <rect width=\"100%\" height=\"100%\" fill=\"url(#background-pattern)\"></rect>-->\n</svg>\n","import { IPoint } from '@foblex/core';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","export enum EConnectorSide {\n\n LEFT = 'left',\n\n TOP = 'top',\n\n RIGHT = 'right',\n\n BOTTOM = 'bottom',\n}\n","import { IHandler, RectExtensions } from '@foblex/core';\nimport { EConnectorSide } from './e-connector-side';\n\nexport class GetConnectorSideInNodeHandler implements IHandler<HTMLElement | SVGElement, EConnectorSide> {\n\n public handle(connector: HTMLElement | SVGElement, node: HTMLElement | SVGElement): EConnectorSide {\n const childRect = RectExtensions.fromElement(connector);\n const parentRect = node.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 return EConnectorSide.LEFT;\n } else if (minDelta === deltaRight) {\n return EConnectorSide.RIGHT;\n } else if (minDelta === deltaTop) {\n return EConnectorSide.TOP;\n } else {\n return EConnectorSide.BOTTOM;\n }\n }\n}\n","import { sanitizeElementId } from '@foblex/core';\n\nexport const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return sanitizeElementId('connection_text_' + connectionId);\n },\n connectionForSelectionId(connectionId: string): string {\n return sanitizeElementId('connection_for_selection_' + connectionId);\n },\n connectionId(connectionId: string): string {\n return sanitizeElementId('connection_' + connectionId);\n },\n gradientId(connectionId: string): string {\n return sanitizeElementId('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 { IHasHostElement } from '@foblex/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';\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.outputId + this.base.inputId\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 ) {\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.text || '');\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 = 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 = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n if (!context) {\n throw new Error('Canvas context is not supported');\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","import { IHasHostElement, IVector } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\n\nexport const CONNECTION_TEXT = new InjectionToken<IConnectionText>('CONNECTION_TEXT');\n\nexport interface IConnectionText extends IHasHostElement {\n\n redraw(vector: IVector): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, ViewChild\n} from \"@angular/core\";\nimport { IVector, PointExtensions } from '@foblex/core';\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.outputId + this.base.inputId\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n public get text(): string {\n return this.base.text || '';\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(vector: IVector): void {\n\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(vector);\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(vector, this.base.text || '', 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(vector: IVector): boolean {\n return vector.point1.x > vector.point2.x;\n }\n\n private static getTextStartOffset(vector: IVector, name: string, symbolWidth: number): number {\n const vectorLength: number = PointExtensions.hypotenuse(vector.point1, vector.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 { IHasHostElement, IPoint } from '@foblex/core';\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(point: IPoint): void {\n this.hostElement.setAttribute('cx', point.x.toString());\n this.hostElement.setAttribute('cy', point.y.toString());\n }\n}\n\n","import { IHasHostElement, IVector } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\n\nexport const CONNECTION_GRADIENT = new InjectionToken<IConnectionGradient>('CONNECTION_GRADIENT');\n\nexport interface IConnectionGradient extends IHasHostElement {\n\n initialize(): void;\n\n redraw(vector: IVector): void;\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { IVector, Point } from '@foblex/core';\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.outputId + this.base.inputId\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.startColor);\n this.setToColor(this.base.endColor);\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(vector: IVector): void {\n const x: number = vector.point2.x - vector.point1.x;\n const y: number = vector.point2.y - vector.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 { IHasHostElement } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\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","export const FLOW = {\n UID: 'f-flow',\n};\n\nexport function getFlowUid(): string {\n return FLOW.UID;\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject\n} 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 { sanitizeElementId } from '@foblex/core';\nimport { getFlowUid } from '../../../get-flow-uid';\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.stroke]': 'linkToGradient',\n },\n providers: [ { provide: CONNECTION_PATH, useExisting: FConnectionPathComponent } ],\n})\nexport class FConnectionPathComponent implements IConnectionPath {\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.base.outputId + this.base.inputId\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.base.outputId + this.base.inputId\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(#${ sanitizeElementId(getFlowUid() + '-f-connection-marker-start-selected') })`);\n this.hostElement.setAttribute('marker-end', `url(#${ sanitizeElementId(getFlowUid() + '-f-connection-marker-end-selected') })`);\n }\n\n public deselect(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ sanitizeElementId(getFlowUid() + '-f-connection-marker-start-' + this.base.startColor || 'black') })`);\n this.hostElement.setAttribute('marker-end', `url(#${ sanitizeElementId(getFlowUid() + '-f-connection-marker-end-' + this.base.endColor || 'black') })`);\n }\n\n public isSelected(): boolean {\n return this.hostElement.getAttribute('marker-start') === `url(#f-connection-marker-start-selected)`\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject\n} from \"@angular/core\";\nimport { IHasHostElement } from '@foblex/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';\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.outputId + this.base.inputId\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 { IHasHostElement } from '@foblex/core';\nimport { IConnectionPath } from '../f-path';\nimport { AbstractConstructor, Constructor } from '../../../common-behaviours';\n\nexport interface ISelectable {\n\n hostElement: HTMLElement | SVGElement;\n\n select(): void;\n\n deselect(): void;\n\n isSelected(): boolean;\n}\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeConnectionSelectionConstructor = Constructor<ISelectable> & AbstractConstructor<ISelectable>;\n\nexport function mixinChangeConnectionSelection<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeConnectionSelectionConstructor & T;\nexport function mixinChangeConnectionSelection<T extends Constructor<IHasHostElement>>(base: T): CanChangeConnectionSelectionConstructor & T {\n return class extends base {\n\n public fPath: IConnectionPath | undefined;\n\n public deselect(): void {\n this.fPath?.deselect();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.fPath?.select();\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { IHasHostElement } from '@foblex/core';\nimport { AbstractConstructor, Constructor } from '../../../common-behaviours';\n\nexport interface ICanChangeConnectionVisibility {\n\n hostElement: HTMLElement | SVGElement;\n\n show(): void;\n\n hide(): void;\n}\n\ntype CanChangeConnectionVisibilityConstructor = Constructor<ICanChangeConnectionVisibility> & AbstractConstructor<ICanChangeConnectionVisibility>;\n\nexport function mixinChangeConnectionVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeConnectionVisibilityConstructor & T;\nexport function mixinChangeConnectionVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeConnectionVisibilityConstructor & 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 { PointExtensions } from '@foblex/core';\nimport { EConnectorSide } from '../../../../domain';\n\nexport const CONNECTOR_SIDE_POINT = {\n\n [ EConnectorSide.LEFT ]: PointExtensions.initialize(-1, 0),\n\n [ EConnectorSide.RIGHT ]: PointExtensions.initialize(1, 0),\n\n [ EConnectorSide.TOP ]: PointExtensions.initialize(0, -1),\n\n [ EConnectorSide.BOTTOM ]: PointExtensions.initialize(0, 1),\n};\n","export class EdgeCenterCalculator {\n public static getEdgeCenter(sourceX: number, sourceY: number, targetX: number, targetY: number): [number, number, number, number] {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n return [centerX, centerY, xOffset, yOffset];\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/core';\nimport { EConnectorSide } from '../../../../domain';\n\nexport class PointUtils {\n public static getDirection(source: IPoint, sourcePosition: EConnectorSide, target: IPoint): IPoint {\n if (sourcePosition === EConnectorSide.LEFT || sourcePosition === EConnectorSide.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 public static 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","import { IPoint } from '@foblex/core';\nimport { PointUtils } from './point-utils';\n\nexport class PathBend {\n public static getBend(a: IPoint, b: IPoint, c: IPoint, size: number): string {\n const bendSize = Math.min(PointUtils.distance(a, b) / 2, PointUtils.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","import { IPoint } from '@foblex/core';\nimport { CONNECTOR_SIDE_POINT } from './connector-side-point';\nimport { PointUtils } from './point-utils';\nimport { EdgeCenterCalculator } from './edge-center-calculator';\nimport { PathBend } from './path-bend';\nimport { IPathConstructor, IPathConstructorResult } from '../i-path-constructor';\nimport { EConnectorSide } from '../../../../domain';\n\nexport class SegmentPath implements IPathConstructor {\n\n public handle(from: IPoint, fromSide: EConnectorSide, to: IPoint, toSide: EConnectorSide, borderRadius: number = 8, offset = 32): IPathConstructorResult {\n const [ points, labelX, labelY, offsetX, offsetY ] = SegmentPath.getPoints(\n from,\n fromSide,\n to,\n toSide,\n { x: undefined, y: undefined },\n offset\n );\n\n const path = SegmentPath.buildPath(points, borderRadius);\n\n return { path, labelX, labelY, offsetX, offsetY };\n }\n\n public static getPoints(\n source: IPoint,\n sourcePosition: EConnectorSide,\n target: IPoint,\n targetPosition: EConnectorSide,\n center: Partial<IPoint>,\n offset: number\n ): [ IPoint[], number, number, number, number ] {\n const sourceDir = CONNECTOR_SIDE_POINT[ sourcePosition ];\n const targetDir = CONNECTOR_SIDE_POINT[ targetPosition ];\n const sourceGapped: IPoint = { x: source.x + sourceDir.x * offset, y: source.y + sourceDir.y * offset };\n const targetGapped: IPoint = { x: target.x + targetDir.x * offset, y: target.y + targetDir.y * offset };\n const dir = PointUtils.getDirection(sourceGapped, sourcePosition, targetGapped);\n const dirAccessor = dir.x !== 0 ? 'x' : 'y';\n const currDir = dir[ dirAccessor ];\n\n let points: IPoint[] = [];\n let centerX, centerY;\n const sourceGapOffset = { x: 0, y: 0 };\n const targetGapOffset = { x: 0, y: 0 };\n\n const [ defaultCenterX, defaultCenterY, defaultOffsetX, defaultOffsetY ] = EdgeCenterCalculator.getEdgeCenter(\n source.x,\n source.y,\n target.x,\n target.y\n );\n\n if (sourceDir[ dirAccessor ] * targetDir[ dirAccessor ] === -1) {\n centerX = center.x || defaultCenterX;\n centerY = center.y || defaultCenterY;\n const verticalSplit: IPoint[] = [\n { x: centerX, y: sourceGapped.y },\n { x: centerX, y: targetGapped.y },\n ];\n const horizontalSplit: IPoint[] = [\n { x: sourceGapped.x, y: centerY },\n { x: targetGapped.x, y: centerY },\n ];\n\n if (sourceDir[ dirAccessor ] === currDir) {\n points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget: IPoint[] = [ { x: sourceGapped.x, y: targetGapped.y } ];\n const targetSource: IPoint[] = [ { x: targetGapped.x, y: sourceGapped.y } ];\n\n if (dirAccessor === 'x') {\n points = sourceDir.x === currDir ? targetSource : sourceTarget;\n } else {\n points = sourceDir.y === currDir ? sourceTarget : targetSource;\n }\n\n if (sourcePosition === targetPosition) {\n const diff = Math.abs(source[ dirAccessor ] - target[ dirAccessor ]);\n\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDir[ dirAccessor ] === currDir) {\n sourceGapOffset[ dirAccessor ] = (sourceGapped[ dirAccessor ] > source[ dirAccessor ] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[ dirAccessor ] = (targetGapped[ dirAccessor ] > target[ dirAccessor ] ? -1 : 1) * gapOffset;\n }\n }\n }\n\n if (sourcePosition !== targetPosition) {\n const dirAccessorOpposite = dirAccessor === 'x' ? 'y' : 'x';\n const isSameDir = sourceDir[ dirAccessor ] === targetDir[ dirAccessorOpposite ];\n const sourceGtTargetOppo = sourceGapped[ dirAccessorOpposite ] > targetGapped[ dirAccessorOpposite ];\n const sourceLtTargetOppo = sourceGapped[ dirAccessorOpposite ] < targetGapped[ dirAccessorOpposite ];\n const flipSourceTarget =\n (sourceDir[ dirAccessor ] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n (sourceDir[ dirAccessor ] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = dirAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n\n const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y };\n const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };\n const maxXDistance = Math.max(\n Math.abs(sourceGapPoint.x - points[ 0 ].x),\n Math.abs(targetGapPoint.x - points[ 0 ].x)\n );\n const maxYDistance = Math.max(\n Math.abs(sourceGapPoint.y - points[ 0 ].y),\n Math.abs(targetGapPoint.y - points[ 0 ].y)\n );\n\n if (maxXDistance >= maxYDistance) {\n centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n centerY = points[ 0 ].y;\n } else {\n centerX = points[ 0 ].x;\n centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n }\n }\n\n const pathPoints = [\n source,\n { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y },\n ...points,\n { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y },\n target,\n ];\n\n return [ pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY ];\n }\n\n private static 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 = PathBend.getBend(points[ i - 1 ], p, points[ i + 1 ], borderRadius);\n } else if (i === points.length - 1) {\n segment = SegmentPath.buildLastLineSegment(i, p);\n } else {\n segment = SegmentPath.buildMoveOrLineSegment(i, p);\n }\n path += segment;\n }\n\n return path;\n }\n\n private static buildMoveOrLineSegment(index: number, point: IPoint): string {\n return `${ index === 0 ? 'M' : 'L' }${ point.x } ${ point.y }`;\n }\n\n\n private static buildLastLineSegment(index: number, point: IPoint): string {\n return `L${ point.x + 0.0001 } ${ point.y + 0.0001 }`;\n }\n}\n","import { IPathConstructor, IPathConstructorResult } from '../i-path-constructor';\nimport { IPoint } from '@foblex/core';\nimport { EdgeCenterCalculator } from '../segment-path';\nimport { EConnectorSide } from '../../../../domain';\n\nexport class StraightPath implements IPathConstructor {\n\n public handle(from: IPoint, fromSide: EConnectorSide, to: IPoint, toSide: EConnectorSide, borderRadius: number = 8, offset = 32): IPathConstructorResult {\n\n const [ labelX, labelY, offsetX, offsetY ] = EdgeCenterCalculator.getEdgeCenter(\n from.x,\n from.y,\n to.x,\n to.y\n );\n\n const path = `M ${ from.x } ${ from.y } L ${ to.x + 0.0001 } ${ to.y + 0.0001 }`;\n\n return { path, labelX, labelY, offsetX, offsetY };\n }\n}\n","import { IPathConstructor, IPathConstructorResult } from './i-path-constructor';\nimport { IPoint } from '@foblex/core';\nimport { SegmentPath } from './segment-path';\nimport { EConnectorSide } from '../../../domain';\n\nexport class BezierPath implements IPathConstructor {\n\n public handle(from: IPoint, fromSide: EConnectorSide, to: IPoint, toSide: EConnectorSide, borderRadius: number = 8, offset = 32): IPathConstructorResult {\n\n return new SegmentPath().handle(from, fromSide, to, toSide, borderRadius, offset);\n }\n}\n","export enum EConnectionType {\n\n SEGMENT = 'segment',\n\n STRAIGHT = 'straight',\n\n BEZIER = 'bezier',\n}\n","import { EConnectionType } from '../e-connection-type';\nimport { StraightPath } from './straight-path';\nimport { SegmentPath } from './segment-path';\nimport { IPoint } from '@foblex/core';\nimport { IPathConstructorResult } from './i-path-constructor';\nimport { EConnectorSide } from '../../../domain';\n\nexport class PathConstructor {\n\n private static constructors = {\n [EConnectionType.STRAIGHT]: new StraightPath(),\n [EConnectionType.BEZIER]: new StraightPath(),\n [EConnectionType.SEGMENT]: new SegmentPath(),\n }\n\n public static handle(type: EConnectionType, from: IPoint, fromSide: EConnectorSide, to: IPoint, toSide: EConnectorSide): IPathConstructorResult {\n return this.constructors[type].handle(from, fromSide, to, toSide);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { IHasHostElement, IPoint, IVector, VectorExtensions } from '@foblex/core';\nimport { Subject } from 'rxjs';\nimport { EConnectionBehavior } from './e-connection-behavior';\nimport { EConnectionType } from './e-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 {\n ICanChangeConnectionVisibility,\n ISelectable,\n mixinChangeConnectionSelection,\n mixinChangeConnectionVisibility\n} from './mixins';\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 { PathConstructor } from './path-constructor';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { EConnectorSide } from '../../domain';\n\nconst MIXIN_BASE = mixinChangeConnectionSelection(\n mixinChangeConnectionVisibility(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n }));\n\n@Directive()\nexport abstract class FConnectionBase extends MIXIN_BASE\n implements IHasHostElement, ISelectable,\n ICanChangeConnectionVisibility,\n IHasStateChanges, IHasConnectionColor,\n IHasConnectionFromTo, IHasConnectionText {\n\n public abstract id: any;\n\n public abstract text: string;\n\n public abstract startColor: string;\n\n public abstract endColor: string;\n\n public abstract outputId: any;\n\n public abstract inputId: any;\n\n public path: string = '';\n\n public vector: IVector = VectorExtensions.initialize();\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract disabled: boolean;\n\n public abstract boundingElement: HTMLElement | SVGElement;\n\n public abstract behavior: EConnectionBehavior;\n\n public abstract type: EConnectionType;\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 fText: IConnectionText;\n\n public abstract fLabel: ElementRef<SVGRectElement>;\n\n protected constructor(elementReference: ElementRef<HTMLElement>) {\n super(elementReference.nativeElement);\n }\n\n public initialize(): void {\n this.fPath.initialize();\n this.fGradient.initialize();\n this.redraw();\n }\n\n private reset(): void {\n this.path = '';\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 setVector(from: IPoint, fromSide: EConnectorSide, to: IPoint, toSide: EConnectorSide): void {\n this.vector = { point1: from, point2: to };\n const pathResult = PathConstructor.handle(this.type, from, fromSide, to, toSide);\n\n this.path = pathResult.path;\n this.fLabel?.nativeElement?.setAttribute('x', `${ pathResult.labelX }`);\n this.fLabel?.nativeElement?.setAttribute('y', `${ pathResult.labelY }`);\n }\n\n public setMarkers(markers: SVGMarkerElement[]): void {\n this.fDefs.nativeElement.innerHTML = '';\n markers.forEach((marker) => this.fDefs.nativeElement.appendChild(marker));\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.vector);\n this.fDragHandle.redraw(this.vector.point2);\n this.fText.redraw(this.vector);\n }\n}\n","export enum EConnectionBehavior {\n\n FIXED = 'fixed',\n\n FLOATING = 'floating',\n}\n","import { EConnectionBehavior } from './e-connection-behavior';\n\nexport function castToConnectionBehavior(behavior: string): EConnectionBehavior {\n\n const result = EConnectionBehavior[ behavior.toUpperCase() as keyof typeof EConnectionBehavior ];\n\n if (result === undefined) {\n throw new Error(`Unknown connection behavior: ${ behavior }. Accepted values: ${ Object.keys(EConnectionBehavior).join(', ') }`);\n }\n\n return result;\n}\n","import { EConnectionType } from './e-connection-type';\n\nexport function castToConnectionType(type: string): EConnectionType {\n\n const result = EConnectionType[ type.toUpperCase() as keyof typeof EConnectionType ];\n\n if (result === undefined) {\n throw new Error(`Unknown connection type: ${ type }. Accepted values: ${ Object.keys(EConnectionType).join(', ') }`);\n }\n\n return result;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ElementRef, Input, OnDestroy, OnInit, ViewChild\n} from \"@angular/core\";\nimport {\n castToConnectionBehavior, castToConnectionType, CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionBase, FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EConnectionBehavior } from '../common';\nimport { EConnectionType } from '../common';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FComponentsStore } from '../../f-components-store';\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 id: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override text: string = '';\n\n @Input()\n public override startColor: string = 'black';\n\n @Input()\n public override endColor: string = 'black';\n\n public override outputId: string | undefined;\n\n public override inputId: string | undefined;\n\n @Input()\n public override set behavior(value: 'fixed' | 'floating') {\n this._behavior = castToConnectionBehavior(value);\n }\n\n public override get behavior(): EConnectionBehavior {\n return this._behavior;\n }\n\n private _behavior: EConnectionBehavior = EConnectionBehavior.FIXED;\n\n @Input()\n public override set type(value: 'segment' | 'straight' | 'bezier') {\n this._type = castToConnectionType(value);\n }\n\n public override get type(): EConnectionType {\n return this._type;\n }\n\n private _type: EConnectionType = EConnectionType.STRAIGHT;\n\n @Input()\n public override disabled: 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 fText!: IConnectionText;\n\n @ViewChild('rect', { static: true })\n public override fLabel!: ElementRef<SVGRectElement>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n ) {\n super(elementReference);\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 <!-- <rect #rect height=\"20\" width=\"100\" fill=\"red\"></rect>-->\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from \"@angular/core\";\nimport {\n castToConnectionBehavior, castToConnectionType,\n CONNECTION_GRADIENT,\n CONNECTION_PATH,\n CONNECTION_TEXT,\n FConnectionBase,\n FConnectionDragHandleComponent,\n FConnectionSelectionComponent,\n IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EConnectionBehavior } from '../common';\nimport { EConnectionType } from '../common';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FComponentsStore } from '../../f-components-store';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection\",\n templateUrl: \"./f-connection.component.html\",\n styleUrls: [ \"./f-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-connection\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent extends FConnectionBase implements OnInit, OnDestroy {\n\n @Input()\n public override id: string = `f-connection-${ uniqueId++ }`;\n\n @Input()\n public override text: string = '';\n\n @Input()\n public override startColor: string = 'black';\n\n @Input()\n public override endColor: string = 'black';\n\n @Input()\n public override outputId: any;\n\n @Input()\n public override inputId: any;\n\n @Input()\n public override set behavior(value: 'fixed' | 'floating') {\n this._behavior = castToConnectionBehavior(value);\n }\n\n public override get behavior(): EConnectionBehavior {\n return this._behavior;\n }\n\n private _behavior: EConnectionBehavior = EConnectionBehavior.FIXED;\n\n\n @Input()\n public override set type(value: 'segment' | 'straight' | 'bezier') {\n this._type = castToConnectionType(value);\n }\n\n public override get type(): EConnectionType {\n return this._type;\n }\n\n private _type: EConnectionType = EConnectionType.STRAIGHT;\n\n @Input()\n public override disabled: 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 fText!: IConnectionText;\n\n @ViewChild('rect', { static: true })\n public override fLabel!: ElementRef<SVGRectElement>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addConnection(this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeConnection(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 <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<!-- <rect #rect height=\"20\" width=\"100\" fill=\"red\"></rect>-->\n </g>\n <text f-connection-text></text>\n </g>\n\n</svg>\n","import { IHandler, IPoint, IRect, IVector, Point, RectExtensions } from '@foblex/core';\nimport { GetConnectionVectorRequest } from './get-connection-vector.request';\nimport { Injectable } from '@angular/core';\nimport { EConnectorSide } from '../get-connector-side-in-node';\nimport { EConnectionBehavior } from '../../f-connection';\n\n@Injectable()\nexport class GetConnectionVectorHandler implements IHandler<GetConnectionVectorRequest, IVector> {\n\n private behaviorHandlers = {\n\n [ EConnectionBehavior.FLOATING.toString() ]: this.floatingBehavior,\n\n // [EConnectionBehavior.FIXED.toString()]: this.fixedBehavior,\n\n [ EConnectionBehavior.FIXED.toString() ]: this.fixedOutboundBehaviour,\n }\n\n public handle(payload: GetConnectionVectorRequest): IVector {\n\n const result = this.behaviorHandlers[ payload.behavior ](payload);\n\n return result;\n }\n\n private floatingBehavior(payload: GetConnectionVectorRequest): IVector {\n const fromResult = RectExtensions.intersectionWithVector(payload.outputRect, payload.outputRect.gravityCenter, payload.inputRect.gravityCenter);\n const toResult = RectExtensions.intersectionWithVector(payload.inputRect, payload.outputRect.gravityCenter, payload.inputRect.gravityCenter);\n\n return {\n point1: fromResult ? fromResult[ 1 ] : payload.outputRect.gravityCenter,\n point2: toResult ? toResult[ 0 ] : payload.inputRect.gravityCenter,\n }\n }\n\n private fixedBehavior(payload: GetConnectionVectorRequest): IVector {\n return {\n point1: payload.outputRect.gravityCenter,\n point2: payload.inputRect.gravityCenter,\n }\n }\n\n private fixedOutboundBehaviour(payload: GetConnectionVectorRequest): IVector {\n const point1 = positionFixedOutbound[ payload.outputSide ](payload.outputRect);\n const point2 = positionFixedOutbound[ payload.inputSide ](payload.inputRect);\n\n return {\n point1: point1,\n point2: point2,\n }\n }\n}\n\nconst positionFixedOutbound = {\n [ EConnectorSide.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 [ EConnectorSide.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 [ EConnectorSide.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 [ EConnectorSide.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","import { IRect } from '@foblex/core';\nimport { EConnectorSide } from '../get-connector-side-in-node';\nimport { EConnectionBehavior } from '../../f-connection';\n\nexport class GetConnectionVectorRequest {\n\n constructor(\n public outputRect: IRect,\n public inputRect: IRect,\n public behavior: EConnectionBehavior | string,\n public outputSide: EConnectorSide,\n public inputSide: EConnectorSide,\n ) {\n\n }\n}\n","export function OutputNotFound(outputId: any): Error {\n return new Error(`Output with id ${ outputId } not found`);\n}\n\nexport function InputNotFound(inputId: any): Error {\n return new Error(`Input with id ${ inputId } not found`);\n}\n\nexport function requiredOutput(): Error {\n return new Error(`The node must contain at least one fOutput if there is an fOutlet`);\n}\n","import { IHandler, IRect, RectExtensions } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../f-components-store';\n\n@Injectable()\nexport class GetAllNodesRectHandler implements IHandler<void, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(): IRect {\n const fNodes = this.fComponentsStore.fNodes;\n const rects = fNodes.map((x) => {\n return RectExtensions.fromElement(x.hostElement);\n });\n const result = RectExtensions.union(rects);\n return result;\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../f-components-store';\nimport { FConnectionBase } from '../f-connection';\n\n@Injectable()\nexport class GetConnectionHandler implements IHandler<HTMLElement | SVGElement, FConnectionBase | undefined> {\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(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n const result = this.fConnections.find(c => c.isContains(element));\n return result;\n }\n}\n","import { IHandler, IRect, ITransformModel, Point, RectExtensions, SizeExtensions } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../f-components-store';\n\n@Injectable()\nexport class GetElementRectInFlowHandler implements IHandler<HTMLElement | SVGElement, IRect> {\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(element: HTMLElement | SVGElement): IRect {\n\n const systemRect = RectExtensions.fromElement(element);\n\n const position = Point.fromPoint(systemRect).elementTransform(this.flowHost).sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n\n const size = SizeExtensions.initialize(systemRect.width / this.transform.scale, systemRect.height / this.transform.scale);\n\n const result = RectExtensions.initialize(position.x, position.y, size.width, size.height);\n\n return result;\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../f-components-store';\nimport { FConnectionBase } from '../f-connection';\nimport { FConnectorBase } from '../f-node';\n\n@Injectable()\nexport 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.inputId);\n })!;\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../f-components-store';\nimport { FConnectionBase } from '../f-connection';\nimport { FConnectorBase } from '../f-node';\n\n@Injectable()\nexport 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.outputId);\n })!;\n }\n}\n","import { IHandler, IRect } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../f-components-store';\nimport { GetElementRectInFlowHandler } from './get-element-rect-in-flow.handler';\nimport { InputNotFound } from './errors';\nimport { EConnectorSide } from './get-connector-side-in-node';\n\n@Injectable()\nexport class GetInputRectInFlowHandler implements IHandler<any, { rect: IRect, side: EConnectorSide }> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private getElementRectInFlowHandler: GetElementRectInFlowHandler\n ) {\n }\n\n public handle(inputId: any): { rect: IRect, side: EConnectorSide } {\n\n const input = this.fComponentsStore.fInputs.find((x) => x.id === inputId);\n\n if (!input) {\n throw InputNotFound(inputId);\n }\n\n const result = this.getElementRectInFlowHandler.handle(input!.hostElement)\n\n return { rect: result, side: input.side };\n }\n}\n","import { IHandler, IRect } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../f-components-store';\nimport { GetElementRectInFlowHandler } from './get-element-rect-in-flow.handler';\nimport { OutputNotFound } from './errors';\nimport { EConnectorSide } from './get-connector-side-in-node';\n\n@Injectable()\nexport class GetOutputRectInFlowHandler implements IHandler<any, { rect: IRect, side: EConnectorSide }> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private getElementRectInFlowHandler: GetElementRectInFlowHandler\n ) {\n }\n\n public handle(outputId: any): { rect: IRect, side: EConnectorSide } {\n\n const output = this.fComponentsStore.fOutputs.find((x) => x.id === outputId);\n\n if (!output) {\n throw OutputNotFound(outputId);\n }\n\n const result = this.getElementRectInFlowHandler.handle(output!.hostElement)\n\n return { rect: result, side: output.side };\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../f-components-store';\nimport { FNodeBase } from '../f-node';\n\n@Injectable()\nexport class UpdateNodeLayerHandler implements IHandler<FNodeBase, void> {\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas?.fNodesContainer?.nativeElement!;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(node: FNodeBase): void {\n const elements = Array.from(this.fNodesContainer.children);\n const elementsCount = elements.length;\n const targetIndex: number = elements.findIndex((x) => x === node.hostElement);\n if (targetIndex !== elementsCount - 1) {\n const afterElements = elements.splice(targetIndex + 1);\n afterElements.forEach((x) => {\n this.fNodesContainer.removeChild(x);\n this.fNodesContainer.insertBefore(x, node.hostElement);\n });\n }\n }\n}\n","import { GetElementRectInFlowHandler } from './get-element-rect-in-flow.handler';\nimport { GetIncomingConnectionsHandler } from './get-incoming-connections.handler';\nimport { GetOutgoingConnectionsHandler } from './get-outgoing-connections.handler';\nimport { GetConnectionHandler } from './get-connection.handler';\nimport { GetAllNodesRectHandler } from './get-all-nodes-rect.handler';\nimport { GetOutputRectInFlowHandler } from './get-output-rect-in-flow.handler';\nimport { GetInputRectInFlowHandler } from './get-input-rect-in-flow.handler';\nimport { GetConnectionVectorHandler } from './get-connection-vector';\nimport { UpdateNodeLayerHandler } from './update-node-layer.handler';\n\nexport const COMMON_PROVIDERS = [\n\n GetAllNodesRectHandler,\n\n GetConnectionVectorHandler,\n\n GetConnectionHandler,\n\n GetElementRectInFlowHandler,\n\n GetOutputRectInFlowHandler,\n\n GetInputRectInFlowHandler,\n\n GetIncomingConnectionsHandler,\n\n GetOutgoingConnectionsHandler,\n\n UpdateNodeLayerHandler,\n];\n","import { Subject } from 'rxjs';\nimport { IHasHostElement } from '@foblex/core';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { EConnectorSide } from '../../domain';\n\nexport abstract class FConnectorBase implements IHasStateChanges, IHasHostElement {\n\n public abstract id: any;\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 side: EConnectorSide = EConnectorSide.BOTTOM;\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 isNodeInput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeInput]');\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IHasHostElement, IPoint, PointExtensions } from '@foblex/core';\nimport { FConnectorBase } from './f-connectors';\nimport { F_SELECTED_CLASS, ISelectable } from '../f-connection';\nimport { IHasStateChanges } from '../i-has-state-changes';\n\nexport const F_NODE = new InjectionToken<FNodeBase>('F_NODE');\n\nexport abstract class FNodeBase implements IHasStateChanges, ISelectable, IHasHostElement {\n\n public abstract id: any;\n\n public abstract hostElement: HTMLElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n public abstract disabled: 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 public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n this.hostElement.setAttribute('style', 'transform: translate(' + this.position.x + 'px,' + this.position.y + 'px)');\n }\n\n public deselect(): void {\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public completeDrag(): void {\n this.positionChange.emit(this.position);\n }\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';\nimport { F_NODE, FNodeBase } from '../../f-node-base';\nimport { FComponentsStore } from '../../../f-components-store';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n host: {\n '[attr.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('fNodeInputId')\n public override id: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fNodeInputColor')\n public fNodeInputColor: string | undefined;\n\n public get color(): string {\n return this.fNodeInputColor || 'black';\n }\n\n @Input('fNodeInputMultiple')\n public override multiple: boolean = true;\n\n @Input('fNodeInputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.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 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 if (!this.fNode) {\n throw new Error('fNodeInput must be inside f-node');\n }\n this.fComponentsStore.addInput(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.removeInput(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;\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 { BooleanExtensions } from '@foblex/core';\nimport { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_NODE, FNodeBase } from '../../f-node-base';\nimport { FComponentsStore } from '../../../f-components-store';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n host: {\n '[attr.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()\n public override id: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input('fNodeOutletDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.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()\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 f-node');\n }\n this.fComponentsStore.addOutlet(this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeOutlet(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 isConnected: boolean = false;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && !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 { BooleanExtensions } from '@foblex/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT } from './f-node-output-base';\nimport { F_NODE, FNodeBase } from '../../f-node-base';\nimport { FComponentsStore } from '../../../f-components-store';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n host: {\n '[attr.id]': 'id',\n class: \"f-component f-node-output\",\n '[class.f-node-output-disabled]': 'disabled',\n },\n providers: [ { provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnDestroy {\n\n @Input('fNodeOutputId')\n public override id: any = `f-node-output-${ uniqueId++ }`;\n\n @Input('fNodeOutputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.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 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 if (!this.fNode) {\n throw new Error('fNodeOutput must be inside f-node');\n }\n this.fComponentsStore.addOutput(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.removeOutput(this);\n }\n}\n","import {\n Directive, ElementRef, Inject, InjectionToken, Input, OnDestroy, Optional, SkipSelf\n} from \"@angular/core\";\nimport { Subject } from 'rxjs';\nimport { BooleanExtensions, IHasHostElement } from '@foblex/core';\nimport { F_NODE } from '../f-node-base';\nimport { IHasStateChanges } from '../../i-has-state-changes';\n\nexport const F_DRAG_HANDLE: InjectionToken<FDragHandleDirective> = new InjectionToken<FDragHandleDirective>('F_DRAG_HANDLE');\n\n@Directive({\n selector: \"[fDragHandle]\",\n standalone: true,\n host: {\n class: \"f-drag-handle f-component\",\n '[class.f-drag-handle-disabled]': 'disabled'\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement, IHasStateChanges, OnDestroy {\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public _parentNode: {} | undefined;\n\n @Input('fDragHandleDisabled')\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.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 get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) @Optional() @SkipSelf() _parentNode?: any,\n ) {\n this._parentNode = _parentNode;\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.complete();\n }\n}\n","export function isNodeDragHandle(element: HTMLElement | SVGElement): boolean {\n const dragHandle = getClosestDragHandle(element);\n return !!dragHandle && !isElementOrParentExcluded(element);\n}\n\nfunction isElementOrParentExcluded(element: HTMLElement | SVGElement): boolean {\n const isContains = isElementContainsClass(element);\n const parentElement = (element.parentElement as HTMLElement);\n const dragHandle = getClosestDragHandle(parentElement);\n if (!isContains && !!dragHandle) {\n return isElementOrParentExcluded(parentElement);\n }\n return isContains;\n}\n\nfunction getClosestDragHandle(element: HTMLElement | SVGElement): HTMLElement {\n return element.closest('.f-drag-handle') as HTMLElement;\n}\n\nfunction isElementContainsClass(element: HTMLElement | SVGElement): boolean {\n return element.classList.contains('f-drag-handle-disabled');\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 ChangeDetectionStrategy, Component, ElementRef, EventEmitter,\n Input, OnDestroy, OnInit, Output,\n} from \"@angular/core\";\nimport { IHasHostElement, IPoint, PointExtensions, PointInput } from '@foblex/core';\nimport {\n FNodeBase, F_NODE\n} from './f-node-base';\nimport { startWith, Subscription } from 'rxjs';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FConnectorBase } from './f-connectors';\nimport { FComponentsStore } from '../f-components-store';\nimport { GetConnectorSideInNodeHandler } from '../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-node\",\n exportAs: \"fComponent\",\n templateUrl: \"./f-node.component.html\",\n styleUrls: [ \"./f-node.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'id',\n class: \"f-node f-component\",\n '[class.f-disabled]': 'disabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FNodeComponent }\n ]\n})\nexport class FNodeComponent extends FNodeBase implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input()\n public override id: any = `f-node-${ uniqueId++ }`;\n\n @Input('fNodePosition')\n public override set position(value: PointInput) {\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()\n public override disabled: boolean = false;\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore\n ) {\n super();\n }\n\n public ngOnInit(): void {\n super.redraw();\n this.fComponentsStore.addNode(this);\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return new FResizeObserver(this.hostElement as HTMLElement).pipe(startWith(null)).subscribe(() => {\n this.connectors.forEach((connector: FConnectorBase) => {\n connector.side = new GetConnectorSideInNodeHandler().handle(connector.hostElement, this.hostElement);\n });\n this.fComponentsStore.changes.next();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\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 }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeNode(this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","<ng-content></ng-content>\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('f-node');\n}\n\n","import { EventExtensions, IPoint, Point, RectExtensions } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../../../index';\nimport { FComponentsStore } from '../../../../f-components-store';\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\n if (this.fComponentsStore.fDraggable?.isDragStarted) {\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.completeDrag();\n }\n\n private onDoubleClick(event: MouseEvent): void {\n event.preventDefault();\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || isNode(event.target as HTMLElement)) {\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.completeDrag();\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.completeDrag();\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 { BooleanExtensions } from '@foblex/core';\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { FComponentsStore } from '../../../../f-components-store';\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 = BooleanExtensions.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 { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanChangeZoom } from './i-can-change-zoom';\nimport { IPoint, PointExtensions } from '@foblex/core';\nimport { ITransformable } from '../i-transformable';\n\ntype CanChangeZoomConstructor = Constructor<ICanChangeZoom> & AbstractConstructor<ICanChangeZoom>;\n\nexport function mixinChangeZoom<T extends AbstractConstructor<ITransformable>>(base: T): CanChangeZoomConstructor & T;\nexport function mixinChangeZoom<T extends Constructor<ITransformable>>(base: T): CanChangeZoomConstructor & T {\n return class extends base {\n\n public setZoom(scaleValue: number, toPosition: IPoint): void {\n if (scaleValue !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = toPosition.x - (toPosition.x - summaryPosition.x) * scaleValue / this.transform.scale;\n const newY = toPosition.y - (toPosition.y - summaryPosition.y) * scaleValue / this.transform.scale;\n\n this.transform.scale = scaleValue;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n\n public setScalePosition(value: IPoint): void {\n this.transform.scaledPosition = value;\n }\n\n public resetZoom(): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanFitToParent } from './i-can-fit-to-parent';\nimport { IPoint, IRect, PointExtensions } from '@foblex/core';\nimport { ITransformable } from '../i-transformable';\n\ntype CanFitToParentConstructor = Constructor<ICanFitToParent> & AbstractConstructor<ICanFitToParent>;\n\nexport function mixinFitToParent<T extends AbstractConstructor<ITransformable>>(base: T): CanFitToParentConstructor & T;\nexport function mixinFitToParent<T extends Constructor<ITransformable>>(base: T): CanFitToParentConstructor & T {\n return class extends base {\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = rect.width / this.transform.scale;\n const itemsContainerHeight = rect.height / this.transform.scale;\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, 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 constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanOneToOneCentering } from './i-can-one-to-one-centering';\nimport { IPoint, IRect, PointExtensions } from '@foblex/core';\nimport { ITransformable } from '../i-transformable';\n\ntype CanOneToOneCenteringConstructor = Constructor<ICanOneToOneCentering> & AbstractConstructor<ICanOneToOneCentering>;\n\nexport function mixinOneToOneCentering<T extends AbstractConstructor<ITransformable>>(base: T): CanOneToOneCenteringConstructor & T;\nexport function mixinOneToOneCentering<T extends Constructor<ITransformable>>(base: T): CanOneToOneCenteringConstructor & T {\n return class extends base {\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 const itemsContainerWidth = rect.width / this.transform.scale;\n const itemsContainerHeight = rect.height / this.transform.scale;\n this.transform.scale = 1;\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, 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 constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from './constructor';\nimport { IPoint, PointExtensions } from '@foblex/core';\nimport { ITransformable } from './i-transformable';\n\nexport interface ICanChangePosition {\n\n setPosition(position: IPoint): void;\n\n getPosition(): IPoint;\n}\n\ntype CanChangePositionConstructor = Constructor<ICanChangePosition> & AbstractConstructor<ICanChangePosition>;\n\nexport function mixinChangePosition<T extends AbstractConstructor<ITransformable>>(base: T): CanChangePositionConstructor & T;\nexport function mixinChangePosition<T extends Constructor<ITransformable>>(base: T): CanChangePositionConstructor & T {\n return class extends base {\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = PointExtensions.copy(position);\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import {\n IHasHostElement,\n ITransformModel, PointExtensions,\n TransformModelExtensions\n} from '@foblex/core';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport {\n ICanChangePosition, ICanChangeZoom, ICanFitToParent, ICanOneToOneCentering,\n mixinChangePosition,\n mixinChangeZoom,\n mixinFitToParent,\n mixinOneToOneCentering\n} from '../../../common-behaviours';\nimport { FCanvasChangeEvent } from './domain/f-canvas-change.event';\nimport { FNodeBase } from '../../../f-node';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\nconst MIXIN_BASE = mixinChangePosition(\n mixinFitToParent(\n mixinOneToOneCentering(\n mixinChangeZoom(\n class {\n constructor(\n public transform: ITransformModel\n ) {\n }\n }))));\n\n@Directive()\nexport abstract class FCanvasBase\n extends MIXIN_BASE\n implements IHasHostElement, ICanChangePosition, ICanFitToParent, ICanOneToOneCentering, ICanChangeZoom {\n\n public abstract fCanvasChange: EventEmitter<FCanvasChangeEvent>;\n\n public abstract fNodes: FNodeBase[];\n\n public abstract hostElement: HTMLElement;\n\n public abstract fNodesContainer: ElementRef<HTMLElement>;\n\n protected constructor() {\n super(TransformModelExtensions.default());\n }\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public completeDrag(): void {\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(position, 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, Point, PointExtensions, RectExtensions, TransformModelExtensions } from '@foblex/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { FComponentsStore } from '../../../f-components-store';\nimport { GetAllNodesRectHandler } from '../../../domain';\nimport { FNodeBase } from '../../../f-node';\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: [ { provide: F_CANVAS, useExisting: FCanvasComponent } ],\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 if (!value) {\n return;\n }\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, value)) {\n this.transform.position = value;\n this.transform.scaledPosition = PointExtensions.initialize();\n this.redraw();\n }\n }\n\n @Input()\n public set scale(value: number | undefined) {\n if (!value) {\n return;\n }\n this.transform.scale = value;\n this.redraw();\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 @Output()\n public onInitialized: EventEmitter<void> = new EventEmitter<void>();\n\n @ViewChild('fNodesContainer', { static: true })\n public override fNodesContainer!: ElementRef<HTMLElement>;\n\n constructor(\n private getAllNodesRectHandler: GetAllNodesRectHandler,\n private elementReference: ElementRef<HTMLElement>,\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 }\n\n public override redrawWithAnimation(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transition: transform 0.15s ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n setTimeout(() => {\n this.redraw();\n }, 150);\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n const fNodesRect = this.getAllNodesRectHandler.handle();\n\n const rect = RectExtensions.addPointToSize(\n fNodesRect,\n Point.fromPoint(toCenter).mult(2)\n );\n this.fitToParent(\n rect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fNodes.map((x) => {\n return Point.fromPoint(x.position).sub(toCenter)\n })\n );\n animated ? this.redrawWithAnimation() : this.redraw();\n this.completeDrag();\n }\n\n public oneToOne(): void {\n const fNodesRect = this.getAllNodesRectHandler.handle();\n this.oneToOneCentering(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fNodes.map((x) => {\n return Point.fromPoint(x.position).sub(new Point(0, 0))\n })\n );\n this.redrawWithAnimation();\n this.completeDrag();\n }\n}\n","<ng-container>\n <div>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n <div #fNodesContainer>\n <ng-content select=\"f-node\"></ng-content>\n </div>\n</ng-container>\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\n\nexport const F_FLOW = new InjectionToken<FFlowBase>('F_FLOW');\n\n@Directive()\nexport abstract class FFlowBase implements IHasHostElement {\n\n public abstract id: any;\n\n public abstract hostElement: HTMLElement;\n}\n","import { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\n\nexport const F_CONNECTION_MARKER: InjectionToken<IConnectionMarker> = new InjectionToken<IConnectionMarker>('F_CONNECTION_MARKER');\n\nexport interface IConnectionMarker extends IHasHostElement {\n\n}\n","import { Directive, ElementRef, Inject, Input } from '@angular/core';\nimport { sanitizeElementId } from '@foblex/core';\nimport { F_FLOW, FFlowBase } from '../../f-flow-base';\nimport { F_CONNECTION_MARKER, IConnectionMarker } from '../domain/i-connection-marker';\n\n@Directive({\n selector: '[fConnectionMarkerEnd]',\n exportAs: 'fComponent',\n host: {\n '[attr.id]': 'id',\n 'class': 'f-component f-connection-marker'\n },\n providers: [ { provide: F_CONNECTION_MARKER, useExisting: FConnectionMarkerEndDirective } ],\n})\nexport class FConnectionMarkerEndDirective implements IConnectionMarker {\n\n public get hostElement(): SVGMarkerElement {\n return this.elementReference.nativeElement;\n }\n\n protected get id(): string {\n return sanitizeElementId(this.fFlow.id + '-f-connection-marker-end-' + this.fConnectionMarkerEnd);\n }\n\n @Input()\n public fConnectionMarkerEnd: string = 'black';\n\n constructor(\n private elementReference: ElementRef<SVGMarkerElement>,\n @Inject(F_FLOW) private fFlow: FFlowBase,\n ) {\n }\n}\n","import { Directive, ElementRef, Inject, Input } from '@angular/core';\nimport { F_FLOW, FFlowBase } from '../../f-flow-base';\nimport { sanitizeElementId } from '@foblex/core';\nimport { F_CONNECTION_MARKER, IConnectionMarker } from '../domain/i-connection-marker';\n\n@Directive({\n selector: '[fConnectionMarkerEndSelected]',\n exportAs: 'fComponent',\n host: {\n '[attr.id]': 'id',\n 'class': 'f-component f-connection-marker f-selected'\n },\n providers: [ { provide: F_CONNECTION_MARKER, useExisting: FConnectionMarkerEndSelectedDirective } ],\n})\nexport class FConnectionMarkerEndSelectedDirective implements IConnectionMarker {\n\n public get hostElement(): SVGMarkerElement {\n return this.elementReference.nativeElement;\n }\n\n protected get id(): string {\n return sanitizeElementId(this.fFlow.id + '-f-connection-marker-end-selected');\n }\n\n constructor(\n private elementReference: ElementRef<SVGMarkerElement>,\n @Inject(F_FLOW) private fFlow: FFlowBase,\n ) {\n }\n}\n","import { Directive, ElementRef, Inject, Input } from '@angular/core';\nimport { sanitizeElementId } from '@foblex/core';\nimport { F_FLOW, FFlowBase } from '../../f-flow-base';\nimport { F_CONNECTION_MARKER, IConnectionMarker } from '../domain/i-connection-marker';\n\n@Directive({\n selector: '[fConnectionMarkerStart]',\n exportAs: 'fComponent',\n host: {\n '[attr.id]': 'id',\n 'class': 'f-component f-connection-marker'\n },\n providers: [ { provide: F_CONNECTION_MARKER, useExisting: FConnectionMarkerStartDirective } ],\n})\nexport class FConnectionMarkerStartDirective implements IConnectionMarker {\n\n public get hostElement(): SVGMarkerElement {\n return this.elementReference.nativeElement;\n }\n\n protected get id(): string {\n return sanitizeElementId(this.fFlow.id + '-f-connection-marker-start-' + this.fConnectionMarkerStart);\n }\n\n @Input()\n public fConnectionMarkerStart: string = 'black';\n\n constructor(\n private elementReference: ElementRef<SVGMarkerElement>,\n @Inject(F_FLOW) private fFlow: FFlowBase,\n ) {\n }\n}\n","import { Directive, ElementRef, Inject } from '@angular/core';\nimport { F_FLOW, FFlowBase } from '../../f-flow-base';\nimport { sanitizeElementId } from '@foblex/core';\nimport { F_CONNECTION_MARKER, IConnectionMarker } from '../domain/i-connection-marker';\n\n@Directive({\n selector: '[fConnectionMarkerStartSelected]',\n exportAs: 'fComponent',\n host: {\n '[attr.id]': 'id',\n 'class': 'f-component f-connection-marker f-selected'\n },\n providers: [ { provide: F_CONNECTION_MARKER, useExisting: FConnectionMarkerStartSelectedDirective } ],\n})\nexport class FConnectionMarkerStartSelectedDirective implements IConnectionMarker {\n\n public get hostElement(): SVGMarkerElement {\n return this.elementReference.nativeElement;\n }\n\n protected get id(): string {\n return sanitizeElementId(this.fFlow.id + '-f-connection-marker-start-selected');\n }\n\n constructor(\n private elementReference: ElementRef<SVGMarkerElement>,\n @Inject(F_FLOW) private fFlow: FFlowBase,\n ) {\n }\n}\n","import {\n IHasHostElement\n} from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\nimport { IConnectionMarker } from './domain/i-connection-marker';\n\nexport const F_DEFINITIONS = new InjectionToken<FDefinitionsBase>('F_DEFINITIONS');\n\n@Directive()\nexport abstract class FDefinitionsBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract getMarkersForConnection(connectionId: string, startColor: string, endColor: string): SVGMarkerElement[];\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, ContentChildren, ElementRef, OnDestroy, OnInit, QueryList\n} from \"@angular/core\";\nimport {\n F_DEFINITIONS,\n FDefinitionsBase\n} from './f-definitions-base';\nimport { FComponentsStore } from '../../../f-components-store';\nimport { debounceTime, startWith, Subscription } from 'rxjs';\nimport { F_CONNECTION_MARKER, IConnectionMarker } from './domain/i-connection-marker';\n\n@Component({\n selector: 'svg[fDefinitions]',\n templateUrl: './f-definitions.component.html',\n styleUrls: [ './f-definitions.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-definitions'\n },\n providers: [ { provide: F_DEFINITIONS, useExisting: FDefinitionsComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FDefinitionsComponent extends FDefinitionsBase implements OnInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ContentChildren(F_CONNECTION_MARKER)\n public fMarkers!: QueryList<IConnectionMarker>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n public fComponentsStore: FComponentsStore,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fDefs = this;\n\n // this.subscriptions$.add(\n // this.subscribeOnMarkersChanges()\n // );\n }\n\n public getMarkersForConnection(connectionId: string, startColor: string, endColor: string): SVGMarkerElement[] {\n let result: SVGMarkerElement[] = [];\n const marker = this.fMarkers.find((x) => {\n if (x.hasOwnProperty('fConnectionMarkerStart')) {\n // @ts-ignore\n return x[ 'fConnectionMarkerStart' ] === startColor;\n }\n return false;\n });\n if (marker) {\n // marker.hostElement.setAttribute('id', `f-connection-marker-start-${ connectionId }`);\n result.push(marker.hostElement as SVGMarkerElement);\n marker.hostElement.remove();\n }\n\n const endMarker = this.fMarkers.find((x) => {\n if (x.hasOwnProperty('fConnectionMarkerEnd')) {\n // @ts-ignore\n return x[ 'fConnectionMarkerEnd' ] === endColor;\n }\n return false;\n });\n if (endMarker) {\n // endMarker.hostElement.setAttribute('id', `f-connection-marker-end-${ connectionId }`);\n result.push(endMarker.hostElement as SVGMarkerElement);\n endMarker.hostElement.remove();\n }\n return result;\n }\n\n private subscribeOnMarkersChanges(): Subscription {\n return this.fMarkers.changes.pipe(startWith(null), debounceTime(10)).subscribe(() => {\n this.changeDetectorRef.detectChanges();\n });\n }\n\n public ngOnDestroy(): void {\n this.subscriptions$.unsubscribe();\n this.fComponentsStore.fDefs = undefined;\n }\n}\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:defs>\n <ng-content></ng-content>\n </svg:defs>\n</ng-container>\n","export enum EDraggableType {\n\n NODE = 'node',\n\n REASSIGN_CONNECTION = 'reassign-connection',\n\n CREATE_CONNECTION = 'create-connection',\n\n CONNECTION = 'connection',\n\n CANVAS = 'canvas',\n\n PALETTE_ITEM = 'palette-item',\n\n SELECTION = 'selection'\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EDraggableType } from '../e-draggable-type';\nimport { FComponentsStore } from '../../f-components-store';\n\nexport class CanvasDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CANVAS;\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!.completeDrag();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/core';\nimport { IDraggableItem } from './i-draggable-item';\nimport { FLineAlignmentBase, FSelectionAreaBase } from './components';\nimport { ISelectable } from '../f-connection';\n\n@Injectable()\nexport class FDraggableDataContext {\n\n public selectedItems: ISelectable[] = [];\n\n public onPointerDownScale: number = 1;\n\n public onPointerDownPosition: Point = new Point(0, 0);\n\n public draggableItems: IDraggableItem[] = [];\n\n public fSelectionArea: FSelectionAreaBase | undefined;\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","import { IHandler, IPointerEvent } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { EDraggableType } from '../e-draggable-type';\n\n@Injectable()\nexport class CanvasOnPointerUp implements IHandler<IPointerEvent, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n const isDragCanvas = this.fDraggableDataContext.draggableItems.some((x) => x.type === EDraggableType.CANVAS);\n\n if (isDragCanvas) {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n }\n}\n","import { IHandler, IPointerEvent, Point } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-components-store';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { CanvasDragHandler } from './canvas.drag-handler';\n\n@Injectable()\nexport class CanvasPrepareDragSequence implements IHandler<IPointerEvent, 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(event: IPointerEvent): void {\n const pointerPositionInFlow = Point.fromPoint(event.getPosition()).elementTransform(this.flowHost);\n\n const isBackgroundElement = this.fComponentsStore.fBackground?.isBackgroundElement(event.targetElement);\n const isFlowHost = this.flowHost.contains(event.targetElement);\n let node = this.fComponentsStore.findNode(event.targetElement);\n if (node && node.disabled) {\n node = undefined;\n }\n\n if ((isBackgroundElement || (isFlowHost && !node)) && !this.fDraggableDataContext.draggableItems.length) {\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = pointerPositionInFlow.div(1);\n this.fDraggableDataContext.draggableItems = [\n new CanvasDragHandler(this.fComponentsStore)\n ];\n }\n }\n}\n","import { CanvasOnPointerUp } from './canvas.on-pointer-up';\nimport { CanvasPrepareDragSequence } from './canvas.prepare-drag-sequence';\n\nexport const CANVAS_PROVIDERS = [\n\n CanvasOnPointerUp,\n\n CanvasPrepareDragSequence\n];\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase implements IHasHostElement {\n\n public abstract id: any;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract data: any;\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]': 'id',\n class: \"f-component f-external-item\",\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective extends FExternalItemBase implements OnInit, OnDestroy {\n\n @Input()\n public override id: 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 data: any;\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 }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { DomElementExtensions } from '@foblex/core';\nimport { ILineAlignmentRect } from './i-line-alignment-rect';\n\nexport class LineElement {\n\n private readonly element: HTMLElement = DomElementExtensions.createHtmlElement('div');\n\n constructor(\n private readonly hostElement: HTMLElement,\n ) {\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","import { ISize, ITransformModel } from '@foblex/core';\nimport { LineElement } from './line-element';\n\nexport class LineService {\n\n private fHorizontalLine: LineElement;\n private fVerticalLine: LineElement;\n\n constructor(private hostElement: HTMLElement) {\n this.fHorizontalLine = new LineElement(this.hostElement);\n this.fVerticalLine = new LineElement(this.hostElement);\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/core';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\nconst ALIGN_THRESHOLD = 10;\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 */\n constructor(elements: IRect[], target: IRect) {\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) <= ALIGN_THRESHOLD ||\n Math.abs(distanceLeftRight) <= ALIGN_THRESHOLD ||\n Math.abs(distanceCenterCenter) <= ALIGN_THRESHOLD ||\n Math.abs(distanceRightLeft) <= ALIGN_THRESHOLD ||\n Math.abs(distanceRightRight) <= ALIGN_THRESHOLD\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) <= ALIGN_THRESHOLD ||\n Math.abs(distanceTopBottom) <= ALIGN_THRESHOLD ||\n Math.abs(distanceCenterCenter) <= ALIGN_THRESHOLD ||\n Math.abs(distanceBottomTop) <= ALIGN_THRESHOLD ||\n Math.abs(distanceBottomBottom) <= ALIGN_THRESHOLD\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 { IHasHostElement, IPoint } from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\nimport { ILineAlignmentResult } from './domain';\nimport { FNodeBase } from '../../../f-node';\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, OnInit } from '@angular/core';\nimport { IPoint, IRect, ISize, ITransformModel, RectExtensions, SizeExtensions } from '@foblex/core';\nimport { ILineAlignmentResult, LineService, NearestCoordinateFinder } from './domain';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport { FComponentsStore } from '../../../f-components-store';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { GetElementRectInFlowHandler } from '../../../domain';\nimport { FNodeBase } from '../../../f-node';\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 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 getElementRectInFlowHandler: GetElementRectInFlowHandler\n ) {\n super();\n this.lineService = new LineService(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.getElementRectInFlowHandler.handle(x.hostElement);\n });\n this.draggedNodeRect = RectExtensions.union(draggedNodeRects);\n\n const allNodesExcludeCurrents = allNodes.filter((x) => {\n return !currentNodes.includes(x);\n });\n\n this.rects = allNodesExcludeCurrents.map((x) => {\n return this.getElementRectInFlowHandler.handle(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);\n const xResult = finder.findNearestCoordinateByX();\n const yResult = finder.findNearestCoordinateByY();\n\n const result: ILineAlignmentResult = { xResult, yResult };\n return result;\n }\n\n public override complete(): void {\n this.lineService.hideVerticalLine();\n this.lineService.hideHorizontalLine();\n }\n}\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\nimport { ISelectionAreaRect } from './domain';\n\nexport const F_SELECTION_AREA = new InjectionToken<FSelectionAreaBase>('F_SELECTION_AREA');\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: ISelectionAreaRect): void;\n}\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { F_SELECTION_AREA, FSelectionAreaBase } from './f-selection-area-base';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { ISelectionAreaRect } 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_SELECTION_AREA, useExisting: FSelectionAreaComponent }\n ],\n})\nexport class FSelectionAreaComponent extends FSelectionAreaBase implements OnInit {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fDraggableDataContext.fSelectionArea = this;\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: ISelectionAreaRect): void {\n const style = this.hostElement.style;\n style.left = object.left + 'px';\n style.top = object.top + 'px';\n style.width = object.width + 'px';\n style.height = object.height + 'px';\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-components-store';\nimport { FConnectorBase, FNodeBase, FNodeOutletBase } from '../../../../f-node';\n\n@Injectable()\nexport class FindFirstCanBeConnectedOutputByOutletHandler\n implements IHandler<FNodeOutletBase, 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(outlet: FNodeOutletBase): FConnectorBase | undefined {\n let result: FConnectorBase | undefined;\n\n const node = this.fNodes.find((x) => x.isContains(outlet.hostElement));\n if (!node) {\n throw new Error('Node not found');\n }\n\n const outputsOfNode = this.fOutputs.filter((x) => {\n return node.isContains(x.hostElement) && x.canBeConnected;\n });\n\n if (outputsOfNode.length > 0) {\n result = outputsOfNode[ 0 ];\n }\n\n return result;\n }\n}\n","import { IPoint, IRect, Point, RectExtensions, } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport {\n EConnectorSide,\n GetConnectionVectorHandler,\n GetConnectionVectorRequest,\n GetOutputRectInFlowHandler\n} from '../../../domain';\nimport { FConnectionBase } from '../../../f-connection';\n\nexport class CreateConnectionDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CREATE_CONNECTION;\n\n private onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n private outputSide: EConnectorSide = EConnectorSide.BOTTOM;\n\n constructor(\n private getOutputRectInFlowHandler: GetOutputRectInFlowHandler,\n private getConnectionVectorHandler: GetConnectionVectorHandler,\n public connection: FConnectionBase,\n private mouseDownPoint: IPoint\n ) {\n }\n\n public initialize(): void {\n const outputRect = this.getOutputRectInFlowHandler.handle(this.connection.outputId);\n this.outputSide = outputRect.side;\n this.onPointerDownFromConnectorRect = outputRect.rect;\n this.onPointerDownToConnectorRect = RectExtensions.initialize(this.mouseDownPoint.x, this.mouseDownPoint.y, 0, 0);\n (this.connection as FConnectionBase).show();\n this.move(new Point(0, 0));\n }\n\n public move(difference: IPoint): void {\n const toPoint = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n\n const vector = this.getConnectionVectorHandler.handle(\n new GetConnectionVectorRequest(\n this.onPointerDownFromConnectorRect,\n toPoint,\n this.connection.behavior,\n this.outputSide,\n EConnectorSide.TOP,\n )\n );\n\n this.connection.setVector(vector.point1, this.outputSide, vector.point2, EConnectorSide.TOP);\n this.connection.redraw();\n }\n\n public complete(): void {\n this.connection.redraw();\n (this.connection as FConnectionBase).hide();\n }\n}\n","export class CreateConnectionEvent<T = any> {\n\n constructor(\n public outputId: T,\n public inputId: T\n ) {\n }\n}\n","import { IHandler, IPointerEvent } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-components-store';\nimport { FConnectorBase, FNodeBase, FNodeInputBase } from '../../../../f-node';\n\n@Injectable()\nexport class FirstNotConnectedInputOfNodeUnderPointerHandler\n implements IHandler<IPointerEvent, 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 ) {\n }\n\n public handle(event: IPointerEvent): FConnectorBase | undefined {\n const position = event.getPosition();\n const elementsFromPoint = document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n\n const nodes = elementsFromPoint.map((element) => {\n return this.fNodes.find((x) => x.isContains(element))\n }).filter((x) => !!x) as FNodeBase[];\n\n const inputs = nodes.map((x) => {\n return this.fInputs.filter((i) => x.isContains(i.hostElement)).find((i) => {\n return !(i as FNodeInputBase).isConnected && i.canBeConnected;\n });\n });\n const result = inputs.find((x) => !!x);\n\n return result;\n }\n}\n","import { IHandler, IPointerEvent } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-components-store';\nimport { FConnectorBase, isNodeInput } from '../../../../f-node';\n\n@Injectable()\nexport class InputsUnderPointerHandler\n implements IHandler<IPointerEvent, FConnectorBase[]> {\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(event: IPointerEvent): FConnectorBase[] {\n const position = event.getPosition();\n const elementsFromPoint = document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n return elementsFromPoint.filter((x) => isNodeInput(x as HTMLElement)).map((element) => {\n return this.fInputs.find((x) => x.isContains(element))!\n }).filter((x) => !!x);\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\nexport class FindInputsUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { FindInputsUnderPointerRequest } from './find-inputs-under-pointer.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-components-store';\nimport { InputsUnderPointerHandler } from './inputs-under-pointer';\nimport { FirstNotConnectedInputOfNodeUnderPointerHandler } from './first-not-connected-input-of-node-under-pointer';\nimport { OutputNotFound } from '../../../domain';\nimport { FConnectorBase, FNodeBase } from '../../../f-node';\n\n@Injectable()\nexport class FindInputsUnderPointerHandler\n implements IHandler<FindInputsUnderPointerRequest, FConnectorBase[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private inputsUnderPointerHandler: InputsUnderPointerHandler,\n private firstNotConnectedInputOfNodeUnderPointerHandler: FirstNotConnectedInputOfNodeUnderPointerHandler,\n ) {\n }\n\n public handle(payload: FindInputsUnderPointerRequest): FConnectorBase[] {\n const inputsUnderPointer = this.getInputsUnderPointer(payload);\n const output = this.fComponentsStore.fOutputs.find((x) => x.id === payload.dragHandler.connection.outputId);\n if (!output) {\n throw OutputNotFound(payload.dragHandler.connection.outputId);\n }\n return inputsUnderPointer.filter((x) => {\n const targetNode = this.fNodes.find((y) => y.isContains(x.hostElement));\n const sourceNode = this.fNodes.find((y) => y.isContains(output.hostElement));\n return sourceNode?.hostElement !== targetNode?.hostElement;\n });\n }\n\n private getInputsUnderPointer(payload: FindInputsUnderPointerRequest): FConnectorBase[] {\n let inputs = this.inputsUnderPointerHandler.handle(payload.event);\n\n const input = this.firstNotConnectedInputOfNodeUnderPointerHandler.handle(payload.event);\n\n if (input) {\n inputs.push(input);\n }\n inputs = inputs.filter((x) => x.canBeConnected);\n return inputs;\n }\n}\n","import { IHandler, IPointerEvent } from '@foblex/core';\nimport { EDraggableType } from '../../e-draggable-type';\nimport { FindInputsUnderPointerHandler, FindInputsUnderPointerRequest } from '../find-inputs-under-pointer';\nimport { CreateConnectionDragHandler } from './create-connection.drag-handler';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-components-store';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FindFirstCanBeConnectedOutputByOutletHandler } from './find-first-can-be-connected-output-by-outlet';\nimport { CreateConnectionEvent } from './create-connection.event';\nimport { OutputNotFound, requiredOutput } from '../../../domain';\nimport { FNodeOutletBase, isNodeOutlet } from '../../../f-node';\n\n@Injectable()\nexport class CreateConnectionOnPointerUp\n implements IHandler<IPointerEvent, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private findInputsUnderPointerHandler: FindInputsUnderPointerHandler,\n private findFirstCanBeConnectedOutputByOutletHandler: FindFirstCanBeConnectedOutputByOutletHandler\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n const isCreateConnection = this.fDraggableDataContext.draggableItems.some((x) => x.type === EDraggableType.CREATE_CONNECTION);\n if (isCreateConnection) {\n const handler = this.fDraggableDataContext.draggableItems[ 0 ] as CreateConnectionDragHandler;\n\n const inputsUnderPointer = this.findInputsUnderPointerHandler.handle(\n new FindInputsUnderPointerRequest(event, handler)\n );\n\n if (inputsUnderPointer.length > 0) {\n let output = this.fComponentsStore.fOutputs.find((x) => x.id === handler.connection.outputId);\n if (!output) {\n output = this.fComponentsStore.fOutlets.find((x) => x.id === handler.connection.outputId);\n }\n if (!output) {\n throw OutputNotFound(handler.connection.outputId);\n }\n\n const isOutlet = isNodeOutlet(output.hostElement);\n if (isOutlet) {\n\n output = this.findFirstCanBeConnectedOutputByOutletHandler.handle(output as FNodeOutletBase);\n if (!output) {\n throw requiredOutput();\n }\n }\n this.fComponentsStore.fDraggable?.fCreateConnection.emit(new CreateConnectionEvent(output.id, inputsUnderPointer[ 0 ]?.id));\n }\n handler.complete();\n }\n }\n}\n","import { IHandler, IPoint, IPointerEvent, ITransformModel, Point } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-components-store';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FindFirstCanBeConnectedOutputByOutletHandler } from './find-first-can-be-connected-output-by-outlet';\nimport { CreateConnectionDragHandler } from './create-connection.drag-handler';\nimport { GetConnectionVectorHandler, GetElementRectInFlowHandler, GetOutputRectInFlowHandler } from '../../../domain';\nimport { FConnectorBase, FNodeBase, FNodeOutletBase, isNodeOutlet, isNodeOutput } from '../../../f-node';\n\n@Injectable()\nexport class CreateConnectionPrepareDragSequence\n implements IHandler<IPointerEvent, 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 getElementRectInFlowHandler: GetElementRectInFlowHandler,\n private getConnectionVectorHandler: GetConnectionVectorHandler,\n private findFirstCanBeConnectedOutputByOutletHandler: FindFirstCanBeConnectedOutputByOutletHandler,\n private getOutputRectInFlowHandler: GetOutputRectInFlowHandler,\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n\n const node = this.fComponentsStore.findNode(event.targetElement);\n const pointerPositionInFlow = Point.fromPoint(event.getPosition()).elementTransform(this.flowHost);\n if (!node || this.fDraggableDataContext.draggableItems.length || !this.fComponentsStore.fTempConnection) {\n return;\n }\n\n if (isNodeOutlet(event.targetElement)) {\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 const outletCenter = this.getElementRectInFlowHandler.handle(outlet.hostElement).gravityCenter;\n if ((outlet as FNodeOutletBase).isConnectionFromOutlet) {\n this.createConnectionHandler(pointerPositionInFlow, outlet, outletCenter);\n } else {\n const output = this.findFirstCanBeConnectedOutputByOutletHandler.handle(outlet as FNodeOutletBase);\n if (!output) {\n throw new Error('Output not found');\n }\n this.createConnectionHandler(pointerPositionInFlow, output, outletCenter);\n }\n }\n } else if (this.isNodeOutput(event.targetElement, node)) {\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 const outputCenter = this.getElementRectInFlowHandler.handle(output.hostElement).gravityCenter;\n this.createConnectionHandler(pointerPositionInFlow, output, outputCenter);\n }\n }\n }\n\n private createConnectionHandler(\n pointerPositionInCanvas: Point,\n output: FConnectorBase,\n outputCenter: IPoint\n ): void {\n\n this.fComponentsStore.fTempConnection!.outputId = output.id;\n this.fComponentsStore.fTempConnection!.initialize();\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n\n this.fDraggableDataContext.onPointerDownPosition = pointerPositionInCanvas.div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new CreateConnectionDragHandler(this.getOutputRectInFlowHandler, this.getConnectionVectorHandler, this.fComponentsStore.fTempConnection!, outputCenter)\n ];\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n const outlets = this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n return isNodeOutput(targetElement) && !outlets.length;\n }\n}\n","import { IPoint, IRect, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EDraggableType } from '../../e-draggable-type';\nimport {\n EConnectorSide,\n GetConnectionVectorHandler,\n GetConnectionVectorRequest,\n GetInputRectInFlowHandler,\n GetOutputRectInFlowHandler\n} from '../../../domain';\nimport { FConnectionBase } from '../../../f-connection';\n\nexport class ReassignConnectionDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.REASSIGN_CONNECTION;\n\n private onPointerDownFromConnectorRect: IRect = RectExtensions.initialize();\n private onPointerDownToConnectorRect: IRect = RectExtensions.initialize();\n\n private outputSide: EConnectorSide = EConnectorSide.BOTTOM;\n private inputSide: EConnectorSide = EConnectorSide.TOP;\n\n constructor(\n private getInputRectInFlowHandler: GetInputRectInFlowHandler,\n private getOutputRectInFlowHandler: GetOutputRectInFlowHandler,\n private getConnectionVectorHandler: GetConnectionVectorHandler,\n public connection: FConnectionBase\n ) {\n }\n\n public initialize(): void {\n const fromConnector = this.getOutputRectInFlowHandler.handle(this.connection.outputId);\n this.inputSide = this.getInputRectInFlowHandler.handle(this.connection.inputId).side;\n this.outputSide = fromConnector.side;\n this.onPointerDownFromConnectorRect = fromConnector.rect;\n this.onPointerDownToConnectorRect = RectExtensions.initialize(this.connection.vector.point2.x, this.connection.vector.point2.y, 0, 0);\n }\n\n public move(difference: IPoint): void {\n const toRect = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);\n\n const vector = this.getConnectionVectorHandler.handle(\n new GetConnectionVectorRequest(\n this.onPointerDownFromConnectorRect,\n toRect,\n this.connection.behavior,\n this.outputSide,\n this.inputSide,\n )\n );\n\n this.connection.setVector(vector.point1, this.outputSide, vector.point2, this.inputSide);\n this.connection.redraw();\n }\n\n public complete(): void {\n const fromConnector = this.getOutputRectInFlowHandler.handle(this.connection.outputId);\n const toConnector = this.getInputRectInFlowHandler.handle(this.connection.inputId);\n\n const vector = this.getConnectionVectorHandler.handle(\n new GetConnectionVectorRequest(\n fromConnector.rect,\n toConnector.rect,\n this.connection.behavior,\n fromConnector.side,\n toConnector.side,\n )\n );\n\n this.connection.setVector(vector.point1, fromConnector.side, vector.point2, toConnector.side);\n this.connection.redraw();\n }\n}\n","export class ReassignConnectionEvent<T = any> {\n\n constructor(\n public connectionId: T,\n public outputId: T,\n public oldInputId: T,\n public newInputId: T\n ) {\n }\n}\n","import { IHandler, IPointerEvent } from '@foblex/core';\nimport { ReassignConnectionDragHandler } from './reassign-connection.drag-handler';\nimport { EDraggableType } from '../../e-draggable-type';\nimport {\n FindInputsUnderPointerHandler,\n FindInputsUnderPointerRequest,\n ReassignConnectionEvent\n} from '../index';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-components-store';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FDraggableBase } from '../../f-draggable-base';\n\n@Injectable()\nexport class ReassignConnectionOnPointerUp\n implements IHandler<IPointerEvent, void> {\n\n private get fDraggable(): FDraggableBase {\n return this.fComponentsStore.fDraggable!;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private findInputsUnderPointerHandler: FindInputsUnderPointerHandler\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n const isReassignConnection = this.fDraggableDataContext.draggableItems.some((x) => x.type === EDraggableType.REASSIGN_CONNECTION);\n if (isReassignConnection) {\n const handler = this.fDraggableDataContext.draggableItems[ 0 ] as ReassignConnectionDragHandler;\n\n const inputsUnderPointer = this.findInputsUnderPointerHandler.handle(\n new FindInputsUnderPointerRequest(event, handler)\n );\n\n if (inputsUnderPointer.length > 0) {\n if (handler.connection.inputId !== inputsUnderPointer[ 0 ]?.id) {\n this.fDraggable.fReassignConnection.emit(\n new ReassignConnectionEvent(\n handler.connection.id, handler.connection.outputId,\n handler.connection.inputId,\n inputsUnderPointer[ 0 ]?.id\n )\n );\n }\n }\n handler.complete();\n }\n }\n}\n","import { IHandler, IPointerEvent, ITransformModel, Point } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-components-store';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { ReassignConnectionDragHandler } from './reassign-connection.drag-handler';\nimport {\n GetConnectionHandler, GetConnectionVectorHandler,\n GetInputRectInFlowHandler,\n GetOutputRectInFlowHandler\n} from '../../../domain';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../f-connection';\n\n@Injectable()\nexport class ReassignConnectionPrepareDragSequence\n implements IHandler<IPointerEvent, 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 getConnectionHandler: GetConnectionHandler,\n private getInputRectInFlowHandler: GetInputRectInFlowHandler,\n private getOutputRectInFlowHandler: GetOutputRectInFlowHandler,\n private getConnectionVectorHandler: GetConnectionVectorHandler,\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n\n const pointerPositionInFlow = Point.fromPoint(event.getPosition()).elementTransform(this.flowHost);\n const position = event.getPosition();\n const allElements = document.elementsFromPoint(position.x, position.y);\n\n const dragHandlesOfConnections = allElements.filter((x) => {\n return !!this.getConnectionHandler.handle(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n });\n\n let connectionToReassign: FConnectionBase | undefined;\n if (dragHandlesOfConnections.length) {\n const connections = dragHandlesOfConnections.map((x) => this.getConnectionHandler.handle(x as HTMLElement)).filter((x) => !x?.disabled);\n if(connections.length) {\n connectionToReassign = this.getConnectionHandler.handle(dragHandlesOfConnections[ 0 ] as HTMLElement);\n }\n }\n\n if (connectionToReassign && !this.fDraggableDataContext.draggableItems.length) {\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n\n this.fDraggableDataContext.onPointerDownPosition = pointerPositionInFlow.div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new ReassignConnectionDragHandler(\n this.getInputRectInFlowHandler, this.getOutputRectInFlowHandler, this.getConnectionVectorHandler, connectionToReassign\n )\n ]\n }\n }\n}\n","import {\n CreateConnectionOnPointerUp,\n CreateConnectionPrepareDragSequence,\n FindFirstCanBeConnectedOutputByOutletHandler\n} from './create-connection';\nimport {\n FindInputsUnderPointerHandler,\n FirstNotConnectedInputOfNodeUnderPointerHandler,\n InputsUnderPointerHandler\n} from './find-inputs-under-pointer';\nimport { ReassignConnectionOnPointerUp, ReassignConnectionPrepareDragSequence } from './reassign-connection';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n FindFirstCanBeConnectedOutputByOutletHandler,\n\n CreateConnectionOnPointerUp,\n\n CreateConnectionPrepareDragSequence,\n\n FirstNotConnectedInputOfNodeUnderPointerHandler,\n\n InputsUnderPointerHandler,\n\n FindInputsUnderPointerHandler,\n\n ReassignConnectionOnPointerUp,\n\n ReassignConnectionPrepareDragSequence\n];\n","import { IRect } from '@foblex/core';\n\nexport class CreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { DomElementExtensions, IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EDraggableType } from '../e-draggable-type';\nimport { FExternalItemBase } from '../components';\n\nexport class ExternalItemDragHandler implements IDraggableItem {\n\n public readonly type = EDraggableType.PALETTE_ITEM;\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public initialize(): void {\n this.onPointerDownRect = this.getExternalItemRect();\n this.placeholder = DomElementExtensions.deepCloneNode(this.externalItem.hostElement);\n document.body.appendChild(this.placeholder);\n }\n\n private getExternalItemRect(): IRect {\n const rect = this.externalItem.hostElement.getBoundingClientRect();\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n const scrollLeft = window.pageXOffset || 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 getPlaceholderRect(): IRect {\n return RectExtensions.fromElement(this.placeholder!);\n }\n\n public complete(): void {\n document.body.removeChild(this.placeholder!);\n }\n}\n","import { IHandler, IPointerEvent, ITransformModel, Point } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FExternalItemService, getExternalItem, isExternalItem } from '../components';\nimport { FComponentsStore } from '../../f-components-store';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { ExternalItemDragHandler } from './external-item.drag-handler';\n\n@Injectable()\nexport class ExternalItemPrepareDragSequence implements IHandler<IPointerEvent, 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 fExternalItemService: FExternalItemService\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n if (isExternalItem(event.targetElement)) {\n\n const item = this.fExternalItemService.getItem(getExternalItem(event.targetElement));\n if (!item) {\n throw new Error('External item not found');\n }\n\n const pointerPositionInFlow = Point.fromPoint(event.getPosition()).elementTransform(this.flowHost);\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n\n this.fDraggableDataContext.onPointerDownPosition = pointerPositionInFlow.div(1);\n\n this.fDraggableDataContext.draggableItems = [\n new ExternalItemDragHandler(item)\n ];\n }\n }\n}\n","import { IHandler, IPointerEvent, Point } from '@foblex/core';\nimport { EventEmitter, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-components-store';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { EDraggableType } from '../e-draggable-type';\nimport { ExternalItemDragHandler } from './external-item.drag-handler';\nimport { CreateNodeEvent } from './create-node.event';\nimport { GetElementRectInFlowHandler } from '../../domain';\n\n@Injectable()\nexport class ExternalItemOnPointerUp implements IHandler<IPointerEvent, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fCreateNode(): EventEmitter<CreateNodeEvent> {\n return this.fComponentsStore.fDraggable!.fCreateNode;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private getElementRectInFlowHandler: GetElementRectInFlowHandler\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n const pointerPositionInFlow = Point.fromPoint(event.getPosition()).elementTransform(this.flowHost);\n let difference = pointerPositionInFlow.div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n\n const isDragPaletteItem = this.fDraggableDataContext.draggableItems.some((x) => x.type === EDraggableType.PALETTE_ITEM);\n\n if (isDragPaletteItem) {\n const dragHandler = this.fDraggableDataContext.draggableItems[ 0 ] as ExternalItemDragHandler\n dragHandler.move(difference);\n\n const isPointerInCanvasRect = document.elementsFromPoint(event.getPosition().x, event.getPosition().y).some((x) => x === this.flowHost);\n if (isPointerInCanvasRect) {\n const rectInCanvas = this.getElementRectInFlowHandler.handle(dragHandler.placeholder!);\n this.fCreateNode.emit(\n new CreateNodeEvent(rectInCanvas, dragHandler.externalItem.data)\n );\n }\n dragHandler.complete();\n }\n }\n}\n","import { ExternalItemOnPointerUp } from './external-item.on-pointer-up';\nimport { ExternalItemPrepareDragSequence } from './external-item.prepare-drag-sequence';\n\nexport const EXTERNAL_ITEM_PROVIDERS = [\n\n ExternalItemOnPointerUp,\n\n ExternalItemPrepareDragSequence\n];\n","import { IPoint, IVector, Point, VectorExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EDraggableType } from '../e-draggable-type';\nimport {\n EConnectorSide,\n GetConnectionVectorHandler, GetConnectionVectorRequest,\n GetInputRectInFlowHandler,\n GetOutputRectInFlowHandler\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\n\nexport class ConnectionDragHandler implements IDraggableItem {\n\n public readonly type = EDraggableType.CONNECTION;\n\n private onPointerDownVector: IVector = VectorExtensions.initialize();\n\n private fromConnectorSide: EConnectorSide = EConnectorSide.BOTTOM;\n\n private toConnectorSide: EConnectorSide = EConnectorSide.TOP;\n\n constructor(\n private getInputRectInFlowHandler: GetInputRectInFlowHandler,\n private getOutputRectInFlowHandler: GetOutputRectInFlowHandler,\n private getConnectionVectorHandler: GetConnectionVectorHandler,\n public connection: FConnectionBase,\n ) {\n }\n\n public initialize() {\n const fromConnector = this.getOutputRectInFlowHandler.handle(this.connection.outputId);\n this.fromConnectorSide = fromConnector.side;\n\n const toConnector = this.getInputRectInFlowHandler.handle(this.connection.inputId);\n this.toConnectorSide = toConnector.side;\n\n this.onPointerDownVector = this.getConnectionVectorHandler.handle(\n new GetConnectionVectorRequest(\n fromConnector.rect,\n toConnector.rect,\n this.connection.behavior,\n fromConnector.side,\n toConnector.side,\n )\n );\n }\n\n public move(difference: IPoint): void {\n const fromPoint = Point.fromPoint(this.onPointerDownVector.point1).add(difference);\n const toPoint = Point.fromPoint(this.onPointerDownVector.point2).add(difference);\n\n this.connection.setVector(fromPoint, this.fromConnectorSide, toPoint, this.toConnectorSide);\n this.connection.redraw();\n }\n}\n","import { IPoint, IRect, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EDraggableType } from '../e-draggable-type';\nimport {\n EConnectorSide,\n GetConnectionVectorHandler, GetConnectionVectorRequest,\n GetInputRectInFlowHandler,\n GetOutputRectInFlowHandler\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\n\nexport class ConnectionSourceDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CONNECTION;\n\n private fromConnectorRect: IRect = RectExtensions.initialize();\n private fromConnectorSide: EConnectorSide = EConnectorSide.BOTTOM;\n\n private toConnectorRect: IRect = RectExtensions.initialize();\n private toConnectorSide: EConnectorSide = EConnectorSide.TOP;\n\n constructor(\n private getInputRectInFlowHandler: GetInputRectInFlowHandler,\n private getOutputRectInFlowHandler: GetOutputRectInFlowHandler,\n private getConnectionVectorHandler: GetConnectionVectorHandler,\n private connection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n const fromConnector = this.getOutputRectInFlowHandler.handle(this.connection.outputId);\n this.fromConnectorRect = fromConnector.rect;\n this.fromConnectorSide = fromConnector.side;\n\n const toConnector = this.getInputRectInFlowHandler.handle(this.connection.inputId);\n this.toConnectorRect = toConnector.rect;\n this.toConnectorSide = toConnector.side;\n }\n\n public move(difference: IPoint): void {\n const fromConnectorRect = RectExtensions.addPoint(this.fromConnectorRect, difference);\n\n const vector = this.getConnectionVectorHandler.handle(\n new GetConnectionVectorRequest(\n fromConnectorRect,\n this.toConnectorRect,\n this.connection.behavior,\n this.fromConnectorSide,\n this.toConnectorSide,\n )\n );\n\n this.connection.setVector(vector.point1, this.fromConnectorSide, vector.point2, this.toConnectorSide);\n this.connection.redraw();\n }\n}\n","import { IPoint, IRect, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EDraggableType } from '../e-draggable-type';\nimport {\n EConnectorSide,\n GetConnectionVectorHandler, GetConnectionVectorRequest,\n GetInputRectInFlowHandler,\n GetOutputRectInFlowHandler\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\n\nexport class ConnectionTargetDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.CONNECTION;\n\n private fromConnectorRect: IRect = RectExtensions.initialize();\n private fromConnectorSide: EConnectorSide = EConnectorSide.BOTTOM;\n\n private toConnectorRect: IRect = RectExtensions.initialize();\n private toConnectorSide: EConnectorSide = EConnectorSide.TOP;\n\n constructor(\n private getInputRectInFlowHandler: GetInputRectInFlowHandler,\n private getOutputRectInFlowHandler: GetOutputRectInFlowHandler,\n private getConnectionVectorHandler: GetConnectionVectorHandler,\n private connection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n const fromConnector = this.getOutputRectInFlowHandler.handle(this.connection.outputId);\n this.fromConnectorRect = fromConnector.rect;\n this.fromConnectorSide = fromConnector.side;\n\n const toConnector = this.getInputRectInFlowHandler.handle(this.connection.inputId);\n this.toConnectorRect = toConnector.rect;\n this.toConnectorSide = toConnector.side;\n }\n\n public move(difference: IPoint): void {\n const toConnectorRect = RectExtensions.addPoint(this.toConnectorRect, difference);\n\n const vector = this.getConnectionVectorHandler.handle(\n new GetConnectionVectorRequest(\n this.fromConnectorRect,\n toConnectorRect,\n this.connection.behavior,\n this.fromConnectorSide,\n this.toConnectorSide,\n )\n );\n\n this.connection.setVector(vector.point1, this.fromConnectorSide, vector.point2, this.toConnectorSide);\n this.connection.redraw();\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EDraggableType } from '../e-draggable-type';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { FNodeBase } from '../../f-node';\n\nexport class NodeDragHandler implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.NODE;\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n public fNode: FNodeBase\n ) {\n this.onPointerDownPosition = this.fNode.position;\n }\n\n public move(difference: IPoint): void {\n const position = Point.fromPoint(this.onPointerDownPosition).add(difference);\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n this.fDraggableDataContext.fLineAlignment?.handle(difference);\n }\n\n public complete(): void {\n this.fNode.completeDrag();\n }\n}\n","import { IHandler, ITransformModel, RectExtensions } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-components-store';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { NodeDragHandler } from '../../node.drag-handler';\nimport { EDraggableType } from '../../../e-draggable-type';\nimport {\n GetElementRectInFlowHandler,\n GetIncomingConnectionsHandler,\n GetOutgoingConnectionsHandler\n} from '../../../../domain';\nimport { FConnectionBase } from '../../../../f-connection';\nimport { FConnectorBase, FNodeBase } from '../../../../f-node';\n\n@Injectable()\nexport class IsConnectionUnderNodeHandler implements IHandler<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 getElementRectInFlowHandler: GetElementRectInFlowHandler,\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.inputId);\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\n }\n }\n }\n }\n\n private isValidRequest(): boolean {\n const result =\n this.fDraggableDataContext.draggableItems.length === 1 &&\n this.fDraggableDataContext.draggableItems[ 0 ].type === EDraggableType.NODE;\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.getElementRectInFlowHandler.handle(node.hostElement);\n return this.fComponentsStore.fConnections.filter((x) => {\n const intersection = RectExtensions.intersectionWithVector(nodeRect, x.vector.point1, x.vector.point2);\n return (intersection || []).length > 0\n });\n }\n}\n","import { IHandler, IPointerEvent, ITransformModel, Point } from '@foblex/core';\nimport { FComponentsStore } from '../../f-components-store';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { EDraggableType } from '../e-draggable-type';\nimport { Injectable } from '@angular/core';\nimport { IsConnectionUnderNodeHandler } from './domain/is-connection-under-node';\n\n@Injectable()\nexport class NodeOnPointerUp\n implements IHandler<IPointerEvent, 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 isConnectionUnderNodeHandler: IsConnectionUnderNodeHandler,\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n const pointerPositionInFlow = Point.fromPoint(event.getPosition()).elementTransform(this.flowHost);\n let difference = pointerPositionInFlow.div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n\n const isDragNodes = this.fDraggableDataContext.draggableItems.some((x) => x.type === EDraggableType.NODE);\n\n if (isDragNodes) {\n const nearestIntersection = this.fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);\n if (nearestIntersection) {\n difference.x = nearestIntersection.xResult.value ? (difference.x - nearestIntersection.xResult.distance!) : difference.x;\n difference.y = nearestIntersection.yResult.value ? (difference.y - nearestIntersection.yResult.distance!) : difference.y;\n }\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.move(difference);\n x.complete?.();\n });\n this.isConnectionUnderNodeHandler.handle();\n this.fDraggableDataContext.fLineAlignment?.complete();\n }\n }\n}\n","import { IHandler, IPointerEvent, ITransformModel, Point } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-components-store';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EDraggableType } from '../e-draggable-type';\nimport { NodeDragHandler } from './node.drag-handler';\nimport { ConnectionTargetDragHandler } from './connection-target.drag-handler';\nimport { ConnectionSourceDragHandler } from './connection-source.drag-handler';\nimport { ConnectionDragHandler } from './connection.drag-handler';\nimport {\n GetConnectionVectorHandler,\n GetIncomingConnectionsHandler, GetInputRectInFlowHandler,\n GetOutgoingConnectionsHandler, GetOutputRectInFlowHandler, UpdateNodeLayerHandler\n} from '../../domain';\nimport { FConnectorBase, FNodeBase, isNodeDragHandle } from '../../f-node';\n\n@Injectable()\nexport class NodePrepareDragSequence implements IHandler<IPointerEvent, 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 updateNodeLayerHandler: UpdateNodeLayerHandler,\n private getInputRectInFlowHandler: GetInputRectInFlowHandler,\n private getOutputRectInFlowHandler: GetOutputRectInFlowHandler,\n private getOutgoingConnectionsHandler: GetOutgoingConnectionsHandler,\n private getIncomingConnectionsHandler: GetIncomingConnectionsHandler,\n private getConnectionVectorHandler: GetConnectionVectorHandler\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n\n const node = this.fComponentsStore.findNode(event.targetElement);\n const pointerPositionInFlow = Point.fromPoint(event.getPosition()).elementTransform(this.flowHost);\n\n if (node && !node.disabled && !this.fDraggableDataContext.draggableItems.length) {\n if (isNodeDragHandle(event.targetElement)) {\n if (!this.fDraggableDataContext.selectedItems.includes(node)) {\n this.fDraggableDataContext.selectedItems.push(node);\n node.select();\n }\n this.updateNodeLayerHandler.handle(node);\n const itemsToDrag: IDraggableItem[] = this.calculateDraggableConnectionsAndNodes();\n\n const draggedNodes = itemsToDrag.filter((x) => {\n return x.type === EDraggableType.NODE;\n }).map((x) => (x as NodeDragHandler).fNode);\n\n this.fDraggableDataContext.fLineAlignment?.initialize(this.fComponentsStore.fNodes, draggedNodes);\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = pointerPositionInFlow.div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n }\n }\n\n private calculateDraggableConnectionsAndNodes(): IDraggableItem[] {\n let itemsToDrag: IDraggableItem[] = [];\n\n const selectedNodes = this.fDraggableDataContext.selectedItems.map((x) => {\n return this.fComponentsStore.findNode(x.hostElement);\n }).filter((x) => !!x) as FNodeBase[];\n\n const nodeDragHandlers = selectedNodes.map((x) => new NodeDragHandler(this.fDraggableDataContext, x));\n itemsToDrag = nodeDragHandlers;\n\n const allOutputIds: any[] = selectedNodes.reduce((result: FConnectorBase[], x: FNodeBase) => {\n return result.concat(this.getOutputsForNode(x));\n }, []).map((x) => x.id);\n\n const allInputIds: any[] = selectedNodes.reduce((result: FConnectorBase[], x: FNodeBase) => {\n return result.concat(this.getInputsForNode(x));\n }, []).map((x) => x.id);\n\n nodeDragHandlers.forEach((nodeHandler) => {\n const outputConnections = this.getOutgoingConnectionsHandler.handle(this.getOutputsForNode(nodeHandler.fNode));\n outputConnections.forEach((c) => {\n if (allInputIds.includes(c.inputId)) {\n itemsToDrag.push(\n new ConnectionDragHandler(this.getInputRectInFlowHandler, this.getOutputRectInFlowHandler, this.getConnectionVectorHandler, c)\n );\n } else {\n itemsToDrag.push(\n new ConnectionSourceDragHandler(this.getInputRectInFlowHandler, this.getOutputRectInFlowHandler, this.getConnectionVectorHandler, c)\n );\n }\n });\n const inputConnections = this.getIncomingConnectionsHandler.handle(this.getInputsForNode(nodeHandler.fNode));\n inputConnections.forEach((c) => {\n if (allOutputIds.includes(c.outputId)) {\n const index = itemsToDrag.findIndex((x) => x.type === EDraggableType.CONNECTION && (x as ConnectionDragHandler).connection.id === c.id);\n if (index !== -1) {\n itemsToDrag.push(\n new ConnectionDragHandler(this.getInputRectInFlowHandler, this.getOutputRectInFlowHandler, this.getConnectionVectorHandler, c)\n );\n }\n } else {\n itemsToDrag.push(\n new ConnectionTargetDragHandler(this.getInputRectInFlowHandler, this.getOutputRectInFlowHandler, this.getConnectionVectorHandler, c)\n );\n }\n });\n });\n return itemsToDrag;\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { NodeOnPointerUp } from './node.on-pointer-up';\nimport { NodePrepareDragSequence } from './node.prepare-drag-sequence';\nimport { IsConnectionUnderNodeHandler } from './domain/is-connection-under-node';\n\nexport const NODE_PROVIDERS = [\n\n NodeOnPointerUp,\n\n NodePrepareDragSequence,\n\n IsConnectionUnderNodeHandler\n];\n","import { IHandler, IPointerEvent, MouseEventExtensions } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-components-store';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { GetConnectionHandler } from '../../domain';\nimport { FNodeBase, isNodeOutlet, isNodeOutput } from '../../f-node';\n\n@Injectable()\nexport class SingleSelectOnPointerDown implements IHandler<IPointerEvent, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private getConnectionHandler: GetConnectionHandler\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n const node = this.fComponentsStore.findNode(event.targetElement);\n const connection = this.getConnectionHandler.handle(event.targetElement);\n this.deselectAll(node, event);\n\n this.resetSelectionIfNotMultiselect(event);\n\n if (node) {\n if (!this.fDraggableDataContext.selectedItems.includes(node)) {\n this.fDraggableDataContext.selectedItems.push(node);\n } else {\n this.fDraggableDataContext.selectedItems.splice(this.fDraggableDataContext.selectedItems.indexOf(node), 1);\n }\n } else if (connection) {\n if (!this.fDraggableDataContext.selectedItems.includes(connection)) {\n this.fDraggableDataContext.selectedItems.push(connection);\n } else {\n this.fDraggableDataContext.selectedItems.splice(this.fDraggableDataContext.selectedItems.indexOf(connection), 1);\n }\n }\n this.selectIfNotSelected();\n }\n\n private deselectAll(node: FNodeBase | undefined, event: IPointerEvent): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n if (x !== node || (!isNodeOutlet(event.targetElement) && !isNodeOutput(event.targetElement))) {\n x.deselect();\n }\n });\n }\n\n private resetSelectionIfNotMultiselect(event: IPointerEvent): void {\n const isMultiselect =\n MouseEventExtensions.isCommandButton(event.originalEvent) ||\n MouseEventExtensions.isShiftPressed(event.originalEvent);\n if (!isMultiselect) {\n this.fDraggableDataContext.selectedItems = [];\n }\n }\n\n private selectIfNotSelected(): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n if (!x.isSelected()) {\n x.select();\n }\n });\n }\n}\n","import { SingleSelectOnPointerDown } from './single-select.on-pointer-down';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n SingleSelectOnPointerDown\n];\n","import { Injectable } from '@angular/core';\nimport { IHandler, IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { ISelectableWithRect } from './i-selectable-with-rect';\nimport { FComponentsStore } from '../../../f-components-store';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { GetElementRectInFlowHandler } from '../../../domain';\nimport { FConnectionBase, ISelectable } from '../../../f-connection';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\nexport class GetCanBeSelectedItemsHandler implements IHandler<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 getElementRectInFlowHandler: GetElementRectInFlowHandler\n ) {\n }\n\n public handle(): ISelectableWithRect[] {\n const nodeRects = this.getNodesWithRects();\n\n const lineRects = this.getConnectionsWithRects();\n\n const result = [ ...nodeRects, ...lineRects ].filter((x) => {\n return !this.fDraggableDataContext.selectedItems.includes(x.element);\n });\n\n return result;\n }\n\n private getNodesWithRects(): { element: ISelectable, rect: IRect }[] {\n return this.fNodes.map((x) => {\n\n const rect = this.getElementRectInFlowHandler.handle(x.hostElement);\n return {\n element: x,\n rect: RectExtensions.mult(rect, this.transform.scale)\n };\n });\n }\n\n private getConnectionsWithRects(): { element: ISelectable, rect: IRect }[] {\n return this.fConnections.map((x) => {\n const rect = this.getElementRectInFlowHandler.handle(x.boundingElement);\n return {\n element: x,\n rect: RectExtensions.mult(rect, this.transform.scale)\n };\n });\n }\n}\n","import { IPoint, Point, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EDraggableType } from '../e-draggable-type';\nimport { FComponentsStore } from '../../f-components-store';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { GetCanBeSelectedItemsHandler, ISelectableWithRect } from './get-can-be-selected-items';\nimport { Injector } from '@angular/core';\nimport { ISelectable } from '../../f-connection';\n\nexport class SelectionAreaDragHandle implements IDraggableItem {\n\n public readonly type: EDraggableType = EDraggableType.SELECTION;\n\n private canBeSelected: ISelectableWithRect[] = [];\n\n private selectedByMove: ISelectable[] = [];\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 fDraggableDataContext: FDraggableDataContext,\n private injector: Injector\n ) {\n }\n\n public initialize(): void {\n this.canBeSelected = this.injector.get(GetCanBeSelectedItemsHandler).handle();\n\n this.fDraggableDataContext.fSelectionArea?.show();\n this.fDraggableDataContext.fSelectionArea?.draw({\n left: this.fDraggableDataContext.onPointerDownPosition.x,\n top: this.fDraggableDataContext.onPointerDownPosition.y,\n width: 0,\n height: 0\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.fDraggableDataContext.fSelectionArea?.draw({ left: x, top: y, width, height });\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 }\n\n public complete(): void {\n this.fDraggableDataContext.fSelectionArea?.hide();\n this.fDraggableDataContext.selectedItems.push(...this.selectedByMove);\n }\n}\n","import { IHandler, IPointerEvent, MouseEventExtensions, Point } from '@foblex/core';\nimport { Injectable, Injector } from '@angular/core';\nimport { FComponentsStore } from '../../f-components-store';\nimport { FFlowBase } from '../../components';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { SelectionAreaDragHandle } from './selection-area.drag-handle';\n\n@Injectable()\nexport class SelectionAreaPrepareDragSequence implements IHandler<IPointerEvent, void> {\n\n private get fFlow(): FFlowBase {\n return this.fComponentsStore.fFlow as FFlowBase;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private injector: Injector\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n const pointerPositionInFlow = Point.fromPoint(event.getPosition()).elementTransform(this.fFlow.hostElement);\n\n if (MouseEventExtensions.isShiftPressed(event.originalEvent) && this.fDraggableDataContext.fSelectionArea) {\n this.fDraggableDataContext.draggableItems = [\n new SelectionAreaDragHandle(this.fComponentsStore, this.fDraggableDataContext, this.injector)\n ];\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = pointerPositionInFlow.div(1);\n }\n }\n}\n","import { IHandler, IPointerEvent } from '@foblex/core';\nimport { EDraggableType } from '../e-draggable-type';\nimport { Injectable } from '@angular/core';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Injectable()\nexport class SelectionAreaOnPointerUp\n implements IHandler<IPointerEvent, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(event: IPointerEvent): void {\n const isSelection = this.fDraggableDataContext.draggableItems.some((x) => x.type === EDraggableType.SELECTION);\n\n if (isSelection) {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n }\n}\n","import { SelectionAreaPrepareDragSequence } from './selection-area.prepare-drag-sequence';\nimport { SelectionAreaOnPointerUp } from './selection-area.on-pointer-up';\nimport { GetCanBeSelectedItemsHandler } from './get-can-be-selected-items';\n\nexport const SELECTION_AREA_PROVIDERS = [\n\n GetCanBeSelectedItemsHandler,\n\n SelectionAreaPrepareDragSequence,\n\n SelectionAreaOnPointerUp,\n];\n","import {\n IDragAndDropBase, IHasHostElement\n} from '@foblex/core';\nimport {\n Directive,\n EventEmitter,\n InjectionToken,\n NgZone,\n} from '@angular/core';\nimport { CreateNodeEvent} from './external-item';\nimport { ReassignConnectionEvent } from './connections/reassign-connection/reassign-connection.event';\nimport { CreateConnectionEvent } from './connections/create-connection/create-connection.event';\n\nexport const F_DRAGGABLE = new InjectionToken<FDraggableBase>('F_DRAGGABLE');\n\n@Directive()\nexport abstract class FDraggableBase extends IDragAndDropBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract fCreateNode: EventEmitter<CreateNodeEvent>;\n\n public abstract fReassignConnection: EventEmitter<ReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<CreateConnectionEvent>;\n\n protected constructor(ngZone: NgZone) {\n super(ngZone);\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter, Inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit, Output\n} from \"@angular/core\";\nimport { F_DRAGGABLE, FDraggableBase } from './f-draggable-base';\nimport { FComponentsStore } from '../f-components-store';\nimport { FDraggableDataContext } from './f-draggable-data-context';\nimport { Subscription } from 'rxjs';\nimport { CreateNodeEvent, ExternalItemOnPointerUp, ExternalItemPrepareDragSequence } from './external-item';\nimport { IPointerEvent, Point } from '@foblex/core';\nimport { SingleSelectOnPointerDown } from './single-select';\nimport { SelectionAreaOnPointerUp, SelectionAreaPrepareDragSequence } from './selection-area';\nimport { NodeOnPointerUp, NodePrepareDragSequence } from './node';\nimport { CanvasOnPointerUp, CanvasPrepareDragSequence } from './canvas';\nimport { DOCUMENT } from '@angular/common';\nimport {\n CreateConnectionEvent,\n CreateConnectionOnPointerUp,\n CreateConnectionPrepareDragSequence, ReassignConnectionEvent,\n ReassignConnectionOnPointerUp,\n ReassignConnectionPrepareDragSequence\n} from './connections';\n\n@Directive({\n selector: \"f-flow[fDraggable]\",\n providers: [\n { provide: F_DRAGGABLE, useExisting: FDraggableDirective }\n ]\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input()\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 fCreateNode: EventEmitter<CreateNodeEvent> = new EventEmitter<CreateNodeEvent>();\n\n @Output()\n public override fReassignConnection: EventEmitter<ReassignConnectionEvent> = new EventEmitter<ReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection: EventEmitter<CreateConnectionEvent> = new EventEmitter<CreateConnectionEvent>();\n\n private readonly document: Document;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fDraggableDataContext: FDraggableDataContext,\n ngZone: NgZone,\n private injector: Injector,\n private fComponentsStore: FComponentsStore,\n @Inject(DOCUMENT) document: any\n ) {\n super(ngZone);\n this.document = document as Document;\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fDraggable = this;\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n this.fDraggableDataContext.reset();\n let result: boolean = event.isMouseLeftButton();\n this.injector.get(SingleSelectOnPointerDown).handle(event);\n\n this.injector.get(ReassignConnectionPrepareDragSequence).handle(event);\n\n this.injector.get(CreateConnectionPrepareDragSequence).handle(event);\n\n return result;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n\n this.injector.get(SelectionAreaPrepareDragSequence).handle(event);\n\n this.injector.get(NodePrepareDragSequence).handle(event);\n\n this.injector.get(CanvasPrepareDragSequence).handle(event);\n\n this.injector.get(ExternalItemPrepareDragSequence).handle(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 }\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n const pointerPositionInCanvas = Point.fromPoint(event.getPosition()).elementTransform(this.hostElement);\n const difference = 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.injector.get(ReassignConnectionOnPointerUp).handle(event);\n\n this.injector.get(CreateConnectionOnPointerUp).handle(event);\n\n this.injector.get(SelectionAreaOnPointerUp).handle(event);\n\n this.injector.get(NodeOnPointerUp).handle(event);\n\n this.injector.get(CanvasOnPointerUp).handle(event);\n\n this.injector.get(ExternalItemOnPointerUp).handle(event);\n\n this.hostElement.classList.remove('f-dragging');\n\n this.fDraggableDataContext.reset();\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n this.subscriptions$.unsubscribe();\n }\n}\n\n","import { InjectionToken } from '@angular/core';\n\nexport const F_PARENT = new InjectionToken('F_PARENT');\n\nexport interface IHasId<T = string> {\n\n id: T;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter, HostBinding,\n Input, OnDestroy, OnInit, Output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport { FComponentsStore } from '../../f-components-store';\nimport { debounceTime, startWith, Subject, takeUntil } from 'rxjs';\nimport {\n CANVAS_PROVIDERS, CONNECTIONS_PROVIDERS, EXTERNAL_ITEM_PROVIDERS,\n NODE_PROVIDERS,\n SELECTION_AREA_PROVIDERS,\n SINGLE_SELECT_PROVIDERS\n} from '../../f-draggable';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport {\n COMMON_PROVIDERS, GetAllNodesRectHandler,\n GetConnectionVectorHandler,\n GetConnectionVectorRequest,\n GetElementRectInFlowHandler\n} from '../../domain';\nimport { IRect } from '@foblex/core';\nimport { F_PARENT } from './f-parent.injection-token';\nimport { FLOW } from '../../get-flow-uid';\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]': 'id',\n class: \"f-component f-flow\",\n },\n providers: [\n FComponentsStore,\n FDraggableDataContext,\n ...SINGLE_SELECT_PROVIDERS,\n ...SELECTION_AREA_PROVIDERS,\n ...NODE_PROVIDERS,\n ...CANVAS_PROVIDERS,\n ...EXTERNAL_ITEM_PROVIDERS,\n ...CONNECTIONS_PROVIDERS,\n ...COMMON_PROVIDERS,\n { provide: F_FLOW, useExisting: FFlowComponent },\n { provide: F_PARENT, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n @Input()\n @HostBinding('attr.id')\n public override id: string = `f-flow-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n private readonly onDestroy: Subject<void> = new Subject<void>();\n\n @Output()\n public onInitialized: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n private isInitialized: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private getElementRectInFlowHandler: GetElementRectInFlowHandler,\n private getConnectionVectorHandler: GetConnectionVectorHandler,\n private getAllNodesRectHandler: GetAllNodesRectHandler,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fFlow = this;\n FLOW.UID = this.id;\n }\n\n public ngAfterContentInit(): void {\n this.subscribeOnElementsChanges();\n }\n\n private subscribeOnElementsChanges(): void {\n this.fComponentsStore.changes.pipe(startWith(null), takeUntil(this.onDestroy), debounceTime(20)).subscribe(() => {\n this.calculateConnections();\n if (!this.isInitialized) {\n this.isInitialized = true;\n this.onInitialized.emit(this.getNodesRect());\n }\n });\n }\n\n private calculateConnections(): void {\n\n this.fComponentsStore.fOutputs.forEach((output) => output.setConnected(false));\n this.fComponentsStore.fInputs.forEach((input) => input.setConnected(false));\n\n this.fComponentsStore.fConnections.forEach((connection) => {\n const output = this.fComponentsStore.fOutputs.find((x) => x.id === connection.outputId);\n const input = this.fComponentsStore.fInputs.find((x) => x.id === connection.inputId);\n\n if (output && input) {\n\n output.setConnected(true);\n input.setConnected(true);\n\n // setTimeout(() => {\n const outputRect = this.getElementRectInFlowHandler.handle(output.hostElement);\n const inputRect = this.getElementRectInFlowHandler.handle(input.hostElement);\n\n const vector = this.getConnectionVectorHandler.handle(\n new GetConnectionVectorRequest(\n outputRect,\n inputRect,\n connection.behavior,\n output.side,\n input.side\n )\n );\n connection.setVector(vector.point1, output.side, vector.point2, input.side);\n // requestAnimationFrame(() => {\n connection.initialize();\n // });\n\n\n // const markers = this.fComponentsStore.fDefs!.getMarkersForConnection(connection.id, connection.startColor, connection.endColor);\n // connection.setMarkers(markers);\n // });\n }\n });\n }\n\n public getNodesRect(): IRect {\n return this.getAllNodesRectHandler.handle();\n }\n\n public ngOnDestroy(): void {\n this.onDestroy.next();\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</ng-container>\n","import { NgModule } from '@angular/core';\nimport {\n FBackgroundComponent,\n FCanvasComponent,\n FConnectionMarkerEndDirective,\n FConnectionMarkerEndSelectedDirective,\n FConnectionMarkerStartDirective,\n FConnectionMarkerStartSelectedDirective,\n FDefinitionsComponent,\n FFlowComponent,\n FZoomDirective\n} from './components';\nimport { CommonModule } from '@angular/common';\nimport { FDraggableDataContext, FLineAlignmentComponent } from './f-draggable';\nimport {\n FDraggableDirective, FExternalItemDirective, FSelectionAreaComponent,\n} from './f-draggable';\nimport {\n FConnectionComponent,\n FConnectionDragHandleComponent, FConnectionForCreateComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent, FConnectionTextPathDirective\n} from './f-connection';\nimport { FNodeComponent, FNodeInputDirective, FNodeOutletDirective, FNodeOutputDirective } from './f-node';\n\n@NgModule({\n declarations: [\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionSelectionComponent,\n\n FFlowComponent,\n FBackgroundComponent,\n FCanvasComponent,\n FDefinitionsComponent,\n FNodeComponent,\n FConnectionComponent,\n FConnectionForCreateComponent,\n FZoomDirective,\n FNodeInputDirective,\n FNodeOutletDirective,\n FNodeOutputDirective,\n\n FDraggableDirective,\n FExternalItemDirective,\n FSelectionAreaComponent,\n FLineAlignmentComponent,\n\n FConnectionMarkerStartDirective,\n FConnectionMarkerStartSelectedDirective,\n FConnectionMarkerEndDirective,\n FConnectionMarkerEndSelectedDirective\n ],\n imports: [\n CommonModule\n ],\n providers: [\n FDraggableDataContext,\n ],\n exports: [\n FFlowComponent,\n FBackgroundComponent,\n FCanvasComponent,\n FDefinitionsComponent,\n FNodeComponent,\n FConnectionComponent,\n FConnectionForCreateComponent,\n FZoomDirective,\n FNodeInputDirective,\n FNodeOutletDirective,\n FNodeOutputDirective,\n\n FDraggableDirective,\n FExternalItemDirective,\n FSelectionAreaComponent,\n FLineAlignmentComponent,\n\n FConnectionMarkerStartDirective,\n FConnectionMarkerStartSelectedDirective,\n FConnectionMarkerEndDirective,\n FConnectionMarkerEndSelectedDirective\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uniqueId","i1.FComponentsStore","i1.FConnectionTextPathDirective","MIXIN_BASE","i2.FConnectionDragHandleComponent","i3.FConnectionGradientComponent","i4.FConnectionPathComponent","i5.FConnectionTextComponent","i6.FConnectionSelectionComponent","i2.GetElementRectInFlowHandler","i1.GetAllNodesRectHandler","i2.FComponentsStore","i1.FDraggableDataContext","i2.FDraggableDataContext","i1.FExternalItemService","i3.GetElementRectInFlowHandler","i2.InputsUnderPointerHandler","i3.FirstNotConnectedInputOfNodeUnderPointerHandler","i3.FindInputsUnderPointerHandler","i4.FindFirstCanBeConnectedOutputByOutletHandler","i3.GetConnectionVectorHandler","i3.GetOutputRectInFlowHandler","i3.GetConnectionHandler","i3.GetInputRectInFlowHandler","i3.FExternalItemService","i3.GetOutgoingConnectionsHandler","i3.GetIncomingConnectionsHandler","i3.IsConnectionUnderNodeHandler","i3.UpdateNodeLayerHandler","i1.GetElementRectInFlowHandler","i1.GetConnectionVectorHandler"],"mappings":"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"}