@foblex/flow 17.8.0 → 17.8.2

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 (218) hide show
  1. package/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior-request.d.ts +12 -0
  2. package/domain/f-connection/calculate-connection-line-by-behavior/{calculate-connection-line-by-behavior.execution.d.ts → calculate-connection-line-by-behavior.d.ts} +4 -4
  3. package/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.d.ts +2 -2
  4. package/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.d.ts +2 -2
  5. package/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.d.ts +2 -2
  6. package/domain/f-connection/calculate-connection-line-by-behavior/index.d.ts +2 -2
  7. package/domain/f-connection/providers.d.ts +2 -2
  8. package/domain/f-connection/redraw-connections/redraw-connections.execution.d.ts +2 -2
  9. package/domain/f-connectors/add-input-to-store/add-input-to-store-request.d.ts +2 -2
  10. package/domain/f-connectors/add-input-to-store/add-input-to-store.d.ts +12 -0
  11. package/domain/f-connectors/add-input-to-store/index.d.ts +1 -1
  12. package/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.d.ts +2 -2
  13. package/domain/f-connectors/add-outlet-to-store/{add-outlet-to-store.execution.d.ts → add-outlet-to-store.d.ts} +5 -5
  14. package/domain/f-connectors/add-outlet-to-store/index.d.ts +1 -1
  15. package/domain/f-connectors/add-output-to-store/add-output-to-store-request.d.ts +2 -2
  16. package/domain/f-connectors/add-output-to-store/{add-output-to-store.execution.d.ts → add-output-to-store.d.ts} +5 -5
  17. package/domain/f-connectors/add-output-to-store/index.d.ts +1 -1
  18. package/domain/f-connectors/{find-closest-connector/find-closest-connector.request.d.ts → calculate-closest-connector/calculate-closest-connector-request.d.ts} +3 -3
  19. package/domain/f-connectors/calculate-closest-connector/calculate-closest-connector.d.ts +16 -0
  20. package/domain/f-connectors/calculate-closest-connector/index.d.ts +2 -0
  21. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.d.ts +3 -3
  22. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.d.ts +2 -2
  23. package/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.execution.d.ts +2 -2
  24. package/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.request.d.ts +2 -2
  25. package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.d.ts +2 -2
  26. package/domain/f-connectors/get-connector-and-rect/{get-connector-and-rect.execution.d.ts → get-connector-and-rect.d.ts} +4 -4
  27. package/domain/f-connectors/get-connector-and-rect/index.d.ts +1 -1
  28. package/domain/f-connectors/index.d.ts +1 -1
  29. package/domain/f-connectors/mark-connectable-connectors/index.d.ts +2 -2
  30. package/domain/f-connectors/mark-connectable-connectors/{mark-connectable-connectors.request.d.ts → mark-connectable-connectors-request.d.ts} +2 -2
  31. package/domain/f-connectors/mark-connectable-connectors/{mark-connectable-connectors.execution.d.ts → mark-connectable-connectors.d.ts} +5 -5
  32. package/domain/f-connectors/providers.d.ts +11 -11
  33. package/domain/f-connectors/remove-input-from-store/index.d.ts +1 -1
  34. package/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.d.ts +2 -2
  35. package/domain/f-connectors/remove-input-from-store/{remove-input-from-store.execution.d.ts → remove-input-from-store.d.ts} +4 -4
  36. package/domain/f-connectors/unmark-connectable-connectors/index.d.ts +2 -2
  37. package/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.request.d.ts → unmark-connectable-connectors-request.d.ts} +2 -2
  38. package/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.execution.d.ts → unmark-connectable-connectors.d.ts} +5 -5
  39. package/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.d.ts +1 -1
  40. package/domain/providers.d.ts +1 -1
  41. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior-request.mjs +16 -0
  42. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.mjs +32 -0
  43. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.mjs +4 -4
  44. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.mjs +8 -4
  45. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.mjs +10 -10
  46. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/index.mjs +3 -3
  47. package/esm2022/domain/f-connection/providers.mjs +3 -3
  48. package/esm2022/domain/f-connection/redraw-connections/redraw-connections-request.mjs +1 -1
  49. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +9 -9
  50. package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store-request.mjs +4 -4
  51. package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store.mjs +25 -0
  52. package/esm2022/domain/f-connectors/add-input-to-store/index.mjs +2 -2
  53. package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.mjs +4 -4
  54. package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.mjs +25 -0
  55. package/esm2022/domain/f-connectors/add-outlet-to-store/index.mjs +2 -2
  56. package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store-request.mjs +4 -4
  57. package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store.mjs +25 -0
  58. package/esm2022/domain/f-connectors/add-output-to-store/index.mjs +2 -2
  59. package/esm2022/domain/f-connectors/calculate-closest-connector/calculate-closest-connector-request.mjs +10 -0
  60. package/esm2022/domain/f-connectors/calculate-closest-connector/calculate-closest-connector.mjs +49 -0
  61. package/esm2022/domain/f-connectors/calculate-closest-connector/index.mjs +3 -0
  62. package/esm2022/domain/f-connectors/find-connectable-connector-using-priority-and-position/find-connectable-connector-using-priority-and-position.execution.mjs +9 -6
  63. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.mjs +14 -14
  64. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.mjs +4 -4
  65. package/esm2022/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.execution.mjs +9 -9
  66. package/esm2022/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.request.mjs +4 -4
  67. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.mjs +4 -4
  68. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.mjs +31 -0
  69. package/esm2022/domain/f-connectors/get-connector-and-rect/index.mjs +2 -2
  70. package/esm2022/domain/f-connectors/index.mjs +2 -2
  71. package/esm2022/domain/f-connectors/mark-connectable-connectors/index.mjs +3 -3
  72. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors-request.mjs +8 -0
  73. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.mjs +30 -0
  74. package/esm2022/domain/f-connectors/providers.mjs +20 -20
  75. package/esm2022/domain/f-connectors/remove-input-from-store/index.mjs +2 -2
  76. package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.mjs +4 -4
  77. package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store.mjs +25 -0
  78. package/esm2022/domain/f-connectors/unmark-connectable-connectors/index.mjs +3 -3
  79. package/esm2022/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.request.mjs → unmark-connectable-connectors-request.mjs} +4 -4
  80. package/esm2022/domain/f-connectors/unmark-connectable-connectors/unmark-connectable-connectors.mjs +30 -0
  81. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.mjs +4 -4
  82. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.mjs +12 -6
  83. package/esm2022/domain/f-node/calculate-input-connections/calculate-input-connections.mjs +3 -6
  84. package/esm2022/domain/f-node/calculate-output-connections/calculate-output-connections.mjs +3 -6
  85. package/esm2022/f-connection/common/domain/f-bezier.path-builder.mjs +26 -10
  86. package/esm2022/f-connection/common/domain/f-segment.path-builder.mjs +41 -23
  87. package/esm2022/f-connection/common/domain/f-straight.path-builder.mjs +9 -3
  88. package/esm2022/f-connection/common/f-connection-base.mjs +34 -25
  89. package/esm2022/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +17 -27
  90. package/esm2022/f-connection/common/f-connection-text/f-connection-text.component.mjs +20 -33
  91. package/esm2022/f-connection/common/f-gradient/f-connection-gradient.component.mjs +17 -27
  92. package/esm2022/f-connection/common/f-path/f-connection-path.component.mjs +16 -26
  93. package/esm2022/f-connection/common/f-selection/f-connection-selection.component.mjs +10 -20
  94. package/esm2022/f-connection/common/i-has-connection-from-to.mjs +1 -1
  95. package/esm2022/f-connection/f-connection/f-connection.component.mjs +24 -25
  96. package/esm2022/f-connection/f-connection-builder/i-f-connection-builder-response.mjs +1 -1
  97. package/esm2022/f-connection/f-connection-center/f-connection-center.directive.mjs +21 -4
  98. package/esm2022/f-connection/f-connection-content/f-connection-content.mjs +96 -0
  99. package/esm2022/f-connection/f-connection-content/index.mjs +3 -0
  100. package/esm2022/f-connection/f-connection-content/polyline-content-engine/i-polyline-content.mjs +2 -0
  101. package/esm2022/f-connection/f-connection-content/polyline-content-engine/index.mjs +6 -0
  102. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-align.mjs +6 -0
  103. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-layout-engine.mjs +29 -0
  104. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-place.mjs +65 -0
  105. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-sampler-result.mjs +2 -0
  106. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-tangent.mjs +2 -0
  107. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/index.mjs +5 -0
  108. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline-sampler.mjs +143 -0
  109. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline.mjs +68 -0
  110. package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +17 -21
  111. package/esm2022/f-connection/f-marker/f-marker-base.mjs +2 -8
  112. package/esm2022/f-connection/f-marker/f-marker.directive.mjs +13 -22
  113. package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +17 -21
  114. package/esm2022/f-connection/index.mjs +2 -1
  115. package/esm2022/f-connectors/f-connector-base.mjs +1 -1
  116. package/esm2022/f-connectors/f-node-input/f-node-input-base.mjs +2 -2
  117. package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +34 -32
  118. package/esm2022/f-connectors/f-node-outlet/f-node-outlet-base.mjs +6 -6
  119. package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +23 -26
  120. package/esm2022/f-connectors/f-node-output/f-node-output-base.mjs +4 -4
  121. package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +30 -32
  122. package/esm2022/f-connectors/f-source-connector-base.mjs +11 -0
  123. package/esm2022/f-connectors/index.mjs +2 -1
  124. package/esm2022/f-draggable/domain/f-drag-started-event.mjs +4 -2
  125. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +7 -7
  126. package/esm2022/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.execution.mjs +2 -2
  127. package/esm2022/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.execution.mjs +20 -18
  128. package/esm2022/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.mjs +38 -36
  129. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.drag-handler.mjs +21 -19
  130. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-source.drag-handler.mjs +6 -6
  131. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-target.drag-handler.mjs +5 -5
  132. package/esm2022/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.execution.mjs +5 -5
  133. package/esm2022/f-draggable/f-drag-handler/i-f-drag-handler.mjs +1 -1
  134. package/esm2022/f-draggable/f-draggable-base.mjs +2 -2
  135. package/esm2022/f-draggable/f-draggable.directive.mjs +10 -20
  136. package/esm2022/f-draggable/f-node-move/connection-drag-handlers/base-connection.drag-handler.mjs +3 -3
  137. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-drag-model-from-selection.mjs +9 -12
  138. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-input-connection-handler-and-set-to-node-handler/create-input-connection-handler-and-set-to-node-handler.mjs +5 -5
  139. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-output-connection-handler-and-set-to-node-handler/create-output-connection-handler-and-set-to-node-handler.mjs +5 -5
  140. package/esm2022/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.execution.mjs +28 -16
  141. package/esm2022/f-node/f-node.directive.mjs +6 -2
  142. package/esm2022/mixins/change-selection/change-selection.mjs +5 -6
  143. package/esm2022/mixins/change-visibility/change-visibility.mjs +4 -3
  144. package/esm2022/mixins/constructor.mjs +1 -1
  145. package/esm2022/utils/index.mjs +2 -1
  146. package/esm2022/utils/string-attribute.mjs +4 -0
  147. package/f-connection/common/domain/f-bezier.path-builder.d.ts +2 -2
  148. package/f-connection/common/domain/f-segment.path-builder.d.ts +7 -7
  149. package/f-connection/common/f-connection-base.d.ts +13 -11
  150. package/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +6 -11
  151. package/f-connection/common/f-connection-text/f-connection-text.component.d.ts +6 -12
  152. package/f-connection/common/f-gradient/f-connection-gradient.component.d.ts +5 -10
  153. package/f-connection/common/f-path/f-connection-path.component.d.ts +2 -7
  154. package/f-connection/common/f-selection/f-connection-selection.component.d.ts +2 -6
  155. package/f-connection/common/i-has-connection-from-to.d.ts +3 -3
  156. package/f-connection/f-connection/f-connection.component.d.ts +6 -6
  157. package/f-connection/f-connection-builder/i-f-connection-builder-response.d.ts +1 -0
  158. package/f-connection/f-connection-center/f-connection-center.directive.d.ts +6 -1
  159. package/f-connection/f-connection-content/f-connection-content.d.ts +69 -0
  160. package/f-connection/f-connection-content/index.d.ts +2 -0
  161. package/f-connection/f-connection-content/polyline-content-engine/i-polyline-content.d.ts +9 -0
  162. package/f-connection/f-connection-content/polyline-content-engine/index.d.ts +5 -0
  163. package/f-connection/f-connection-content/polyline-content-engine/polyline-content-align.d.ts +4 -0
  164. package/f-connection/f-connection-content/polyline-content-engine/polyline-content-layout-engine.d.ts +21 -0
  165. package/f-connection/f-connection-content/polyline-content-engine/polyline-content-place.d.ts +18 -0
  166. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-sampler-result.d.ts +11 -0
  167. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-tangent.d.ts +4 -0
  168. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/index.d.ts +4 -0
  169. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline-sampler.d.ts +60 -0
  170. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline.d.ts +29 -0
  171. package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +4 -6
  172. package/f-connection/f-marker/f-marker-base.d.ts +0 -3
  173. package/f-connection/f-marker/f-marker.directive.d.ts +4 -6
  174. package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +4 -6
  175. package/f-connection/index.d.ts +1 -0
  176. package/f-connection/providers.d.ts +2 -2
  177. package/f-connectors/f-connector-base.d.ts +3 -2
  178. package/f-connectors/f-node-input/f-node-input-base.d.ts +3 -2
  179. package/f-connectors/f-node-input/f-node-input.directive.d.ts +8 -9
  180. package/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +3 -3
  181. package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +6 -8
  182. package/f-connectors/f-node-output/f-node-output-base.d.ts +4 -5
  183. package/f-connectors/f-node-output/f-node-output.directive.d.ts +7 -9
  184. package/f-connectors/f-source-connector-base.d.ts +7 -0
  185. package/f-connectors/index.d.ts +1 -0
  186. package/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.d.ts +1 -1
  187. package/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.execution.d.ts +2 -2
  188. package/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.execution.d.ts +9 -9
  189. package/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.d.ts +5 -5
  190. package/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.drag-handler.d.ts +4 -4
  191. package/f-draggable/f-connection/f-reassign-connection/f-reassign-source.drag-handler.d.ts +5 -5
  192. package/f-draggable/f-connection/f-reassign-connection/f-reassign-target.drag-handler.d.ts +5 -5
  193. package/f-draggable/f-draggable-base.d.ts +1 -1
  194. package/f-draggable/f-draggable.directive.d.ts +5 -6
  195. package/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.execution.d.ts +1 -1
  196. package/f-node/f-node.directive.d.ts +1 -1
  197. package/fesm2022/foblex-flow.mjs +1083 -669
  198. package/fesm2022/foblex-flow.mjs.map +1 -1
  199. package/package.json +1 -1
  200. package/utils/index.d.ts +1 -0
  201. package/utils/string-attribute.d.ts +1 -0
  202. package/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.d.ts +0 -12
  203. package/domain/f-connectors/add-input-to-store/add-input-to-store.execution.d.ts +0 -12
  204. package/domain/f-connectors/find-closest-connector/find-closest-connector.execution.d.ts +0 -16
  205. package/domain/f-connectors/find-closest-connector/index.d.ts +0 -2
  206. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.execution.mjs +0 -32
  207. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.mjs +0 -16
  208. package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store.execution.mjs +0 -25
  209. package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.execution.mjs +0 -25
  210. package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store.execution.mjs +0 -25
  211. package/esm2022/domain/f-connectors/find-closest-connector/find-closest-connector.execution.mjs +0 -47
  212. package/esm2022/domain/f-connectors/find-closest-connector/find-closest-connector.request.mjs +0 -10
  213. package/esm2022/domain/f-connectors/find-closest-connector/index.mjs +0 -3
  214. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.mjs +0 -31
  215. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.execution.mjs +0 -30
  216. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.request.mjs +0 -8
  217. package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store.execution.mjs +0 -25
  218. package/esm2022/domain/f-connectors/unmark-connectable-connectors/unmark-connectable-connectors.execution.mjs +0 -30
@@ -1,9 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Injectable, Directive, input, computed, signal, Injector, Renderer2, effect, untracked, DestroyRef, model, output, booleanAttribute, ElementRef, Input, Inject, Component, ChangeDetectionStrategy, ViewChild, Optional, viewChild, contentChildren, numberAttribute, ViewContainerRef, TemplateRef, EventEmitter, NgZone, Output, ContentChildren, contentChild, NgModule } from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, Directive, input, computed, signal, Injector, Renderer2, effect, untracked, DestroyRef, model, output, booleanAttribute, ElementRef, Input, viewChild, Component, ChangeDetectionStrategy, Optional, Inject, isDevMode, contentChildren, numberAttribute, ViewContainerRef, TemplateRef, EventEmitter, NgZone, Output, ContentChildren, contentChild, NgModule } from '@angular/core';
3
3
  import { RectExtensions, RoundedRect, TransformModelExtensions, PointExtensions, Point, LineExtensions, GetIntersections, SizeExtensions, findClosestAlignment, setRectToElement, adjustRectToMinSize, setRectToViewBox } from '@foblex/2d';
4
4
  import { __decorate } from 'tslib';
5
5
  import { FExecutionRegister, FMediator } from '@foblex/mediator';
6
- import * as i1 from '@foblex/platform';
7
6
  import { BrowserService, PlatformService, EOperationSystem } from '@foblex/platform';
8
7
  import { normalizeDomElementId, castToEnum, isClosestElementHasClass, flatMap, getOrCreateRootNodeForViewRef, deepCloneNode, disableDragInteractions, extendStyles, getDataAttrValueFromClosestElementWithClass } from '@foblex/utils';
9
8
  import { CommonModule } from '@angular/common';
@@ -1013,18 +1012,18 @@ function createSVGElement$1(tag, fBrowser) {
1013
1012
  }
1014
1013
 
1015
1014
  class CalculateConnectionLineByBehaviorRequest {
1016
- outputRect;
1017
- inputRect;
1015
+ sourceRect;
1016
+ targetRect;
1018
1017
  behavior;
1019
- outputSide;
1020
- inputSide;
1018
+ sourceConnectableSide;
1019
+ targetConnectableSide;
1021
1020
  static fToken = Symbol('CalculateConnectionLineByBehaviorRequest');
1022
- constructor(outputRect, inputRect, behavior, outputSide, inputSide) {
1023
- this.outputRect = outputRect;
1024
- this.inputRect = inputRect;
1021
+ constructor(sourceRect, targetRect, behavior, sourceConnectableSide, targetConnectableSide) {
1022
+ this.sourceRect = sourceRect;
1023
+ this.targetRect = targetRect;
1025
1024
  this.behavior = behavior;
1026
- this.outputSide = outputSide;
1027
- this.inputSide = inputSide;
1025
+ this.sourceConnectableSide = sourceConnectableSide;
1026
+ this.targetConnectableSide = targetConnectableSide;
1028
1027
  }
1029
1028
  }
1030
1029
 
@@ -1126,7 +1125,7 @@ class FConnectorBase {
1126
1125
  const F_NODE_INPUT = new InjectionToken('F_NODE_INPUT');
1127
1126
  class FNodeInputBase extends FConnectorBase {
1128
1127
  get canBeConnected() {
1129
- return !this.disabled && (this.multiple ? true : !this.isConnected);
1128
+ return !this.disabled() && (this.multiple() ? true : !this.isConnected);
1130
1129
  }
1131
1130
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeInputBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1132
1131
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FNodeInputBase, usesInheritance: true, ngImport: i0 });
@@ -1220,10 +1219,9 @@ function mixinChangeSelection(base) {
1220
1219
  isSelected() {
1221
1220
  return this.hostElement.classList.contains(F_SELECTED_CLASS);
1222
1221
  }
1223
- markChildrenAsSelected() {
1224
- }
1225
- unmarkChildrenAsSelected() {
1226
- }
1222
+ markChildrenAsSelected() { }
1223
+ unmarkChildrenAsSelected() { }
1224
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1227
1225
  constructor(...args) {
1228
1226
  super(...args);
1229
1227
  }
@@ -1233,11 +1231,12 @@ function mixinChangeSelection(base) {
1233
1231
  function mixinChangeVisibility(base) {
1234
1232
  return class extends base {
1235
1233
  show() {
1236
- this.hostElement.style.display = "unset";
1234
+ this.hostElement.style.display = 'unset';
1237
1235
  }
1238
1236
  hide() {
1239
- this.hostElement.style.display = "none";
1237
+ this.hostElement.style.display = 'none';
1240
1238
  }
1239
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1241
1240
  constructor(...args) {
1242
1241
  super(...args);
1243
1242
  }
@@ -1454,11 +1453,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1454
1453
  }]
1455
1454
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
1456
1455
 
1456
+ function infinityMinMax() {
1457
+ return {
1458
+ min: { x: -Infinity, y: -Infinity },
1459
+ max: { x: Infinity, y: Infinity },
1460
+ };
1461
+ }
1462
+
1463
+ function stringAttribute(value) {
1464
+ return value ? `${value}` : undefined;
1465
+ }
1466
+
1457
1467
  let uniqueId$a = 0;
1458
1468
  class FNodeDirective extends FNodeBase {
1459
1469
  _destroyRef = inject(DestroyRef);
1460
1470
  _mediator = inject(FMediator);
1461
- fId = input(`f-node-${uniqueId$a++}`, { alias: 'fNodeId' });
1471
+ fId = input(`f-node-${uniqueId$a++}`, {
1472
+ alias: 'fNodeId',
1473
+ transform: (value) => stringAttribute(value) || `f-node-${uniqueId$a++}`,
1474
+ });
1462
1475
  fParentId = input(null, {
1463
1476
  alias: 'fNodeParentId',
1464
1477
  });
@@ -1569,26 +1582,36 @@ const F_NODE_PROVIDERS = [
1569
1582
 
1570
1583
  let uniqueId$9 = 0;
1571
1584
  class FNodeInputDirective extends FNodeInputBase {
1572
- _elementReference = inject(ElementRef);
1573
- _fMediator = inject(FMediator);
1574
- _fNode = inject(F_NODE);
1575
- fId = `f-node-input-${uniqueId$9++}`;
1576
- multiple = true;
1577
- disabled = false;
1585
+ hostElement = inject(ElementRef).nativeElement;
1586
+ _mediator = inject(FMediator);
1587
+ _node = inject(F_NODE);
1588
+ fId = input(`f-node-input-${uniqueId$9++}`, {
1589
+ alias: 'fInputId',
1590
+ transform: (value) => stringAttribute(value) || `f-node-input-${uniqueId$9++}`,
1591
+ });
1592
+ category = input(undefined, {
1593
+ alias: 'fInputCategory',
1594
+ transform: stringAttribute,
1595
+ });
1596
+ multiple = input(true, {
1597
+ alias: 'fInputMultiple',
1598
+ transform: booleanAttribute,
1599
+ });
1600
+ disabled = input(false, {
1601
+ alias: 'fInputDisabled',
1602
+ transform: booleanAttribute,
1603
+ });
1578
1604
  userFConnectableSide = EFConnectableSide.AUTO;
1579
1605
  get fNodeId() {
1580
- return this._fNode.fId();
1581
- }
1582
- get hostElement() {
1583
- return this._elementReference.nativeElement;
1606
+ return this._node.fId();
1584
1607
  }
1585
1608
  ngOnInit() {
1586
- this._fMediator.execute(new AddInputToStoreRequest(this));
1587
- this._fNode.addConnector(this);
1609
+ this._mediator.execute(new AddInputToStoreRequest(this));
1610
+ this._node.addConnector(this);
1588
1611
  }
1589
1612
  ngOnChanges(changes) {
1590
1613
  if (changes['userFConnectableSide']) {
1591
- this._fNode.refresh();
1614
+ this._node.refresh();
1592
1615
  }
1593
1616
  }
1594
1617
  setConnected(toConnector) {
@@ -1602,35 +1625,26 @@ class FNodeInputDirective extends FNodeInputBase {
1602
1625
  this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);
1603
1626
  }
1604
1627
  ngOnDestroy() {
1605
- this._fNode.removeConnector(this);
1606
- this._fMediator.execute(new RemoveInputFromStoreRequest(this));
1628
+ this._node.removeConnector(this);
1629
+ this._mediator.execute(new RemoveInputFromStoreRequest(this));
1607
1630
  }
1608
1631
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeInputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1609
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: FNodeInputDirective, selector: "[fNodeInput]", inputs: { fId: ["fInputId", "fId"], multiple: ["fInputMultiple", "multiple"], disabled: ["fInputDisabled", "disabled", booleanAttribute], userFConnectableSide: ["fInputConnectableSide", "userFConnectableSide", (value) => castToEnum(value, 'fInputConnectableSide', EFConnectableSide)] }, host: { properties: { "attr.data-f-input-id": "fId", "class.f-node-input-multiple": "multiple", "class.f-node-input-disabled": "disabled" }, classAttribute: "f-component f-node-input" }, providers: [{ provide: F_NODE_INPUT, useExisting: FNodeInputDirective }], exportAs: ["fNodeInput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
1632
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FNodeInputDirective, selector: "[fNodeInput]", inputs: { fId: { classPropertyName: "fId", publicName: "fInputId", isSignal: true, isRequired: false, transformFunction: null }, category: { classPropertyName: "category", publicName: "fInputCategory", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "fInputMultiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "fInputDisabled", isSignal: true, isRequired: false, transformFunction: null }, userFConnectableSide: { classPropertyName: "userFConnectableSide", publicName: "fInputConnectableSide", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fInputConnectableSide', EFConnectableSide) } }, host: { properties: { "attr.data-f-input-id": "fId()", "class.f-node-input-multiple": "multiple", "class.f-node-input-disabled": "disabled()" }, classAttribute: "f-component f-node-input" }, providers: [{ provide: F_NODE_INPUT, useExisting: FNodeInputDirective }], exportAs: ["fNodeInput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
1610
1633
  }
1611
1634
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeInputDirective, decorators: [{
1612
1635
  type: Directive,
1613
1636
  args: [{
1614
- selector: "[fNodeInput]",
1637
+ selector: '[fNodeInput]',
1615
1638
  exportAs: 'fNodeInput',
1616
1639
  host: {
1617
- '[attr.data-f-input-id]': 'fId',
1618
- class: "f-component f-node-input",
1640
+ '[attr.data-f-input-id]': 'fId()',
1641
+ class: 'f-component f-node-input',
1619
1642
  '[class.f-node-input-multiple]': 'multiple',
1620
- '[class.f-node-input-disabled]': 'disabled',
1643
+ '[class.f-node-input-disabled]': 'disabled()',
1621
1644
  },
1622
1645
  providers: [{ provide: F_NODE_INPUT, useExisting: FNodeInputDirective }],
1623
1646
  }]
1624
- }], propDecorators: { fId: [{
1625
- type: Input,
1626
- args: ['fInputId']
1627
- }], multiple: [{
1628
- type: Input,
1629
- args: ['fInputMultiple']
1630
- }], disabled: [{
1631
- type: Input,
1632
- args: [{ alias: 'fInputDisabled', transform: booleanAttribute }]
1633
- }], userFConnectableSide: [{
1647
+ }], propDecorators: { userFConnectableSide: [{
1634
1648
  type: Input,
1635
1649
  args: [{
1636
1650
  alias: 'fInputConnectableSide',
@@ -1638,14 +1652,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1638
1652
  }]
1639
1653
  }] } });
1640
1654
 
1655
+ class FSourceConnectorBase extends FConnectorBase {
1656
+ get hasConnectionLimits() {
1657
+ return !!this.canBeConnectedInputs && this.canBeConnectedInputs.length > 0;
1658
+ }
1659
+ canConnectTo(targetConnector) {
1660
+ const candidates = [targetConnector.fId(), targetConnector.category()];
1661
+ return candidates.some((c) => c && this.canBeConnectedInputs?.includes(c));
1662
+ }
1663
+ }
1664
+
1641
1665
  const F_NODE_OUTLET = new InjectionToken('F_NODE_OUTLET');
1642
- class FNodeOutletBase extends FConnectorBase {
1643
- outputs = [];
1666
+ class FNodeOutletBase extends FSourceConnectorBase {
1667
+ _outputs = [];
1644
1668
  get canBeConnected() {
1645
- return !this.disabled && this.outputs.some((output) => output.canBeConnected);
1669
+ return !this.disabled() && this._outputs.some((output) => output.canBeConnected);
1646
1670
  }
1647
1671
  setOutputs(outputs) {
1648
- this.outputs = outputs;
1672
+ this._outputs = outputs;
1649
1673
  }
1650
1674
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutletBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1651
1675
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FNodeOutletBase, usesInheritance: true, ngImport: i0 });
@@ -1660,50 +1684,46 @@ function isNodeOutlet(element) {
1660
1684
 
1661
1685
  let uniqueId$8 = 0;
1662
1686
  class FNodeOutletDirective extends FNodeOutletBase {
1663
- _elementReference = inject(ElementRef);
1664
- _fMediator = inject(FMediator);
1665
- /// Inject FNodeBase to check if the outlet inside the node
1666
- _fNode = inject(F_NODE);
1667
- fId = `f-node-outlet-${uniqueId$8++}`;
1668
- disabled = false;
1687
+ hostElement = inject(ElementRef).nativeElement;
1688
+ _mediator = inject(FMediator);
1689
+ _node = inject(F_NODE);
1690
+ fId = input(`f-node-outlet-${uniqueId$8++}`, {
1691
+ alias: 'fOutletId',
1692
+ transform: (value) => stringAttribute(value) || `f-node-outlet-${uniqueId$8++}`,
1693
+ });
1694
+ disabled = input(false, {
1695
+ alias: 'fOutletDisabled',
1696
+ transform: booleanAttribute,
1697
+ });
1669
1698
  fConnectableSide = EFConnectableSide.AUTO;
1670
1699
  userFConnectableSide = EFConnectableSide.AUTO;
1671
1700
  isConnectionFromOutlet = false;
1672
1701
  canBeConnectedInputs = [];
1673
1702
  get fNodeId() {
1674
- return this._fNode.fId();
1675
- }
1676
- get hostElement() {
1677
- return this._elementReference.nativeElement;
1703
+ return this._node.fId();
1678
1704
  }
1679
1705
  ngOnInit() {
1680
- this._fMediator.execute(new AddOutletToStoreRequest(this));
1706
+ this._mediator.execute(new AddOutletToStoreRequest(this));
1681
1707
  }
1682
1708
  ngOnDestroy() {
1683
- this._fMediator.execute(new RemoveOutletFromStoreRequest(this));
1709
+ this._mediator.execute(new RemoveOutletFromStoreRequest(this));
1684
1710
  }
1685
1711
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutletDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1686
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: FNodeOutletDirective, selector: "[fNodeOutlet]", inputs: { fId: ["fOutletId", "fId"], disabled: ["fOutletDisabled", "disabled", booleanAttribute], isConnectionFromOutlet: "isConnectionFromOutlet", canBeConnectedInputs: ["fCanBeConnectedInputs", "canBeConnectedInputs"] }, host: { properties: { "attr.data-f-outlet-id": "fId", "class.f-node-outlet-disabled": "disabled" }, classAttribute: "f-component f-node-outlet" }, providers: [{ provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective }], exportAs: ["fNodeOutlet"], usesInheritance: true, ngImport: i0 });
1712
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FNodeOutletDirective, selector: "[fNodeOutlet]", inputs: { fId: { classPropertyName: "fId", publicName: "fOutletId", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "fOutletDisabled", isSignal: true, isRequired: false, transformFunction: null }, isConnectionFromOutlet: { classPropertyName: "isConnectionFromOutlet", publicName: "isConnectionFromOutlet", isSignal: false, isRequired: false, transformFunction: null }, canBeConnectedInputs: { classPropertyName: "canBeConnectedInputs", publicName: "fCanBeConnectedInputs", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-f-outlet-id": "fId()", "class.f-node-outlet-disabled": "disabled()" }, classAttribute: "f-component f-node-outlet" }, providers: [{ provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective }], exportAs: ["fNodeOutlet"], usesInheritance: true, ngImport: i0 });
1687
1713
  }
1688
1714
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutletDirective, decorators: [{
1689
1715
  type: Directive,
1690
1716
  args: [{
1691
- selector: "[fNodeOutlet]",
1717
+ selector: '[fNodeOutlet]',
1692
1718
  exportAs: 'fNodeOutlet',
1693
1719
  host: {
1694
- '[attr.data-f-outlet-id]': 'fId',
1695
- class: "f-component f-node-outlet",
1696
- '[class.f-node-outlet-disabled]': 'disabled',
1720
+ '[attr.data-f-outlet-id]': 'fId()',
1721
+ class: 'f-component f-node-outlet',
1722
+ '[class.f-node-outlet-disabled]': 'disabled()',
1697
1723
  },
1698
1724
  providers: [{ provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective }],
1699
1725
  }]
1700
- }], propDecorators: { fId: [{
1701
- type: Input,
1702
- args: ['fOutletId']
1703
- }], disabled: [{
1704
- type: Input,
1705
- args: [{ alias: 'fOutletDisabled', transform: booleanAttribute }]
1706
- }], isConnectionFromOutlet: [{
1726
+ }], propDecorators: { isConnectionFromOutlet: [{
1707
1727
  type: Input
1708
1728
  }], canBeConnectedInputs: [{
1709
1729
  type: Input,
@@ -1711,9 +1731,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1711
1731
  }] } });
1712
1732
 
1713
1733
  const F_NODE_OUTPUT = new InjectionToken('F_NODE_OUTPUT');
1714
- class FNodeOutputBase extends FConnectorBase {
1734
+ class FNodeOutputBase extends FSourceConnectorBase {
1715
1735
  get canBeConnected() {
1716
- return !this.disabled && (this.multiple ? true : !this.isConnected);
1736
+ return !this.disabled() && (this.multiple() ? true : !this.isConnected);
1717
1737
  }
1718
1738
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutputBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1719
1739
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FNodeOutputBase, usesInheritance: true, ngImport: i0 });
@@ -1728,28 +1748,34 @@ function isNodeOutput(element) {
1728
1748
 
1729
1749
  let uniqueId$7 = 0;
1730
1750
  class FNodeOutputDirective extends FNodeOutputBase {
1731
- _elementReference = inject(ElementRef);
1732
- _fMediator = inject(FMediator);
1733
- _fNode = inject(F_NODE);
1734
- fId = `f-node-output-${uniqueId$7++}`;
1735
- multiple = false;
1736
- disabled = false;
1751
+ hostElement = inject(ElementRef).nativeElement;
1752
+ _mediator = inject(FMediator);
1753
+ _node = inject(F_NODE);
1754
+ fId = input(`f-node-output-${uniqueId$7++}`, {
1755
+ alias: 'fOutputId',
1756
+ transform: (value) => stringAttribute(value) || `f-node-output-${uniqueId$7++}`,
1757
+ });
1758
+ multiple = input(false, {
1759
+ alias: 'fOutputMultiple',
1760
+ transform: booleanAttribute,
1761
+ });
1762
+ disabled = input(false, {
1763
+ alias: 'fOutputDisabled',
1764
+ transform: booleanAttribute,
1765
+ });
1737
1766
  userFConnectableSide = EFConnectableSide.AUTO;
1738
1767
  isSelfConnectable = true;
1739
1768
  canBeConnectedInputs = [];
1740
1769
  get fNodeId() {
1741
- return this._fNode.fId();
1742
- }
1743
- get hostElement() {
1744
- return this._elementReference.nativeElement;
1770
+ return this._node.fId();
1745
1771
  }
1746
1772
  ngOnInit() {
1747
- this._fMediator.execute(new AddOutputToStoreRequest(this));
1748
- this._fNode.addConnector(this);
1773
+ this._mediator.execute(new AddOutputToStoreRequest(this));
1774
+ this._node.addConnector(this);
1749
1775
  }
1750
1776
  ngOnChanges(changes) {
1751
1777
  if (changes['userFConnectableSide']) {
1752
- this._fNode.refresh();
1778
+ this._node.refresh();
1753
1779
  }
1754
1780
  }
1755
1781
  setConnected(toConnector) {
@@ -1763,36 +1789,27 @@ class FNodeOutputDirective extends FNodeOutputBase {
1763
1789
  this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_NOT_CONNECTABLE, !this.canBeConnected);
1764
1790
  }
1765
1791
  ngOnDestroy() {
1766
- this._fNode.removeConnector(this);
1767
- this._fMediator.execute(new RemoveOutputFromStoreRequest(this));
1792
+ this._node.removeConnector(this);
1793
+ this._mediator.execute(new RemoveOutputFromStoreRequest(this));
1768
1794
  }
1769
1795
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1770
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: FNodeOutputDirective, selector: "[fNodeOutput]", inputs: { fId: ["fOutputId", "fId"], multiple: ["fOutputMultiple", "multiple"], disabled: ["fOutputDisabled", "disabled", booleanAttribute], userFConnectableSide: ["fOutputConnectableSide", "userFConnectableSide", (value) => castToEnum(value, 'fOutputConnectableSide', EFConnectableSide)], isSelfConnectable: "isSelfConnectable", canBeConnectedInputs: ["fCanBeConnectedInputs", "canBeConnectedInputs"] }, host: { properties: { "attr.data-f-output-id": "fId", "class.f-node-output-multiple": "multiple", "class.f-node-output-disabled": "disabled", "class.f-node-output-self-connectable": "isSelfConnectable" }, classAttribute: "f-component f-node-output" }, providers: [{ provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective }], exportAs: ["fNodeOutput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
1796
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FNodeOutputDirective, selector: "[fNodeOutput]", inputs: { fId: { classPropertyName: "fId", publicName: "fOutputId", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "fOutputMultiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "fOutputDisabled", isSignal: true, isRequired: false, transformFunction: null }, userFConnectableSide: { classPropertyName: "userFConnectableSide", publicName: "fOutputConnectableSide", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fOutputConnectableSide', EFConnectableSide) }, isSelfConnectable: { classPropertyName: "isSelfConnectable", publicName: "isSelfConnectable", isSignal: false, isRequired: false, transformFunction: null }, canBeConnectedInputs: { classPropertyName: "canBeConnectedInputs", publicName: "fCanBeConnectedInputs", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-f-output-id": "fId()", "class.f-node-output-multiple": "multiple", "class.f-node-output-disabled": "disabled()", "class.f-node-output-self-connectable": "isSelfConnectable" }, classAttribute: "f-component f-node-output" }, providers: [{ provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective }], exportAs: ["fNodeOutput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
1771
1797
  }
1772
1798
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutputDirective, decorators: [{
1773
1799
  type: Directive,
1774
1800
  args: [{
1775
- selector: "[fNodeOutput]",
1801
+ selector: '[fNodeOutput]',
1776
1802
  exportAs: 'fNodeOutput',
1777
1803
  host: {
1778
- '[attr.data-f-output-id]': 'fId',
1779
- class: "f-component f-node-output",
1804
+ '[attr.data-f-output-id]': 'fId()',
1805
+ class: 'f-component f-node-output',
1780
1806
  '[class.f-node-output-multiple]': 'multiple',
1781
- '[class.f-node-output-disabled]': 'disabled',
1807
+ '[class.f-node-output-disabled]': 'disabled()',
1782
1808
  '[class.f-node-output-self-connectable]': 'isSelfConnectable',
1783
1809
  },
1784
1810
  providers: [{ provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective }],
1785
1811
  }]
1786
- }], propDecorators: { fId: [{
1787
- type: Input,
1788
- args: ['fOutputId']
1789
- }], multiple: [{
1790
- type: Input,
1791
- args: ['fOutputMultiple']
1792
- }], disabled: [{
1793
- type: Input,
1794
- args: [{ alias: 'fOutputDisabled', transform: booleanAttribute }]
1795
- }], userFConnectableSide: [{
1812
+ }], propDecorators: { userFConnectableSide: [{
1796
1813
  type: Input,
1797
1814
  args: [{
1798
1815
  alias: 'fOutputConnectableSide',
@@ -1812,34 +1829,34 @@ const F_CONNECTORS_PROVIDERS = [
1812
1829
  ];
1813
1830
 
1814
1831
  class FBezierPathBuilder {
1815
- static getConnectorOffset(distance, offset) {
1832
+ static _getConnectorOffset(distance, offset) {
1816
1833
  if (distance >= offset) {
1817
1834
  return distance;
1818
1835
  }
1819
1836
  return offset * Math.sqrt(offset - distance);
1820
1837
  }
1821
- static getAnglePoint(side, source, target, offset) {
1838
+ static _getAnglePoint(side, source, target, offset) {
1822
1839
  const result = { x: source.x, y: source.y };
1823
1840
  switch (side) {
1824
1841
  case EFConnectableSide.LEFT:
1825
- result.x -= FBezierPathBuilder.getConnectorOffset(source.x - target.x, offset);
1842
+ result.x -= FBezierPathBuilder._getConnectorOffset(source.x - target.x, offset);
1826
1843
  break;
1827
1844
  case EFConnectableSide.RIGHT:
1828
- result.x += FBezierPathBuilder.getConnectorOffset(target.x - source.x, offset);
1845
+ result.x += FBezierPathBuilder._getConnectorOffset(target.x - source.x, offset);
1829
1846
  break;
1830
1847
  case EFConnectableSide.TOP:
1831
- result.y -= FBezierPathBuilder.getConnectorOffset(source.y - target.y, offset);
1848
+ result.y -= FBezierPathBuilder._getConnectorOffset(source.y - target.y, offset);
1832
1849
  break;
1833
1850
  case EFConnectableSide.BOTTOM:
1834
- result.y += FBezierPathBuilder.getConnectorOffset(target.y - source.y, offset);
1851
+ result.y += FBezierPathBuilder._getConnectorOffset(target.y - source.y, offset);
1835
1852
  break;
1836
1853
  }
1837
1854
  return result;
1838
1855
  }
1839
1856
  handle(request) {
1840
1857
  const { source, sourceSide, target, targetSide, offset } = request;
1841
- const sourceAnglePoint = FBezierPathBuilder.getAnglePoint(sourceSide, source, target, offset);
1842
- const targetAnglePoint = FBezierPathBuilder.getAnglePoint(targetSide, target, source, offset);
1858
+ const sourceAnglePoint = FBezierPathBuilder._getAnglePoint(sourceSide, source, target, offset);
1859
+ const targetAnglePoint = FBezierPathBuilder._getAnglePoint(targetSide, target, source, offset);
1843
1860
  const path = `M ${source.x} ${source.y} C ${sourceAnglePoint.x} ${sourceAnglePoint.y}, ${targetAnglePoint.x} ${targetAnglePoint.y}, ${target.x + 0.0002} ${target.y + 0.0002}`;
1844
1861
  const connectionCenter = new CalculateConnectionCenterHandler().handle(new CalculateConnectionCenterRequest([source, sourceAnglePoint, targetAnglePoint, target]));
1845
1862
  return {
@@ -1847,9 +1864,25 @@ class FBezierPathBuilder {
1847
1864
  connectionCenter,
1848
1865
  penultimatePoint: targetAnglePoint,
1849
1866
  secondPoint: sourceAnglePoint,
1867
+ points: _sampleCubic(source, sourceAnglePoint, targetAnglePoint, target, 32),
1850
1868
  };
1851
1869
  }
1852
1870
  }
1871
+ function bez3(p0, p1, p2, p3, t) {
1872
+ const u = 1 - t, tt = t * t, uu = u * u, uuu = uu * u, ttt = tt * t;
1873
+ return {
1874
+ x: uuu * p0.x + 3 * uu * t * p1.x + 3 * u * tt * p2.x + ttt * p3.x,
1875
+ y: uuu * p0.y + 3 * uu * t * p1.y + 3 * u * tt * p2.y + ttt * p3.y,
1876
+ };
1877
+ }
1878
+ function _sampleCubic(p0, p1, p2, p3, samples = 32) {
1879
+ const out = new Array(samples + 1);
1880
+ out[0] = { ...p0 };
1881
+ for (let i = 1; i <= samples; i++) {
1882
+ out[i] = bez3(p0, p1, p2, p3, i / samples);
1883
+ }
1884
+ return out;
1885
+ }
1853
1886
 
1854
1887
  const CONNECTOR_SIDE_POINT = {
1855
1888
  [EFConnectableSide.LEFT]: PointExtensions.initialize(-1, 0),
@@ -1861,18 +1894,30 @@ const CONNECTOR_SIDE_POINT = {
1861
1894
  class FSegmentPathBuilder {
1862
1895
  handle(request) {
1863
1896
  const { source, sourceSide, target, targetSide } = request;
1864
- const { points, center } = this.getPathPoints(source, sourceSide, target, targetSide, request.offset);
1865
- const path = this.buildPath(points, request.radius);
1897
+ const { points, center } = this._getPathPoints(source, sourceSide, target, targetSide, request.offset);
1898
+ const path = this._buildPath(points, request.radius);
1866
1899
  const penultimatePoint = points.length > 1 ? points[points.length - 2] : source;
1867
1900
  const secondPoint = points.length > 1 ? points[1] : target;
1868
- return { path, connectionCenter: center, penultimatePoint, secondPoint };
1901
+ return {
1902
+ path,
1903
+ connectionCenter: center,
1904
+ penultimatePoint,
1905
+ secondPoint,
1906
+ points,
1907
+ };
1869
1908
  }
1870
- getPathPoints(source, sourceSide, target, targetSide, offset) {
1909
+ _getPathPoints(source, sourceSide, target, targetSide, offset) {
1871
1910
  const sourceDirection = CONNECTOR_SIDE_POINT[sourceSide];
1872
1911
  const targetDirection = CONNECTOR_SIDE_POINT[targetSide];
1873
- const sourceGap = { x: source.x + sourceDirection.x * offset, y: source.y + sourceDirection.y * offset };
1874
- const targetGap = { x: target.x + targetDirection.x * offset, y: target.y + targetDirection.y * offset };
1875
- const direction = this.getDirection(sourceGap, sourceSide, targetGap);
1912
+ const sourceGap = {
1913
+ x: source.x + sourceDirection.x * offset,
1914
+ y: source.y + sourceDirection.y * offset,
1915
+ };
1916
+ const targetGap = {
1917
+ x: target.x + targetDirection.x * offset,
1918
+ y: target.y + targetDirection.y * offset,
1919
+ };
1920
+ const direction = this._getDirection(sourceGap, sourceSide, targetGap);
1876
1921
  const directionAccessor = direction.x !== 0 ? 'x' : 'y';
1877
1922
  const currentDirection = direction[directionAccessor];
1878
1923
  let points = [];
@@ -1909,10 +1954,12 @@ class FSegmentPathBuilder {
1909
1954
  if (diff <= offset) {
1910
1955
  const gapOffset = Math.min(offset - 1, offset - diff);
1911
1956
  if (sourceDirection[directionAccessor] === currentDirection) {
1912
- sourceGapOffset[directionAccessor] = (sourceGap[directionAccessor] > source[directionAccessor] ? -1 : 1) * gapOffset;
1957
+ sourceGapOffset[directionAccessor] =
1958
+ (sourceGap[directionAccessor] > source[directionAccessor] ? -1 : 1) * gapOffset;
1913
1959
  }
1914
1960
  else {
1915
- targetGapOffset[directionAccessor] = (targetGap[directionAccessor] > target[directionAccessor] ? -1 : 1) * gapOffset;
1961
+ targetGapOffset[directionAccessor] =
1962
+ (targetGap[directionAccessor] > target[directionAccessor] ? -1 : 1) * gapOffset;
1916
1963
  }
1917
1964
  }
1918
1965
  }
@@ -1940,35 +1987,39 @@ class FSegmentPathBuilder {
1940
1987
  const center = new CalculateConnectionCenterHandler().handle(new CalculateConnectionCenterRequest(pathPoints));
1941
1988
  return { points: pathPoints, center };
1942
1989
  }
1943
- getDirection(source, sourceSide, target) {
1990
+ _getDirection(source, sourceSide, target) {
1944
1991
  if (sourceSide === EFConnectableSide.LEFT || sourceSide === EFConnectableSide.RIGHT) {
1945
- return source.x < target.x ? PointExtensions.initialize(1, 0) : PointExtensions.initialize(-1, 0);
1992
+ return source.x < target.x
1993
+ ? PointExtensions.initialize(1, 0)
1994
+ : PointExtensions.initialize(-1, 0);
1946
1995
  }
1947
- return source.y < target.y ? PointExtensions.initialize(0, 1) : PointExtensions.initialize(0, -1);
1996
+ return source.y < target.y
1997
+ ? PointExtensions.initialize(0, 1)
1998
+ : PointExtensions.initialize(0, -1);
1948
1999
  }
1949
- distance(a, b) {
2000
+ _distance(a, b) {
1950
2001
  return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));
1951
2002
  }
1952
- buildPath(points, borderRadius) {
2003
+ _buildPath(points, borderRadius) {
1953
2004
  let path = '';
1954
2005
  for (let i = 0; i < points.length; i++) {
1955
2006
  const p = points[i];
1956
2007
  let segment = '';
1957
2008
  if (i > 0 && i < points.length - 1) {
1958
- segment = this.getBend(points[i - 1], p, points[i + 1], borderRadius);
2009
+ segment = this._getBend(points[i - 1], p, points[i + 1], borderRadius);
1959
2010
  }
1960
2011
  else if (i === points.length - 1) {
1961
- segment = this.buildLastLineSegment(i, p);
2012
+ segment = this._buildLastLineSegment(i, p);
1962
2013
  }
1963
2014
  else {
1964
- segment = this.buildMoveOrLineSegment(i, p);
2015
+ segment = this._buildMoveOrLineSegment(i, p);
1965
2016
  }
1966
2017
  path += segment;
1967
2018
  }
1968
2019
  return path;
1969
2020
  }
1970
- getBend(a, b, c, size) {
1971
- const bendSize = Math.min(this.distance(a, b) / 2, this.distance(b, c) / 2, size);
2021
+ _getBend(a, b, c, size) {
2022
+ const bendSize = Math.min(this._distance(a, b) / 2, this._distance(b, c) / 2, size);
1972
2023
  const { x, y } = b;
1973
2024
  if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {
1974
2025
  return `L${x} ${y}`;
@@ -1982,10 +2033,10 @@ class FSegmentPathBuilder {
1982
2033
  const yDir = a.y < c.y ? -1 : 1;
1983
2034
  return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;
1984
2035
  }
1985
- buildMoveOrLineSegment(index, point) {
2036
+ _buildMoveOrLineSegment(index, point) {
1986
2037
  return `${index === 0 ? 'M' : 'L'}${point.x} ${point.y}`;
1987
2038
  }
1988
- buildLastLineSegment(index, point) {
2039
+ _buildLastLineSegment(index, point) {
1989
2040
  return `L${point.x + 0.0002} ${point.y + 0.0002}`;
1990
2041
  }
1991
2042
  }
@@ -1995,7 +2046,13 @@ class FStraightPathBuilder {
1995
2046
  const { source, target } = request;
1996
2047
  const path = `M ${source.x} ${source.y} L ${target.x + 0.0002} ${target.y + 0.0002}`;
1997
2048
  const connectionCenter = new CalculateConnectionCenterHandler().handle(new CalculateConnectionCenterRequest([source, target]));
1998
- return { path, connectionCenter, penultimatePoint: source, secondPoint: target };
2049
+ return {
2050
+ path,
2051
+ connectionCenter,
2052
+ penultimatePoint: source,
2053
+ secondPoint: target,
2054
+ points: [source, connectionCenter, target],
2055
+ };
1999
2056
  }
2000
2057
  }
2001
2058
 
@@ -2023,47 +2080,40 @@ const F_CONNECTION_IDENTIFIERS = {
2023
2080
  const F_CONNECTION = new InjectionToken('F_CONNECTION');
2024
2081
 
2025
2082
  class FConnectionTextPathDirective {
2026
- elementReference;
2027
- base;
2028
- fBrowser;
2083
+ hostElement = inject((ElementRef)).nativeElement;
2084
+ _base = inject(F_CONNECTION);
2085
+ _browser = inject(BrowserService);
2029
2086
  get linkToConnection() {
2030
- return F_CONNECTION_IDENTIFIERS.linkToConnection(this.base.fId() + this.base.fOutputId + this.base.fInputId);
2031
- }
2032
- get hostElement() {
2033
- return this.elementReference.nativeElement;
2087
+ return F_CONNECTION_IDENTIFIERS.linkToConnection(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
2034
2088
  }
2035
2089
  symbolWidth = 8;
2036
2090
  fontSize = '12px';
2037
- constructor(elementReference, base, fBrowser) {
2038
- this.elementReference = elementReference;
2039
- this.base = base;
2040
- this.fBrowser = fBrowser;
2041
- }
2042
2091
  ngOnInit() {
2043
2092
  this.hostElement.setAttribute('text-anchor', `middle`);
2044
- this.symbolWidth = this.getSymbolWidth(this.base.fText || '');
2093
+ this.symbolWidth = this._getSymbolWidth(this._base.fText || '');
2045
2094
  }
2046
2095
  getBBox() {
2047
2096
  return this.hostElement.getBBox();
2048
2097
  }
2049
2098
  redraw() {
2050
- this.hostElement.setAttribute('startOffset', this.base.fTextStartOffset || '50%');
2099
+ this.hostElement.setAttribute('startOffset', this._base.fTextStartOffset || '50%');
2051
2100
  }
2052
- getFontStyles(element) {
2053
- const computedStyles = this.fBrowser.window.getComputedStyle(element);
2101
+ _getFontStyles(element) {
2102
+ const computedStyles = this._browser.window.getComputedStyle(element);
2054
2103
  return {
2055
2104
  fontSize: computedStyles.fontSize,
2056
2105
  fontFamily: computedStyles.fontFamily,
2057
2106
  };
2058
2107
  }
2059
- getSymbolWidth(name) {
2108
+ _getSymbolWidth(name) {
2060
2109
  const text = name || 'connection';
2061
- const { fontFamily, fontSize } = this.getFontStyles(this.hostElement);
2110
+ const { fontFamily, fontSize } = this._getFontStyles(this.hostElement);
2062
2111
  this.fontSize = fontSize || '12px';
2063
- const canvas = this.fBrowser.document.createElement('canvas');
2112
+ const canvas = this._browser.document.createElement('canvas');
2064
2113
  let context;
2065
2114
  try {
2066
2115
  context = canvas.getContext('2d');
2116
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2067
2117
  }
2068
2118
  catch (e) {
2069
2119
  context = null;
@@ -2076,7 +2126,7 @@ class FConnectionTextPathDirective {
2076
2126
  const symbolWidth = metrics.width / text.length;
2077
2127
  return symbolWidth;
2078
2128
  }
2079
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextPathDirective, deps: [{ token: i0.ElementRef }, { token: F_CONNECTION }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Directive });
2129
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextPathDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2080
2130
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionTextPathDirective, selector: "textPath[f-connection-text-path]", host: { properties: { "attr.href": "linkToConnection" } }, ngImport: i0 });
2081
2131
  }
2082
2132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextPathDirective, decorators: [{
@@ -2087,39 +2137,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2087
2137
  '[attr.href]': 'linkToConnection',
2088
2138
  },
2089
2139
  }]
2090
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
2091
- type: Inject,
2092
- args: [F_CONNECTION]
2093
- }] }, { type: i1.BrowserService }] });
2140
+ }] });
2094
2141
 
2095
2142
  const CONNECTION_TEXT = new InjectionToken('CONNECTION_TEXT');
2096
2143
 
2097
2144
  class FConnectionTextComponent {
2098
- elementReference;
2099
- base;
2145
+ hostElement = inject((ElementRef)).nativeElement;
2146
+ _base = inject(F_CONNECTION);
2147
+ _textPathDirective = viewChild.required(FConnectionTextPathDirective);
2100
2148
  get textId() {
2101
- return F_CONNECTION_IDENTIFIERS.textId(this.base.fId() + this.base.fOutputId + this.base.fInputId);
2102
- }
2103
- get hostElement() {
2104
- return this.elementReference.nativeElement;
2149
+ return F_CONNECTION_IDENTIFIERS.textId(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
2105
2150
  }
2106
2151
  get text() {
2107
- return this.base.fText || '';
2108
- }
2109
- textPathDirective;
2110
- constructor(elementReference, base) {
2111
- this.elementReference = elementReference;
2112
- this.base = base;
2152
+ return this._base.fText || '';
2113
2153
  }
2114
2154
  redraw(line) {
2115
- this.textPathDirective.redraw();
2116
- const isTextReverse = FConnectionTextComponent.isTextReverse(line);
2117
- const dyValue = this.calculateDy(this.textPathDirective.fontSize, isTextReverse);
2155
+ this._textPathDirective().redraw();
2156
+ const isTextReverse = FConnectionTextComponent._isTextReverse(line);
2157
+ const dyValue = this._calculateDy(this._textPathDirective().fontSize, isTextReverse);
2118
2158
  this.hostElement.setAttribute('dy', dyValue);
2119
- const textRect = this.textPathDirective.getBBox();
2159
+ const textRect = this._textPathDirective().getBBox();
2120
2160
  const textRectCenter = [textRect.x + textRect.width / 2, textRect.y + textRect.height / 2];
2121
2161
  this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${textRectCenter})` : '');
2122
- const startOffset = FConnectionTextComponent.getTextStartOffset(line, this.base.fText || '', this.textPathDirective.symbolWidth);
2162
+ const startOffset = FConnectionTextComponent._getTextStartOffset(line, this._base.fText || '', this._textPathDirective().symbolWidth);
2123
2163
  if (startOffset < 0) {
2124
2164
  this.hostElement.style.display = 'none';
2125
2165
  }
@@ -2127,34 +2167,28 @@ class FConnectionTextComponent {
2127
2167
  this.hostElement.style.display = 'unset';
2128
2168
  }
2129
2169
  }
2130
- calculateDy(fontSize, isTextReverse) {
2170
+ _calculateDy(fontSize, isTextReverse) {
2131
2171
  const fontSizeNumber = parseFloat(fontSize);
2132
2172
  const dyValue = isTextReverse ? fontSizeNumber * 1.5 : fontSizeNumber * -0.8;
2133
2173
  return dyValue.toString();
2134
2174
  }
2135
- static isTextReverse(line) {
2175
+ static _isTextReverse(line) {
2136
2176
  return line.point1.x > line.point2.x;
2137
2177
  }
2138
- static getTextStartOffset(line, name, symbolWidth) {
2178
+ static _getTextStartOffset(line, name, symbolWidth) {
2139
2179
  const vectorLength = PointExtensions.hypotenuse(line.point1, line.point2);
2140
2180
  return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;
2141
2181
  }
2142
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextComponent, deps: [{ token: i0.ElementRef }, { token: F_CONNECTION }], target: i0.ɵɵFactoryTarget.Component });
2143
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionTextComponent, selector: "text[f-connection-text]", host: { properties: { "attr.id": "textId" }, classAttribute: "f-component f-connection-text" }, providers: [{ provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent }], viewQueries: [{ propertyName: "textPathDirective", first: true, predicate: FConnectionTextPathDirective, descendants: true, static: true }], ngImport: i0, template: "<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", dependencies: [{ kind: "directive", type: FConnectionTextPathDirective, selector: "textPath[f-connection-text-path]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2182
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2183
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: FConnectionTextComponent, selector: "text[f-connection-text]", host: { properties: { "attr.id": "textId" }, classAttribute: "f-component f-connection-text" }, providers: [{ provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent }], viewQueries: [{ propertyName: "_textPathDirective", first: true, predicate: FConnectionTextPathDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<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", dependencies: [{ kind: "directive", type: FConnectionTextPathDirective, selector: "textPath[f-connection-text-path]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2144
2184
  }
2145
2185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextComponent, decorators: [{
2146
2186
  type: Component,
2147
- args: [{ selector: "text[f-connection-text]", changeDetection: ChangeDetectionStrategy.OnPush, host: {
2148
- class: "f-component f-connection-text",
2187
+ args: [{ selector: 'text[f-connection-text]', changeDetection: ChangeDetectionStrategy.OnPush, host: {
2188
+ class: 'f-component f-connection-text',
2149
2189
  '[attr.id]': 'textId',
2150
2190
  }, providers: [{ provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent }], template: "<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" }]
2151
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
2152
- type: Inject,
2153
- args: [F_CONNECTION]
2154
- }] }], propDecorators: { textPathDirective: [{
2155
- type: ViewChild,
2156
- args: [FConnectionTextPathDirective, { static: true }]
2157
- }] } });
2191
+ }] });
2158
2192
 
2159
2193
  const F_CSS_CLASS = {
2160
2194
  DRAG_AND_DROP: {
@@ -2248,36 +2282,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2248
2282
  const CONNECTION_GRADIENT = new InjectionToken('CONNECTION_GRADIENT');
2249
2283
 
2250
2284
  class FConnectionGradientComponent {
2251
- elementReference;
2252
- base;
2285
+ hostElement = inject((ElementRef)).nativeElement;
2286
+ _base = inject(F_CONNECTION);
2253
2287
  get gradientId() {
2254
- return F_CONNECTION_IDENTIFIERS.gradientId(this.base.fId() + this.base.fOutputId + this.base.fInputId);
2255
- }
2256
- get hostElement() {
2257
- return this.elementReference.nativeElement;
2288
+ return F_CONNECTION_IDENTIFIERS.gradientId(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
2258
2289
  }
2259
2290
  get stop1Element() {
2260
- return this.elementReference.nativeElement.children.item(0);
2291
+ return this.hostElement.children.item(0);
2261
2292
  }
2262
2293
  get stop2Element() {
2263
- return this.elementReference.nativeElement.children.item(1);
2264
- }
2265
- constructor(elementReference, base) {
2266
- this.elementReference = elementReference;
2267
- this.base = base;
2294
+ return this.hostElement.children.item(1);
2268
2295
  }
2269
2296
  initialize() {
2270
2297
  this.stop1Element.setAttribute('offset', '0%');
2271
2298
  this.stop2Element.setAttribute('offset', '100%');
2272
2299
  }
2273
- updateGradient() {
2274
- this.setFromColor(this.base.fStartColor());
2275
- this.setToColor(this.base.fEndColor());
2300
+ _updateGradient() {
2301
+ this._setFromColor(this._base.fStartColor());
2302
+ this._setToColor(this._base.fEndColor());
2276
2303
  }
2277
- setFromColor(color) {
2304
+ _setFromColor(color) {
2278
2305
  this.stop1Element.setAttribute('stop-color', color || 'transparent');
2279
2306
  }
2280
- setToColor(color) {
2307
+ _setToColor(color) {
2281
2308
  this.stop2Element.setAttribute('stop-color', color || 'transparent');
2282
2309
  }
2283
2310
  redraw(line) {
@@ -2290,21 +2317,18 @@ class FConnectionGradientComponent {
2290
2317
  const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);
2291
2318
  this.hostElement.setAttribute('x2', to.x.toString());
2292
2319
  this.hostElement.setAttribute('y2', to.y.toString());
2293
- this.updateGradient();
2320
+ this._updateGradient();
2294
2321
  }
2295
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradientComponent, deps: [{ token: i0.ElementRef }, { token: F_CONNECTION }], target: i0.ɵɵFactoryTarget.Component });
2322
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradientComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2296
2323
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]", host: { properties: { "attr.id": "gradientId" }, classAttribute: "f-component f-connection-gradient" }, providers: [{ provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent }], ngImport: i0, template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
2297
2324
  }
2298
2325
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradientComponent, decorators: [{
2299
2326
  type: Component,
2300
- args: [{ selector: "linearGradient[fConnectionGradient]", changeDetection: ChangeDetectionStrategy.OnPush, host: {
2301
- class: "f-component f-connection-gradient",
2327
+ args: [{ selector: 'linearGradient[fConnectionGradient]', changeDetection: ChangeDetectionStrategy.OnPush, host: {
2328
+ class: 'f-component f-connection-gradient',
2302
2329
  '[attr.id]': 'gradientId',
2303
2330
  }, providers: [{ provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent }], template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n" }]
2304
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
2305
- type: Inject,
2306
- args: [F_CONNECTION]
2307
- }] }] });
2331
+ }] });
2308
2332
 
2309
2333
  const CONNECTION_PATH = new InjectionToken('CONNECTION_PATH');
2310
2334
 
@@ -2322,93 +2346,62 @@ function getMarkerSelectedEndId(fConnectionId) {
2322
2346
  }
2323
2347
 
2324
2348
  class FConnectionPathComponent {
2325
- elementReference;
2326
- base;
2349
+ hostElement = inject((ElementRef)).nativeElement;
2350
+ _base = inject(F_CONNECTION);
2327
2351
  get fPathId() {
2328
- return this.base.fId();
2352
+ return this._base.fId();
2329
2353
  }
2330
2354
  get linkToGradient() {
2331
- return F_CONNECTION_IDENTIFIERS.linkToGradient(this.base.fId() + this.base.fOutputId + this.base.fInputId);
2355
+ return F_CONNECTION_IDENTIFIERS.linkToGradient(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
2332
2356
  }
2333
2357
  get attrConnectionId() {
2334
- return F_CONNECTION_IDENTIFIERS.connectionId(this.base.fId() + this.base.fOutputId + this.base.fInputId);
2335
- }
2336
- get hostElement() {
2337
- return this.elementReference.nativeElement;
2338
- }
2339
- constructor(elementReference, base) {
2340
- this.elementReference = elementReference;
2341
- this.base = base;
2358
+ return F_CONNECTION_IDENTIFIERS.connectionId(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
2342
2359
  }
2343
2360
  initialize() {
2344
2361
  this.deselect();
2345
2362
  }
2346
2363
  setPath(path) {
2347
- this.hostElement.setAttribute("d", `${path}`);
2364
+ this.hostElement.setAttribute('d', `${path}`);
2348
2365
  }
2349
2366
  select() {
2350
- this.hostElement.setAttribute('marker-start', `url(#${getMarkerSelectedStartId(this.base.fId())})`);
2351
- this.hostElement.setAttribute('marker-end', `url(#${getMarkerSelectedEndId(this.base.fId())})`);
2367
+ this.hostElement.setAttribute('marker-start', `url(#${getMarkerSelectedStartId(this._base.fId())})`);
2368
+ this.hostElement.setAttribute('marker-end', `url(#${getMarkerSelectedEndId(this._base.fId())})`);
2352
2369
  }
2353
2370
  deselect() {
2354
- this.hostElement.setAttribute('marker-start', `url(#${getMarkerStartId(this.base.fId())})`);
2355
- this.hostElement.setAttribute('marker-end', `url(#${getMarkerEndId(this.base.fId())})`);
2371
+ this.hostElement.setAttribute('marker-start', `url(#${getMarkerStartId(this._base.fId())})`);
2372
+ this.hostElement.setAttribute('marker-end', `url(#${getMarkerEndId(this._base.fId())})`);
2356
2373
  }
2357
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionPathComponent, deps: [{ token: i0.ElementRef }, { token: F_CONNECTION }], target: i0.ɵɵFactoryTarget.Component });
2374
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionPathComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2358
2375
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionPathComponent, selector: "path[f-connection-path]", host: { properties: { "attr.id": "attrConnectionId", "attr.data-f-path-id": "fPathId", "attr.stroke": "linkToGradient" }, classAttribute: "f-component f-connection-path" }, providers: [{ provide: CONNECTION_PATH, useExisting: FConnectionPathComponent }], ngImport: i0, template: '', isInline: true, styles: [":host{fill:none;pointer-events:stroke}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2359
2376
  }
2360
2377
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionPathComponent, decorators: [{
2361
2378
  type: Component,
2362
- args: [{ selector: "path[f-connection-path]", template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: {
2363
- class: "f-component f-connection-path",
2379
+ args: [{ selector: 'path[f-connection-path]', template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: {
2380
+ class: 'f-component f-connection-path',
2364
2381
  '[attr.id]': 'attrConnectionId',
2365
2382
  '[attr.data-f-path-id]': 'fPathId',
2366
2383
  '[attr.stroke]': 'linkToGradient',
2367
2384
  }, providers: [{ provide: CONNECTION_PATH, useExisting: FConnectionPathComponent }], styles: [":host{fill:none;pointer-events:stroke}\n"] }]
2368
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
2369
- type: Inject,
2370
- args: [F_CONNECTION]
2371
- }] }] });
2385
+ }] });
2372
2386
 
2373
2387
  class FConnectionSelectionComponent {
2374
- elementReference;
2375
- base;
2388
+ hostElement = inject((ElementRef)).nativeElement;
2389
+ _base = inject(F_CONNECTION);
2376
2390
  get connectionForSelectionId() {
2377
- return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(this.base.fId() + this.base.fOutputId + this.base.fInputId);
2378
- }
2379
- get hostElement() {
2380
- return this.elementReference.nativeElement;
2381
- }
2382
- constructor(elementReference, base) {
2383
- this.elementReference = elementReference;
2384
- this.base = base;
2391
+ return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
2385
2392
  }
2386
2393
  setPath(path) {
2387
- this.hostElement.setAttribute("d", `${path}`);
2394
+ this.hostElement.setAttribute('d', `${path}`);
2388
2395
  }
2389
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionSelectionComponent, deps: [{ token: i0.ElementRef }, { token: F_CONNECTION }], target: i0.ɵɵFactoryTarget.Component });
2396
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionSelectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2390
2397
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]", host: { properties: { "attr.id": "connectionForSelectionId" }, classAttribute: "f-component f-connection-selection" }, ngImport: i0, template: '', isInline: true, styles: [":host{fill:none;pointer-events:stroke}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2391
2398
  }
2392
2399
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionSelectionComponent, decorators: [{
2393
2400
  type: Component,
2394
- args: [{ selector: "path[fConnectionSelection]", template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: {
2395
- class: "f-component f-connection-selection",
2401
+ args: [{ selector: 'path[fConnectionSelection]', template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: {
2402
+ class: 'f-component f-connection-selection',
2396
2403
  '[attr.id]': 'connectionForSelectionId',
2397
2404
  }, styles: [":host{fill:none;pointer-events:stroke}\n"] }]
2398
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
2399
- type: Inject,
2400
- args: [F_CONNECTION]
2401
- }] }] });
2402
-
2403
- class FConnectionCenterDirective {
2404
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionCenterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2405
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionCenterDirective, selector: "[fConnectionCenter]", ngImport: i0 });
2406
- }
2407
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionCenterDirective, decorators: [{
2408
- type: Directive,
2409
- args: [{
2410
- selector: "[fConnectionCenter]",
2411
- }]
2412
2405
  }] });
2413
2406
 
2414
2407
  const F_CONNECTION_BUILDERS = new InjectionToken('F_CONNECTION_BUILDERS');
@@ -2443,6 +2436,431 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2443
2436
  args: [F_CONNECTION_BUILDERS]
2444
2437
  }] }] });
2445
2438
 
2439
+ let warnedFConnectionCenter = false;
2440
+ /** @deprecated '[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead.' */
2441
+ class FConnectionCenterDirective {
2442
+ /**
2443
+ * @deprecated '[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead.'
2444
+ */
2445
+ fConnectionCenter = input(true, {
2446
+ alias: 'fConnectionCenter',
2447
+ transform: (v) => {
2448
+ // Превращаем presence-атрибут в boolean
2449
+ const val = booleanAttribute(v);
2450
+ if (!warnedFConnectionCenter && isDevMode()) {
2451
+ warnedFConnectionCenter = true;
2452
+ console.warn('[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use [FConnectionContent] instead.');
2453
+ }
2454
+ return val;
2455
+ },
2456
+ });
2457
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionCenterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2458
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FConnectionCenterDirective, selector: "[fConnectionCenter]", inputs: { fConnectionCenter: { classPropertyName: "fConnectionCenter", publicName: "fConnectionCenter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
2459
+ }
2460
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionCenterDirective, decorators: [{
2461
+ type: Directive,
2462
+ args: [{
2463
+ selector: '[fConnectionCenter]',
2464
+ }]
2465
+ }] });
2466
+
2467
+ /**
2468
+ * Immutable polyline geometry with precomputed cumulative lengths and segment tangents.
2469
+ * Keep this class focused on geometry only; sampling/traversal lives in PolylineSampler.
2470
+ */
2471
+ class Polyline {
2472
+ /** Cleaned points (with consecutive duplicates removed). */
2473
+ points;
2474
+ /** Cumulative length from start to each vertex. Same length as `points`. */
2475
+ cumulativeLengths;
2476
+ /** Unit tangent per segment `i` for segment [i -> i+1]. Length = points.length - 1. */
2477
+ segmentTangents;
2478
+ /** Total length of the polyline (>= 1 for the degenerate fallback). */
2479
+ totalLength;
2480
+ /**
2481
+ * Construct a polyline from raw points.
2482
+ * Consecutive duplicate points are removed.
2483
+ * If less than 2 points remain, it falls back to a unit horizontal segment [0,0] → [1,0].
2484
+ */
2485
+ constructor(points) {
2486
+ const cleaned = Polyline._removeConsecutiveDuplicates(points);
2487
+ if (cleaned.length < 2) {
2488
+ // Fallback to a unit segment to avoid zero-length edge cases.
2489
+ this.points = [{ x: 0, y: 0 }, { x: 1, y: 0 }];
2490
+ this.cumulativeLengths = [0, 1];
2491
+ this.segmentTangents = [{ x: 1, y: 0 }];
2492
+ this.totalLength = 1;
2493
+ return;
2494
+ }
2495
+ this.points = cleaned;
2496
+ const vertexCount = this.points.length;
2497
+ const segmentCount = vertexCount - 1;
2498
+ const cumulative = new Array(vertexCount).fill(0);
2499
+ const tangents = new Array(segmentCount);
2500
+ let accumulated = 0;
2501
+ for (let i = 0; i < segmentCount; i++) {
2502
+ const dx = this.points[i + 1].x - this.points[i].x;
2503
+ const dy = this.points[i + 1].y - this.points[i].y;
2504
+ const length = Math.hypot(dx, dy);
2505
+ const ux = length ? dx / length : 1;
2506
+ const uy = length ? dy / length : 0;
2507
+ tangents[i] = { x: ux, y: uy };
2508
+ accumulated += length;
2509
+ cumulative[i + 1] = accumulated;
2510
+ }
2511
+ this.cumulativeLengths = cumulative;
2512
+ this.segmentTangents = tangents;
2513
+ this.totalLength = accumulated || 1;
2514
+ }
2515
+ /**
2516
+ * Create a polyline by cloning points (defensive copy).
2517
+ * @param points Raw input points; they will be copied and cleaned.
2518
+ */
2519
+ static from(points) {
2520
+ return new Polyline(points.map(p => ({ x: p.x, y: p.y })));
2521
+ }
2522
+ /** Remove consecutive duplicate points. */
2523
+ static _removeConsecutiveDuplicates(points) {
2524
+ const result = [];
2525
+ for (const p of points) {
2526
+ const last = result[result.length - 1];
2527
+ if (!last || last.x !== p.x || last.y !== p.y) {
2528
+ result.push({ x: p.x, y: p.y });
2529
+ }
2530
+ }
2531
+ return result;
2532
+ }
2533
+ }
2534
+
2535
+ /**
2536
+ * Provides sampling (interpolation) along a {@link Polyline}.
2537
+ * Separates traversal logic from pure geometry stored in {@link Polyline}.
2538
+ */
2539
+ class PolylineSampler {
2540
+ _polyline;
2541
+ /**
2542
+ * @param points Initial points to build the underlying polyline.
2543
+ * You can later call {@link updatePoints} to rebuild.
2544
+ */
2545
+ constructor(points = []) {
2546
+ this._polyline = new Polyline(points);
2547
+ }
2548
+ /**
2549
+ * Rebuild the underlying polyline from new points.
2550
+ * @returns Total length of the rebuilt polyline.
2551
+ */
2552
+ updatePoints(points) {
2553
+ this._polyline = new Polyline(points);
2554
+ return this._polyline.totalLength;
2555
+ }
2556
+ /**
2557
+ * Backward-compatible alias for older API naming.
2558
+ * @returns Total length of the rebuilt polyline.
2559
+ */
2560
+ calculateTotalLength(points) {
2561
+ return this.updatePoints(points);
2562
+ }
2563
+ /** Total length of the current polyline. */
2564
+ get totalLength() {
2565
+ return this._polyline.totalLength;
2566
+ }
2567
+ /**
2568
+ * Sample a point by normalized progress along the whole length.
2569
+ *
2570
+ * - `progress = 0` → start vertex
2571
+ * - `progress = 1` → end vertex
2572
+ *
2573
+ * Uses a small edge threshold (0.5 units) to snap near-start/near-end queries to exact vertices,
2574
+ * mirroring the behavior in the original implementation.
2575
+ *
2576
+ * @param progress Normalized value in [0..1]. Values are clamped to this range.
2577
+ * @returns Interpolated point, segment tangent, and whether it was clamped to an edge.
2578
+ */
2579
+ getPointAtProgress(progress) {
2580
+ const { points, cumulativeLengths, segmentTangents, totalLength } = this._polyline;
2581
+ const clamped = PolylineSampler._clamp(progress, 0, 1);
2582
+ const target = clamped * totalLength;
2583
+ const edgeThreshold = 0.5;
2584
+ if (target <= edgeThreshold) {
2585
+ return {
2586
+ point: points[0],
2587
+ tangent: segmentTangents[0] ?? { x: 1, y: 0 },
2588
+ atEdge: true,
2589
+ };
2590
+ }
2591
+ if (totalLength - target <= edgeThreshold) {
2592
+ const last = points.length - 1;
2593
+ return {
2594
+ point: points[last],
2595
+ tangent: segmentTangents[last - 1] ?? { x: 1, y: 0 },
2596
+ atEdge: true,
2597
+ };
2598
+ }
2599
+ const rightIndex = PolylineSampler._findRightIndex(cumulativeLengths, target);
2600
+ const i = Math.max(1, rightIndex);
2601
+ const leftLen = cumulativeLengths[i - 1];
2602
+ const rightLen = cumulativeLengths[i];
2603
+ const t = PolylineSampler._safeRatio(target - leftLen, rightLen - leftLen);
2604
+ const a = points[i - 1];
2605
+ const b = points[i];
2606
+ const point = {
2607
+ x: PolylineSampler._lerp(a.x, b.x, t),
2608
+ y: PolylineSampler._lerp(a.y, b.y, t),
2609
+ };
2610
+ const tangent = segmentTangents[i - 1] ?? { x: 1, y: 0 };
2611
+ return { point, tangent, atEdge: false };
2612
+ }
2613
+ /**
2614
+ * Backward-compatible alias.
2615
+ * Equivalent to {@link getPointAtProgress}.
2616
+ */
2617
+ getPointAtLength(progress) {
2618
+ return this.getPointAtProgress(progress);
2619
+ }
2620
+ /**
2621
+ * Sample a point by absolute distance from the start (in the same units as your points).
2622
+ * This is a convenience wrapper over {@link getPointAtProgress}.
2623
+ *
2624
+ * @param distance Distance from 0 to {@link totalLength}. Values outside are clamped.
2625
+ * @returns Interpolated point, segment tangent, and whether it was clamped to an edge.
2626
+ */
2627
+ getPointAtDistance(distance) {
2628
+ const progress = this._polyline.totalLength ? distance / this._polyline.totalLength : 0;
2629
+ return this.getPointAtProgress(progress);
2630
+ }
2631
+ // =============== Internal utilities ===============
2632
+ /** Binary-search the first index where cumulativeLengths[index] >= target. */
2633
+ static _findRightIndex(cumulativeLengths, target) {
2634
+ let lo = 0;
2635
+ let hi = cumulativeLengths.length - 1;
2636
+ while (lo < hi) {
2637
+ const mid = (lo + hi) >> 1;
2638
+ if (cumulativeLengths[mid] < target)
2639
+ lo = mid + 1;
2640
+ else
2641
+ hi = mid;
2642
+ }
2643
+ return lo;
2644
+ }
2645
+ /** Linear interpolation between `a` and `b`. */
2646
+ static _lerp(a, b, t) {
2647
+ return a + (b - a) * t;
2648
+ }
2649
+ /** Clamp `value` into [min, max]. */
2650
+ static _clamp(value, min, max) {
2651
+ return value < min ? min : value > max ? max : value;
2652
+ }
2653
+ /** Safe ratio `num / den` with tiny-denominator guard. */
2654
+ static _safeRatio(num, den) {
2655
+ const d = Math.abs(den) < 1e-6 ? 1e-6 : den;
2656
+ return num / d;
2657
+ }
2658
+ }
2659
+ /* ============================
2660
+ Example
2661
+ ===============================
2662
+ const sampler = new PolylineSampler([
2663
+ { x: 0, y: 0 },
2664
+ { x: 10, y: 0 },
2665
+ { x: 10, y: 10 },
2666
+ ]);
2667
+
2668
+ console.log('Total length:', sampler.totalLength); // -> 20
2669
+
2670
+ const s1 = sampler.getPointAtProgress(0.25);
2671
+ console.log(s1.point, s1.tangent, s1.atEdge);
2672
+
2673
+ const s2 = sampler.getPointAtDistance(15); // same as progress 0.75
2674
+ console.log(s2.point, s2.tangent, s2.atEdge);
2675
+ */
2676
+
2677
+ var PolylineContentAlign;
2678
+ (function (PolylineContentAlign) {
2679
+ PolylineContentAlign["NONE"] = "none";
2680
+ PolylineContentAlign["ALONG"] = "along";
2681
+ })(PolylineContentAlign || (PolylineContentAlign = {}));
2682
+
2683
+ /**
2684
+ * Encapsulates placement logic for a single content item along the path.
2685
+ */
2686
+ class PolylineContentPlace {
2687
+ compute(sampler, content) {
2688
+ const progress = this._clamp01(content.position());
2689
+ const { point, tangent } = sampler.getPointAtLength(progress);
2690
+ // Left-hand normal
2691
+ const normal = { x: -tangent.y, y: tangent.x };
2692
+ // Apply lateral offset
2693
+ const lateral = content.offset() ?? 0;
2694
+ const x = point.x + normal.x * lateral;
2695
+ const y = point.y + normal.y * lateral;
2696
+ // Edge guard
2697
+ const projectedSize = this._sizeAlongDirection(content.hostElement, tangent);
2698
+ const halfExtent = projectedSize * 0.5;
2699
+ const distanceFromStart = progress * sampler.totalLength;
2700
+ const distanceFromEnd = sampler.totalLength - distanceFromStart;
2701
+ const position = this._applyEdgeGuard(x, y, tangent, distanceFromStart, distanceFromEnd, halfExtent);
2702
+ const rotationDeg = this._calculateContentRotation(content.align(), tangent);
2703
+ return { position, rotationDeg };
2704
+ }
2705
+ _clamp01(v) {
2706
+ return v <= 0 ? 0 : v >= 1 ? 1 : v;
2707
+ }
2708
+ _applyEdgeGuard(x, y, tangent, distanceFromStart, distanceFromEnd, halfExtent) {
2709
+ if (distanceFromStart <= halfExtent) {
2710
+ const push = halfExtent - distanceFromStart;
2711
+ return { x: x + tangent.x * push, y: y + tangent.y * push };
2712
+ }
2713
+ if (distanceFromEnd <= halfExtent) {
2714
+ const push = halfExtent - distanceFromEnd;
2715
+ return { x: x - tangent.x * push, y: y - tangent.y * push };
2716
+ }
2717
+ return { x, y };
2718
+ }
2719
+ _sizeAlongDirection(element, dir) {
2720
+ const rect = element.getBoundingClientRect();
2721
+ return Math.abs(dir.x) * rect.width + Math.abs(dir.y) * rect.height;
2722
+ }
2723
+ _normalize180(angleDeg) {
2724
+ let a = (angleDeg + 180) % 360;
2725
+ if (a < 0)
2726
+ a += 360;
2727
+ return a - 180;
2728
+ }
2729
+ _keepUpright(angleDeg) {
2730
+ let a = this._normalize180(angleDeg);
2731
+ if (a > 90)
2732
+ a -= 180;
2733
+ else if (a < -90)
2734
+ a += 180;
2735
+ return a;
2736
+ }
2737
+ _calculateContentRotation(align, tangent) {
2738
+ let result = 0;
2739
+ if (align === PolylineContentAlign.ALONG) {
2740
+ result = (Math.atan2(tangent.y, tangent.x) * 180) / Math.PI;
2741
+ result = this._keepUpright(result);
2742
+ }
2743
+ return result;
2744
+ }
2745
+ }
2746
+
2747
+ /**
2748
+ * Engine that orchestrates positioning and orientation of all
2749
+ * connection contents along a computed path.
2750
+ */
2751
+ class ConnectionContentLayoutEngine {
2752
+ _placement;
2753
+ constructor(_placement = new PolylineContentPlace()) {
2754
+ this._placement = _placement;
2755
+ }
2756
+ layout(line, builderResult, contents) {
2757
+ const sampler = new PolylineSampler(builderResult.points ?? calculatePathPointsIfEmpty(line, builderResult));
2758
+ const total = sampler.totalLength;
2759
+ for (const item of contents) {
2760
+ const { position, rotationDeg } = this._placement.compute(sampler, item);
2761
+ const style = this._createTransformString(position, rotationDeg);
2762
+ item.hostElement.setAttribute('style', style);
2763
+ }
2764
+ return total;
2765
+ }
2766
+ _createTransformString(position, rotationDeg) {
2767
+ return `position: fixed; pointer-events: all; transform: translate(-50%, -50%) rotate(${rotationDeg}deg); left: ${position.x}px; top: ${position.y}px`;
2768
+ }
2769
+ }
2770
+ function calculatePathPointsIfEmpty({ point1, point2 }, { secondPoint, connectionCenter, penultimatePoint }) {
2771
+ return [point1, secondPoint || point1, connectionCenter, penultimatePoint || point2, point2];
2772
+ }
2773
+
2774
+ /**
2775
+ * Directive for placing custom user content (text, icons, buttons, etc.)
2776
+ * along a connection line.
2777
+ *
2778
+ * It allows you to specify the position along the connection,
2779
+ * shift the content sideways (perpendicular to the path),
2780
+ * apply a margin near the edges, and control orientation.
2781
+ *
2782
+ * ### Usage examples
2783
+ *
2784
+ * ```html
2785
+ * <!-- Text centered on the connection -->
2786
+ * <div fConnectionContent [position]="0.5">
2787
+ * Hello
2788
+ * </div>
2789
+ *
2790
+ * <!-- Button near the start of the connection, shifted upward by 12px -->
2791
+ * <button fConnectionContent [position]="0.2" [offset]="-12">
2792
+ * +
2793
+ * </button>
2794
+ *
2795
+ * <!-- Icon at the end of the connection, with 6px margin and rotated along the path -->
2796
+ * <span fConnectionContent [position]="1" [margin]="6" align="along">
2797
+ * ⮕
2798
+ * </span>
2799
+ * ```
2800
+ */
2801
+ class FConnectionContent {
2802
+ _mediator = inject(FMediator);
2803
+ _injector = inject(Injector);
2804
+ /**
2805
+ * The host DOM element to which the directive is applied.
2806
+ * Used internally for positioning calculations.
2807
+ */
2808
+ hostElement = inject((ElementRef)).nativeElement;
2809
+ /**
2810
+ * Position along the connection.
2811
+ *
2812
+ * A normalized value in the range `0..1`:
2813
+ * - `0` — at the start of the connection,
2814
+ * - `1` — at the end of the connection,
2815
+ * - `0.5` — at the middle of the connection (default).
2816
+ */
2817
+ position = input(0.5, {
2818
+ transform: (v) => (v < 0 ? 0 : v > 1 ? 1 : v),
2819
+ });
2820
+ /**
2821
+ * Perpendicular offset from the connection line (in pixels).
2822
+ *
2823
+ * - Positive values shift the element to the right
2824
+ * relative to the line direction.
2825
+ * - Negative values shift it to the left.
2826
+ * - Default: `0` (no shift).
2827
+ */
2828
+ offset = input(0);
2829
+ /**
2830
+ * Controls the orientation (rotation) of the content relative to the connection.
2831
+ *
2832
+ * Possible values:
2833
+ * - `'none'` — no rotation (default).
2834
+ * - `'along'` — aligned along the path (tangent).
2835
+ */
2836
+ align = input(PolylineContentAlign.NONE, {
2837
+ transform: (x) => castToEnum(x, 'align', PolylineContentAlign),
2838
+ });
2839
+ ngOnInit() {
2840
+ this._listenChanges();
2841
+ }
2842
+ _listenChanges() {
2843
+ effect(() => {
2844
+ this.offset();
2845
+ this.position();
2846
+ this.align();
2847
+ untracked(() => this._mediator.execute(new NotifyDataChangedRequest()));
2848
+ }, { injector: this._injector });
2849
+ }
2850
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2851
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FConnectionContent, isStandalone: true, selector: "[fConnectionContent]", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "f-connection-content" }, ngImport: i0 });
2852
+ }
2853
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionContent, decorators: [{
2854
+ type: Directive,
2855
+ args: [{
2856
+ selector: '[fConnectionContent]',
2857
+ standalone: true,
2858
+ host: {
2859
+ 'class': 'f-connection-content',
2860
+ },
2861
+ }]
2862
+ }] });
2863
+
2446
2864
  const MIXIN_BASE = mixinChangeSelection(mixinChangeVisibility(class {
2447
2865
  hostElement;
2448
2866
  constructor(hostElement) {
@@ -2450,7 +2868,7 @@ const MIXIN_BASE = mixinChangeSelection(mixinChangeVisibility(class {
2450
2868
  }
2451
2869
  }));
2452
2870
  class FConnectionBase extends MIXIN_BASE {
2453
- cFactory;
2871
+ _connectionFactory = inject(FConnectionFactory);
2454
2872
  fStartColor = input('black');
2455
2873
  fEndColor = input('black');
2456
2874
  path = '';
@@ -2466,12 +2884,16 @@ class FConnectionBase extends MIXIN_BASE {
2466
2884
  fSelection = viewChild.required(FConnectionSelectionComponent);
2467
2885
  fTextComponent = viewChild.required(CONNECTION_TEXT);
2468
2886
  fConnectionCenter = viewChild('fConnectionCenter');
2469
- fConnectionCenters = contentChildren(FConnectionCenterDirective, { descendants: true });
2470
- penultimatePoint = PointExtensions.initialize();
2471
- secondPoint = PointExtensions.initialize();
2472
- constructor(elementReference, cFactory) {
2473
- super(elementReference.nativeElement);
2474
- this.cFactory = cFactory;
2887
+ fConnectionCenters = contentChildren(FConnectionCenterDirective, {
2888
+ descendants: true,
2889
+ });
2890
+ fConnectionContents = contentChildren(FConnectionContent, {
2891
+ descendants: true,
2892
+ });
2893
+ _penultimatePoint = PointExtensions.initialize();
2894
+ _secondPoint = PointExtensions.initialize();
2895
+ constructor() {
2896
+ super(inject((ElementRef)).nativeElement);
2475
2897
  }
2476
2898
  initialize() {
2477
2899
  this.fPath().initialize();
@@ -2483,22 +2905,26 @@ class FConnectionBase extends MIXIN_BASE {
2483
2905
  }
2484
2906
  setLine({ point1, point2 }, sourceSide, targetSide) {
2485
2907
  this.line = LineExtensions.initialize(point1, point2);
2486
- const pathResult = this.getPathResult(point1, sourceSide, point2, targetSide);
2908
+ const pathResult = this._getPathResult(point1, sourceSide, point2, targetSide);
2487
2909
  this.path = pathResult.path;
2488
- this.penultimatePoint = pathResult.penultimatePoint || point1;
2489
- this.secondPoint = pathResult.secondPoint || point2;
2490
- this.fConnectionCenter()?.nativeElement?.setAttribute('style', this.getTransform(pathResult.connectionCenter));
2910
+ this._penultimatePoint = pathResult.penultimatePoint || point1;
2911
+ this._secondPoint = pathResult.secondPoint || point2;
2912
+ new ConnectionContentLayoutEngine().layout(this.line, pathResult, this._contents());
2913
+ this.fConnectionCenter()?.nativeElement?.setAttribute('style', this._createTransformString(pathResult.connectionCenter));
2914
+ }
2915
+ _contents() {
2916
+ return Array.from(this.fConnectionContents()?.values() ?? []);
2491
2917
  }
2492
- getPathResult(source, sourceSide, target, targetSide) {
2918
+ _getPathResult(source, sourceSide, target, targetSide) {
2493
2919
  const radius = this.fRadius > 0 ? this.fRadius : 0;
2494
2920
  const offset = this.fOffset > 0 ? this.fOffset : 1;
2495
- return this.cFactory.handle({
2921
+ return this._connectionFactory.handle({
2496
2922
  type: this.fType,
2497
2923
  payload: { source, sourceSide, target, targetSide, radius, offset },
2498
2924
  });
2499
2925
  }
2500
- getTransform(position) {
2501
- return `position: absolute; pointerEvents: all; transform: translate(-50%, -50%); left: ${position.x}px; top: ${position.y}px`;
2926
+ _createTransformString(position, rotate = 0) {
2927
+ return `position: absolute; pointer-events: all; transform: translate(-50%, -50%) rotate(${rotate}deg); left: ${position.x}px; top: ${position.y}px`;
2502
2928
  }
2503
2929
  markChildrenAsSelected() {
2504
2930
  this.fPath().select();
@@ -2510,16 +2936,16 @@ class FConnectionBase extends MIXIN_BASE {
2510
2936
  this.fPath().setPath(this.path);
2511
2937
  this.fSelection().setPath(this.path);
2512
2938
  this.fGradient().redraw(this.line);
2513
- this.fDragHandleEnd().redraw(this.penultimatePoint, this.line.point2);
2514
- this.fDragHandleStart()?.redraw(this.secondPoint, this.line.point1);
2939
+ this.fDragHandleEnd().redraw(this._penultimatePoint, this.line.point2);
2940
+ this.fDragHandleStart()?.redraw(this._secondPoint, this.line.point1);
2515
2941
  this.fTextComponent().redraw(this.line);
2516
2942
  }
2517
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, deps: [{ token: i0.ElementRef }, { token: FConnectionFactory }], target: i0.ɵɵFactoryTarget.Directive });
2518
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: FConnectionBase, inputs: { fStartColor: { classPropertyName: "fStartColor", publicName: "fStartColor", isSignal: true, isRequired: false, transformFunction: null }, fEndColor: { classPropertyName: "fEndColor", publicName: "fEndColor", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "fConnectionCenters", predicate: FConnectionCenterDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "fDefs", first: true, predicate: ["defs"], descendants: true, isSignal: true }, { propertyName: "fPath", first: true, predicate: CONNECTION_PATH, descendants: true, isSignal: true }, { propertyName: "fGradient", first: true, predicate: CONNECTION_GRADIENT, descendants: true, isSignal: true }, { propertyName: "fDragHandleStart", first: true, predicate: FConnectionDragHandleStartComponent, descendants: true, isSignal: true }, { propertyName: "fDragHandleEnd", first: true, predicate: FConnectionDragHandleEndComponent, descendants: true, isSignal: true }, { propertyName: "fSelection", first: true, predicate: FConnectionSelectionComponent, descendants: true, isSignal: true }, { propertyName: "fTextComponent", first: true, predicate: CONNECTION_TEXT, descendants: true, isSignal: true }, { propertyName: "fConnectionCenter", first: true, predicate: ["fConnectionCenter"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
2943
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2944
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: FConnectionBase, inputs: { fStartColor: { classPropertyName: "fStartColor", publicName: "fStartColor", isSignal: true, isRequired: false, transformFunction: null }, fEndColor: { classPropertyName: "fEndColor", publicName: "fEndColor", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "fConnectionCenters", predicate: FConnectionCenterDirective, descendants: true, isSignal: true }, { propertyName: "fConnectionContents", predicate: FConnectionContent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "fDefs", first: true, predicate: ["defs"], descendants: true, isSignal: true }, { propertyName: "fPath", first: true, predicate: CONNECTION_PATH, descendants: true, isSignal: true }, { propertyName: "fGradient", first: true, predicate: CONNECTION_GRADIENT, descendants: true, isSignal: true }, { propertyName: "fDragHandleStart", first: true, predicate: FConnectionDragHandleStartComponent, descendants: true, isSignal: true }, { propertyName: "fDragHandleEnd", first: true, predicate: FConnectionDragHandleEndComponent, descendants: true, isSignal: true }, { propertyName: "fSelection", first: true, predicate: FConnectionSelectionComponent, descendants: true, isSignal: true }, { propertyName: "fTextComponent", first: true, predicate: CONNECTION_TEXT, descendants: true, isSignal: true }, { propertyName: "fConnectionCenter", first: true, predicate: ["fConnectionCenter"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
2519
2945
  }
2520
2946
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, decorators: [{
2521
2947
  type: Directive
2522
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: FConnectionFactory }] });
2948
+ }], ctorParameters: () => [] });
2523
2949
 
2524
2950
  var EFConnectionBehavior;
2525
2951
  (function (EFConnectionBehavior) {
@@ -2540,8 +2966,8 @@ class FConnectionForCreateComponent extends FConnectionBase {
2540
2966
  fId = signal(`f-connection-for-create-${uniqueId$6++}`);
2541
2967
  fText = '';
2542
2968
  fTextStartOffset = '';
2543
- fOutputId;
2544
- fInputId;
2969
+ fOutputId = signal('');
2970
+ fInputId = signal('');
2545
2971
  fRadius = 8;
2546
2972
  fOffset = 12;
2547
2973
  fBehavior = EFConnectionBehavior.FIXED;
@@ -2550,9 +2976,6 @@ class FConnectionForCreateComponent extends FConnectionBase {
2550
2976
  return this.fPath().hostElement;
2551
2977
  }
2552
2978
  _mediator = inject(FMediator);
2553
- constructor(elementReference, fConnectionFactory) {
2554
- super(elementReference, fConnectionFactory);
2555
- }
2556
2979
  ngOnInit() {
2557
2980
  this._mediator.execute(new AddConnectionForCreateToStoreRequest(this));
2558
2981
  }
@@ -2565,15 +2988,15 @@ class FConnectionForCreateComponent extends FConnectionBase {
2565
2988
  ngOnDestroy() {
2566
2989
  this._mediator.execute(new RemoveConnectionForCreateFromStoreRequest());
2567
2990
  }
2568
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionForCreateComponent, deps: [{ token: i0.ElementRef }, { token: FConnectionFactory }], target: i0.ɵɵFactoryTarget.Component });
2569
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionForCreateComponent, selector: "f-connection-for-create", inputs: { fRadius: ["fRadius", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-connection-for-create" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionForCreateComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2991
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionForCreateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2992
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionForCreateComponent, selector: "f-connection-for-create", inputs: { fRadius: ["fRadius", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-connection-for-create" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionForCreateComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2570
2993
  }
2571
2994
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionForCreateComponent, decorators: [{
2572
2995
  type: Component,
2573
- args: [{ selector: "f-connection-for-create", changeDetection: ChangeDetectionStrategy.OnPush, host: {
2574
- class: "f-component f-connection f-connection-for-create",
2575
- }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionForCreateComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center{pointer-events:all}\n"] }]
2576
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: FConnectionFactory }], propDecorators: { fRadius: [{
2996
+ args: [{ selector: 'f-connection-for-create', changeDetection: ChangeDetectionStrategy.OnPush, host: {
2997
+ class: 'f-component f-connection f-connection-for-create',
2998
+ }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionForCreateComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"] }]
2999
+ }], propDecorators: { fRadius: [{
2577
3000
  type: Input,
2578
3001
  args: [{ transform: numberAttribute }]
2579
3002
  }], fOffset: [{
@@ -2589,10 +3012,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2589
3012
  let uniqueId$5 = 0;
2590
3013
  class FConnectionComponent extends FConnectionBase {
2591
3014
  fId = input(`f-connection-${uniqueId$5++}`, { alias: 'fConnectionId' });
3015
+ /** @deprecated [fText] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead. */
2592
3016
  fText = '';
3017
+ /** @deprecated [fTextStartOffset] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead. */
2593
3018
  fTextStartOffset = '';
2594
- fOutputId = '';
2595
- fInputId = '';
3019
+ fOutputId = input('', {
3020
+ transform: (value) => stringAttribute(value) || '',
3021
+ });
3022
+ fInputId = input('', {
3023
+ transform: (value) => stringAttribute(value) || '',
3024
+ });
2596
3025
  fRadius = 8;
2597
3026
  fOffset = 12;
2598
3027
  fBehavior = EFConnectionBehavior.FIXED;
@@ -2607,9 +3036,6 @@ class FConnectionComponent extends FConnectionBase {
2607
3036
  return this.fPath().hostElement;
2608
3037
  }
2609
3038
  _mediator = inject(FMediator);
2610
- constructor(elementReference, fConnectionFactory) {
2611
- super(elementReference, fConnectionFactory);
2612
- }
2613
3039
  ngOnInit() {
2614
3040
  this._mediator.execute(new AddConnectionToStoreRequest(this));
2615
3041
  }
@@ -2619,25 +3045,21 @@ class FConnectionComponent extends FConnectionBase {
2619
3045
  ngOnDestroy() {
2620
3046
  this._mediator.execute(new RemoveConnectionFromStoreRequest(this));
2621
3047
  }
2622
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, deps: [{ token: i0.ElementRef }, { token: FConnectionFactory }], target: i0.ɵɵFactoryTarget.Component });
2623
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionComponent, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fText: { classPropertyName: "fText", publicName: "fText", isSignal: false, isRequired: false, transformFunction: null }, fTextStartOffset: { classPropertyName: "fTextStartOffset", publicName: "fTextStartOffset", isSignal: false, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal: false, isRequired: false, transformFunction: null }, fInputId: { classPropertyName: "fInputId", publicName: "fInputId", isSignal: false, isRequired: false, transformFunction: null }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fSelectionDisabled: { classPropertyName: "fSelectionDisabled", publicName: "fSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, fReassignableStart: { classPropertyName: "fReassignableStart", publicName: "fReassignableStart", isSignal: true, isRequired: false, transformFunction: null }, fDraggingDisabled: { classPropertyName: "fDraggingDisabled", publicName: "fReassignDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "fId()", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3048
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3049
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionComponent, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fText: { classPropertyName: "fText", publicName: "fText", isSignal: false, isRequired: false, transformFunction: null }, fTextStartOffset: { classPropertyName: "fTextStartOffset", publicName: "fTextStartOffset", isSignal: false, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal: true, isRequired: false, transformFunction: null }, fInputId: { classPropertyName: "fInputId", publicName: "fInputId", isSignal: true, isRequired: false, transformFunction: null }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fSelectionDisabled: { classPropertyName: "fSelectionDisabled", publicName: "fSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, fReassignableStart: { classPropertyName: "fReassignableStart", publicName: "fReassignableStart", isSignal: true, isRequired: false, transformFunction: null }, fDraggingDisabled: { classPropertyName: "fDraggingDisabled", publicName: "fReassignDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "fId()", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"overflow: visible; display: block; vertical-align: middle;\"\n>\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2624
3050
  }
2625
3051
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, decorators: [{
2626
3052
  type: Component,
2627
- args: [{ selector: "f-connection", exportAs: 'fComponent', changeDetection: ChangeDetectionStrategy.OnPush, host: {
3053
+ args: [{ selector: 'f-connection', exportAs: 'fComponent', changeDetection: ChangeDetectionStrategy.OnPush, host: {
2628
3054
  '[attr.id]': 'fId()',
2629
- class: "f-component f-connection",
3055
+ class: 'f-component f-connection',
2630
3056
  '[class.f-connection-selection-disabled]': 'fSelectionDisabled()',
2631
3057
  '[class.f-connection-reassign-disabled]': 'fDraggingDisabled()',
2632
- }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center{pointer-events:all}\n"] }]
2633
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: FConnectionFactory }], propDecorators: { fText: [{
3058
+ }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"overflow: visible; display: block; vertical-align: middle;\"\n>\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"] }]
3059
+ }], propDecorators: { fText: [{
2634
3060
  type: Input
2635
3061
  }], fTextStartOffset: [{
2636
3062
  type: Input
2637
- }], fOutputId: [{
2638
- type: Input
2639
- }], fInputId: [{
2640
- type: Input
2641
3063
  }], fRadius: [{
2642
3064
  type: Input,
2643
3065
  args: [{ transform: numberAttribute }]
@@ -2661,18 +3083,11 @@ var EFMarkerType;
2661
3083
 
2662
3084
  const F_MARKER = new InjectionToken('F_MARKER');
2663
3085
  class FMarkerBase {
2664
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FMarkerBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2665
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FMarkerBase, ngImport: i0 });
2666
3086
  }
2667
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FMarkerBase, decorators: [{
2668
- type: Directive
2669
- }] });
2670
3087
 
2671
3088
  class FMarkerDirective extends FMarkerBase {
2672
- elementReference;
2673
- get hostElement() {
2674
- return this.elementReference.nativeElement;
2675
- }
3089
+ hostElement = inject((ElementRef)).nativeElement;
3090
+ _mediator = inject(FMediator);
2676
3091
  width = 0;
2677
3092
  height = 0;
2678
3093
  refX = 0;
@@ -2680,33 +3095,26 @@ class FMarkerDirective extends FMarkerBase {
2680
3095
  type = EFMarkerType.START;
2681
3096
  orient = 'auto';
2682
3097
  markerUnits = 'strokeWidth';
2683
- _fMediator = inject(FMediator);
2684
- constructor(elementReference) {
2685
- super();
2686
- this.elementReference = elementReference;
2687
- this.hostElement.style.display = 'none';
2688
- }
2689
3098
  ngOnInit() {
2690
- this._fMediator.execute(new AddConnectionMarkerToStoreRequest(this));
3099
+ this.hostElement.style.display = 'none';
3100
+ this._mediator.execute(new AddConnectionMarkerToStoreRequest(this));
2691
3101
  }
2692
3102
  ngOnDestroy() {
2693
- this._fMediator.execute(new RemoveConnectionMarkerFromStoreRequest(this));
3103
+ this._mediator.execute(new RemoveConnectionMarkerFromStoreRequest(this));
2694
3104
  }
2695
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FMarkerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
2696
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FMarkerDirective, selector: "svg[fMarker]", inputs: { hostElement: "hostElement", width: "width", height: "height", refX: "refX", refY: "refY", type: "type", orient: "orient", markerUnits: "markerUnits" }, host: { classAttribute: "f-component f-marker" }, providers: [{ provide: F_MARKER, useExisting: FMarkerDirective }], usesInheritance: true, ngImport: i0 });
3105
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FMarkerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3106
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FMarkerDirective, selector: "svg[fMarker]", inputs: { width: "width", height: "height", refX: "refX", refY: "refY", type: "type", orient: "orient", markerUnits: "markerUnits" }, host: { classAttribute: "f-component f-marker" }, providers: [{ provide: F_MARKER, useExisting: FMarkerDirective }], usesInheritance: true, ngImport: i0 });
2697
3107
  }
2698
3108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FMarkerDirective, decorators: [{
2699
3109
  type: Directive,
2700
3110
  args: [{
2701
- selector: "svg[fMarker]",
3111
+ selector: 'svg[fMarker]',
2702
3112
  host: {
2703
- class: "f-component f-marker",
3113
+ class: 'f-component f-marker',
2704
3114
  },
2705
3115
  providers: [{ provide: F_MARKER, useExisting: FMarkerDirective }],
2706
3116
  }]
2707
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { hostElement: [{
2708
- type: Input
2709
- }], width: [{
3117
+ }], propDecorators: { width: [{
2710
3118
  type: Input
2711
3119
  }], height: [{
2712
3120
  type: Input
@@ -2728,8 +3136,8 @@ class FSnapConnectionComponent extends FConnectionBase {
2728
3136
  fText = '';
2729
3137
  fTextStartOffset = '';
2730
3138
  fSnapThreshold = 20;
2731
- fOutputId;
2732
- fInputId;
3139
+ fOutputId = signal('');
3140
+ fInputId = signal('');
2733
3141
  fRadius = 8;
2734
3142
  fOffset = 12;
2735
3143
  fBehavior = EFConnectionBehavior.FIXED;
@@ -2738,9 +3146,6 @@ class FSnapConnectionComponent extends FConnectionBase {
2738
3146
  return this.fPath().hostElement;
2739
3147
  }
2740
3148
  _mediator = inject(FMediator);
2741
- constructor(elementReference, fConnectionFactory) {
2742
- super(elementReference, fConnectionFactory);
2743
- }
2744
3149
  ngOnInit() {
2745
3150
  this._mediator.execute(new AddSnapConnectionToStoreRequest(this));
2746
3151
  }
@@ -2753,15 +3158,15 @@ class FSnapConnectionComponent extends FConnectionBase {
2753
3158
  ngOnDestroy() {
2754
3159
  this._mediator.execute(new RemoveSnapConnectionFromStoreRequest());
2755
3160
  }
2756
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSnapConnectionComponent, deps: [{ token: i0.ElementRef }, { token: FConnectionFactory }], target: i0.ɵɵFactoryTarget.Component });
2757
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FSnapConnectionComponent, selector: "f-snap-connection", inputs: { fSnapThreshold: ["fSnapThreshold", "fSnapThreshold", numberAttribute], fRadius: ["fRadius", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-snap-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FSnapConnectionComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3161
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSnapConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3162
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FSnapConnectionComponent, selector: "f-snap-connection", inputs: { fSnapThreshold: ["fSnapThreshold", "fSnapThreshold", numberAttribute], fRadius: ["fRadius", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-snap-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FSnapConnectionComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2758
3163
  }
2759
3164
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSnapConnectionComponent, decorators: [{
2760
3165
  type: Component,
2761
- args: [{ selector: "f-snap-connection", changeDetection: ChangeDetectionStrategy.OnPush, host: {
2762
- class: "f-component f-connection f-snap-connection",
2763
- }, providers: [{ provide: F_CONNECTION, useExisting: FSnapConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center{pointer-events:all}\n"] }]
2764
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: FConnectionFactory }], propDecorators: { fSnapThreshold: [{
3166
+ args: [{ selector: 'f-snap-connection', changeDetection: ChangeDetectionStrategy.OnPush, host: {
3167
+ class: 'f-component f-connection f-snap-connection',
3168
+ }, providers: [{ provide: F_CONNECTION, useExisting: FSnapConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"] }]
3169
+ }], propDecorators: { fSnapThreshold: [{
2765
3170
  type: Input,
2766
3171
  args: [{ transform: numberAttribute }]
2767
3172
  }], fRadius: [{
@@ -2797,19 +3202,19 @@ const F_CONNECTION_PROVIDERS = [
2797
3202
  * It constructs a line between the intersections of the connectors rectangles and line from the centers of the connector rectangles
2798
3203
  * @param payload
2799
3204
  */
2800
- function floatingBehavior(payload) {
2801
- return _getIntersectionsLine(_fromRoundedRectIntersections(payload), _toRoundedRectIntersections(payload), payload);
3205
+ function floatingBehavior({ sourceRect, targetRect, }) {
3206
+ return _getIntersectionsLine(_fromRoundedRectIntersections(sourceRect, targetRect), _toRoundedRectIntersections(sourceRect, targetRect), sourceRect, targetRect);
2802
3207
  }
2803
- function _fromRoundedRectIntersections(payload) {
2804
- return GetIntersections.getRoundedRectIntersections(payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect)[0];
3208
+ function _fromRoundedRectIntersections(sourceRect, targetRect) {
3209
+ return GetIntersections.getRoundedRectIntersections(sourceRect.gravityCenter, targetRect.gravityCenter, sourceRect)[0];
2805
3210
  }
2806
- function _toRoundedRectIntersections(payload) {
2807
- return GetIntersections.getRoundedRectIntersections(payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect)[0];
3211
+ function _toRoundedRectIntersections(sourceRect, targetRect) {
3212
+ return GetIntersections.getRoundedRectIntersections(targetRect.gravityCenter, sourceRect.gravityCenter, targetRect)[0];
2808
3213
  }
2809
- function _getIntersectionsLine(from, to, payload) {
3214
+ function _getIntersectionsLine(from, to, sourceRect, targetRect) {
2810
3215
  return {
2811
- point1: from ? from : payload.outputRect.gravityCenter,
2812
- point2: to ? to : payload.inputRect.gravityCenter,
3216
+ point1: from ? from : sourceRect.gravityCenter,
3217
+ point2: to ? to : targetRect.gravityCenter,
2813
3218
  };
2814
3219
  }
2815
3220
 
@@ -2818,10 +3223,10 @@ function _getIntersectionsLine(from, to, payload) {
2818
3223
  * It constructs a line between the gravity centers of the connector rectangles
2819
3224
  * @param payload
2820
3225
  */
2821
- function fixedCenterBehavior(payload) {
3226
+ function fixedCenterBehavior({ sourceRect, targetRect, }) {
2822
3227
  return {
2823
- point1: payload.outputRect.gravityCenter,
2824
- point2: payload.inputRect.gravityCenter,
3228
+ point1: sourceRect.gravityCenter,
3229
+ point2: targetRect.gravityCenter,
2825
3230
  };
2826
3231
  }
2827
3232
 
@@ -2830,10 +3235,14 @@ function fixedCenterBehavior(payload) {
2830
3235
  * It constructs a line between the specified sides of the output and input rectangles
2831
3236
  * @param payload
2832
3237
  */
2833
- function fixedOutboundBehavior(payload) {
3238
+ function fixedOutboundBehavior({ sourceRect, sourceConnectableSide, targetRect, targetConnectableSide, }) {
2834
3239
  return {
2835
- point1: _getPosition(payload.outputRect, payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide),
2836
- point2: _getPosition(payload.inputRect, payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide),
3240
+ point1: _getPosition(sourceRect, sourceConnectableSide === EFConnectableSide.AUTO
3241
+ ? EFConnectableSide.BOTTOM
3242
+ : sourceConnectableSide),
3243
+ point2: _getPosition(targetRect, targetConnectableSide === EFConnectableSide.AUTO
3244
+ ? EFConnectableSide.TOP
3245
+ : targetConnectableSide),
2837
3246
  };
2838
3247
  }
2839
3248
  function _getPosition(rect, side) {
@@ -2854,7 +3263,7 @@ function _getPosition(rect, side) {
2854
3263
  /**
2855
3264
  * Execution that calculates the connection line based on the behavior.
2856
3265
  */
2857
- let CalculateConnectionLineByBehaviorExecution = class CalculateConnectionLineByBehaviorExecution {
3266
+ let CalculateConnectionLineByBehavior = class CalculateConnectionLineByBehavior {
2858
3267
  _handlers = {
2859
3268
  [EFConnectionBehavior.FLOATING.toString()]: floatingBehavior,
2860
3269
  [EFConnectionBehavior.FIXED_CENTER.toString()]: fixedCenterBehavior,
@@ -2863,13 +3272,13 @@ let CalculateConnectionLineByBehaviorExecution = class CalculateConnectionLineBy
2863
3272
  handle(payload) {
2864
3273
  return this._handlers[payload.behavior](payload);
2865
3274
  }
2866
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectionLineByBehaviorExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2867
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectionLineByBehaviorExecution });
3275
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectionLineByBehavior, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3276
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectionLineByBehavior });
2868
3277
  };
2869
- CalculateConnectionLineByBehaviorExecution = __decorate([
3278
+ CalculateConnectionLineByBehavior = __decorate([
2870
3279
  FExecutionRegister(CalculateConnectionLineByBehaviorRequest)
2871
- ], CalculateConnectionLineByBehaviorExecution);
2872
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectionLineByBehaviorExecution, decorators: [{
3280
+ ], CalculateConnectionLineByBehavior);
3281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectionLineByBehavior, decorators: [{
2873
3282
  type: Injectable
2874
3283
  }] });
2875
3284
 
@@ -2988,9 +3397,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2988
3397
  * and sets up connections based on the stored outputs and inputs.
2989
3398
  */
2990
3399
  let RedrawConnectionsExecution = class RedrawConnectionsExecution {
2991
- _fMediator = inject(FMediator);
3400
+ _mediator = inject(FMediator);
2992
3401
  _store = inject(FComponentsStore);
2993
- handle(request) {
3402
+ handle(_request) {
2994
3403
  this._resetConnectors();
2995
3404
  if (this._store.fTempConnection) {
2996
3405
  this._setMarkers(this._store.fTempConnection);
@@ -2999,18 +3408,18 @@ let RedrawConnectionsExecution = class RedrawConnectionsExecution {
2999
3408
  this._setMarkers(this._store.fSnapConnection);
3000
3409
  }
3001
3410
  this._store.fConnections.forEach((x) => {
3002
- this._setupConnection(this._getOutput(x.fOutputId), this._getInput(x.fInputId), x);
3411
+ this._setupConnection(this._getOutput(x.fOutputId()), this._getInput(x.fInputId()), x);
3003
3412
  });
3004
3413
  }
3005
3414
  _getOutput(id) {
3006
- const result = this._store.fOutputs.find((x) => x.fId === id);
3415
+ const result = this._store.fOutputs.find((x) => x.fId() === id);
3007
3416
  if (!result) {
3008
3417
  throw new Error(`Output with id ${id} not found`);
3009
3418
  }
3010
3419
  return result;
3011
3420
  }
3012
3421
  _getInput(id) {
3013
- const result = this._store.fInputs.find((x) => x.fId === id);
3422
+ const result = this._store.fInputs.find((x) => x.fId() === id);
3014
3423
  if (!result) {
3015
3424
  throw new Error(`Input with id ${id} not found`);
3016
3425
  }
@@ -3030,10 +3439,10 @@ let RedrawConnectionsExecution = class RedrawConnectionsExecution {
3030
3439
  fConnection.isSelected() ? fConnection.markAsSelected() : null;
3031
3440
  }
3032
3441
  _getLine(output, input, connection) {
3033
- return this._fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fMediator.execute(new GetNormalizedConnectorRectRequest(output.hostElement)), this._fMediator.execute(new GetNormalizedConnectorRectRequest(input.hostElement)), connection.fBehavior, output.fConnectableSide, input.fConnectableSide));
3442
+ return this._mediator.execute(new CalculateConnectionLineByBehaviorRequest(this._mediator.execute(new GetNormalizedConnectorRectRequest(output.hostElement)), this._mediator.execute(new GetNormalizedConnectorRectRequest(input.hostElement)), connection.fBehavior, output.fConnectableSide, input.fConnectableSide));
3034
3443
  }
3035
3444
  _setMarkers(connection) {
3036
- this._fMediator.execute(new CreateConnectionMarkersRequest(connection));
3445
+ this._mediator.execute(new CreateConnectionMarkersRequest(connection));
3037
3446
  }
3038
3447
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedrawConnectionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3039
3448
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedrawConnectionsExecution });
@@ -3158,7 +3567,7 @@ const F_CONNECTION_FEATURES = [
3158
3567
  AddConnectionToStoreExecution,
3159
3568
  AddSnapConnectionToStoreExecution,
3160
3569
  CreateConnectionMarkersExecution,
3161
- CalculateConnectionLineByBehaviorExecution,
3570
+ CalculateConnectionLineByBehavior,
3162
3571
  RedrawConnectionsExecution,
3163
3572
  RemoveConnectionForCreateFromStoreExecution,
3164
3573
  RemoveConnectionFromStoreExecution,
@@ -3167,87 +3576,87 @@ const F_CONNECTION_FEATURES = [
3167
3576
  ];
3168
3577
 
3169
3578
  class AddInputToStoreRequest {
3170
- fComponent;
3579
+ component;
3171
3580
  static fToken = Symbol('AddInputToStoreRequest');
3172
- constructor(fComponent) {
3173
- this.fComponent = fComponent;
3581
+ constructor(component) {
3582
+ this.component = component;
3174
3583
  }
3175
3584
  }
3176
3585
 
3177
3586
  /**
3178
3587
  * Execution that adds an InputConnector to the FComponentsStore.
3179
3588
  */
3180
- let AddInputToStoreExecution = class AddInputToStoreExecution {
3589
+ let AddInputToStore = class AddInputToStore {
3181
3590
  _store = inject(FComponentsStore);
3182
- handle(request) {
3183
- this._store.addComponent(this._store.fInputs, request.fComponent);
3591
+ handle({ component }) {
3592
+ this._store.addComponent(this._store.fInputs, component);
3184
3593
  }
3185
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddInputToStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3186
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddInputToStoreExecution });
3594
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddInputToStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3595
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddInputToStore });
3187
3596
  };
3188
- AddInputToStoreExecution = __decorate([
3597
+ AddInputToStore = __decorate([
3189
3598
  FExecutionRegister(AddInputToStoreRequest)
3190
- ], AddInputToStoreExecution);
3191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddInputToStoreExecution, decorators: [{
3599
+ ], AddInputToStore);
3600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddInputToStore, decorators: [{
3192
3601
  type: Injectable
3193
3602
  }] });
3194
3603
 
3195
3604
  class AddOutletToStoreRequest {
3196
- fComponent;
3605
+ component;
3197
3606
  static fToken = Symbol('AddOutletToStoreRequest');
3198
- constructor(fComponent) {
3199
- this.fComponent = fComponent;
3607
+ constructor(component) {
3608
+ this.component = component;
3200
3609
  }
3201
3610
  }
3202
3611
 
3203
3612
  /**
3204
3613
  * Execution that adds an OutletConnector to the FComponentsStore.
3205
3614
  */
3206
- let AddOutletToStoreExecution = class AddOutletToStoreExecution {
3615
+ let AddOutletToStore = class AddOutletToStore {
3207
3616
  _store = inject(FComponentsStore);
3208
- handle(request) {
3209
- this._store.addComponent(this._store.fOutlets, request.fComponent);
3617
+ handle({ component }) {
3618
+ this._store.addComponent(this._store.fOutlets, component);
3210
3619
  }
3211
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutletToStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3212
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutletToStoreExecution });
3620
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutletToStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3621
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutletToStore });
3213
3622
  };
3214
- AddOutletToStoreExecution = __decorate([
3623
+ AddOutletToStore = __decorate([
3215
3624
  FExecutionRegister(AddOutletToStoreRequest)
3216
- ], AddOutletToStoreExecution);
3217
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutletToStoreExecution, decorators: [{
3625
+ ], AddOutletToStore);
3626
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutletToStore, decorators: [{
3218
3627
  type: Injectable
3219
3628
  }] });
3220
3629
 
3221
3630
  class AddOutputToStoreRequest {
3222
- fComponent;
3631
+ component;
3223
3632
  static fToken = Symbol('AddOutputToStoreRequest');
3224
- constructor(fComponent) {
3225
- this.fComponent = fComponent;
3633
+ constructor(component) {
3634
+ this.component = component;
3226
3635
  }
3227
3636
  }
3228
3637
 
3229
3638
  /**
3230
3639
  * Execution that adds an OutputConnector to the FComponentsStore.
3231
3640
  */
3232
- let AddOutputToStoreExecution = class AddOutputToStoreExecution {
3641
+ let AddOutputToStore = class AddOutputToStore {
3233
3642
  _store = inject(FComponentsStore);
3234
- handle(request) {
3235
- this._store.addComponent(this._store.fOutputs, request.fComponent);
3643
+ handle({ component }) {
3644
+ this._store.addComponent(this._store.fOutputs, component);
3236
3645
  }
3237
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutputToStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3238
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutputToStoreExecution });
3646
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutputToStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3647
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutputToStore });
3239
3648
  };
3240
- AddOutputToStoreExecution = __decorate([
3649
+ AddOutputToStore = __decorate([
3241
3650
  FExecutionRegister(AddOutputToStoreRequest)
3242
- ], AddOutputToStoreExecution);
3243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutputToStoreExecution, decorators: [{
3651
+ ], AddOutputToStore);
3652
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutputToStore, decorators: [{
3244
3653
  type: Injectable
3245
3654
  }] });
3246
3655
 
3247
- class FindClosestConnectorRequest {
3656
+ class CalculateClosestConnectorRequest {
3248
3657
  position;
3249
3658
  connectors;
3250
- static fToken = Symbol('FindClosestConnectorRequest');
3659
+ static fToken = Symbol('CalculateClosestConnectorRequest');
3251
3660
  constructor(position, connectors) {
3252
3661
  this.position = position;
3253
3662
  this.connectors = connectors;
@@ -3259,21 +3668,23 @@ class FindClosestConnectorRequest {
3259
3668
  * It calculates the distance from the point to each connector's rectangle
3260
3669
  * and returns the closest one along with its distance.
3261
3670
  */
3262
- let FindClosestConnectorExecution = class FindClosestConnectorExecution {
3263
- handle(payload) {
3671
+ let CalculateClosestConnector = class CalculateClosestConnector {
3672
+ handle({ position, connectors, }) {
3264
3673
  let result;
3265
3674
  let minDistance = Infinity;
3266
- for (const element of payload.connectors) {
3267
- const distance = this._distanceToRectangle(payload.position, element);
3675
+ for (const element of connectors) {
3676
+ const distance = this._distanceToRectangle(position, element);
3268
3677
  if (distance < minDistance) {
3269
3678
  minDistance = distance;
3270
3679
  result = element;
3271
3680
  }
3272
3681
  }
3273
- return result ? {
3274
- ...result,
3275
- distance: minDistance,
3276
- } : undefined;
3682
+ return result
3683
+ ? {
3684
+ ...result,
3685
+ distance: minDistance,
3686
+ }
3687
+ : undefined;
3277
3688
  }
3278
3689
  _distanceToRectangle(point, inputWithRect) {
3279
3690
  const closestX = this._clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);
@@ -3285,13 +3696,13 @@ let FindClosestConnectorExecution = class FindClosestConnectorExecution {
3285
3696
  _clamp(value, min, max) {
3286
3697
  return Math.max(min, Math.min(max, value));
3287
3698
  }
3288
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FindClosestConnectorExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3289
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FindClosestConnectorExecution });
3699
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateClosestConnector, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3700
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateClosestConnector });
3290
3701
  };
3291
- FindClosestConnectorExecution = __decorate([
3292
- FExecutionRegister(FindClosestConnectorRequest)
3293
- ], FindClosestConnectorExecution);
3294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FindClosestConnectorExecution, decorators: [{
3702
+ CalculateClosestConnector = __decorate([
3703
+ FExecutionRegister(CalculateClosestConnectorRequest)
3704
+ ], CalculateClosestConnector);
3705
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateClosestConnector, decorators: [{
3295
3706
  type: Injectable
3296
3707
  }] });
3297
3708
 
@@ -3346,21 +3757,24 @@ let FindConnectableConnectorUsingPriorityAndPositionExecution = class FindConnec
3346
3757
  return result;
3347
3758
  }
3348
3759
  _filterConnectorsThatLocatedAtPosition(request) {
3349
- return request.connectableConnectors.filter((x) => {
3760
+ return request.connectableConnectors
3761
+ .filter((x) => {
3350
3762
  return RectExtensions.isIncludePoint(x.fRect, this._getPointInFlow(request.pointerPosition));
3351
- }).map((x) => x.fConnector);
3763
+ })
3764
+ .map((x) => x.fConnector);
3352
3765
  }
3353
3766
  _getPointInFlow(position) {
3354
3767
  return Point.fromPoint(position)
3355
3768
  .elementTransform(this._fHost)
3356
- .sub(this._transform.scaledPosition).sub(this._transform.position)
3769
+ .sub(this._transform.scaledPosition)
3770
+ .sub(this._transform.position)
3357
3771
  .div(this._transform.scale);
3358
3772
  }
3359
3773
  _isSnapConnectionEnabledAndHasClosestConnector(request) {
3360
3774
  if (!this._fSnapConnection) {
3361
3775
  return undefined;
3362
3776
  }
3363
- const closestConnector = this._mediator.execute(new FindClosestConnectorRequest(this._getPointInFlow(request.pointerPosition), request.connectableConnectors));
3777
+ const closestConnector = this._mediator.execute(new CalculateClosestConnectorRequest(this._getPointInFlow(request.pointerPosition), request.connectableConnectors));
3364
3778
  return this._isValidClosestInput(closestConnector) ? closestConnector : undefined;
3365
3779
  }
3366
3780
  _isValidClosestInput(closestConnector) {
@@ -3394,42 +3808,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3394
3808
  }] });
3395
3809
 
3396
3810
  class GetAllCanBeConnectedInputsAndRectsRequest {
3397
- fOutputOrOutlet;
3811
+ outputOrOutlet;
3398
3812
  static fToken = Symbol('GetAllCanBeConnectedInputsAndRectsRequest');
3399
- constructor(fOutputOrOutlet) {
3400
- this.fOutputOrOutlet = fOutputOrOutlet;
3813
+ constructor(outputOrOutlet) {
3814
+ this.outputOrOutlet = outputOrOutlet;
3401
3815
  }
3402
3816
  }
3403
3817
 
3404
3818
  class GetConnectorAndRectRequest {
3405
- fConnector;
3819
+ connector;
3406
3820
  static fToken = Symbol('GetConnectorAndRectRequest');
3407
- constructor(fConnector) {
3408
- this.fConnector = fConnector;
3821
+ constructor(connector) {
3822
+ this.connector = connector;
3409
3823
  }
3410
3824
  }
3411
3825
 
3412
3826
  /**
3413
3827
  * Execution that retrieves a connector and its rectangle.
3414
3828
  */
3415
- let GetConnectorAndRectExecution = class GetConnectorAndRectExecution {
3829
+ let GetConnectorAndRect = class GetConnectorAndRect {
3416
3830
  _mediator = inject(FMediator);
3417
- handle(request) {
3831
+ handle({ connector }) {
3418
3832
  return {
3419
- fConnector: request.fConnector,
3420
- fRect: this._getConnectorRect(request.fConnector),
3833
+ fConnector: connector,
3834
+ fRect: this._getConnectorRect(connector),
3421
3835
  };
3422
3836
  }
3423
3837
  _getConnectorRect(fConnector) {
3424
3838
  return this._mediator.execute(new GetNormalizedConnectorRectRequest(fConnector.hostElement));
3425
3839
  }
3426
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetConnectorAndRectExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3427
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetConnectorAndRectExecution });
3840
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetConnectorAndRect, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3841
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetConnectorAndRect });
3428
3842
  };
3429
- GetConnectorAndRectExecution = __decorate([
3843
+ GetConnectorAndRect = __decorate([
3430
3844
  FExecutionRegister(GetConnectorAndRectRequest)
3431
- ], GetConnectorAndRectExecution);
3432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetConnectorAndRectExecution, decorators: [{
3845
+ ], GetConnectorAndRect);
3846
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetConnectorAndRect, decorators: [{
3433
3847
  type: Injectable
3434
3848
  }] });
3435
3849
 
@@ -3439,29 +3853,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3439
3853
  let GetAllCanBeConnectedInputsAndRectsExecution = class GetAllCanBeConnectedInputsAndRectsExecution {
3440
3854
  _mediator = inject(FMediator);
3441
3855
  _store = inject(FComponentsStore);
3442
- get _fInputs() {
3856
+ get _targetConnectors() {
3443
3857
  return this._store.fInputs;
3444
3858
  }
3445
- handle(payload) {
3446
- return this._getCanBeConnectedInputs(payload.fOutputOrOutlet).map((x) => {
3859
+ handle({ outputOrOutlet, }) {
3860
+ return this._getCanBeConnectedInputs(outputOrOutlet).map((x) => {
3447
3861
  return this._mediator.execute(new GetConnectorAndRectRequest(x));
3448
3862
  });
3449
3863
  }
3450
- _getCanBeConnectedInputs(fOutputOrOutlet) {
3451
- let fInputs = [];
3452
- if (fOutputOrOutlet.canBeConnectedInputs?.length) {
3453
- fInputs = this._fInputs.filter((x) => fOutputOrOutlet.canBeConnectedInputs.includes(x.fId));
3864
+ _getCanBeConnectedInputs(outputOrOutlet) {
3865
+ let targetConnectors = [];
3866
+ if (outputOrOutlet.hasConnectionLimits) {
3867
+ targetConnectors = this._targetConnectors.filter((x) => outputOrOutlet.canConnectTo(x));
3454
3868
  }
3455
3869
  else {
3456
- fInputs = this._fInputs.filter((x) => x.canBeConnected);
3457
- if (!fOutputOrOutlet.isSelfConnectable) {
3458
- fInputs = this._filterSelfConnectable(fInputs, fOutputOrOutlet);
3870
+ targetConnectors = this._targetConnectors.filter((x) => x.canBeConnected);
3871
+ if (!outputOrOutlet.isSelfConnectable) {
3872
+ targetConnectors = this._filterSelfConnectable(targetConnectors, outputOrOutlet);
3459
3873
  }
3460
3874
  }
3461
- return fInputs;
3875
+ return targetConnectors;
3462
3876
  }
3463
- _filterSelfConnectable(fInputs, fOutputOrOutlet) {
3464
- return fInputs.filter((x) => fOutputOrOutlet.fNodeId !== x.fNodeId);
3877
+ _filterSelfConnectable(targetConnectors, outputOrOutlet) {
3878
+ return targetConnectors.filter(({ fNodeId }) => outputOrOutlet.fNodeId !== fNodeId);
3465
3879
  }
3466
3880
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetAllCanBeConnectedInputsAndRectsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3467
3881
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetAllCanBeConnectedInputsAndRectsExecution });
@@ -3474,10 +3888,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3474
3888
  }] });
3475
3889
 
3476
3890
  class GetAllCanBeConnectedSourceConnectorsAndRectsRequest {
3477
- fTargetConnector;
3891
+ targetConnector;
3478
3892
  static fToken = Symbol('GetAllCanBeConnectedSourceConnectorsAndRectsRequest');
3479
- constructor(fTargetConnector) {
3480
- this.fTargetConnector = fTargetConnector;
3893
+ constructor(targetConnector) {
3894
+ this.targetConnector = targetConnector;
3481
3895
  }
3482
3896
  }
3483
3897
 
@@ -3489,19 +3903,19 @@ class GetAllCanBeConnectedSourceConnectorsAndRectsRequest {
3489
3903
  let GetAllCanBeConnectedSourceConnectorsAndRectsExecution = class GetAllCanBeConnectedSourceConnectorsAndRectsExecution {
3490
3904
  _mediator = inject(FMediator);
3491
3905
  _store = inject(FComponentsStore);
3492
- get _fSourceConnectors() {
3906
+ get _sourceConnectors() {
3493
3907
  return this._store.fOutputs;
3494
3908
  }
3495
- handle(payload) {
3496
- return this._getCanBeConnectedSourceConnectors(payload.fTargetConnector).map((x) => {
3909
+ handle({ targetConnector, }) {
3910
+ return this._getCanBeConnectedSourceConnectors(targetConnector).map((x) => {
3497
3911
  return this._mediator.execute(new GetConnectorAndRectRequest(x));
3498
3912
  });
3499
3913
  }
3500
- _getCanBeConnectedSourceConnectors(fTargetConnector) {
3501
- return this._fSourceConnectors.filter((x) => {
3914
+ _getCanBeConnectedSourceConnectors(targetConnector) {
3915
+ return this._sourceConnectors.filter((x) => {
3502
3916
  let result = x.canBeConnected;
3503
- if (result && x.canBeConnectedInputs?.length) {
3504
- result = x.canBeConnectedInputs?.includes(fTargetConnector.fId);
3917
+ if (result && x.hasConnectionLimits) {
3918
+ result = x.canConnectTo(targetConnector);
3505
3919
  }
3506
3920
  return result;
3507
3921
  });
@@ -3517,58 +3931,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3517
3931
  }] });
3518
3932
 
3519
3933
  class MarkConnectableConnectorsRequest {
3520
- fConnectors;
3934
+ connectors;
3521
3935
  static fToken = Symbol('MarkConnectableConnectorsRequest');
3522
- constructor(fConnectors) {
3523
- this.fConnectors = fConnectors;
3936
+ constructor(connectors) {
3937
+ this.connectors = connectors;
3524
3938
  }
3525
3939
  }
3526
3940
 
3527
3941
  /**
3528
3942
  * Execution that marks connectors as connectable.
3529
3943
  */
3530
- let MarkConnectableConnectorsExecution = class MarkConnectableConnectorsExecution {
3944
+ let MarkConnectableConnectors = class MarkConnectableConnectors {
3531
3945
  _store = inject(FComponentsStore);
3532
- handle(payload) {
3946
+ handle({ connectors }) {
3533
3947
  this._store.flowHost.classList.add(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);
3534
- payload.fConnectors.forEach((fConnector) => this._markConnector(fConnector));
3948
+ connectors.forEach((x) => this._markConnector(x));
3535
3949
  }
3536
- _markConnector(fConnector) {
3537
- fConnector.hostElement.classList.add(F_CSS_CLASS.CONNECTOR.CONNECTABLE);
3950
+ _markConnector({ hostElement }) {
3951
+ hostElement.classList.add(F_CSS_CLASS.CONNECTOR.CONNECTABLE);
3538
3952
  }
3539
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkConnectableConnectorsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3540
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkConnectableConnectorsExecution });
3953
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkConnectableConnectors, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3954
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkConnectableConnectors });
3541
3955
  };
3542
- MarkConnectableConnectorsExecution = __decorate([
3956
+ MarkConnectableConnectors = __decorate([
3543
3957
  FExecutionRegister(MarkConnectableConnectorsRequest)
3544
- ], MarkConnectableConnectorsExecution);
3545
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkConnectableConnectorsExecution, decorators: [{
3958
+ ], MarkConnectableConnectors);
3959
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkConnectableConnectors, decorators: [{
3546
3960
  type: Injectable
3547
3961
  }] });
3548
3962
 
3549
3963
  class RemoveInputFromStoreRequest {
3550
- fComponent;
3964
+ component;
3551
3965
  static fToken = Symbol('RemoveInputFromStoreRequest');
3552
- constructor(fComponent) {
3553
- this.fComponent = fComponent;
3966
+ constructor(component) {
3967
+ this.component = component;
3554
3968
  }
3555
3969
  }
3556
3970
 
3557
3971
  /**
3558
3972
  * Execution that removes an inputConnector from the FComponentsStore.
3559
3973
  */
3560
- let RemoveInputFromStoreExecution = class RemoveInputFromStoreExecution {
3974
+ let RemoveInputFromStore = class RemoveInputFromStore {
3561
3975
  _store = inject(FComponentsStore);
3562
- handle(request) {
3563
- this._store.removeComponent(this._store.fInputs, request.fComponent);
3976
+ handle({ component }) {
3977
+ this._store.removeComponent(this._store.fInputs, component);
3564
3978
  }
3565
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoveInputFromStoreExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3566
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoveInputFromStoreExecution });
3979
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoveInputFromStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3980
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoveInputFromStore });
3567
3981
  };
3568
- RemoveInputFromStoreExecution = __decorate([
3982
+ RemoveInputFromStore = __decorate([
3569
3983
  FExecutionRegister(RemoveInputFromStoreRequest)
3570
- ], RemoveInputFromStoreExecution);
3571
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoveInputFromStoreExecution, decorators: [{
3984
+ ], RemoveInputFromStore);
3985
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoveInputFromStore, decorators: [{
3572
3986
  type: Injectable
3573
3987
  }] });
3574
3988
 
@@ -3625,52 +4039,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3625
4039
  }] });
3626
4040
 
3627
4041
  class UnmarkConnectableConnectorsRequest {
3628
- fConnectors;
4042
+ connectors;
3629
4043
  static fToken = Symbol('UnmarkConnectableConnectorsRequest');
3630
- constructor(fConnectors) {
3631
- this.fConnectors = fConnectors;
4044
+ constructor(connectors) {
4045
+ this.connectors = connectors;
3632
4046
  }
3633
4047
  }
3634
4048
 
3635
4049
  /**
3636
4050
  * Execution that unmarks connectors as connectable.
3637
4051
  */
3638
- let UnmarkConnectableConnectorsExecution = class UnmarkConnectableConnectorsExecution {
4052
+ let UnmarkConnectableConnectors = class UnmarkConnectableConnectors {
3639
4053
  _store = inject(FComponentsStore);
3640
- handle(payload) {
4054
+ handle({ connectors }) {
3641
4055
  this._store.flowHost.classList.remove(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);
3642
- payload.fConnectors.forEach((fConnector) => this._unmarkConnector(fConnector));
4056
+ connectors.forEach((x) => this._unmarkConnector(x));
3643
4057
  }
3644
- _unmarkConnector(fConnector) {
3645
- fConnector.hostElement.classList.remove(F_CSS_CLASS.CONNECTOR.CONNECTABLE);
4058
+ _unmarkConnector({ hostElement }) {
4059
+ hostElement.classList.remove(F_CSS_CLASS.CONNECTOR.CONNECTABLE);
3646
4060
  }
3647
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnmarkConnectableConnectorsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3648
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnmarkConnectableConnectorsExecution });
4061
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnmarkConnectableConnectors, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4062
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnmarkConnectableConnectors });
3649
4063
  };
3650
- UnmarkConnectableConnectorsExecution = __decorate([
4064
+ UnmarkConnectableConnectors = __decorate([
3651
4065
  FExecutionRegister(UnmarkConnectableConnectorsRequest)
3652
- ], UnmarkConnectableConnectorsExecution);
3653
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnmarkConnectableConnectorsExecution, decorators: [{
4066
+ ], UnmarkConnectableConnectors);
4067
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnmarkConnectableConnectors, decorators: [{
3654
4068
  type: Injectable
3655
4069
  }] });
3656
4070
 
3657
4071
  /*
3658
- * This file exports all the connector-related executions that can be used in the FFlow domain.
4072
+ * This file exports all the connector-related executions that can be used in the FFlow domain.
3659
4073
  */
3660
4074
  const F_CONNECTORS_FEATURES = [
3661
- AddInputToStoreExecution,
3662
- AddOutletToStoreExecution,
3663
- AddOutputToStoreExecution,
3664
- FindClosestConnectorExecution,
4075
+ AddInputToStore,
4076
+ AddOutletToStore,
4077
+ AddOutputToStore,
4078
+ CalculateClosestConnector,
3665
4079
  FindConnectableConnectorUsingPriorityAndPositionExecution,
3666
4080
  GetAllCanBeConnectedSourceConnectorsAndRectsExecution,
3667
4081
  GetAllCanBeConnectedInputsAndRectsExecution,
3668
- GetConnectorAndRectExecution,
3669
- MarkConnectableConnectorsExecution,
3670
- RemoveInputFromStoreExecution,
4082
+ GetConnectorAndRect,
4083
+ MarkConnectableConnectors,
4084
+ RemoveInputFromStore,
3671
4085
  RemoveOutletFromStoreExecution,
3672
4086
  RemoveOutputFromStoreExecution,
3673
- UnmarkConnectableConnectorsExecution,
4087
+ UnmarkConnectableConnectors,
3674
4088
  ];
3675
4089
 
3676
4090
  class AddDndToStoreRequest {
@@ -3816,7 +4230,7 @@ class IsConnectionUnderNodeRequest {
3816
4230
  }
3817
4231
 
3818
4232
  let IsConnectionUnderNodeExecution = class IsConnectionUnderNodeExecution {
3819
- _fMediator = inject(FMediator);
4233
+ _mediator = inject(FMediator);
3820
4234
  _store = inject(FComponentsStore);
3821
4235
  handle(request) {
3822
4236
  const fOutputConnectors = this._getOutputConnectors(request.fNode);
@@ -3847,24 +4261,24 @@ let IsConnectionUnderNodeExecution = class IsConnectionUnderNodeExecution {
3847
4261
  _getOutputConnectionsId(connectors) {
3848
4262
  const connectorsId = this._getConnectorsId(connectors);
3849
4263
  return this._store.fConnections
3850
- .filter((x) => connectorsId.includes(x.fOutputId))
4264
+ .filter((x) => connectorsId.includes(x.fOutputId()))
3851
4265
  .map((x) => x.fId());
3852
4266
  }
3853
4267
  _getInputConnectionsId(connectors) {
3854
4268
  const connectorsId = this._getConnectorsId(connectors);
3855
4269
  return this._store.fConnections
3856
- .filter((x) => connectorsId.includes(x.fInputId))
4270
+ .filter((x) => connectorsId.includes(x.fInputId()))
3857
4271
  .map((x) => x.fId());
3858
4272
  }
3859
4273
  _getConnectorsId(connectors) {
3860
- return connectors.map((x) => x.fId);
4274
+ return connectors.map((x) => x.fId());
3861
4275
  }
3862
4276
  _calculateConnectionsUnderNode(fNode) {
3863
- const fNodeRect = this._fMediator.execute(new GetNormalizedConnectorRectRequest(fNode.hostElement));
4277
+ const fNodeRect = this._mediator.execute(new GetNormalizedConnectorRectRequest(fNode.hostElement));
3864
4278
  return this._store.fConnections.filter((x) => this._isConnectionHasIntersectionsWithNode(x, fNodeRect));
3865
4279
  }
3866
4280
  _isConnectionHasIntersectionsWithNode(fConnection, fNodeRect) {
3867
- return GetIntersections.getRoundedRectIntersectionsWithSVGPath(fConnection.fPath().hostElement, fNodeRect).length > 0;
4281
+ return (GetIntersections.getRoundedRectIntersectionsWithSVGPath(fConnection.fPath().hostElement, fNodeRect).length > 0);
3868
4282
  }
3869
4283
  _emitNodeIntersectedWithConnections(fNode, fConnections) {
3870
4284
  this._store.fDraggable?.fNodeIntersectedWithConnections.emit(new FNodeIntersectedWithConnections(fNode.fId(), fConnections.map((x) => x.fId())));
@@ -3882,7 +4296,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3882
4296
  class FDragStartedEvent {
3883
4297
  fEventType;
3884
4298
  fData;
3885
- constructor(fEventType, fData) {
4299
+ constructor(fEventType,
4300
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4301
+ fData) {
3886
4302
  this.fEventType = fEventType;
3887
4303
  this.fData = fData;
3888
4304
  }
@@ -3948,7 +4364,7 @@ class FCanvasDragHandler {
3948
4364
 
3949
4365
  let FCanvasMoveFinalizeExecution = class FCanvasMoveFinalizeExecution {
3950
4366
  _dragContext = inject(FDraggableDataContext);
3951
- handle(request) {
4367
+ handle(_request) {
3952
4368
  if (!this._isValid()) {
3953
4369
  return;
3954
4370
  }
@@ -4118,22 +4534,22 @@ class FCreateConnectionDragHandler {
4118
4534
  _fOutputOrOutlet;
4119
4535
  fEventType = 'create-connection';
4120
4536
  fData;
4121
- _fResult;
4122
- _fMediator;
4537
+ _result;
4538
+ _mediator;
4123
4539
  _store;
4124
4540
  _toConnectorRect = new RoundedRect();
4125
- get _fConnection() {
4541
+ get _connection() {
4126
4542
  return this._store.fTempConnection;
4127
4543
  }
4128
- get _fSnapConnection() {
4544
+ get _snapConnection() {
4129
4545
  return this._store.fSnapConnection;
4130
4546
  }
4131
4547
  _fOutputWithRect;
4132
4548
  _canBeConnectedInputs = [];
4133
4549
  constructor(_injector, _fOutputOrOutlet, _onPointerDownPosition) {
4134
4550
  this._fOutputOrOutlet = _fOutputOrOutlet;
4135
- this._fResult = _injector.get(FDragHandlerResult);
4136
- this._fMediator = _injector.get(FMediator);
4551
+ this._result = _injector.get(FDragHandlerResult);
4552
+ this._mediator = _injector.get(FMediator);
4137
4553
  this._store = _injector.get(FComponentsStore);
4138
4554
  this._toConnectorRect = RoundedRect.fromRect(RectExtensions.initialize(_onPointerDownPosition.x, _onPointerDownPosition.y));
4139
4555
  this.fData = {
@@ -4144,102 +4560,106 @@ class FCreateConnectionDragHandler {
4144
4560
  this._getAndMarkCanBeConnectedInputs();
4145
4561
  this._initializeSnapConnection();
4146
4562
  this._initializeConnectionForCreate();
4147
- this._fOutputWithRect = this._fMediator.execute(new GetConnectorAndRectRequest(this._fOutputOrOutlet));
4148
- this._fConnection.show();
4563
+ this._fOutputWithRect = this._mediator.execute(new GetConnectorAndRectRequest(this._fOutputOrOutlet));
4564
+ this._connection.show();
4149
4565
  this.onPointerMove(PointExtensions.initialize());
4150
- this._fResult.setData({
4566
+ this._result.setData({
4151
4567
  toConnectorRect: this._toConnectorRect,
4152
4568
  canBeConnectedInputs: this._canBeConnectedInputs,
4153
- fOutputId: this._fOutputOrOutlet.fId,
4569
+ fOutputId: this._fOutputOrOutlet.fId(),
4154
4570
  });
4155
4571
  }
4156
4572
  _getAndMarkCanBeConnectedInputs() {
4157
- this._canBeConnectedInputs = this._fMediator.execute(new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutputOrOutlet));
4158
- this._fMediator.execute(new MarkConnectableConnectorsRequest(this._canBeConnectedInputs.map((x) => x.fConnector)));
4573
+ this._canBeConnectedInputs = this._mediator.execute(new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutputOrOutlet));
4574
+ this._mediator.execute(new MarkConnectableConnectorsRequest(this._canBeConnectedInputs.map((x) => x.fConnector)));
4159
4575
  }
4160
4576
  _initializeSnapConnection() {
4161
- if (!this._fSnapConnection) {
4577
+ if (!this._snapConnection) {
4162
4578
  return;
4163
4579
  }
4164
- this._fSnapConnection.fOutputId = this._fOutputOrOutlet.fId;
4165
- this._fSnapConnection.initialize();
4580
+ this._snapConnection.fOutputId.set(this._fOutputOrOutlet.fId());
4581
+ this._snapConnection.initialize();
4166
4582
  }
4167
4583
  _initializeConnectionForCreate() {
4168
- this._fConnection.fOutputId = this._fOutputOrOutlet.fId;
4169
- this._fConnection.initialize();
4584
+ this._connection.fOutputId.set(this._fOutputOrOutlet.fId());
4585
+ this._connection.initialize();
4170
4586
  }
4171
4587
  onPointerMove(difference) {
4172
4588
  const fClosestInput = this._findClosestInput(difference);
4173
4589
  this._drawConnectionForCreate(this._toConnectorRect.addPoint(difference), fClosestInput?.fConnector.fConnectableSide || EFConnectableSide.TOP);
4174
- if (this._fSnapConnection) {
4590
+ if (this._snapConnection) {
4175
4591
  this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));
4176
4592
  }
4177
4593
  }
4178
4594
  _drawConnectionForCreate(toConnectorRect, fSide) {
4179
- const line = this._fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fOutputWithRect.fRect, toConnectorRect, this._fConnection.fBehavior, this._fOutputWithRect.fConnector.fConnectableSide, fSide));
4180
- this._fConnection.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fSide);
4181
- this._fConnection.redraw();
4595
+ const line = this._mediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fOutputWithRect.fRect, toConnectorRect, this._connection.fBehavior, this._fOutputWithRect.fConnector.fConnectableSide, fSide));
4596
+ this._connection.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fSide);
4597
+ this._connection.redraw();
4182
4598
  }
4183
4599
  _drawSnapConnection(fClosestInput) {
4184
4600
  if (fClosestInput) {
4185
- const line = this._fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fOutputWithRect.fRect, fClosestInput.fRect, this._fSnapConnection.fBehavior, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
4186
- this._fSnapConnection.show();
4187
- this._fSnapConnection.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide);
4188
- this._fSnapConnection.redraw();
4601
+ const line = this._mediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fOutputWithRect.fRect, fClosestInput.fRect, this._snapConnection.fBehavior, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
4602
+ this._snapConnection?.show();
4603
+ this._snapConnection?.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide);
4604
+ this._snapConnection?.redraw();
4189
4605
  }
4190
4606
  else {
4191
- this._fSnapConnection?.hide();
4607
+ this._snapConnection?.hide();
4192
4608
  }
4193
4609
  }
4194
4610
  _findClosestInput(difference) {
4195
- return this._fMediator.execute(new FindClosestConnectorRequest(this._toConnectorRect.addPoint(difference), this._canBeConnectedInputs));
4611
+ return this._mediator.execute(new CalculateClosestConnectorRequest(this._toConnectorRect.addPoint(difference), this._canBeConnectedInputs));
4196
4612
  }
4197
4613
  _getClosestInputForSnapConnection(fClosestInput) {
4198
- return fClosestInput && fClosestInput.distance < this._fSnapConnection.fSnapThreshold ? fClosestInput : undefined;
4614
+ return fClosestInput && fClosestInput.distance < this._snapConnection.fSnapThreshold
4615
+ ? fClosestInput
4616
+ : undefined;
4199
4617
  }
4200
4618
  onPointerUp() {
4201
- this._fConnection.redraw();
4202
- this._fConnection.hide();
4203
- this._fSnapConnection?.hide();
4204
- this._fMediator.execute(new UnmarkConnectableConnectorsRequest(this._canBeConnectedInputs.map((x) => x.fConnector)));
4619
+ this._connection.redraw();
4620
+ this._connection.hide();
4621
+ this._snapConnection?.hide();
4622
+ this._mediator.execute(new UnmarkConnectableConnectorsRequest(this._canBeConnectedInputs.map((x) => x.fConnector)));
4205
4623
  }
4206
4624
  }
4207
4625
 
4208
4626
  let FCreateConnectionFinalizeExecution = class FCreateConnectionFinalizeExecution {
4209
- _fResult = inject(FDragHandlerResult);
4210
- _fMediator = inject(FMediator);
4627
+ _result = inject(FDragHandlerResult);
4628
+ _mediator = inject(FMediator);
4211
4629
  _store = inject(FComponentsStore);
4212
4630
  _dragContext = inject(FDraggableDataContext);
4213
- get _fDragHandler() {
4631
+ get _dragHandler() {
4214
4632
  return this._dragContext.draggableItems[0];
4215
4633
  }
4216
4634
  handle(request) {
4217
4635
  if (!this._isValid()) {
4218
4636
  return;
4219
4637
  }
4220
- this.emitEvent(request.event);
4221
- this._fDragHandler.onPointerUp();
4638
+ this._emitEvent(request.event);
4639
+ this._dragHandler.onPointerUp();
4222
4640
  }
4223
4641
  _isValid() {
4224
4642
  return this._dragContext.draggableItems.some((x) => x instanceof FCreateConnectionDragHandler);
4225
4643
  }
4226
- getTargetOutput(output) {
4644
+ _getTargetOutput(output) {
4227
4645
  if (!output) {
4228
- throw new Error(`Output with fOutputId ${this._fResult.getData().fOutputId} not found. Make sure there is no f-connection to a non-existent fOutput.`);
4646
+ throw new Error(`Output with fOutputId ${this._result.getData().fOutputId} not found. Make sure there is no f-connection to a non-existent fOutput.`);
4229
4647
  }
4230
- return isNodeOutlet(output.hostElement) ? this._fMediator.execute(new GetFirstConnectableOutputRequest(output)) : output;
4648
+ return isNodeOutlet(output.hostElement)
4649
+ ? this._mediator.execute(new GetFirstConnectableOutputRequest(output))
4650
+ : output;
4231
4651
  }
4232
- getOutput() {
4233
- return this._store.fOutputs.find((x) => x.fId === this._fResult.getData().fOutputId);
4652
+ _getOutput() {
4653
+ return this._store.fOutputs.find((x) => x.fId() === this._result.getData().fOutputId);
4234
4654
  }
4235
- getOutlet() {
4236
- return this._store.fOutlets.find((x) => x.fId === this._fResult.getData().fOutputId);
4655
+ _getOutlet() {
4656
+ return this._store.fOutlets.find((x) => x.fId() === this._result.getData().fOutputId);
4237
4657
  }
4238
- emitEvent(event) {
4239
- this._store.fDraggable?.fCreateConnection.emit(new FCreateConnectionEvent(this.getTargetOutput(this.getOutput() || this.getOutlet()).fId, this._getInputUnderPointer(event)?.fId, event.getPosition()));
4658
+ _emitEvent(event) {
4659
+ this._store.fDraggable?.fCreateConnection.emit(new FCreateConnectionEvent(this._getTargetOutput(this._getOutput() || this._getOutlet()).fId(), this._getInputUnderPointer(event)?.fId(), event.getPosition()));
4240
4660
  }
4241
4661
  _getInputUnderPointer(event) {
4242
- return this._fMediator.execute(new FindConnectableConnectorUsingPriorityAndPositionRequest(event.getPosition(), this._fResult.getData().canBeConnectedInputs));
4662
+ return this._mediator.execute(new FindConnectableConnectorUsingPriorityAndPositionRequest(event.getPosition(), this._result.getData().canBeConnectedInputs));
4243
4663
  }
4244
4664
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4245
4665
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFinalizeExecution });
@@ -4498,7 +4918,7 @@ class FReassignTargetDragHandler {
4498
4918
  if (!snapConnection) {
4499
4919
  return;
4500
4920
  }
4501
- snapConnection.fOutputId = this._connection.fOutputId;
4921
+ snapConnection.fOutputId.set(this._connection.fOutputId());
4502
4922
  snapConnection.initialize();
4503
4923
  }
4504
4924
  onPointerMove(difference) {
@@ -4510,7 +4930,7 @@ class FReassignTargetDragHandler {
4510
4930
  }
4511
4931
  }
4512
4932
  _findClosestConnector(point, connectors) {
4513
- return this._mediator.execute(new FindClosestConnectorRequest(point, connectors));
4933
+ return this._mediator.execute(new CalculateClosestConnectorRequest(point, connectors));
4514
4934
  }
4515
4935
  _drawConnection(newPoint, fSide) {
4516
4936
  const line = this._calculateNewLine(newPoint, fSide);
@@ -4568,7 +4988,7 @@ class FReassignSourceDragHandler {
4568
4988
  }
4569
4989
  markConnectableConnector() {
4570
4990
  this._connectableConnectors = this._mediator.execute(new GetAllCanBeConnectedSourceConnectorsAndRectsRequest(this._targetConnector));
4571
- const isExistCurrentSourceConnector = this._connectableConnectors.some((x) => x.fConnector.fId === this._sourceConnector.fId);
4991
+ const isExistCurrentSourceConnector = this._connectableConnectors.some((x) => x.fConnector.fId() === this._sourceConnector.fId());
4572
4992
  if (!isExistCurrentSourceConnector) {
4573
4993
  this._connectableConnectors.push(this._sourceConnectorAndRect);
4574
4994
  }
@@ -4579,7 +4999,7 @@ class FReassignSourceDragHandler {
4579
4999
  if (!snapConnection) {
4580
5000
  return;
4581
5001
  }
4582
- snapConnection.fInputId = this._connection.fInputId;
5002
+ snapConnection.fInputId.set(this._connection.fInputId());
4583
5003
  snapConnection.initialize();
4584
5004
  }
4585
5005
  onPointerMove(difference) {
@@ -4591,7 +5011,7 @@ class FReassignSourceDragHandler {
4591
5011
  }
4592
5012
  }
4593
5013
  _findClosestConnector(point, connectors) {
4594
- return this._mediator.execute(new FindClosestConnectorRequest(point, connectors));
5014
+ return this._mediator.execute(new CalculateClosestConnectorRequest(point, connectors));
4595
5015
  }
4596
5016
  _drawConnection(newPoint, fSide) {
4597
5017
  const line = this._calculateNewLine(newPoint, fSide);
@@ -4628,54 +5048,56 @@ class FReassignConnectionDragHandler {
4628
5048
  _isTargetDragHandle;
4629
5049
  fEventType = 'reassign-connection';
4630
5050
  fData;
4631
- _fResult;
4632
- _fMediator;
5051
+ _result;
5052
+ _mediator;
4633
5053
  _store;
4634
- get _fSnapConnection() {
5054
+ get _snapConnection() {
4635
5055
  return this._store.fSnapConnection;
4636
5056
  }
4637
5057
  get _sourceConnector() {
4638
- const result = this._store.fOutputs.find((x) => x.fId === this._connection.fOutputId);
5058
+ const result = this._store.fOutputs.find((x) => x.fId() === this._connection.fOutputId());
4639
5059
  if (!result) {
4640
5060
  throw new Error('Connection output not found');
4641
5061
  }
4642
5062
  return result;
4643
5063
  }
4644
5064
  get _targetConnector() {
4645
- const result = this._store.fInputs.find((x) => x.fId === this._connection.fInputId);
5065
+ const result = this._store.fInputs.find((x) => x.fId() === this._connection.fInputId());
4646
5066
  if (!result) {
4647
5067
  throw new Error('Connection input not found');
4648
5068
  }
4649
5069
  return result;
4650
5070
  }
4651
5071
  get _sourceConnectorAndRect() {
4652
- return this._fMediator.execute(new GetConnectorAndRectRequest(this._sourceConnector));
5072
+ return this._mediator.execute(new GetConnectorAndRectRequest(this._sourceConnector));
4653
5073
  }
4654
5074
  get _targetConnectorAndRect() {
4655
- return this._fMediator.execute(new GetConnectorAndRectRequest(this._targetConnector));
5075
+ return this._mediator.execute(new GetConnectorAndRectRequest(this._targetConnector));
4656
5076
  }
4657
5077
  _reassignHandler;
4658
5078
  constructor(_injector, _connection, _isTargetDragHandle) {
4659
5079
  this._connection = _connection;
4660
5080
  this._isTargetDragHandle = _isTargetDragHandle;
4661
- this._fResult = _injector.get(FDragHandlerResult);
4662
- this._fMediator = _injector.get(FMediator);
5081
+ this._result = _injector.get(FDragHandlerResult);
5082
+ this._mediator = _injector.get(FMediator);
4663
5083
  this._store = _injector.get(FComponentsStore);
4664
5084
  this.fData = {
4665
5085
  fConnectionId: this._connection.fId(),
4666
5086
  };
4667
- this._reassignHandler = this._isTargetDragHandle ? this._targetDragHandler() : this._sourceDragHandler();
5087
+ this._reassignHandler = this._isTargetDragHandle
5088
+ ? this._targetDragHandler()
5089
+ : this._sourceDragHandler();
4668
5090
  }
4669
5091
  _sourceDragHandler() {
4670
- return new FReassignSourceDragHandler(this._fMediator, this._connection, this._sourceConnectorAndRect, this._targetConnectorAndRect);
5092
+ return new FReassignSourceDragHandler(this._mediator, this._connection, this._sourceConnectorAndRect, this._targetConnectorAndRect);
4671
5093
  }
4672
5094
  _targetDragHandler() {
4673
- return new FReassignTargetDragHandler(this._fMediator, this._connection, this._sourceConnectorAndRect, this._targetConnectorAndRect);
5095
+ return new FReassignTargetDragHandler(this._mediator, this._connection, this._sourceConnectorAndRect, this._targetConnectorAndRect);
4674
5096
  }
4675
5097
  prepareDragSequence() {
4676
5098
  this._reassignHandler.markConnectableConnector();
4677
- this._reassignHandler.initializeSnapConnection(this._fSnapConnection);
4678
- this._fResult.setData({
5099
+ this._reassignHandler.initializeSnapConnection(this._snapConnection);
5100
+ this._result.setData({
4679
5101
  isTargetDragHandle: this._isTargetDragHandle,
4680
5102
  sourceConnectorRect: roundedRectFromPoint(this._connection.line.point1),
4681
5103
  targetConnectorRect: roundedRectFromPoint(this._connection.line.point2),
@@ -4745,10 +5167,10 @@ let FReassignConnectionFinalizeExecution = class FReassignConnectionFinalizeExec
4745
5167
  }
4746
5168
  _isReassignToDifferentConnector(fConnector) {
4747
5169
  if (!this._dragResult.getData().isTargetDragHandle) {
4748
- return this._dragResult.getData().fConnection.fInputId !== fConnector.fId;
5170
+ return this._dragResult.getData().fConnection.fInputId() !== fConnector.fId();
4749
5171
  }
4750
5172
  else {
4751
- return this._dragResult.getData().fConnection.fOutputId !== fConnector.fId;
5173
+ return this._dragResult.getData().fConnection.fOutputId() !== fConnector.fId();
4752
5174
  }
4753
5175
  }
4754
5176
  _emitReassignConnectionEvent(event, fConnector) {
@@ -4757,7 +5179,7 @@ let FReassignConnectionFinalizeExecution = class FReassignConnectionFinalizeExec
4757
5179
  _getEventData(event, fConnector) {
4758
5180
  const fConnection = this._dragResult.getData().fConnection;
4759
5181
  const isTargetDragHandle = this._dragResult.getData().isTargetDragHandle;
4760
- return new FReassignConnectionEvent(fConnection.fId(), !isTargetDragHandle, isTargetDragHandle, fConnection.fOutputId, !isTargetDragHandle ? fConnector?.fId : undefined, fConnection.fInputId, isTargetDragHandle ? fConnector?.fId : undefined, event.getPosition());
5182
+ return new FReassignConnectionEvent(fConnection.fId(), !isTargetDragHandle, isTargetDragHandle, fConnection.fOutputId(), !isTargetDragHandle ? fConnector?.fId() : undefined, fConnection.fInputId(), isTargetDragHandle ? fConnector?.fId() : undefined, event.getPosition());
4761
5183
  }
4762
5184
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FReassignConnectionFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4763
5185
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FReassignConnectionFinalizeExecution });
@@ -4946,14 +5368,14 @@ class BaseConnectionDragHandler {
4946
5368
  _fOutputWithRect;
4947
5369
  _fInputWithRect;
4948
5370
  get _fOutput() {
4949
- const result = this._store.fOutputs.find((x) => x.fId === this.fConnection.fOutputId);
5371
+ const result = this._store.fOutputs.find((x) => x.fId() === this.fConnection.fOutputId());
4950
5372
  if (!result) {
4951
5373
  throw new Error(this._connectorNotFoundPrefix(`fOutput with id ${this.fConnection.fOutputId} not found`));
4952
5374
  }
4953
5375
  return result;
4954
5376
  }
4955
5377
  get _fInput() {
4956
- const result = this._store.fInputs.find((x) => x.fId === this.fConnection.fInputId);
5378
+ const result = this._store.fInputs.find((x) => x.fId() === this.fConnection.fInputId());
4957
5379
  if (!result) {
4958
5380
  throw new Error(this._connectorNotFoundPrefix(`fInput with id ${this.fConnection.fInputId} not found`));
4959
5381
  }
@@ -5306,13 +5728,6 @@ class CalculateDragLimitsRequest {
5306
5728
  }
5307
5729
  }
5308
5730
 
5309
- function infinityMinMax() {
5310
- return {
5311
- min: { x: -Infinity, y: -Infinity },
5312
- max: { x: Infinity, y: Infinity },
5313
- };
5314
- }
5315
-
5316
5731
  class GetNodeBoundingIncludePaddingsRequest {
5317
5732
  nodeOrGroup;
5318
5733
  childrenPaddings;
@@ -5531,12 +5946,12 @@ let CreateInputConnectionHandlerAndSetToNodeHandler = class CreateInputConnectio
5531
5946
  }
5532
5947
  _getInputConnections(nodeOrGroup) {
5533
5948
  const ids = new Set(this._getNodeInputIds(nodeOrGroup));
5534
- return this._connections.filter((x) => ids.has(x.fInputId));
5949
+ return this._connections.filter((x) => ids.has(x.fInputId()));
5535
5950
  }
5536
5951
  _getNodeInputIds(nodeOrGroup) {
5537
5952
  return this._store.fInputs
5538
5953
  .filter((x) => nodeOrGroup.isContains(x.hostElement))
5539
- .map((x) => x.fId);
5954
+ .map((x) => x.fId());
5540
5955
  }
5541
5956
  _createAndSetConnectionToNodeHandler(connection, request) {
5542
5957
  let connectionHandler = this._getExistingConnectionHandler(request.existingConnectionHandlers, connection);
@@ -5551,7 +5966,7 @@ let CreateInputConnectionHandlerAndSetToNodeHandler = class CreateInputConnectio
5551
5966
  }
5552
5967
  _createConnectionHandler(outputIds, connection) {
5553
5968
  let result;
5554
- if (outputIds.includes(connection.fOutputId)) {
5969
+ if (outputIds.includes(connection.fOutputId())) {
5555
5970
  result = new SourceTargetConnectionDragHandler(this._injector, connection);
5556
5971
  }
5557
5972
  else {
@@ -5594,12 +6009,12 @@ let CreateOutputConnectionHandlerAndSetToNodeHandler = class CreateOutputConnect
5594
6009
  }
5595
6010
  _getOutputConnections(nodeOrGroup) {
5596
6011
  const ids = new Set(this._getNodeOutputIds(nodeOrGroup));
5597
- return this._connections.filter((x) => ids.has(x.fOutputId));
6012
+ return this._connections.filter((x) => ids.has(x.fOutputId()));
5598
6013
  }
5599
6014
  _getNodeOutputIds(nodeOrGroup) {
5600
6015
  return this._store.fOutputs
5601
6016
  .filter((x) => nodeOrGroup.isContains(x.hostElement))
5602
- .map((x) => x.fId);
6017
+ .map((x) => x.fId());
5603
6018
  }
5604
6019
  _createAndSetConnectionToNodeHandler(connection, request) {
5605
6020
  let connectionHandler = this._getExistingConnectionHandler(request.existingConnectionHandlers, connection);
@@ -5614,7 +6029,7 @@ let CreateOutputConnectionHandlerAndSetToNodeHandler = class CreateOutputConnect
5614
6029
  }
5615
6030
  _createConnectionHandler(inputIds, connection) {
5616
6031
  let result;
5617
- if (inputIds.includes(connection.fInputId)) {
6032
+ if (inputIds.includes(connection.fInputId())) {
5618
6033
  result = new SourceTargetConnectionDragHandler(this._injector, connection);
5619
6034
  }
5620
6035
  else {
@@ -5665,8 +6080,7 @@ let CreateDragModelFromSelection = class CreateDragModelFromSelection {
5665
6080
  .filter((x) => !!x);
5666
6081
  }
5667
6082
  _findNode(hostElement) {
5668
- return this._store.fNodes
5669
- .find(n => n.isContains(hostElement));
6083
+ return this._store.fNodes.find((n) => n.isContains(hostElement));
5670
6084
  }
5671
6085
  _collectSelectedAndAllChildren(selectedNodesAndGroups) {
5672
6086
  return selectedNodesAndGroups.reduce((result, x) => {
@@ -5684,15 +6098,13 @@ let CreateDragModelFromSelection = class CreateDragModelFromSelection {
5684
6098
  return flatMap(fNodes, (fNode) => this._getNodeOutputIds(fNode));
5685
6099
  }
5686
6100
  _getNodeOutputIds(fNode) {
5687
- return this._store.fOutputs.filter((x) => fNode.fId() === x.fNodeId)
5688
- .map((x) => x.fId);
6101
+ return this._store.fOutputs.filter((x) => fNode.fId() === x.fNodeId).map((x) => x.fId());
5689
6102
  }
5690
6103
  _getAllInputIds(fNodes) {
5691
6104
  return flatMap(fNodes, (fNode) => this._getNodeInputIds(fNode));
5692
6105
  }
5693
6106
  _getNodeInputIds(fNode) {
5694
- return this._store.fInputs.filter((x) => fNode.fId() === x.fNodeId)
5695
- .map((x) => x.fId);
6107
+ return this._store.fInputs.filter((x) => fNode.fId() === x.fNodeId).map((x) => x.fId());
5696
6108
  }
5697
6109
  _setConnectionsHandlersToNodes(dragHandlers, outputIds, inputIds) {
5698
6110
  const existingConnectionHandlers = [];
@@ -5701,7 +6113,7 @@ let CreateDragModelFromSelection = class CreateDragModelFromSelection {
5701
6113
  this._mediator.execute(new CreateInputConnectionHandlerAndSetToNodeHandlerRequest(x, outputIds, existingConnectionHandlers));
5702
6114
  });
5703
6115
  }
5704
- _createSummaryDragHandler({ roots, list }) {
6116
+ _createSummaryDragHandler({ roots, list, }) {
5705
6117
  return this._mediator.execute(new CreateSummaryDragHandlerRequest(roots, list));
5706
6118
  }
5707
6119
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CreateDragModelFromSelection, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -7575,7 +7987,7 @@ class FNodeRotatePreparationRequest {
7575
7987
  }
7576
7988
 
7577
7989
  let FNodeRotatePreparationExecution = class FNodeRotatePreparationExecution {
7578
- _fMediator = inject(FMediator);
7990
+ _mediator = inject(FMediator);
7579
7991
  _store = inject(FComponentsStore);
7580
7992
  _dragContext = inject(FDraggableDataContext);
7581
7993
  _injector = inject(Injector);
@@ -7593,45 +8005,57 @@ let FNodeRotatePreparationExecution = class FNodeRotatePreparationExecution {
7593
8005
  this._selectAndUpdateNodeLayer();
7594
8006
  this._dragContext.onPointerDownScale = this._transform.scale;
7595
8007
  this._dragContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
7596
- .elementTransform(this._fHost).div(this._transform.scale);
8008
+ .elementTransform(this._fHost)
8009
+ .div(this._transform.scale);
7597
8010
  this._dragContext.draggableItems = [
7598
8011
  new FNodeRotateDragHandler(this._injector, this._fNode, this._calculateOutputConnectionsDragHandlers(), this._calculateInputConnectionsDragHandlers()),
7599
8012
  ];
7600
8013
  }
7601
8014
  _isValid(request) {
7602
- return this._dragContext.isEmpty()
7603
- && isRotateHandle(request.event.targetElement)
7604
- && this._isNodeCanBeDragged(this._getNode(request.event.targetElement));
8015
+ return (this._dragContext.isEmpty() &&
8016
+ isRotateHandle(request.event.targetElement) &&
8017
+ this._isNodeCanBeDragged(this._getNode(request.event.targetElement)));
7605
8018
  }
7606
8019
  _isNodeCanBeDragged(fNode) {
7607
8020
  return !!fNode && !fNode.fDraggingDisabled();
7608
8021
  }
7609
8022
  _getNode(element) {
7610
- this._fNode = this._store
7611
- .fNodes.find(x => x.isContains(element));
8023
+ this._fNode = this._store.fNodes.find((x) => x.isContains(element));
7612
8024
  return this._fNode;
7613
8025
  }
7614
8026
  _isValidTrigger(request) {
7615
8027
  return isValidEventTrigger(request.event.originalEvent, request.fTrigger);
7616
8028
  }
7617
8029
  _selectAndUpdateNodeLayer() {
7618
- this._fMediator.execute(new SelectAndUpdateNodeLayerRequest(this._fNode));
8030
+ this._mediator.execute(new SelectAndUpdateNodeLayerRequest(this._fNode));
7619
8031
  }
7620
8032
  _calculateInputConnectionsDragHandlers() {
7621
- return this._fMediator.execute(new CalculateInputConnectionsRequest(this._fNode)).map((x) => {
7622
- const connector = this._store.fInputs.find((y) => y.fId === x.fInputId).hostElement;
8033
+ return this._mediator
8034
+ .execute(new CalculateInputConnectionsRequest(this._fNode))
8035
+ .map((x) => {
8036
+ const connector = this._store.fInputs.find((y) => y.fId() === x.fInputId())?.hostElement;
8037
+ if (!connector) {
8038
+ throw new Error(`Connector with id ${x.fInputId()} not found`);
8039
+ }
7623
8040
  return {
7624
8041
  connection: new TargetConnectionDragHandler(this._injector, x),
7625
- connector: this._fMediator.execute(new GetNormalizedElementRectRequest(connector)).gravityCenter,
8042
+ connector: this._mediator.execute(new GetNormalizedElementRectRequest(connector))
8043
+ .gravityCenter,
7626
8044
  };
7627
8045
  });
7628
8046
  }
7629
8047
  _calculateOutputConnectionsDragHandlers() {
7630
- return this._fMediator.execute(new CalculateOutputConnectionsRequest(this._fNode)).map((x) => {
7631
- const connector = this._store.fOutputs.find((y) => y.fId === x.fOutputId).hostElement;
8048
+ return this._mediator
8049
+ .execute(new CalculateOutputConnectionsRequest(this._fNode))
8050
+ .map((x) => {
8051
+ const connector = this._store.fOutputs.find((y) => y.fId() === x.fOutputId())?.hostElement;
8052
+ if (!connector) {
8053
+ throw new Error(`Connector with id ${x.fOutputId()} not found`);
8054
+ }
7632
8055
  return {
7633
8056
  connection: new SourceConnectionDragHandler(this._injector, x),
7634
- connector: this._fMediator.execute(new GetNormalizedElementRectRequest(connector)).gravityCenter,
8057
+ connector: this._mediator.execute(new GetNormalizedElementRectRequest(connector))
8058
+ .gravityCenter,
7635
8059
  };
7636
8060
  });
7637
8061
  }
@@ -8157,7 +8581,7 @@ function isFakeTouchstartFromScreenReader(event) {
8157
8581
 
8158
8582
  class FDraggableBase extends DragAndDropBase {
8159
8583
  constructor(ngZone) {
8160
- super(ngZone);
8584
+ super(ngZone || undefined);
8161
8585
  }
8162
8586
  }
8163
8587
 
@@ -8220,15 +8644,12 @@ function isDragBlocker(element) {
8220
8644
  // │ To Start │
8221
8645
  // └──────────────────────────────────────┘
8222
8646
  class FDraggableDirective extends FDraggableBase {
8223
- _elementReference = inject(ElementRef);
8224
- _fResult = inject(FDragHandlerResult);
8647
+ hostElement = inject(ElementRef).nativeElement;
8648
+ _result = inject(FDragHandlerResult);
8225
8649
  _mediator = inject(FMediator);
8226
8650
  _platform = inject(PlatformService);
8227
8651
  _browser = inject(BrowserService);
8228
8652
  disabled = false;
8229
- get hostElement() {
8230
- return this._elementReference.nativeElement;
8231
- }
8232
8653
  fMultiSelectTrigger = (event) => {
8233
8654
  return this._platform.getOS() === EOperationSystem.MAC_OS ? event.metaKey : event.ctrlKey;
8234
8655
  };
@@ -8275,10 +8696,8 @@ class FDraggableDirective extends FDraggableBase {
8275
8696
  fDragEnded = new EventEmitter();
8276
8697
  _beforePlugins;
8277
8698
  _afterPlugins;
8278
- constructor(
8279
- // eslint-disable-next-line @angular-eslint/prefer-inject
8280
- ngZone) {
8281
- super(ngZone);
8699
+ constructor() {
8700
+ super(inject(NgZone, { optional: true }));
8282
8701
  }
8283
8702
  ngOnInit() {
8284
8703
  this._mediator.execute(new AddDndToStoreRequest(this));
@@ -8290,7 +8709,7 @@ class FDraggableDirective extends FDraggableBase {
8290
8709
  if (isDragBlocker(event.targetElement)) {
8291
8710
  return false;
8292
8711
  }
8293
- this._fResult.clear();
8712
+ this._result.clear();
8294
8713
  this._mediator.execute(new InitializeDragSequenceRequest());
8295
8714
  this._beforePlugins.forEach((p) => p.onPointerDown?.(event));
8296
8715
  this._mediator.execute(new FSingleSelectRequest(event, this.fMultiSelectTrigger));
@@ -8335,13 +8754,13 @@ class FDraggableDirective extends FDraggableBase {
8335
8754
  }
8336
8755
  finalizeDragSequence() {
8337
8756
  this._mediator.execute(new EmitSelectionChangeEventRequest());
8338
- this._fResult.clear();
8757
+ this._result.clear();
8339
8758
  }
8340
8759
  ngOnDestroy() {
8341
8760
  this._mediator.execute(new RemoveDndFromStoreRequest());
8342
8761
  super.unsubscribe();
8343
8762
  }
8344
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDraggableDirective, deps: [{ token: NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
8763
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
8345
8764
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FDraggableDirective, selector: "f-flow[fDraggable]", inputs: { disabled: { classPropertyName: "disabled", publicName: "fDraggableDisabled", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, fMultiSelectTrigger: { classPropertyName: "fMultiSelectTrigger", publicName: "fMultiSelectTrigger", isSignal: false, isRequired: false, transformFunction: null }, fReassignConnectionTrigger: { classPropertyName: "fReassignConnectionTrigger", publicName: "fReassignConnectionTrigger", isSignal: false, isRequired: false, transformFunction: null }, fCreateConnectionTrigger: { classPropertyName: "fCreateConnectionTrigger", publicName: "fCreateConnectionTrigger", isSignal: false, isRequired: false, transformFunction: null }, fNodeResizeTrigger: { classPropertyName: "fNodeResizeTrigger", publicName: "fNodeResizeTrigger", isSignal: false, isRequired: false, transformFunction: null }, fNodeRotateTrigger: { classPropertyName: "fNodeRotateTrigger", publicName: "fNodeRotateTrigger", isSignal: false, isRequired: false, transformFunction: null }, fNodeMoveTrigger: { classPropertyName: "fNodeMoveTrigger", publicName: "fNodeMoveTrigger", isSignal: false, isRequired: false, transformFunction: null }, fCanvasMoveTrigger: { classPropertyName: "fCanvasMoveTrigger", publicName: "fCanvasMoveTrigger", isSignal: false, isRequired: false, transformFunction: null }, fExternalItemTrigger: { classPropertyName: "fExternalItemTrigger", publicName: "fExternalItemTrigger", isSignal: false, isRequired: false, transformFunction: null }, fEmitOnNodeIntersect: { classPropertyName: "fEmitOnNodeIntersect", publicName: "fEmitOnNodeIntersect", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, vCellSize: { classPropertyName: "vCellSize", publicName: "vCellSize", isSignal: true, isRequired: false, transformFunction: null }, hCellSize: { classPropertyName: "hCellSize", publicName: "hCellSize", isSignal: true, isRequired: false, transformFunction: null }, fCellSizeWhileDragging: { classPropertyName: "fCellSizeWhileDragging", publicName: "fCellSizeWhileDragging", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fSelectionChange: "fSelectionChange", fNodeIntersectedWithConnections: "fNodeIntersectedWithConnections", fCreateNode: "fCreateNode", fMoveNodes: "fMoveNodes", fReassignConnection: "fReassignConnection", fCreateConnection: "fCreateConnection", fDropToGroup: "fDropToGroup", fDragStarted: "fDragStarted", fDragEnded: "fDragEnded" }, providers: [FDragHandlerResult], queries: [{ propertyName: "_beforePlugins", predicate: F_BEFORE_MAIN_PLUGIN, descendants: true }, { propertyName: "_afterPlugins", predicate: F_AFTER_MAIN_PLUGIN, descendants: true }], exportAs: ["fDraggable"], usesInheritance: true, ngImport: i0 });
8346
8765
  }
8347
8766
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDraggableDirective, decorators: [{
@@ -8351,12 +8770,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
8351
8770
  exportAs: 'fDraggable',
8352
8771
  providers: [FDragHandlerResult],
8353
8772
  }]
8354
- }], ctorParameters: () => [{ type: undefined, decorators: [{
8355
- type: Inject,
8356
- args: [NgZone]
8357
- }, {
8358
- type: Optional
8359
- }] }], propDecorators: { disabled: [{
8773
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
8360
8774
  type: Input,
8361
8775
  args: [{ transform: booleanAttribute, alias: 'fDraggableDisabled' }]
8362
8776
  }], fMultiSelectTrigger: [{
@@ -9827,14 +10241,14 @@ class GetFlowStateConnectionsRequest {
9827
10241
  */
9828
10242
  let GetFlowStateConnectionsExecution = class GetFlowStateConnectionsExecution {
9829
10243
  _store = inject(FComponentsStore);
9830
- handle(request) {
10244
+ handle(_request) {
9831
10245
  return this._store.fConnections.map(this._mapToConnectionState);
9832
10246
  }
9833
10247
  _mapToConnectionState(x) {
9834
10248
  return {
9835
10249
  id: x.fId(),
9836
- fOutputId: x.fOutputId,
9837
- fInputId: x.fInputId,
10250
+ fOutputId: x.fOutputId(),
10251
+ fInputId: x.fInputId(),
9838
10252
  fType: x.fType,
9839
10253
  fBehavior: x.fBehavior,
9840
10254
  isSelected: x.isSelected(),
@@ -9864,7 +10278,9 @@ class GetFlowStateNodesRequest {
9864
10278
  let GetFlowStateNodesExecution = class GetFlowStateNodesExecution {
9865
10279
  _store = inject(FComponentsStore);
9866
10280
  handle(request) {
9867
- return this._store.fNodes.filter((x) => x instanceof request.type).map((x) => {
10281
+ return this._store.fNodes
10282
+ .filter((x) => x instanceof request.type)
10283
+ .map((x) => {
9868
10284
  return {
9869
10285
  id: x.fId(),
9870
10286
  parent: x.fParentId(),
@@ -9878,17 +10294,21 @@ let GetFlowStateNodesExecution = class GetFlowStateNodesExecution {
9878
10294
  });
9879
10295
  }
9880
10296
  _getOutputs(hostElement) {
9881
- return this._store.fOutputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {
10297
+ return this._store.fOutputs
10298
+ .filter((x) => hostElement.contains(x.hostElement))
10299
+ .map((x) => {
9882
10300
  return {
9883
- id: x.fId,
10301
+ id: x.fId(),
9884
10302
  fConnectableSide: x.fConnectableSide,
9885
10303
  };
9886
10304
  });
9887
10305
  }
9888
10306
  _getInputs(hostElement) {
9889
- return this._store.fInputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {
10307
+ return this._store.fInputs
10308
+ .filter((x) => hostElement.contains(x.hostElement))
10309
+ .map((x) => {
9890
10310
  return {
9891
- id: x.fId,
10311
+ id: x.fId(),
9892
10312
  fConnectableSide: x.fConnectableSide,
9893
10313
  };
9894
10314
  });
@@ -10080,13 +10500,10 @@ let CalculateInputConnections = class CalculateInputConnections {
10080
10500
  return this._calculateConnections(new Set(this._calculateConnectors(request.fNode)));
10081
10501
  }
10082
10502
  _calculateConnectors(fNode) {
10083
- return this._store.fInputs
10084
- .filter((x) => fNode.isContains(x.hostElement))
10085
- .map((x) => x.fId);
10503
+ return this._store.fInputs.filter((x) => fNode.isContains(x.hostElement)).map((x) => x.fId());
10086
10504
  }
10087
10505
  _calculateConnections(ids) {
10088
- return this._store.fConnections
10089
- .filter((x) => ids.has(x.fInputId));
10506
+ return this._store.fConnections.filter((x) => ids.has(x.fInputId()));
10090
10507
  }
10091
10508
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateInputConnections, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10092
10509
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateInputConnections });
@@ -10180,13 +10597,10 @@ let CalculateOutputConnections = class CalculateOutputConnections {
10180
10597
  return this._calculateConnections(new Set(this._calculateConnectors(request.fNode)));
10181
10598
  }
10182
10599
  _calculateConnectors(fNode) {
10183
- return this._store.fOutputs
10184
- .filter((x) => fNode.isContains(x.hostElement))
10185
- .map((x) => x.fId);
10600
+ return this._store.fOutputs.filter((x) => fNode.isContains(x.hostElement)).map((x) => x.fId());
10186
10601
  }
10187
10602
  _calculateConnections(ids) {
10188
- return this._store.fConnections
10189
- .filter((x) => ids.has(x.fOutputId));
10603
+ return this._store.fConnections.filter((x) => ids.has(x.fOutputId()));
10190
10604
  }
10191
10605
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateOutputConnections, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10192
10606
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateOutputConnections });
@@ -11798,5 +12212,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
11798
12212
  * Generated bundle index. Do not edit.
11799
12213
  */
11800
12214
 
11801
- export { AddBackgroundToStoreExecution, AddBackgroundToStoreRequest, AddCanvasToStoreExecution, AddCanvasToStoreRequest, AddConnectionForCreateToStoreExecution, AddConnectionForCreateToStoreRequest, AddConnectionMarkerToStoreExecution, AddConnectionMarkerToStoreRequest, AddConnectionToStoreExecution, AddConnectionToStoreRequest, AddDndToStoreExecution, AddDndToStoreRequest, AddFlowToStoreExecution, AddFlowToStoreRequest, AddInputToStoreExecution, AddInputToStoreRequest, AddLineAlignmentToStoreExecution, AddLineAlignmentToStoreRequest, AddNodeToStore, AddNodeToStoreRequest, AddOutletToStoreExecution, AddOutletToStoreRequest, AddOutputToStoreExecution, AddOutputToStoreRequest, AddPatternToBackgroundExecution, AddPatternToBackgroundRequest, AddSnapConnectionToStoreExecution, AddSnapConnectionToStoreRequest, AddZoomToStoreExecution, AddZoomToStoreRequest, ApplyChildResizeConstraints, ApplyChildResizeConstraintsRequest, ApplyParentResizeConstraints, ApplyParentResizeConstraintsRequest, BaseConnectionDragHandler, BuildDragHierarchy, BuildDragHierarchyRequest, BuildDragHierarchyResponse, CANVAS_PROVIDERS, COMMON_PROVIDERS, CONNECTIONS_PROVIDERS, CONNECTION_GRADIENT, CONNECTION_PATH, CONNECTION_TEXT, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest, CalculateChangedRectFromDifference, CalculateChangedRectFromDifferenceRequest, CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, CalculateConnectionLineByBehaviorExecution, CalculateConnectionLineByBehaviorRequest, CalculateDirectChildrenUnionRect, CalculateDirectChildrenUnionRectRequest, CalculateDragLimits, CalculateDragLimitsRequest, CalculateFlowPointFromMinimapPointExecution, CalculateFlowPointFromMinimapPointRequest, CalculateInputConnections, CalculateInputConnectionsRequest, CalculateNodesBoundingBox, CalculateNodesBoundingBoxNormalizedPosition, CalculateNodesBoundingBoxNormalizedPositionRequest, CalculateNodesBoundingBoxRequest, CalculateOutputConnections, CalculateOutputConnectionsRequest, CalculateResizeLimits, CalculateResizeLimitsRequest, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, CreateConnectionMarkersExecution, CreateConnectionMarkersRequest, CreateDragModelFromSelection, CreateDragModelFromSelectionRequest, CreateInputConnectionHandlerAndSetToNodeHandler, CreateInputConnectionHandlerAndSetToNodeHandlerRequest, CreateOutputConnectionHandlerAndSetToNodeHandler, CreateOutputConnectionHandlerAndSetToNodeHandlerRequest, CreateSnapLines, CreateSnapLinesRequest, CreateSummaryDragHandler, CreateSummaryDragHandlerRequest, DRAG_AND_DROP_COMMON_PROVIDERS, Deprecated, DragAndDropBase, DragConstraintPipeline, DropToGroupFinalize, DropToGroupFinalizeRequest, DropToGroupPreparation, DropToGroupPreparationRequest, EFConnectableSide, EFConnectionBehavior, EFConnectionType, EFMarkerType, EFResizeHandleType, EFZoomDirection, EmitSelectionChangeEventExecution, EmitSelectionChangeEventRequest, EndDragSequenceExecution, EndDragSequenceRequest, EventExtensions, ExternalRectConstraint, FBackgroundBase, FBackgroundComponent, FBezierPathBuilder, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FCanvasDragHandler, FCanvasMoveFinalizeExecution, FCanvasMoveFinalizeRequest, FCanvasMovePreparationExecution, FCanvasMovePreparationRequest, FChannel, FChannelHub, FCirclePatternComponent, FComponentsStore, FConnectionBase, FConnectionCenterDirective, FConnectionComponent, FConnectionDragHandleEndComponent, FConnectionDragHandleStartComponent, FConnectionFactory, FConnectionForCreateComponent, FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, FConnectionTextPathDirective, FConnectorBase, FCreateConnectionDragHandler, FCreateConnectionDragHandlerPreparationExecution, FCreateConnectionDragHandlerPreparationRequest, FCreateConnectionEvent, FCreateConnectionFinalizeExecution, FCreateConnectionFinalizeRequest, FCreateConnectionFromOutletPreparationExecution, FCreateConnectionFromOutletPreparationRequest, FCreateConnectionFromOutputPreparationExecution, FCreateConnectionFromOutputPreparationRequest, FCreateConnectionPreparationExecution, FCreateConnectionPreparationRequest, FCreateNodeEvent, FDragBlockerDirective, FDragHandleDirective, FDragHandlerResult, FDragStartedEvent, FDraggableBase, FDraggableDataContext, FDraggableDirective, FDropToGroupEvent, FExternalItemBase, FExternalItemCreatePlaceholderExecution, FExternalItemCreatePlaceholderRequest, FExternalItemCreatePreviewExecution, FExternalItemCreatePreviewRequest, FExternalItemDirective, FExternalItemDragHandler, FExternalItemFinalizeExecution, FExternalItemFinalizeRequest, FExternalItemPlaceholderDirective, FExternalItemPreparationExecution, FExternalItemPreparationRequest, FExternalItemPreviewDirective, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FGroupDirective, FLineAlignmentBase, FLineAlignmentComponent, FMarkerBase, FMarkerDirective, FMinimapCanvasDirective, FMinimapComponent, FMinimapData, FMinimapDragHandler, FMinimapFlowDirective, FMinimapViewDirective, FMoveNodesEvent, FNodeBase, FNodeDirective, FNodeDropToGroupDragHandler, FNodeInputBase, FNodeInputDirective, FNodeIntersectedWithConnections, FNodeMoveFinalizeExecution, FNodeMoveFinalizeRequest, FNodeMovePreparationExecution, FNodeMovePreparationRequest, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FNodeRotateDragHandler, FNodeRotateFinalizeExecution, FNodeRotateFinalizeRequest, FNodeRotatePreparationExecution, FNodeRotatePreparationRequest, FReassignConnectionDragHandler, FReassignConnectionEvent, FReassignConnectionFinalizeExecution, FReassignConnectionFinalizeRequest, FReassignConnectionPreparationExecution, FReassignConnectionPreparationRequest, FReassignSourceDragHandler, FReassignTargetDragHandler, FRectPatternComponent, FResizeChannel, FResizeHandleDirective, FRotateHandleDirective, FSegmentPathBuilder, FSelectionAreaBase, FSelectionAreaComponent, FSelectionChangeEvent, FSingleSelectExecution, FSingleSelectRequest, FSnapConnectionComponent, FStraightPathBuilder, FZoomBase, FZoomDirective, F_AFTER_MAIN_PLUGIN, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_BEFORE_MAIN_PLUGIN, F_CANVAS, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_FEATURES, F_CONNECTION_IDENTIFIERS, F_CONNECTION_PROVIDERS, F_CONNECTORS_FEATURES, F_CONNECTORS_PROVIDERS, F_CSS_CLASS, F_DRAGGABLE_FEATURES, F_DRAGGABLE_PROVIDERS, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_FEATURES, F_FLOW_PROVIDERS, F_LINE_ALIGNMENT, F_LINE_ALIGNMENT_FEATURES, F_LINE_ALIGNMENT_PROVIDERS, F_MARKER, F_MINIMAP_DRAG_AND_DROP_PROVIDERS, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_FEATURES, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_SELECTED_CLASS, F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_STORAGE_PROVIDERS, F_ZOOM, F_ZOOM_FEATURES, F_ZOOM_PROVIDERS, F_ZOOM_TAG, FindClosestConnectorExecution, FindClosestConnectorRequest, FindConnectableConnectorUsingPriorityAndPositionExecution, FindConnectableConnectorUsingPriorityAndPositionRequest, FitToChildNodesAndGroups, FitToChildNodesAndGroupsRequest, FitToFlowExecution, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetAllCanBeConnectedInputsAndRectsExecution, GetAllCanBeConnectedInputsAndRectsRequest, GetAllCanBeConnectedSourceConnectorsAndRectsExecution, GetAllCanBeConnectedSourceConnectorsAndRectsRequest, GetCanBeSelectedItemsExecution, GetCanBeSelectedItemsRequest, GetCanvasExecution, GetCanvasRequest, GetChildNodeIds, GetChildNodeIdsRequest, GetConnectorAndRectExecution, GetConnectorAndRectRequest, GetCurrentSelectionExecution, GetCurrentSelectionRequest, GetDeepChildrenNodesAndGroupsExecution, GetDeepChildrenNodesAndGroupsRequest, GetElementRoundedRectExecution, GetElementRoundedRectRequest, GetFirstConnectableOutputExecution, GetFirstConnectableOutputRequest, GetFlowExecution, GetFlowHostElementExecution, GetFlowHostElementRequest, GetFlowRequest, GetFlowStateConnectionsExecution, GetFlowStateConnectionsRequest, GetFlowStateExecution, GetFlowStateNodesExecution, GetFlowStateNodesRequest, GetFlowStateRequest, GetNodeBoundingIncludePaddings, GetNodeBoundingIncludePaddingsRequest, GetNodeBoundingIncludePaddingsResponse, GetNodePadding, GetNodePaddingRequest, GetNodes, GetNodesRequest, GetNormalizedConnectorRectExecution, GetNormalizedConnectorRectRequest, GetNormalizedElementRectExecution, GetNormalizedElementRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetNormalizedPointExecution, GetNormalizedPointRequest, GetParentNodes, GetParentNodesRequest, IMouseEvent, IPointerEvent, IPointerUpEvent, ITouchDownEvent, ITouchMoveEvent, InitializeDragSequenceExecution, InitializeDragSequenceRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, IsConnectionUnderNodeRequest, IsDragStarted, IsDragStartedRequest, ListenCountChangesExecution, ListenCountChangesRequest, ListenDataChangesExecution, ListenDataChangesRequest, ListenTransformChangesExecution, ListenTransformChangesRequest, LogExecutionTime, MINIMAP_DRAG_FINALIZE_PROVIDERS, MINIMAP_DRAG_PREPARATION_PROVIDERS, MOUSE_EVENT_IGNORE_TIME, MarkConnectableConnectorsExecution, MarkConnectableConnectorsRequest, MinimapCalculateSvgScaleAndViewBoxExecution, MinimapCalculateSvgScaleAndViewBoxRequest, MinimapCalculateViewBoxExecution, MinimapCalculateViewBoxRequest, MinimapDragFinalizeExecution, MinimapDragFinalizeRequest, MinimapDragPreparationExecution, MinimapDragPreparationRequest, MinimapDrawNodesExecution, MinimapDrawNodesRequest, MoveDragHandler, MoveFrontElementsBeforeTargetElementExecution, MoveFrontElementsBeforeTargetElementRequest, MoveSummaryDragHandler, NODE_DROP_TO_GROUP_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_PROVIDERS, NODE_ROTATE_PROVIDERS, NodeResizeDragHandler, NodeResizeFinalize, NodeResizeFinalizeRequest, NodeResizePreparation, NodeResizePreparationRequest, NotifyDataChangedExecution, NotifyDataChangedRequest, NotifyTransformChangedExecution, NotifyTransformChangedRequest, OnPointerMoveExecution, OnPointerMoveRequest, PrepareDragSequenceExecution, PrepareDragSequenceRequest, PreventDefaultIsExternalItemExecution, PreventDefaultIsExternalItemRequest, RESIZE_DIRECTIONS, RectConstraint, RedrawCanvasWithAnimationExecution, RedrawCanvasWithAnimationRequest, RedrawConnectionsExecution, RedrawConnectionsRequest, RemoveBackgroundFromStoreExecution, RemoveBackgroundFromStoreRequest, RemoveCanvasFromStoreExecution, RemoveCanvasFromStoreRequest, RemoveConnectionForCreateFromStoreExecution, RemoveConnectionForCreateFromStoreRequest, RemoveConnectionFromStoreExecution, RemoveConnectionFromStoreRequest, RemoveConnectionMarkerFromStoreExecution, RemoveConnectionMarkerFromStoreRequest, RemoveDndFromStoreExecution, RemoveDndFromStoreRequest, RemoveFlowFromStoreExecution, RemoveFlowFromStoreRequest, RemoveInputFromStoreExecution, RemoveInputFromStoreRequest, RemoveLineAlignmentFromStoreExecution, RemoveLineAlignmentFromStoreRequest, RemoveNodeFromStore, RemoveNodeFromStoreRequest, RemoveOutletFromStoreExecution, RemoveOutletFromStoreRequest, RemoveOutputFromStoreExecution, RemoveOutputFromStoreRequest, RemoveSnapConnectionFromStoreExecution, RemoveSnapConnectionFromStoreRequest, RemoveZoomFromStoreExecution, RemoveZoomFromStoreRequest, ResetScaleAndCenterExecution, ResetScaleAndCenterRequest, ResetScaleExecution, ResetScaleRequest, ResetZoomExecution, ResetZoomRequest, SINGLE_SELECT_PROVIDERS, SelectAllExecution, SelectAllRequest, SelectAndUpdateNodeLayerExecution, SelectAndUpdateNodeLayerRequest, SelectExecution, SelectRequest, SelectionAreaDragHandle, SelectionAreaFinalizeExecution, SelectionAreaFinalizeRequest, SelectionAreaPreparationExecution, SelectionAreaPreparationRequest, SetBackgroundTransformExecution, SetBackgroundTransformRequest, SetZoomExecution, SetZoomRequest, SnapLineElement, SnapLineService, SnapLinesDragHandler, SnapToGrid, SortContainersForDropByLayer, SortContainersForDropByLayerRequest, SortItemLayersExecution, SortItemLayersRequest, SortItemsByParentExecution, SortItemsByParentRequest, SortNodeLayersExecution, SortNodeLayersRequest, SourceConnectionDragHandler, SourceTargetConnectionDragHandler, StartDragSequenceExecution, StartDragSequenceRequest, TargetConnectionDragHandler, UnmarkConnectableConnectorsExecution, UnmarkConnectableConnectorsRequest, UpdateItemAndChildrenLayersExecution, UpdateItemAndChildrenLayersRequest, UpdateNodeWhenStateOrSizeChanged, UpdateNodeWhenStateOrSizeChangedRequest, UpdateScaleExecution, UpdateScaleRequest, createSVGElement, debounceTime, defaultEventTrigger, expandRectFromBaseline, fixedCenterBehavior, fixedOutboundBehavior, floatingBehavior, getExternalItem, getMarkerEndId, getMarkerSelectedEndId, getMarkerSelectedStartId, getMarkerStartId, infinityMinMax, isClosestConnectorInsideSnapThreshold, isDragBlocker, isDragHandleEnd, isDragHandleStart, isExternalItem, isMobile, isNode, isNodeOutlet, isNodeOutput, isPointerInsideStartOrEndDragHandles, isRotateHandle, isValidEventTrigger, mixinChangeSelection, mixinChangeVisibility, notifyOnStart, roundedRectFromPoint, transitionEnd };
12215
+ export { AddBackgroundToStoreExecution, AddBackgroundToStoreRequest, AddCanvasToStoreExecution, AddCanvasToStoreRequest, AddConnectionForCreateToStoreExecution, AddConnectionForCreateToStoreRequest, AddConnectionMarkerToStoreExecution, AddConnectionMarkerToStoreRequest, AddConnectionToStoreExecution, AddConnectionToStoreRequest, AddDndToStoreExecution, AddDndToStoreRequest, AddFlowToStoreExecution, AddFlowToStoreRequest, AddInputToStore, AddInputToStoreRequest, AddLineAlignmentToStoreExecution, AddLineAlignmentToStoreRequest, AddNodeToStore, AddNodeToStoreRequest, AddOutletToStore, AddOutletToStoreRequest, AddOutputToStore, AddOutputToStoreRequest, AddPatternToBackgroundExecution, AddPatternToBackgroundRequest, AddSnapConnectionToStoreExecution, AddSnapConnectionToStoreRequest, AddZoomToStoreExecution, AddZoomToStoreRequest, ApplyChildResizeConstraints, ApplyChildResizeConstraintsRequest, ApplyParentResizeConstraints, ApplyParentResizeConstraintsRequest, BaseConnectionDragHandler, BuildDragHierarchy, BuildDragHierarchyRequest, BuildDragHierarchyResponse, CANVAS_PROVIDERS, COMMON_PROVIDERS, CONNECTIONS_PROVIDERS, CONNECTION_GRADIENT, CONNECTION_PATH, CONNECTION_TEXT, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest, CalculateChangedRectFromDifference, CalculateChangedRectFromDifferenceRequest, CalculateClosestConnector, CalculateClosestConnectorRequest, CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, CalculateConnectionLineByBehavior, CalculateConnectionLineByBehaviorRequest, CalculateDirectChildrenUnionRect, CalculateDirectChildrenUnionRectRequest, CalculateDragLimits, CalculateDragLimitsRequest, CalculateFlowPointFromMinimapPointExecution, CalculateFlowPointFromMinimapPointRequest, CalculateInputConnections, CalculateInputConnectionsRequest, CalculateNodesBoundingBox, CalculateNodesBoundingBoxNormalizedPosition, CalculateNodesBoundingBoxNormalizedPositionRequest, CalculateNodesBoundingBoxRequest, CalculateOutputConnections, CalculateOutputConnectionsRequest, CalculateResizeLimits, CalculateResizeLimitsRequest, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, ConnectionContentLayoutEngine, CreateConnectionMarkersExecution, CreateConnectionMarkersRequest, CreateDragModelFromSelection, CreateDragModelFromSelectionRequest, CreateInputConnectionHandlerAndSetToNodeHandler, CreateInputConnectionHandlerAndSetToNodeHandlerRequest, CreateOutputConnectionHandlerAndSetToNodeHandler, CreateOutputConnectionHandlerAndSetToNodeHandlerRequest, CreateSnapLines, CreateSnapLinesRequest, CreateSummaryDragHandler, CreateSummaryDragHandlerRequest, DRAG_AND_DROP_COMMON_PROVIDERS, Deprecated, DragAndDropBase, DragConstraintPipeline, DropToGroupFinalize, DropToGroupFinalizeRequest, DropToGroupPreparation, DropToGroupPreparationRequest, EFConnectableSide, EFConnectionBehavior, EFConnectionType, EFMarkerType, EFResizeHandleType, EFZoomDirection, EmitSelectionChangeEventExecution, EmitSelectionChangeEventRequest, EndDragSequenceExecution, EndDragSequenceRequest, EventExtensions, ExternalRectConstraint, FBackgroundBase, FBackgroundComponent, FBezierPathBuilder, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FCanvasDragHandler, FCanvasMoveFinalizeExecution, FCanvasMoveFinalizeRequest, FCanvasMovePreparationExecution, FCanvasMovePreparationRequest, FChannel, FChannelHub, FCirclePatternComponent, FComponentsStore, FConnectionBase, FConnectionCenterDirective, FConnectionComponent, FConnectionContent, FConnectionDragHandleEndComponent, FConnectionDragHandleStartComponent, FConnectionFactory, FConnectionForCreateComponent, FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, FConnectionTextPathDirective, FConnectorBase, FCreateConnectionDragHandler, FCreateConnectionDragHandlerPreparationExecution, FCreateConnectionDragHandlerPreparationRequest, FCreateConnectionEvent, FCreateConnectionFinalizeExecution, FCreateConnectionFinalizeRequest, FCreateConnectionFromOutletPreparationExecution, FCreateConnectionFromOutletPreparationRequest, FCreateConnectionFromOutputPreparationExecution, FCreateConnectionFromOutputPreparationRequest, FCreateConnectionPreparationExecution, FCreateConnectionPreparationRequest, FCreateNodeEvent, FDragBlockerDirective, FDragHandleDirective, FDragHandlerResult, FDragStartedEvent, FDraggableBase, FDraggableDataContext, FDraggableDirective, FDropToGroupEvent, FExternalItemBase, FExternalItemCreatePlaceholderExecution, FExternalItemCreatePlaceholderRequest, FExternalItemCreatePreviewExecution, FExternalItemCreatePreviewRequest, FExternalItemDirective, FExternalItemDragHandler, FExternalItemFinalizeExecution, FExternalItemFinalizeRequest, FExternalItemPlaceholderDirective, FExternalItemPreparationExecution, FExternalItemPreparationRequest, FExternalItemPreviewDirective, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FGroupDirective, FLineAlignmentBase, FLineAlignmentComponent, FMarkerBase, FMarkerDirective, FMinimapCanvasDirective, FMinimapComponent, FMinimapData, FMinimapDragHandler, FMinimapFlowDirective, FMinimapViewDirective, FMoveNodesEvent, FNodeBase, FNodeDirective, FNodeDropToGroupDragHandler, FNodeInputBase, FNodeInputDirective, FNodeIntersectedWithConnections, FNodeMoveFinalizeExecution, FNodeMoveFinalizeRequest, FNodeMovePreparationExecution, FNodeMovePreparationRequest, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FNodeRotateDragHandler, FNodeRotateFinalizeExecution, FNodeRotateFinalizeRequest, FNodeRotatePreparationExecution, FNodeRotatePreparationRequest, FReassignConnectionDragHandler, FReassignConnectionEvent, FReassignConnectionFinalizeExecution, FReassignConnectionFinalizeRequest, FReassignConnectionPreparationExecution, FReassignConnectionPreparationRequest, FReassignSourceDragHandler, FReassignTargetDragHandler, FRectPatternComponent, FResizeChannel, FResizeHandleDirective, FRotateHandleDirective, FSegmentPathBuilder, FSelectionAreaBase, FSelectionAreaComponent, FSelectionChangeEvent, FSingleSelectExecution, FSingleSelectRequest, FSnapConnectionComponent, FSourceConnectorBase, FStraightPathBuilder, FZoomBase, FZoomDirective, F_AFTER_MAIN_PLUGIN, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_BEFORE_MAIN_PLUGIN, F_CANVAS, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_FEATURES, F_CONNECTION_IDENTIFIERS, F_CONNECTION_PROVIDERS, F_CONNECTORS_FEATURES, F_CONNECTORS_PROVIDERS, F_CSS_CLASS, F_DRAGGABLE_FEATURES, F_DRAGGABLE_PROVIDERS, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_FEATURES, F_FLOW_PROVIDERS, F_LINE_ALIGNMENT, F_LINE_ALIGNMENT_FEATURES, F_LINE_ALIGNMENT_PROVIDERS, F_MARKER, F_MINIMAP_DRAG_AND_DROP_PROVIDERS, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_FEATURES, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_SELECTED_CLASS, F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_STORAGE_PROVIDERS, F_ZOOM, F_ZOOM_FEATURES, F_ZOOM_PROVIDERS, F_ZOOM_TAG, FindConnectableConnectorUsingPriorityAndPositionExecution, FindConnectableConnectorUsingPriorityAndPositionRequest, FitToChildNodesAndGroups, FitToChildNodesAndGroupsRequest, FitToFlowExecution, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetAllCanBeConnectedInputsAndRectsExecution, GetAllCanBeConnectedInputsAndRectsRequest, GetAllCanBeConnectedSourceConnectorsAndRectsExecution, GetAllCanBeConnectedSourceConnectorsAndRectsRequest, GetCanBeSelectedItemsExecution, GetCanBeSelectedItemsRequest, GetCanvasExecution, GetCanvasRequest, GetChildNodeIds, GetChildNodeIdsRequest, GetConnectorAndRect, GetConnectorAndRectRequest, GetCurrentSelectionExecution, GetCurrentSelectionRequest, GetDeepChildrenNodesAndGroupsExecution, GetDeepChildrenNodesAndGroupsRequest, GetElementRoundedRectExecution, GetElementRoundedRectRequest, GetFirstConnectableOutputExecution, GetFirstConnectableOutputRequest, GetFlowExecution, GetFlowHostElementExecution, GetFlowHostElementRequest, GetFlowRequest, GetFlowStateConnectionsExecution, GetFlowStateConnectionsRequest, GetFlowStateExecution, GetFlowStateNodesExecution, GetFlowStateNodesRequest, GetFlowStateRequest, GetNodeBoundingIncludePaddings, GetNodeBoundingIncludePaddingsRequest, GetNodeBoundingIncludePaddingsResponse, GetNodePadding, GetNodePaddingRequest, GetNodes, GetNodesRequest, GetNormalizedConnectorRectExecution, GetNormalizedConnectorRectRequest, GetNormalizedElementRectExecution, GetNormalizedElementRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetNormalizedPointExecution, GetNormalizedPointRequest, GetParentNodes, GetParentNodesRequest, IMouseEvent, IPointerEvent, IPointerUpEvent, ITouchDownEvent, ITouchMoveEvent, InitializeDragSequenceExecution, InitializeDragSequenceRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, IsConnectionUnderNodeRequest, IsDragStarted, IsDragStartedRequest, ListenCountChangesExecution, ListenCountChangesRequest, ListenDataChangesExecution, ListenDataChangesRequest, ListenTransformChangesExecution, ListenTransformChangesRequest, LogExecutionTime, MINIMAP_DRAG_FINALIZE_PROVIDERS, MINIMAP_DRAG_PREPARATION_PROVIDERS, MOUSE_EVENT_IGNORE_TIME, MarkConnectableConnectors, MarkConnectableConnectorsRequest, MinimapCalculateSvgScaleAndViewBoxExecution, MinimapCalculateSvgScaleAndViewBoxRequest, MinimapCalculateViewBoxExecution, MinimapCalculateViewBoxRequest, MinimapDragFinalizeExecution, MinimapDragFinalizeRequest, MinimapDragPreparationExecution, MinimapDragPreparationRequest, MinimapDrawNodesExecution, MinimapDrawNodesRequest, MoveDragHandler, MoveFrontElementsBeforeTargetElementExecution, MoveFrontElementsBeforeTargetElementRequest, MoveSummaryDragHandler, NODE_DROP_TO_GROUP_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_PROVIDERS, NODE_ROTATE_PROVIDERS, NodeResizeDragHandler, NodeResizeFinalize, NodeResizeFinalizeRequest, NodeResizePreparation, NodeResizePreparationRequest, NotifyDataChangedExecution, NotifyDataChangedRequest, NotifyTransformChangedExecution, NotifyTransformChangedRequest, OnPointerMoveExecution, OnPointerMoveRequest, Polyline, PolylineContentAlign, PolylineContentPlace, PolylineSampler, PrepareDragSequenceExecution, PrepareDragSequenceRequest, PreventDefaultIsExternalItemExecution, PreventDefaultIsExternalItemRequest, RESIZE_DIRECTIONS, RectConstraint, RedrawCanvasWithAnimationExecution, RedrawCanvasWithAnimationRequest, RedrawConnectionsExecution, RedrawConnectionsRequest, RemoveBackgroundFromStoreExecution, RemoveBackgroundFromStoreRequest, RemoveCanvasFromStoreExecution, RemoveCanvasFromStoreRequest, RemoveConnectionForCreateFromStoreExecution, RemoveConnectionForCreateFromStoreRequest, RemoveConnectionFromStoreExecution, RemoveConnectionFromStoreRequest, RemoveConnectionMarkerFromStoreExecution, RemoveConnectionMarkerFromStoreRequest, RemoveDndFromStoreExecution, RemoveDndFromStoreRequest, RemoveFlowFromStoreExecution, RemoveFlowFromStoreRequest, RemoveInputFromStore, RemoveInputFromStoreRequest, RemoveLineAlignmentFromStoreExecution, RemoveLineAlignmentFromStoreRequest, RemoveNodeFromStore, RemoveNodeFromStoreRequest, RemoveOutletFromStoreExecution, RemoveOutletFromStoreRequest, RemoveOutputFromStoreExecution, RemoveOutputFromStoreRequest, RemoveSnapConnectionFromStoreExecution, RemoveSnapConnectionFromStoreRequest, RemoveZoomFromStoreExecution, RemoveZoomFromStoreRequest, ResetScaleAndCenterExecution, ResetScaleAndCenterRequest, ResetScaleExecution, ResetScaleRequest, ResetZoomExecution, ResetZoomRequest, SINGLE_SELECT_PROVIDERS, SelectAllExecution, SelectAllRequest, SelectAndUpdateNodeLayerExecution, SelectAndUpdateNodeLayerRequest, SelectExecution, SelectRequest, SelectionAreaDragHandle, SelectionAreaFinalizeExecution, SelectionAreaFinalizeRequest, SelectionAreaPreparationExecution, SelectionAreaPreparationRequest, SetBackgroundTransformExecution, SetBackgroundTransformRequest, SetZoomExecution, SetZoomRequest, SnapLineElement, SnapLineService, SnapLinesDragHandler, SnapToGrid, SortContainersForDropByLayer, SortContainersForDropByLayerRequest, SortItemLayersExecution, SortItemLayersRequest, SortItemsByParentExecution, SortItemsByParentRequest, SortNodeLayersExecution, SortNodeLayersRequest, SourceConnectionDragHandler, SourceTargetConnectionDragHandler, StartDragSequenceExecution, StartDragSequenceRequest, TargetConnectionDragHandler, UnmarkConnectableConnectors, UnmarkConnectableConnectorsRequest, UpdateItemAndChildrenLayersExecution, UpdateItemAndChildrenLayersRequest, UpdateNodeWhenStateOrSizeChanged, UpdateNodeWhenStateOrSizeChangedRequest, UpdateScaleExecution, UpdateScaleRequest, createSVGElement, debounceTime, defaultEventTrigger, expandRectFromBaseline, fixedCenterBehavior, fixedOutboundBehavior, floatingBehavior, getExternalItem, getMarkerEndId, getMarkerSelectedEndId, getMarkerSelectedStartId, getMarkerStartId, infinityMinMax, isClosestConnectorInsideSnapThreshold, isDragBlocker, isDragHandleEnd, isDragHandleStart, isExternalItem, isMobile, isNode, isNodeOutlet, isNodeOutput, isPointerInsideStartOrEndDragHandles, isRotateHandle, isValidEventTrigger, mixinChangeSelection, mixinChangeVisibility, notifyOnStart, roundedRectFromPoint, stringAttribute, transitionEnd };
11802
12216
  //# sourceMappingURL=foblex-flow.mjs.map