@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
@@ -11,10 +11,10 @@ import { FConnectionDragHandleEndComponent, FConnectionDragHandleStartComponent
11
11
  import { FConnectionSelectionComponent } from './f-selection';
12
12
  import { IConnectionText } from './f-connection-text';
13
13
  import { EFConnectableSide } from '../../f-connectors';
14
- import { FConnectionFactory } from '../f-connection-builder';
15
14
  import { IHasHostElement } from '../../i-has-host-element';
16
15
  import { ISelectable, ICanChangeVisibility } from '../../mixins';
17
- import { FConnectionCenterDirective } from "../f-connection-center";
16
+ import { FConnectionCenterDirective } from '../f-connection-center';
17
+ import { FConnectionContent } from '../f-connection-content';
18
18
  import * as i0 from "@angular/core";
19
19
  declare const MIXIN_BASE: import("../../mixins").Constructor<ISelectable> & import("../../mixins").AbstractConstructor<ISelectable> & import("../../mixins").Constructor<ICanChangeVisibility> & import("../../mixins").AbstractConstructor<ICanChangeVisibility> & {
20
20
  new (hostElement: HTMLElement): {
@@ -22,12 +22,12 @@ declare const MIXIN_BASE: import("../../mixins").Constructor<ISelectable> & impo
22
22
  };
23
23
  };
24
24
  export declare abstract class FConnectionBase extends MIXIN_BASE implements IHasHostElement, ISelectable, ICanChangeVisibility, IHasConnectionColor, IHasConnectionFromTo, IHasConnectionText {
25
- private cFactory;
25
+ private readonly _connectionFactory;
26
26
  abstract fId: Signal<string>;
27
27
  readonly fStartColor: import("@angular/core").InputSignal<string>;
28
28
  readonly fEndColor: import("@angular/core").InputSignal<string>;
29
- abstract fOutputId: string;
30
- abstract fInputId: string;
29
+ abstract fOutputId: Signal<string>;
30
+ abstract fInputId: Signal<string>;
31
31
  abstract fRadius: number;
32
32
  abstract fOffset: number;
33
33
  path: string;
@@ -49,18 +49,20 @@ export declare abstract class FConnectionBase extends MIXIN_BASE implements IHas
49
49
  abstract fTextStartOffset: string;
50
50
  readonly fConnectionCenter: Signal<ElementRef<HTMLDivElement> | undefined>;
51
51
  readonly fConnectionCenters: Signal<readonly FConnectionCenterDirective[]>;
52
- private penultimatePoint;
53
- private secondPoint;
54
- protected constructor(elementReference: ElementRef<HTMLElement>, cFactory: FConnectionFactory);
52
+ readonly fConnectionContents: Signal<readonly FConnectionContent[]>;
53
+ private _penultimatePoint;
54
+ private _secondPoint;
55
+ protected constructor();
55
56
  initialize(): void;
56
57
  isContains(element: HTMLElement | SVGElement): boolean;
57
58
  setLine({ point1, point2 }: ILine, sourceSide: EFConnectableSide, targetSide: EFConnectableSide): void;
58
- private getPathResult;
59
- private getTransform;
59
+ private _contents;
60
+ private _getPathResult;
61
+ private _createTransformString;
60
62
  markChildrenAsSelected(): void;
61
63
  unmarkChildrenAsSelected(): void;
62
64
  redraw(): void;
63
65
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionBase, never>;
64
- static ɵdir: i0.ɵɵDirectiveDeclaration<FConnectionBase, never, never, { "fStartColor": { "alias": "fStartColor"; "required": false; "isSignal": true; }; "fEndColor": { "alias": "fEndColor"; "required": false; "isSignal": true; }; }, {}, ["fConnectionCenters"], never, false, never>;
66
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FConnectionBase, never, never, { "fStartColor": { "alias": "fStartColor"; "required": false; "isSignal": true; }; "fEndColor": { "alias": "fEndColor"; "required": false; "isSignal": true; }; }, {}, ["fConnectionCenters", "fConnectionContents"], never, false, never>;
65
67
  }
66
68
  export {};
@@ -1,23 +1,18 @@
1
- import { ElementRef, OnInit } from '@angular/core';
2
- import { IHasConnectionText } from '../i-has-connection-text';
3
- import { IHasConnectionFromTo } from '../i-has-connection-from-to';
4
- import { BrowserService } from '@foblex/platform';
1
+ import { OnInit } from '@angular/core';
5
2
  import { IHasHostElement } from '../../../i-has-host-element';
6
3
  import * as i0 from "@angular/core";
7
4
  export declare class FConnectionTextPathDirective implements IHasHostElement, OnInit {
8
- private elementReference;
9
- private base;
10
- private fBrowser;
5
+ readonly hostElement: any;
6
+ private readonly _base;
7
+ private readonly _browser;
11
8
  get linkToConnection(): string;
12
- get hostElement(): SVGTextPathElement;
13
9
  symbolWidth: number;
14
10
  fontSize: string;
15
- constructor(elementReference: ElementRef<SVGTextPathElement>, base: IHasConnectionText & IHasConnectionFromTo, fBrowser: BrowserService);
16
11
  ngOnInit(): void;
17
12
  getBBox(): DOMRect;
18
13
  redraw(): void;
19
- private getFontStyles;
20
- private getSymbolWidth;
14
+ private _getFontStyles;
15
+ private _getSymbolWidth;
21
16
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionTextPathDirective, never>;
22
17
  static ɵdir: i0.ɵɵDirectiveDeclaration<FConnectionTextPathDirective, "textPath[f-connection-text-path]", never, {}, {}, never, never, false, never>;
23
18
  }
@@ -1,22 +1,16 @@
1
- import { ElementRef } from "@angular/core";
2
1
  import { ILine } from '@foblex/2d';
3
- import { FConnectionTextPathDirective } from './f-connection-text-path.directive';
4
- import { IHasConnectionText } from '../i-has-connection-text';
5
- import { IHasConnectionFromTo } from '../i-has-connection-from-to';
6
2
  import { IConnectionText } from './i-connection-text';
7
3
  import * as i0 from "@angular/core";
8
4
  export declare class FConnectionTextComponent implements IConnectionText {
9
- private elementReference;
10
- private base;
5
+ readonly hostElement: any;
6
+ private readonly _base;
7
+ private readonly _textPathDirective;
11
8
  get textId(): string;
12
- get hostElement(): SVGTextElement;
13
9
  get text(): string;
14
- textPathDirective: FConnectionTextPathDirective;
15
- constructor(elementReference: ElementRef<SVGTextElement>, base: IHasConnectionText & IHasConnectionFromTo);
16
10
  redraw(line: ILine): void;
17
- private calculateDy;
18
- private static isTextReverse;
19
- private static getTextStartOffset;
11
+ private _calculateDy;
12
+ private static _isTextReverse;
13
+ private static _getTextStartOffset;
20
14
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionTextComponent, never>;
21
15
  static ɵcmp: i0.ɵɵComponentDeclaration<FConnectionTextComponent, "text[f-connection-text]", never, {}, {}, never, never, false, never>;
22
16
  }
@@ -1,21 +1,16 @@
1
- import { ElementRef } from "@angular/core";
2
1
  import { ILine } from '@foblex/2d';
3
- import { IHasConnectionFromTo } from '../i-has-connection-from-to';
4
- import { IHasConnectionColor } from '../i-has-connection-color';
5
2
  import { IConnectionGradient } from './i-connection-gradient';
6
3
  import * as i0 from "@angular/core";
7
4
  export declare class FConnectionGradientComponent implements IConnectionGradient {
8
- private elementReference;
9
- private base;
5
+ readonly hostElement: any;
6
+ private readonly _base;
10
7
  get gradientId(): string;
11
- get hostElement(): SVGLinearGradientElement;
12
8
  get stop1Element(): SVGStopElement;
13
9
  get stop2Element(): SVGStopElement;
14
- constructor(elementReference: ElementRef<SVGLinearGradientElement>, base: IHasConnectionColor & IHasConnectionFromTo);
15
10
  initialize(): void;
16
- private updateGradient;
17
- private setFromColor;
18
- private setToColor;
11
+ private _updateGradient;
12
+ private _setFromColor;
13
+ private _setToColor;
19
14
  redraw(line: ILine): void;
20
15
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionGradientComponent, never>;
21
16
  static ɵcmp: i0.ɵɵComponentDeclaration<FConnectionGradientComponent, "linearGradient[fConnectionGradient]", never, {}, {}, never, never, false, never>;
@@ -1,16 +1,11 @@
1
- import { ElementRef } from "@angular/core";
2
- import { IHasConnectionColor } from '../i-has-connection-color';
3
- import { IHasConnectionFromTo } from '../i-has-connection-from-to';
4
1
  import { IConnectionPath } from './i-connection-path';
5
2
  import * as i0 from "@angular/core";
6
3
  export declare class FConnectionPathComponent implements IConnectionPath {
7
- private elementReference;
8
- private base;
4
+ readonly hostElement: any;
5
+ private readonly _base;
9
6
  get fPathId(): string;
10
7
  get linkToGradient(): string;
11
8
  get attrConnectionId(): string;
12
- get hostElement(): SVGPathElement;
13
- constructor(elementReference: ElementRef<SVGPathElement>, base: IHasConnectionColor & IHasConnectionFromTo);
14
9
  initialize(): void;
15
10
  setPath(path: string): void;
16
11
  select(): void;
@@ -1,13 +1,9 @@
1
- import { ElementRef } from "@angular/core";
2
- import { IHasConnectionFromTo } from '../i-has-connection-from-to';
3
1
  import { IHasHostElement } from '../../../i-has-host-element';
4
2
  import * as i0 from "@angular/core";
5
3
  export declare class FConnectionSelectionComponent implements IHasHostElement {
6
- private elementReference;
7
- private base;
4
+ readonly hostElement: any;
5
+ private readonly _base;
8
6
  get connectionForSelectionId(): string;
9
- get hostElement(): SVGPathElement;
10
- constructor(elementReference: ElementRef<SVGPathElement>, base: IHasConnectionFromTo);
11
7
  setPath(path: string): void;
12
8
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionSelectionComponent, never>;
13
9
  static ɵcmp: i0.ɵɵComponentDeclaration<FConnectionSelectionComponent, "path[fConnectionSelection]", never, {}, {}, never, never, false, never>;
@@ -1,6 +1,6 @@
1
- import { Signal } from "@angular/core";
1
+ import { Signal } from '@angular/core';
2
2
  export interface IHasConnectionFromTo {
3
3
  fId: Signal<string>;
4
- fOutputId: string;
5
- fInputId: string;
4
+ fOutputId: Signal<string>;
5
+ fInputId: Signal<string>;
6
6
  }
@@ -1,14 +1,15 @@
1
- import { ElementRef, OnChanges, OnDestroy, OnInit } from "@angular/core";
1
+ import { OnChanges, OnDestroy, OnInit } from '@angular/core';
2
2
  import { EFConnectionBehavior, EFConnectionType } from '../common';
3
- import { FConnectionFactory } from '../f-connection-builder';
4
3
  import { FConnectionBase } from '../common/f-connection-base';
5
4
  import * as i0 from "@angular/core";
6
5
  export declare class FConnectionComponent extends FConnectionBase implements OnInit, OnChanges, OnDestroy {
7
6
  fId: import("@angular/core").InputSignal<string>;
7
+ /** @deprecated [fText] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead. */
8
8
  fText: string;
9
+ /** @deprecated [fTextStartOffset] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead. */
9
10
  fTextStartOffset: string;
10
- fOutputId: any;
11
- fInputId: any;
11
+ fOutputId: import("@angular/core").InputSignalWithTransform<string, unknown>;
12
+ fInputId: import("@angular/core").InputSignalWithTransform<string, unknown>;
12
13
  fRadius: number;
13
14
  fOffset: number;
14
15
  fBehavior: EFConnectionBehavior;
@@ -18,12 +19,11 @@ export declare class FConnectionComponent extends FConnectionBase implements OnI
18
19
  fDraggingDisabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
19
20
  get boundingElement(): HTMLElement | SVGElement;
20
21
  private readonly _mediator;
21
- constructor(elementReference: ElementRef<HTMLElement>, fConnectionFactory: FConnectionFactory);
22
22
  ngOnInit(): void;
23
23
  ngOnChanges(): void;
24
24
  ngOnDestroy(): void;
25
25
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionComponent, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<FConnectionComponent, "f-connection", ["fComponent"], { "fId": { "alias": "fConnectionId"; "required": false; "isSignal": true; }; "fText": { "alias": "fText"; "required": false; }; "fTextStartOffset": { "alias": "fTextStartOffset"; "required": false; }; "fOutputId": { "alias": "fOutputId"; "required": false; }; "fInputId": { "alias": "fInputId"; "required": false; }; "fRadius": { "alias": "fRadius"; "required": false; }; "fOffset": { "alias": "fOffset"; "required": false; }; "fBehavior": { "alias": "fBehavior"; "required": false; }; "fType": { "alias": "fType"; "required": false; }; "fSelectionDisabled": { "alias": "fSelectionDisabled"; "required": false; "isSignal": true; }; "fReassignableStart": { "alias": "fReassignableStart"; "required": false; "isSignal": true; }; "fDraggingDisabled": { "alias": "fReassignDisabled"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[fConnectionCenter]"], false, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<FConnectionComponent, "f-connection", ["fComponent"], { "fId": { "alias": "fConnectionId"; "required": false; "isSignal": true; }; "fText": { "alias": "fText"; "required": false; }; "fTextStartOffset": { "alias": "fTextStartOffset"; "required": false; }; "fOutputId": { "alias": "fOutputId"; "required": false; "isSignal": true; }; "fInputId": { "alias": "fInputId"; "required": false; "isSignal": true; }; "fRadius": { "alias": "fRadius"; "required": false; }; "fOffset": { "alias": "fOffset"; "required": false; }; "fBehavior": { "alias": "fBehavior"; "required": false; }; "fType": { "alias": "fType"; "required": false; }; "fSelectionDisabled": { "alias": "fSelectionDisabled"; "required": false; "isSignal": true; }; "fReassignableStart": { "alias": "fReassignableStart"; "required": false; "isSignal": true; }; "fDraggingDisabled": { "alias": "fReassignDisabled"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[fConnectionCenter]", "[fConnectionContent]"], false, never>;
27
27
  static ngAcceptInputType_fRadius: unknown;
28
28
  static ngAcceptInputType_fOffset: unknown;
29
29
  static ngAcceptInputType_fBehavior: unknown;
@@ -4,4 +4,5 @@ export interface IFConnectionBuilderResponse {
4
4
  connectionCenter: IPoint;
5
5
  penultimatePoint: IPoint;
6
6
  secondPoint: IPoint;
7
+ points?: IPoint[];
7
8
  }
@@ -1,5 +1,10 @@
1
1
  import * as i0 from "@angular/core";
2
+ /** @deprecated '[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead.' */
2
3
  export declare class FConnectionCenterDirective {
4
+ /**
5
+ * @deprecated '[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead.'
6
+ */
7
+ readonly fConnectionCenter: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
3
8
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionCenterDirective, never>;
4
- static ɵdir: i0.ɵɵDirectiveDeclaration<FConnectionCenterDirective, "[fConnectionCenter]", never, {}, {}, never, never, false, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FConnectionCenterDirective, "[fConnectionCenter]", never, { "fConnectionCenter": { "alias": "fConnectionCenter"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
5
10
  }
@@ -0,0 +1,69 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { IPolylineContent, PolylineContentAlign } from './polyline-content-engine';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Directive for placing custom user content (text, icons, buttons, etc.)
6
+ * along a connection line.
7
+ *
8
+ * It allows you to specify the position along the connection,
9
+ * shift the content sideways (perpendicular to the path),
10
+ * apply a margin near the edges, and control orientation.
11
+ *
12
+ * ### Usage examples
13
+ *
14
+ * ```html
15
+ * <!-- Text centered on the connection -->
16
+ * <div fConnectionContent [position]="0.5">
17
+ * Hello
18
+ * </div>
19
+ *
20
+ * <!-- Button near the start of the connection, shifted upward by 12px -->
21
+ * <button fConnectionContent [position]="0.2" [offset]="-12">
22
+ * +
23
+ * </button>
24
+ *
25
+ * <!-- Icon at the end of the connection, with 6px margin and rotated along the path -->
26
+ * <span fConnectionContent [position]="1" [margin]="6" align="along">
27
+ * ⮕
28
+ * </span>
29
+ * ```
30
+ */
31
+ export declare class FConnectionContent implements OnInit, IPolylineContent {
32
+ private readonly _mediator;
33
+ private readonly _injector;
34
+ /**
35
+ * The host DOM element to which the directive is applied.
36
+ * Used internally for positioning calculations.
37
+ */
38
+ readonly hostElement: any;
39
+ /**
40
+ * Position along the connection.
41
+ *
42
+ * A normalized value in the range `0..1`:
43
+ * - `0` — at the start of the connection,
44
+ * - `1` — at the end of the connection,
45
+ * - `0.5` — at the middle of the connection (default).
46
+ */
47
+ readonly position: import("@angular/core").InputSignalWithTransform<number, number>;
48
+ /**
49
+ * Perpendicular offset from the connection line (in pixels).
50
+ *
51
+ * - Positive values shift the element to the right
52
+ * relative to the line direction.
53
+ * - Negative values shift it to the left.
54
+ * - Default: `0` (no shift).
55
+ */
56
+ readonly offset: import("@angular/core").InputSignal<number>;
57
+ /**
58
+ * Controls the orientation (rotation) of the content relative to the connection.
59
+ *
60
+ * Possible values:
61
+ * - `'none'` — no rotation (default).
62
+ * - `'along'` — aligned along the path (tangent).
63
+ */
64
+ readonly align: import("@angular/core").InputSignalWithTransform<PolylineContentAlign, unknown>;
65
+ ngOnInit(): void;
66
+ private _listenChanges;
67
+ static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionContent, never>;
68
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FConnectionContent, "[fConnectionContent]", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
69
+ }
@@ -0,0 +1,2 @@
1
+ export * from './polyline-content-engine';
2
+ export * from './f-connection-content';
@@ -0,0 +1,9 @@
1
+ import { Signal } from '@angular/core';
2
+ import { PolylineContentAlign } from './polyline-content-align';
3
+ /** Domain contract for content item to be placed along the path. */
4
+ export interface IPolylineContent {
5
+ position: Signal<number>;
6
+ offset: Signal<number>;
7
+ align: Signal<PolylineContentAlign>;
8
+ hostElement: HTMLElement;
9
+ }
@@ -0,0 +1,5 @@
1
+ export * from './polyline-sampler';
2
+ export * from './polyline-content-align';
3
+ export * from './i-polyline-content';
4
+ export * from './polyline-content-layout-engine';
5
+ export * from './polyline-content-place';
@@ -0,0 +1,4 @@
1
+ export declare enum PolylineContentAlign {
2
+ NONE = "none",
3
+ ALONG = "along"
4
+ }
@@ -0,0 +1,21 @@
1
+ import { IPoint } from '@foblex/2d';
2
+ import { IPolylineContent } from './i-polyline-content';
3
+ import { PolylineContentPlace } from './polyline-content-place';
4
+ /**
5
+ * Engine that orchestrates positioning and orientation of all
6
+ * connection contents along a computed path.
7
+ */
8
+ export declare class ConnectionContentLayoutEngine {
9
+ private readonly _placement;
10
+ constructor(_placement?: PolylineContentPlace);
11
+ layout(line: {
12
+ point1: IPoint;
13
+ point2: IPoint;
14
+ }, builderResult: {
15
+ points?: IPoint[];
16
+ secondPoint: IPoint;
17
+ connectionCenter: IPoint;
18
+ penultimatePoint: IPoint;
19
+ }, contents: Iterable<IPolylineContent>): number;
20
+ private _createTransformString;
21
+ }
@@ -0,0 +1,18 @@
1
+ import { IPolylineContent } from './i-polyline-content';
2
+ import { IPoint } from '@foblex/2d';
3
+ import { PolylineSampler } from './polyline-sampler';
4
+ /**
5
+ * Encapsulates placement logic for a single content item along the path.
6
+ */
7
+ export declare class PolylineContentPlace {
8
+ compute(sampler: PolylineSampler, content: IPolylineContent): {
9
+ position: IPoint;
10
+ rotationDeg: number;
11
+ };
12
+ private _clamp01;
13
+ private _applyEdgeGuard;
14
+ private _sizeAlongDirection;
15
+ private _normalize180;
16
+ private _keepUpright;
17
+ private _calculateContentRotation;
18
+ }
@@ -0,0 +1,11 @@
1
+ import { ITangent } from './i-tangent';
2
+ import { IPoint } from '@foblex/2d';
3
+ /** Result of sampling the path. */
4
+ export interface ISamplerResult {
5
+ /** Interpolated point on the polyline. */
6
+ point: IPoint;
7
+ /** Unit tangent (segment direction) at that point. */
8
+ tangent: ITangent;
9
+ /** Whether the result was clamped to the path edge (start or end). */
10
+ atEdge: boolean;
11
+ }
@@ -0,0 +1,4 @@
1
+ import { IPoint } from '@foblex/2d';
2
+ /** Unit tangent vector. */
3
+ export interface ITangent extends IPoint {
4
+ }
@@ -0,0 +1,4 @@
1
+ export * from './i-sampler-result';
2
+ export * from './i-tangent';
3
+ export * from './polyline';
4
+ export * from './polyline-sampler';
@@ -0,0 +1,60 @@
1
+ import { IPoint } from '@foblex/2d';
2
+ import { ISamplerResult } from './i-sampler-result';
3
+ /**
4
+ * Provides sampling (interpolation) along a {@link Polyline}.
5
+ * Separates traversal logic from pure geometry stored in {@link Polyline}.
6
+ */
7
+ export declare class PolylineSampler {
8
+ private _polyline;
9
+ /**
10
+ * @param points Initial points to build the underlying polyline.
11
+ * You can later call {@link updatePoints} to rebuild.
12
+ */
13
+ constructor(points?: IPoint[]);
14
+ /**
15
+ * Rebuild the underlying polyline from new points.
16
+ * @returns Total length of the rebuilt polyline.
17
+ */
18
+ updatePoints(points: IPoint[]): number;
19
+ /**
20
+ * Backward-compatible alias for older API naming.
21
+ * @returns Total length of the rebuilt polyline.
22
+ */
23
+ calculateTotalLength(points: IPoint[]): number;
24
+ /** Total length of the current polyline. */
25
+ get totalLength(): number;
26
+ /**
27
+ * Sample a point by normalized progress along the whole length.
28
+ *
29
+ * - `progress = 0` → start vertex
30
+ * - `progress = 1` → end vertex
31
+ *
32
+ * Uses a small edge threshold (0.5 units) to snap near-start/near-end queries to exact vertices,
33
+ * mirroring the behavior in the original implementation.
34
+ *
35
+ * @param progress Normalized value in [0..1]. Values are clamped to this range.
36
+ * @returns Interpolated point, segment tangent, and whether it was clamped to an edge.
37
+ */
38
+ getPointAtProgress(progress: number): ISamplerResult;
39
+ /**
40
+ * Backward-compatible alias.
41
+ * Equivalent to {@link getPointAtProgress}.
42
+ */
43
+ getPointAtLength(progress: number): ISamplerResult;
44
+ /**
45
+ * Sample a point by absolute distance from the start (in the same units as your points).
46
+ * This is a convenience wrapper over {@link getPointAtProgress}.
47
+ *
48
+ * @param distance Distance from 0 to {@link totalLength}. Values outside are clamped.
49
+ * @returns Interpolated point, segment tangent, and whether it was clamped to an edge.
50
+ */
51
+ getPointAtDistance(distance: number): ISamplerResult;
52
+ /** Binary-search the first index where cumulativeLengths[index] >= target. */
53
+ private static _findRightIndex;
54
+ /** Linear interpolation between `a` and `b`. */
55
+ private static _lerp;
56
+ /** Clamp `value` into [min, max]. */
57
+ private static _clamp;
58
+ /** Safe ratio `num / den` with tiny-denominator guard. */
59
+ private static _safeRatio;
60
+ }
@@ -0,0 +1,29 @@
1
+ import { IPoint } from '@foblex/2d';
2
+ import { ITangent } from './i-tangent';
3
+ /**
4
+ * Immutable polyline geometry with precomputed cumulative lengths and segment tangents.
5
+ * Keep this class focused on geometry only; sampling/traversal lives in PolylineSampler.
6
+ */
7
+ export declare class Polyline {
8
+ /** Cleaned points (with consecutive duplicates removed). */
9
+ readonly points: IPoint[];
10
+ /** Cumulative length from start to each vertex. Same length as `points`. */
11
+ readonly cumulativeLengths: number[];
12
+ /** Unit tangent per segment `i` for segment [i -> i+1]. Length = points.length - 1. */
13
+ readonly segmentTangents: ITangent[];
14
+ /** Total length of the polyline (>= 1 for the degenerate fallback). */
15
+ readonly totalLength: number;
16
+ /**
17
+ * Construct a polyline from raw points.
18
+ * Consecutive duplicate points are removed.
19
+ * If less than 2 points remain, it falls back to a unit horizontal segment [0,0] → [1,0].
20
+ */
21
+ constructor(points: IPoint[]);
22
+ /**
23
+ * Create a polyline by cloning points (defensive copy).
24
+ * @param points Raw input points; they will be copied and cleaned.
25
+ */
26
+ static from(points: IPoint[]): Polyline;
27
+ /** Remove consecutive duplicate points. */
28
+ private static _removeConsecutiveDuplicates;
29
+ }
@@ -1,28 +1,26 @@
1
- import { AfterViewInit, ElementRef, OnChanges, OnDestroy, OnInit } from "@angular/core";
1
+ import { AfterViewInit, OnChanges, OnDestroy, OnInit } from '@angular/core';
2
2
  import { EFConnectionBehavior } from '../common';
3
3
  import { EFConnectionType } from '../common';
4
- import { FConnectionFactory } from '../f-connection-builder';
5
4
  import { FConnectionBase } from '../common/f-connection-base';
6
5
  import * as i0 from "@angular/core";
7
6
  export declare class FConnectionForCreateComponent extends FConnectionBase implements AfterViewInit, OnInit, OnChanges, OnDestroy {
8
7
  fId: import("@angular/core").WritableSignal<string>;
9
8
  fText: string;
10
9
  fTextStartOffset: string;
11
- fOutputId: string;
12
- fInputId: string;
10
+ fOutputId: import("@angular/core").WritableSignal<string>;
11
+ fInputId: import("@angular/core").WritableSignal<string>;
13
12
  fRadius: number;
14
13
  fOffset: number;
15
14
  fBehavior: EFConnectionBehavior;
16
15
  fType: EFConnectionType | string;
17
16
  get boundingElement(): HTMLElement | SVGElement;
18
17
  private readonly _mediator;
19
- constructor(elementReference: ElementRef<HTMLElement>, fConnectionFactory: FConnectionFactory);
20
18
  ngOnInit(): void;
21
19
  ngAfterViewInit(): void;
22
20
  ngOnChanges(): void;
23
21
  ngOnDestroy(): void;
24
22
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionForCreateComponent, never>;
25
- static ɵcmp: i0.ɵɵComponentDeclaration<FConnectionForCreateComponent, "f-connection-for-create", never, { "fRadius": { "alias": "fRadius"; "required": false; }; "fOffset": { "alias": "fOffset"; "required": false; }; "fBehavior": { "alias": "fBehavior"; "required": false; }; "fType": { "alias": "fType"; "required": false; }; }, {}, never, ["*", "[fConnectionCenter]"], false, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<FConnectionForCreateComponent, "f-connection-for-create", never, { "fRadius": { "alias": "fRadius"; "required": false; }; "fOffset": { "alias": "fOffset"; "required": false; }; "fBehavior": { "alias": "fBehavior"; "required": false; }; "fType": { "alias": "fType"; "required": false; }; }, {}, never, ["*", "[fConnectionCenter]", "[fConnectionContent]"], false, never>;
26
24
  static ngAcceptInputType_fRadius: unknown;
27
25
  static ngAcceptInputType_fOffset: unknown;
28
26
  static ngAcceptInputType_fBehavior: unknown;
@@ -1,6 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { IHasHostElement } from '../../i-has-host-element';
3
- import * as i0 from "@angular/core";
4
3
  export declare const F_MARKER: InjectionToken<unknown>;
5
4
  export declare abstract class FMarkerBase implements IHasHostElement {
6
5
  abstract hostElement: HTMLElement;
@@ -11,6 +10,4 @@ export declare abstract class FMarkerBase implements IHasHostElement {
11
10
  abstract type: string;
12
11
  abstract orient: 'auto' | 'auto-start-reverse' | string;
13
12
  abstract markerUnits: 'strokeWidth' | 'userSpaceOnUse';
14
- static ɵfac: i0.ɵɵFactoryDeclaration<FMarkerBase, never>;
15
- static ɵdir: i0.ɵɵDirectiveDeclaration<FMarkerBase, never, never, {}, {}, never, never, false, never>;
16
13
  }
@@ -1,9 +1,9 @@
1
- import { ElementRef, OnDestroy, OnInit } from "@angular/core";
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
2
  import { FMarkerBase } from './f-marker-base';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class FMarkerDirective extends FMarkerBase implements OnInit, OnDestroy {
5
- private elementReference;
6
- get hostElement(): HTMLElement;
5
+ readonly hostElement: any;
6
+ private readonly _mediator;
7
7
  width: number;
8
8
  height: number;
9
9
  refX: number;
@@ -11,10 +11,8 @@ export declare class FMarkerDirective extends FMarkerBase implements OnInit, OnD
11
11
  type: string;
12
12
  orient: 'auto' | 'auto-start-reverse' | 'calculated' | string;
13
13
  markerUnits: 'strokeWidth' | 'userSpaceOnUse';
14
- private _fMediator;
15
- constructor(elementReference: ElementRef<HTMLElement>);
16
14
  ngOnInit(): void;
17
15
  ngOnDestroy(): void;
18
16
  static ɵfac: i0.ɵɵFactoryDeclaration<FMarkerDirective, never>;
19
- static ɵdir: i0.ɵɵDirectiveDeclaration<FMarkerDirective, "svg[fMarker]", never, { "hostElement": { "alias": "hostElement"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "refX": { "alias": "refX"; "required": false; }; "refY": { "alias": "refY"; "required": false; }; "type": { "alias": "type"; "required": false; }; "orient": { "alias": "orient"; "required": false; }; "markerUnits": { "alias": "markerUnits"; "required": false; }; }, {}, never, never, false, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FMarkerDirective, "svg[fMarker]", never, { "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "refX": { "alias": "refX"; "required": false; }; "refY": { "alias": "refY"; "required": false; }; "type": { "alias": "type"; "required": false; }; "orient": { "alias": "orient"; "required": false; }; "markerUnits": { "alias": "markerUnits"; "required": false; }; }, {}, never, never, false, never>;
20
18
  }
@@ -1,7 +1,6 @@
1
- import { AfterViewInit, ElementRef, OnChanges, OnDestroy, OnInit } from "@angular/core";
1
+ import { AfterViewInit, OnChanges, OnDestroy, OnInit } from '@angular/core';
2
2
  import { EFConnectionBehavior } from '../common';
3
3
  import { EFConnectionType } from '../common';
4
- import { FConnectionFactory } from '../f-connection-builder';
5
4
  import { FConnectionBase } from '../common/f-connection-base';
6
5
  import * as i0 from "@angular/core";
7
6
  export declare class FSnapConnectionComponent extends FConnectionBase implements AfterViewInit, OnInit, OnChanges, OnDestroy {
@@ -9,21 +8,20 @@ export declare class FSnapConnectionComponent extends FConnectionBase implements
9
8
  fText: string;
10
9
  fTextStartOffset: string;
11
10
  fSnapThreshold: number;
12
- fOutputId: string;
13
- fInputId: string;
11
+ fOutputId: import("@angular/core").WritableSignal<string>;
12
+ fInputId: import("@angular/core").WritableSignal<string>;
14
13
  fRadius: number;
15
14
  fOffset: number;
16
15
  fBehavior: EFConnectionBehavior;
17
16
  fType: EFConnectionType | string;
18
17
  get boundingElement(): HTMLElement | SVGElement;
19
18
  private readonly _mediator;
20
- constructor(elementReference: ElementRef<HTMLElement>, fConnectionFactory: FConnectionFactory);
21
19
  ngOnInit(): void;
22
20
  ngAfterViewInit(): void;
23
21
  ngOnChanges(): void;
24
22
  ngOnDestroy(): void;
25
23
  static ɵfac: i0.ɵɵFactoryDeclaration<FSnapConnectionComponent, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<FSnapConnectionComponent, "f-snap-connection", never, { "fSnapThreshold": { "alias": "fSnapThreshold"; "required": false; }; "fRadius": { "alias": "fRadius"; "required": false; }; "fOffset": { "alias": "fOffset"; "required": false; }; "fBehavior": { "alias": "fBehavior"; "required": false; }; "fType": { "alias": "fType"; "required": false; }; }, {}, never, ["*", "[fConnectionCenter]"], false, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<FSnapConnectionComponent, "f-snap-connection", never, { "fSnapThreshold": { "alias": "fSnapThreshold"; "required": false; }; "fRadius": { "alias": "fRadius"; "required": false; }; "fOffset": { "alias": "fOffset"; "required": false; }; "fBehavior": { "alias": "fBehavior"; "required": false; }; "fType": { "alias": "fType"; "required": false; }; }, {}, never, ["*", "[fConnectionCenter]", "[fConnectionContent]"], false, never>;
27
25
  static ngAcceptInputType_fSnapThreshold: unknown;
28
26
  static ngAcceptInputType_fRadius: unknown;
29
27
  static ngAcceptInputType_fOffset: unknown;
@@ -3,6 +3,7 @@ export * from './f-connection-for-create';
3
3
  export * from './f-connection';
4
4
  export * from './f-connection-builder';
5
5
  export * from './f-connection-center';
6
+ export * from './f-connection-content';
6
7
  export * from './f-marker';
7
8
  export * from './f-snap-connection';
8
9
  export * from './providers';