@foblex/flow 17.8.4 → 17.8.6

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 (257) hide show
  1. package/domain/drag-rect-cache.d.ts +8 -0
  2. package/domain/f-background/providers.d.ts +1 -1
  3. package/domain/f-canvas/providers.d.ts +1 -1
  4. package/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior-request.d.ts +7 -7
  5. package/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.d.ts +37 -3
  6. package/domain/f-connection/calculate-connection-line-by-behavior/index.d.ts +4 -3
  7. package/domain/f-connection/calculate-connection-line-by-behavior/models/calculate-behavior-request.d.ts +8 -0
  8. package/domain/f-connection/calculate-connection-line-by-behavior/{fixed-center-behavior.d.ts → utils/fixed-center-behavior.d.ts} +2 -2
  9. package/domain/f-connection/calculate-connection-line-by-behavior/{fixed-outbound-behavior.d.ts → utils/fixed-outbound-behavior.d.ts} +2 -2
  10. package/domain/f-connection/calculate-connection-line-by-behavior/{floating-behavior.d.ts → utils/floating-behavior.d.ts} +2 -2
  11. package/domain/f-connection/providers.d.ts +2 -2
  12. package/domain/f-connection/redraw-connections/index.d.ts +1 -1
  13. package/domain/f-connection/redraw-connections/{redraw-connections.execution.d.ts → redraw-connections.d.ts} +3 -3
  14. package/domain/f-connectors/calculate-source-connectors-to-connect/calculate-source-connectors-to-connect-request.d.ts +8 -0
  15. package/domain/f-connectors/calculate-source-connectors-to-connect/calculate-source-connectors-to-connect.d.ts +21 -0
  16. package/domain/f-connectors/calculate-source-connectors-to-connect/index.d.ts +2 -0
  17. package/domain/f-connectors/calculate-target-connectors-to-connect/calculate-target-connectors-to-connect-request.d.ts +8 -0
  18. package/domain/f-connectors/calculate-target-connectors-to-connect/calculate-target-connectors-to-connect.d.ts +20 -0
  19. package/domain/f-connectors/calculate-target-connectors-to-connect/index.d.ts +2 -0
  20. package/domain/f-connectors/index.d.ts +2 -2
  21. package/domain/f-connectors/providers.d.ts +3 -3
  22. package/domain/f-draggable/emit-selection-change-event/emit-selection-change-event.execution.d.ts +1 -1
  23. package/domain/f-event-trigger.d.ts +1 -1
  24. package/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store-request.d.ts +2 -2
  25. package/domain/f-line-alignment/add-line-alignment-to-store/{add-line-alignment-to-store.execution.d.ts → add-line-alignment-to-store.d.ts} +4 -4
  26. package/domain/f-line-alignment/add-line-alignment-to-store/index.d.ts +1 -1
  27. package/domain/f-line-alignment/providers.d.ts +3 -3
  28. package/domain/f-line-alignment/remove-line-alignment-from-store/index.d.ts +1 -1
  29. package/domain/f-line-alignment/remove-line-alignment-from-store/{remove-line-alignment-from-store.execution.d.ts → remove-line-alignment-from-store.d.ts} +4 -4
  30. package/domain/f-node/add-node-to-store/add-node-to-store-request.d.ts +2 -2
  31. package/domain/f-node/calculate-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions-request.d.ts +8 -0
  32. package/domain/f-node/{calculate-node-connectors-connectable-sides → calculate-connectors-connectable-sides}/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions.d.ts +2 -28
  33. package/domain/f-node/calculate-connectors-connectable-sides/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position.d.ts +52 -0
  34. package/domain/f-node/calculate-connectors-connectable-sides/calculate-connectors-connectable-sides-request.d.ts +6 -0
  35. package/domain/f-node/calculate-connectors-connectable-sides/calculate-connectors-connectable-sides.d.ts +22 -0
  36. package/domain/f-node/calculate-connectors-connectable-sides/constants/calculatable-sides.d.ts +6 -0
  37. package/domain/f-node/calculate-connectors-connectable-sides/constants/index.d.ts +1 -0
  38. package/domain/f-node/calculate-connectors-connectable-sides/index.d.ts +7 -0
  39. package/domain/f-node/calculate-connectors-connectable-sides/models/index.d.ts +1 -0
  40. package/domain/f-node/calculate-connectors-connectable-sides/models/t-calculate-mode.d.ts +2 -0
  41. package/domain/f-node/calculate-connectors-connectable-sides/utils/determine-side.d.ts +10 -0
  42. package/domain/f-node/calculate-connectors-connectable-sides/utils/index.d.ts +2 -0
  43. package/domain/f-node/calculate-connectors-connectable-sides/utils/is-calculate-mode.d.ts +7 -0
  44. package/domain/f-node/calculate-input-connections/calculate-input-connections-request.d.ts +2 -2
  45. package/domain/f-node/calculate-input-connections/calculate-input-connections.d.ts +3 -3
  46. package/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.d.ts +2 -3
  47. package/domain/f-node/calculate-output-connections/calculate-output-connections-request.d.ts +2 -2
  48. package/domain/f-node/calculate-output-connections/calculate-output-connections.d.ts +3 -3
  49. package/domain/f-node/get-parent-nodes/get-parent-nodes.d.ts +1 -1
  50. package/domain/f-node/get-parent-nodes/get-parent-nodes.request.d.ts +2 -2
  51. package/domain/f-node/index.d.ts +1 -2
  52. package/domain/f-node/providers.d.ts +2 -3
  53. package/domain/f-node/remove-node-from-store/remove-node-from-store-request.d.ts +2 -2
  54. package/domain/f-node/remove-node-from-store/remove-node-from-store.d.ts +1 -1
  55. package/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.d.ts +2 -2
  56. package/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.d.ts +2 -2
  57. package/domain/index.d.ts +1 -0
  58. package/domain/providers.d.ts +4 -3
  59. package/domain/update-item-and-children-layers/move-front-elements-before-target-element/index.d.ts +2 -2
  60. package/domain/update-item-and-children-layers/move-front-elements-before-target-element/{move-front-elements-before-target-element.request.d.ts → move-front-elements-before-target-element-request.d.ts} +4 -4
  61. package/domain/update-item-and-children-layers/move-front-elements-before-target-element/{move-front-elements-before-target-element.execution.d.ts → move-front-elements-before-target-element.d.ts} +4 -4
  62. package/esm2022/domain/css-cls.mjs +2 -1
  63. package/esm2022/domain/drag-rect-cache.mjs +19 -0
  64. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior-request.mjs +4 -4
  65. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.mjs +126 -13
  66. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/index.mjs +5 -4
  67. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/models/calculate-behavior-request.mjs +2 -0
  68. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/utils/fixed-center-behavior.mjs +12 -0
  69. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/utils/fixed-outbound-behavior.mjs +31 -0
  70. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/utils/floating-behavior.mjs +22 -0
  71. package/esm2022/domain/f-connection/providers.mjs +3 -3
  72. package/esm2022/domain/f-connection/redraw-connections/index.mjs +2 -2
  73. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.mjs +75 -0
  74. package/esm2022/domain/f-connectors/calculate-source-connectors-to-connect/calculate-source-connectors-to-connect-request.mjs +10 -0
  75. package/esm2022/domain/f-connectors/calculate-source-connectors-to-connect/calculate-source-connectors-to-connect.mjs +59 -0
  76. package/esm2022/domain/f-connectors/calculate-source-connectors-to-connect/index.mjs +3 -0
  77. package/esm2022/domain/f-connectors/calculate-target-connectors-to-connect/calculate-target-connectors-to-connect-request.mjs +10 -0
  78. package/esm2022/domain/f-connectors/calculate-target-connectors-to-connect/calculate-target-connectors-to-connect.mjs +64 -0
  79. package/esm2022/domain/f-connectors/calculate-target-connectors-to-connect/index.mjs +3 -0
  80. package/esm2022/domain/f-connectors/index.mjs +3 -3
  81. package/esm2022/domain/f-connectors/providers.mjs +5 -5
  82. package/esm2022/domain/f-draggable/emit-selection-change-event/emit-selection-change-event-request.mjs +1 -1
  83. package/esm2022/domain/f-draggable/emit-selection-change-event/emit-selection-change-event.execution.mjs +2 -2
  84. package/esm2022/domain/f-event-trigger.mjs +2 -2
  85. package/esm2022/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store-request.mjs +4 -4
  86. package/esm2022/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store.mjs +25 -0
  87. package/esm2022/domain/f-line-alignment/add-line-alignment-to-store/index.mjs +2 -2
  88. package/esm2022/domain/f-line-alignment/providers.mjs +4 -7
  89. package/esm2022/domain/f-line-alignment/remove-line-alignment-from-store/index.mjs +2 -2
  90. package/esm2022/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store.mjs +25 -0
  91. package/esm2022/domain/f-node/add-node-to-store/add-node-to-store-request.mjs +4 -4
  92. package/esm2022/domain/f-node/add-node-to-store/add-node-to-store.mjs +2 -2
  93. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions-request.mjs +10 -0
  94. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions.mjs +59 -0
  95. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/index.mjs +3 -0
  96. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position-request.mjs +8 -0
  97. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position.mjs +132 -0
  98. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/calculate-connectable-side-by-internal-position/index.mjs +3 -0
  99. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/calculate-connectors-connectable-sides-request.mjs +8 -0
  100. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/calculate-connectors-connectable-sides.mjs +73 -0
  101. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/constants/calculatable-sides.mjs +12 -0
  102. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/constants/index.mjs +2 -0
  103. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/index.mjs +8 -0
  104. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/models/index.mjs +2 -0
  105. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/models/t-calculate-mode.mjs +2 -0
  106. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/utils/determine-side.mjs +124 -0
  107. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/utils/index.mjs +3 -0
  108. package/esm2022/domain/f-node/calculate-connectors-connectable-sides/utils/is-calculate-mode.mjs +12 -0
  109. package/esm2022/domain/f-node/calculate-input-connections/calculate-input-connections-request.mjs +4 -4
  110. package/esm2022/domain/f-node/calculate-input-connections/calculate-input-connections.mjs +20 -7
  111. package/esm2022/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.mjs +5 -8
  112. package/esm2022/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.mjs +1 -1
  113. package/esm2022/domain/f-node/calculate-output-connections/calculate-output-connections-request.mjs +4 -4
  114. package/esm2022/domain/f-node/calculate-output-connections/calculate-output-connections.mjs +20 -7
  115. package/esm2022/domain/f-node/fit-to-child-nodes-and-groups/fit-to-child-nodes-and-groups-request.mjs +1 -1
  116. package/esm2022/domain/f-node/get-child-node-ids/get-child-node-ids.request.mjs +1 -1
  117. package/esm2022/domain/f-node/get-parent-nodes/get-parent-nodes.mjs +8 -8
  118. package/esm2022/domain/f-node/get-parent-nodes/get-parent-nodes.request.mjs +4 -4
  119. package/esm2022/domain/f-node/index.mjs +2 -3
  120. package/esm2022/domain/f-node/providers.mjs +3 -5
  121. package/esm2022/domain/f-node/remove-node-from-store/remove-node-from-store-request.mjs +4 -4
  122. package/esm2022/domain/f-node/remove-node-from-store/remove-node-from-store.mjs +3 -3
  123. package/esm2022/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.mjs +3 -3
  124. package/esm2022/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.mjs +5 -5
  125. package/esm2022/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.mjs +4 -4
  126. package/esm2022/domain/get-normalized-connector-rect/get-normalized-connector-rect-request.mjs +1 -1
  127. package/esm2022/domain/get-normalized-connector-rect/get-normalized-connector-rect.execution.mjs +2 -2
  128. package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect.execution.mjs +2 -14
  129. package/esm2022/domain/get-normalized-point/get-normalized-point.execution.mjs +4 -1
  130. package/esm2022/domain/index.mjs +2 -1
  131. package/esm2022/domain/is-mobile.mjs +5 -3
  132. package/esm2022/domain/providers.mjs +5 -5
  133. package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/index.mjs +3 -3
  134. package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element-request.mjs +15 -0
  135. package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.mjs +34 -0
  136. package/esm2022/f-connection/common/domain/adaptive-curve-builder.mjs +201 -0
  137. package/esm2022/f-connection/common/domain/index.mjs +2 -1
  138. package/esm2022/f-connection/common/e-f-connection-connectable-side.mjs +12 -0
  139. package/esm2022/f-connection/common/e-f-connection-type.mjs +2 -1
  140. package/esm2022/f-connection/common/f-connection-base.mjs +28 -5
  141. package/esm2022/f-connection/common/index.mjs +2 -1
  142. package/esm2022/f-connection/f-connection/f-connection.component.mjs +13 -3
  143. package/esm2022/f-connection/f-connection-builder/f-connection-factory.mjs +9 -17
  144. package/esm2022/f-connection/f-connection-content/f-connection-content.mjs +10 -4
  145. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-layout-engine.mjs +4 -5
  146. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-place.mjs +3 -2
  147. package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +14 -4
  148. package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +14 -4
  149. package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +1 -1
  150. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/create-connection-preparation-request.mjs +10 -0
  151. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/create-connection-preparation.mjs +58 -0
  152. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/create-connection-from-output-preparation-request.mjs +10 -0
  153. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/create-connection-from-output-preparation.mjs +47 -0
  154. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/index.mjs +3 -3
  155. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/index.mjs +3 -3
  156. package/esm2022/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.mjs +12 -12
  157. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-source.drag-handler.mjs +7 -7
  158. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-target.drag-handler.mjs +10 -10
  159. package/esm2022/f-draggable/f-connection/providers.mjs +4 -4
  160. package/esm2022/f-draggable/f-draggable.directive.mjs +5 -4
  161. package/esm2022/f-draggable/f-drop-to-group/drop-to-group-preparation/drop-to-group-preparation-request.mjs +1 -1
  162. package/esm2022/f-draggable/f-drop-to-group/drop-to-group-preparation/drop-to-group-preparation.mjs +11 -13
  163. package/esm2022/f-draggable/f-node-move/connection-drag-handlers/base-connection.drag-handler.mjs +3 -3
  164. package/esm2022/f-draggable/f-node-move/move-preparation/f-node-move-preparation.execution.mjs +14 -12
  165. package/esm2022/f-draggable/f-node-move/move-preparation/f-node-move-preparation.request.mjs +1 -1
  166. package/esm2022/f-flow/f-flow.component.mjs +2 -2
  167. package/esm2022/f-node/f-group.directive.mjs +3 -3
  168. package/esm2022/f-node/f-node.directive.mjs +3 -3
  169. package/esm2022/f-storage/f-connectors-store.mjs +11 -0
  170. package/esm2022/f-storage/index.mjs +2 -1
  171. package/f-backgroud/providers.d.ts +1 -1
  172. package/f-connection/common/domain/adaptive-curve-builder.d.ts +102 -0
  173. package/f-connection/common/domain/index.d.ts +1 -0
  174. package/f-connection/common/e-f-connection-connectable-side.d.ts +10 -0
  175. package/f-connection/common/e-f-connection-type.d.ts +2 -1
  176. package/f-connection/common/f-connection-base.d.ts +14 -2
  177. package/f-connection/common/index.d.ts +1 -0
  178. package/f-connection/f-connection/f-connection.component.d.ts +4 -2
  179. package/f-connection/f-connection-builder/f-connection-factory.d.ts +2 -4
  180. package/f-connection/f-connection-content/f-connection-content.d.ts +2 -2
  181. package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +4 -2
  182. package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +4 -2
  183. package/f-connection/providers.d.ts +1 -1
  184. package/f-draggable/f-connection/f-create-connection/create-preparation/create-connection-preparation-request.d.ts +8 -0
  185. package/f-draggable/f-connection/f-create-connection/create-preparation/create-connection-preparation.d.ts +16 -0
  186. package/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/create-connection-from-output-preparation-request.d.ts +8 -0
  187. package/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/create-connection-from-output-preparation.d.ts +14 -0
  188. package/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/index.d.ts +2 -2
  189. package/f-draggable/f-connection/f-create-connection/create-preparation/index.d.ts +2 -2
  190. package/f-draggable/f-connection/providers.d.ts +2 -2
  191. package/f-draggable/f-drop-to-group/drop-to-group-preparation/drop-to-group-preparation-request.d.ts +2 -2
  192. package/f-draggable/f-drop-to-group/providers.d.ts +1 -1
  193. package/f-draggable/f-node-move/create-drag-model-from-selection/providers.d.ts +1 -1
  194. package/f-draggable/f-node-move/move-preparation/f-node-move-preparation.execution.d.ts +1 -1
  195. package/f-draggable/f-node-move/move-preparation/f-node-move-preparation.request.d.ts +1 -1
  196. package/f-draggable/f-node-move/providers.d.ts +1 -1
  197. package/f-draggable/providers.d.ts +1 -1
  198. package/f-minimap/domain/providers.d.ts +1 -1
  199. package/f-node/providers.d.ts +1 -1
  200. package/f-selection-area/domain/providers.d.ts +1 -1
  201. package/f-storage/f-connectors-store.d.ts +6 -0
  202. package/f-storage/index.d.ts +1 -0
  203. package/f-storage/providers.d.ts +1 -1
  204. package/fesm2022/foblex-flow.mjs +1741 -1235
  205. package/fesm2022/foblex-flow.mjs.map +1 -1
  206. package/package.json +1 -1
  207. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.d.ts +0 -17
  208. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.d.ts +0 -6
  209. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/index.d.ts +0 -2
  210. 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 +0 -18
  211. 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 +0 -6
  212. package/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/index.d.ts +0 -2
  213. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions-request.d.ts +0 -9
  214. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position.d.ts +0 -20
  215. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-node-connectors-connectable-sides-request.d.ts +0 -6
  216. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-node-connectors-connectable-sides.d.ts +0 -28
  217. package/domain/f-node/calculate-node-connectors-connectable-sides/index.d.ts +0 -4
  218. package/domain/f-node/get-nodes/get-nodes-request.d.ts +0 -3
  219. package/domain/f-node/get-nodes/get-nodes.d.ts +0 -13
  220. package/domain/f-node/get-nodes/index.d.ts +0 -2
  221. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.mjs +0 -12
  222. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.mjs +0 -31
  223. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.mjs +0 -22
  224. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +0 -73
  225. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.mjs +0 -48
  226. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.mjs +0 -8
  227. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/index.mjs +0 -3
  228. 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 +0 -43
  229. 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 +0 -8
  230. package/esm2022/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/index.mjs +0 -3
  231. package/esm2022/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store.execution.mjs +0 -25
  232. package/esm2022/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store.execution.mjs +0 -25
  233. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions-request.mjs +0 -16
  234. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions.mjs +0 -181
  235. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/index.mjs +0 -3
  236. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position-request.mjs +0 -8
  237. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position.mjs +0 -55
  238. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-internal-position/index.mjs +0 -3
  239. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-node-connectors-connectable-sides-request.mjs +0 -8
  240. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-node-connectors-connectable-sides.mjs +0 -90
  241. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/index.mjs +0 -5
  242. package/esm2022/domain/f-node/get-nodes/get-nodes-request.mjs +0 -4
  243. package/esm2022/domain/f-node/get-nodes/get-nodes.mjs +0 -25
  244. package/esm2022/domain/f-node/get-nodes/index.mjs +0 -3
  245. package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.mjs +0 -34
  246. package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.mjs +0 -15
  247. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.execution.mjs +0 -52
  248. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.request.mjs +0 -10
  249. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.execution.mjs +0 -49
  250. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.request.mjs +0 -10
  251. package/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.execution.d.ts +0 -16
  252. package/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.request.d.ts +0 -8
  253. package/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.execution.d.ts +0 -14
  254. package/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.request.d.ts +0 -8
  255. /package/domain/f-node/{calculate-node-connectors-connectable-sides → calculate-connectors-connectable-sides}/calculate-connectable-side-by-connected-positions/index.d.ts +0 -0
  256. /package/domain/f-node/{calculate-node-connectors-connectable-sides → calculate-connectors-connectable-sides}/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position-request.d.ts +0 -0
  257. /package/domain/f-node/{calculate-node-connectors-connectable-sides → calculate-connectors-connectable-sides}/calculate-connectable-side-by-internal-position/index.d.ts +0 -0
@@ -0,0 +1,59 @@
1
+ import { __decorate } from "tslib";
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { FExecutionRegister, FMediator } from '@foblex/mediator';
4
+ import { CalculateConnectableSideByConnectedPositionsRequest } from './calculate-connectable-side-by-connected-positions-request';
5
+ import { determineSide } from '../utils';
6
+ import { CALCULATABLE_SIDES } from '../constants';
7
+ import { GetNormalizedElementRectRequest } from '../../../get-normalized-element-rect';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * Execution that calculates the connectable side for a connector
11
+ * based on positions of connected connectors and allowed sides.
12
+ */
13
+ let CalculateConnectableSideByConnectedPositions = class CalculateConnectableSideByConnectedPositions {
14
+ _mediator = inject(FMediator);
15
+ /**
16
+ * Entry point (hot path). Avoids intermediate arrays and redundant allocations.
17
+ *
18
+ * @param request - Contains the connector and optionally allowed sides.
19
+ * @returns {EFConnectableSide} - The chosen connectable side.
20
+ */
21
+ handle({ connector, pointerPosition, }) {
22
+ const mode = connector.userFConnectableSide;
23
+ const selfCenter = this._getConnectorRect(connector.hostElement).gravityCenter;
24
+ const acc = this._accumulateConnectedCenters(connector.hostElement, connector.toConnector, pointerPosition);
25
+ const avgX = acc.sumX / acc.count;
26
+ const avgY = acc.sumY / acc.count;
27
+ return determineSide(selfCenter.x, selfCenter.y, avgX, avgY, CALCULATABLE_SIDES[mode]);
28
+ }
29
+ _accumulateConnectedCenters(selfHost, connected, pointerPosition) {
30
+ let sumX = pointerPosition?.x || 0;
31
+ let sumY = pointerPosition?.y || 0;
32
+ let count = pointerPosition ? 1 : 0;
33
+ if (connected && connected.length) {
34
+ for (let i = 0; i < connected.length; i++) {
35
+ const el = connected[i].hostElement;
36
+ if (el === selfHost)
37
+ continue;
38
+ const c = this._getConnectorRect(el).gravityCenter;
39
+ sumX += c.x;
40
+ sumY += c.y;
41
+ count++;
42
+ }
43
+ }
44
+ return { sumX, sumY, count };
45
+ }
46
+ _getConnectorRect(element) {
47
+ return this._mediator.execute(new GetNormalizedElementRectRequest(element));
48
+ }
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectableSideByConnectedPositions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
50
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectableSideByConnectedPositions });
51
+ };
52
+ CalculateConnectableSideByConnectedPositions = __decorate([
53
+ FExecutionRegister(CalculateConnectableSideByConnectedPositionsRequest)
54
+ ], CalculateConnectableSideByConnectedPositions);
55
+ export { CalculateConnectableSideByConnectedPositions };
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectableSideByConnectedPositions, decorators: [{
57
+ type: Injectable
58
+ }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktY29ubmVjdGVkLXBvc2l0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2Ytbm9kZS9jYWxjdWxhdGUtY29ubmVjdG9ycy1jb25uZWN0YWJsZS1zaWRlcy9jYWxjdWxhdGUtY29ubmVjdGFibGUtc2lkZS1ieS1jb25uZWN0ZWQtcG9zaXRpb25zL2NhbGN1bGF0ZS1jb25uZWN0YWJsZS1zaWRlLWJ5LWNvbm5lY3RlZC1wb3NpdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbURBQW1ELEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUdsSSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFFdkY7OztHQUdHO0FBR0ksSUFBTSw0Q0FBNEMsR0FBbEQsTUFBTSw0Q0FBNEM7SUFHdEMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUvQzs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxFQUNaLFNBQVMsRUFDVCxlQUFlLEdBQ3FDO1FBQ3BELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxvQkFBc0MsQ0FBQztRQUM5RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUMvRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQzFDLFNBQVMsQ0FBQyxXQUFXLEVBQ3JCLFNBQVMsQ0FBQyxXQUFXLEVBQ3JCLGVBQWUsQ0FDaEIsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUNsQyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFFbEMsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRU8sMkJBQTJCLENBQ2pDLFFBQWtDLEVBQ2xDLFNBQThDLEVBQzlDLGVBQW1DO1FBRW5DLElBQUksSUFBSSxHQUFHLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksSUFBSSxHQUFHLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEMsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7Z0JBQ3BDLElBQUksRUFBRSxLQUFLLFFBQVE7b0JBQUUsU0FBUztnQkFFOUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDbkQsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1osSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1osS0FBSyxFQUFFLENBQUM7WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxPQUFpQztRQUN6RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFlLElBQUksK0JBQStCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO3dHQXZEVSw0Q0FBNEM7NEdBQTVDLDRDQUE0Qzs7QUFBNUMsNENBQTRDO0lBRHhELGtCQUFrQixDQUFDLG1EQUFtRCxDQUFDO0dBQzNELDRDQUE0QyxDQXdEeEQ7OzRGQXhEWSw0Q0FBNEM7a0JBRnhELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBDYWxjdWxhdGVDb25uZWN0YWJsZVNpZGVCeUNvbm5lY3RlZFBvc2l0aW9uc1JlcXVlc3QgfSBmcm9tICcuL2NhbGN1bGF0ZS1jb25uZWN0YWJsZS1zaWRlLWJ5LWNvbm5lY3RlZC1wb3NpdGlvbnMtcmVxdWVzdCc7XG5pbXBvcnQgeyBFRkNvbm5lY3RhYmxlU2lkZSwgRkNvbm5lY3RvckJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9mLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgSVBvaW50LCBJUm91bmRlZFJlY3QgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IGRldGVybWluZVNpZGUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBDQUxDVUxBVEFCTEVfU0lERVMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVENhbGN1bGF0ZU1vZGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgR2V0Tm9ybWFsaXplZEVsZW1lbnRSZWN0UmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL2dldC1ub3JtYWxpemVkLWVsZW1lbnQtcmVjdCc7XG5cbi8qKlxuICogRXhlY3V0aW9uIHRoYXQgY2FsY3VsYXRlcyB0aGUgY29ubmVjdGFibGUgc2lkZSBmb3IgYSBjb25uZWN0b3JcbiAqIGJhc2VkIG9uIHBvc2l0aW9ucyBvZiBjb25uZWN0ZWQgY29ubmVjdG9ycyBhbmQgYWxsb3dlZCBzaWRlcy5cbiAqL1xuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihDYWxjdWxhdGVDb25uZWN0YWJsZVNpZGVCeUNvbm5lY3RlZFBvc2l0aW9uc1JlcXVlc3QpXG5leHBvcnQgY2xhc3MgQ2FsY3VsYXRlQ29ubmVjdGFibGVTaWRlQnlDb25uZWN0ZWRQb3NpdGlvbnNcbiAgaW1wbGVtZW50cyBJRXhlY3V0aW9uPENhbGN1bGF0ZUNvbm5lY3RhYmxlU2lkZUJ5Q29ubmVjdGVkUG9zaXRpb25zUmVxdWVzdCwgRUZDb25uZWN0YWJsZVNpZGU+XG57XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG5cbiAgLyoqXG4gICAqIEVudHJ5IHBvaW50IChob3QgcGF0aCkuIEF2b2lkcyBpbnRlcm1lZGlhdGUgYXJyYXlzIGFuZCByZWR1bmRhbnQgYWxsb2NhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0IC0gQ29udGFpbnMgdGhlIGNvbm5lY3RvciBhbmQgb3B0aW9uYWxseSBhbGxvd2VkIHNpZGVzLlxuICAgKiBAcmV0dXJucyB7RUZDb25uZWN0YWJsZVNpZGV9IC0gVGhlIGNob3NlbiBjb25uZWN0YWJsZSBzaWRlLlxuICAgKi9cbiAgcHVibGljIGhhbmRsZSh7XG4gICAgY29ubmVjdG9yLFxuICAgIHBvaW50ZXJQb3NpdGlvbixcbiAgfTogQ2FsY3VsYXRlQ29ubmVjdGFibGVTaWRlQnlDb25uZWN0ZWRQb3NpdGlvbnNSZXF1ZXN0KTogRUZDb25uZWN0YWJsZVNpZGUge1xuICAgIGNvbnN0IG1vZGUgPSBjb25uZWN0b3IudXNlckZDb25uZWN0YWJsZVNpZGUgYXMgVENhbGN1bGF0ZU1vZGU7XG4gICAgY29uc3Qgc2VsZkNlbnRlciA9IHRoaXMuX2dldENvbm5lY3RvclJlY3QoY29ubmVjdG9yLmhvc3RFbGVtZW50KS5ncmF2aXR5Q2VudGVyO1xuICAgIGNvbnN0IGFjYyA9IHRoaXMuX2FjY3VtdWxhdGVDb25uZWN0ZWRDZW50ZXJzKFxuICAgICAgY29ubmVjdG9yLmhvc3RFbGVtZW50LFxuICAgICAgY29ubmVjdG9yLnRvQ29ubmVjdG9yLFxuICAgICAgcG9pbnRlclBvc2l0aW9uLFxuICAgICk7XG5cbiAgICBjb25zdCBhdmdYID0gYWNjLnN1bVggLyBhY2MuY291bnQ7XG4gICAgY29uc3QgYXZnWSA9IGFjYy5zdW1ZIC8gYWNjLmNvdW50O1xuXG4gICAgcmV0dXJuIGRldGVybWluZVNpZGUoc2VsZkNlbnRlci54LCBzZWxmQ2VudGVyLnksIGF2Z1gsIGF2Z1ksIENBTENVTEFUQUJMRV9TSURFU1ttb2RlXSk7XG4gIH1cblxuICBwcml2YXRlIF9hY2N1bXVsYXRlQ29ubmVjdGVkQ2VudGVycyhcbiAgICBzZWxmSG9zdDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50LFxuICAgIGNvbm5lY3RlZDogRkNvbm5lY3RvckJhc2VbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgcG9pbnRlclBvc2l0aW9uOiBJUG9pbnQgfCB1bmRlZmluZWQsXG4gICk6IHsgc3VtWDogbnVtYmVyOyBzdW1ZOiBudW1iZXI7IGNvdW50OiBudW1iZXIgfSB7XG4gICAgbGV0IHN1bVggPSBwb2ludGVyUG9zaXRpb24/LnggfHwgMDtcbiAgICBsZXQgc3VtWSA9IHBvaW50ZXJQb3NpdGlvbj8ueSB8fCAwO1xuICAgIGxldCBjb3VudCA9IHBvaW50ZXJQb3NpdGlvbiA/IDEgOiAwO1xuXG4gICAgaWYgKGNvbm5lY3RlZCAmJiBjb25uZWN0ZWQubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbm5lY3RlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBlbCA9IGNvbm5lY3RlZFtpXS5ob3N0RWxlbWVudDtcbiAgICAgICAgaWYgKGVsID09PSBzZWxmSG9zdCkgY29udGludWU7XG5cbiAgICAgICAgY29uc3QgYyA9IHRoaXMuX2dldENvbm5lY3RvclJlY3QoZWwpLmdyYXZpdHlDZW50ZXI7XG4gICAgICAgIHN1bVggKz0gYy54O1xuICAgICAgICBzdW1ZICs9IGMueTtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBzdW1YLCBzdW1ZLCBjb3VudCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29ubmVjdG9yUmVjdChlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQpOiBJUm91bmRlZFJlY3Qge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlPElSb3VuZGVkUmVjdD4obmV3IEdldE5vcm1hbGl6ZWRFbGVtZW50UmVjdFJlcXVlc3QoZWxlbWVudCkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './calculate-connectable-side-by-connected-positions';
2
+ export * from './calculate-connectable-side-by-connected-positions-request';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMvY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktY29ubmVjdGVkLXBvc2l0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFEQUFxRCxDQUFDO0FBRXBFLGNBQWMsNkRBQTZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NhbGN1bGF0ZS1jb25uZWN0YWJsZS1zaWRlLWJ5LWNvbm5lY3RlZC1wb3NpdGlvbnMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NhbGN1bGF0ZS1jb25uZWN0YWJsZS1zaWRlLWJ5LWNvbm5lY3RlZC1wb3NpdGlvbnMtcmVxdWVzdCc7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export class CalculateConnectableSideByInternalPositionRequest {
2
+ connector;
3
+ static fToken = Symbol('CalculateConnectableSideByInternalPositionRequest');
4
+ constructor(connector) {
5
+ this.connector = connector;
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktaW50ZXJuYWwtcG9zaXRpb24tcmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2Ytbm9kZS9jYWxjdWxhdGUtY29ubmVjdG9ycy1jb25uZWN0YWJsZS1zaWRlcy9jYWxjdWxhdGUtY29ubmVjdGFibGUtc2lkZS1ieS1pbnRlcm5hbC1wb3NpdGlvbi9jYWxjdWxhdGUtY29ubmVjdGFibGUtc2lkZS1ieS1pbnRlcm5hbC1wb3NpdGlvbi1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxpREFBaUQ7SUFFaEM7SUFENUIsTUFBTSxDQUFVLE1BQU0sR0FBRyxNQUFNLENBQUMsbURBQW1ELENBQUMsQ0FBQztJQUNyRixZQUE0QixTQUF5QjtRQUF6QixjQUFTLEdBQVQsU0FBUyxDQUFnQjtJQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGQ29ubmVjdG9yQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBDYWxjdWxhdGVDb25uZWN0YWJsZVNpZGVCeUludGVybmFsUG9zaXRpb25SZXF1ZXN0IHtcbiAgc3RhdGljIHJlYWRvbmx5IGZUb2tlbiA9IFN5bWJvbCgnQ2FsY3VsYXRlQ29ubmVjdGFibGVTaWRlQnlJbnRlcm5hbFBvc2l0aW9uUmVxdWVzdCcpO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY29ubmVjdG9yOiBGQ29ubmVjdG9yQmFzZSkge31cbn1cbiJdfQ==
@@ -0,0 +1,132 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable, InjectionToken, inject } from '@angular/core';
3
+ import { FExecutionRegister, FMediator } from '@foblex/mediator';
4
+ import { CalculateConnectableSideByInternalPositionRequest } from './calculate-connectable-side-by-internal-position-request';
5
+ import { EFConnectableSide } from '../../../../f-connectors';
6
+ import { RectExtensions } from '@foblex/2d';
7
+ import { IsDragStartedRequest } from '../../../f-draggable';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * Injection token for configuring the side detection tolerance (in pixels).
11
+ * A new side must beat the previous side by more than this value to switch.
12
+ */
13
+ export const CONNECTABLE_SIDE_EPSILON = new InjectionToken('CONNECTABLE_SIDE_EPSILON');
14
+ /**
15
+ * Calculates the connectable side of a connector relative to its node host.
16
+ *
17
+ * Optimizations & behavior:
18
+ * - Hysteresis via epsilon to avoid jitter near boundaries.
19
+ * - Per-connector memoization using WeakMap (no leaks).
20
+ * - During drag (isDragging === true) the last memorized side is returned immediately
21
+ * for maximum stability and performance; a safe fallback computes it if missing.
22
+ */
23
+ let CalculateConnectableSideByInternalPosition = class CalculateConnectableSideByInternalPosition {
24
+ _mediator = inject(FMediator);
25
+ /**
26
+ * Stores the last computed side per connector.
27
+ * WeakMap ensures entries are garbage-collected with the connector objects.
28
+ */
29
+ _lastSide = new WeakMap();
30
+ /** Pixel threshold to prevent side switching unless the new side is sufficiently better. */
31
+ _epsilon = Math.max(0, inject(CONNECTABLE_SIDE_EPSILON, { optional: true }) ?? 2);
32
+ /**
33
+ * Entry point: returns the connectable side for a given connector.
34
+ * If a drag is in progress, returns the last memorized side for stability.
35
+ */
36
+ handle({ connector, }) {
37
+ // Fast path during drag: use memorized side (guaranteed to be present by caller’s contract).
38
+ if (this._isDragging()) {
39
+ const cached = this._lastSide.get(connector);
40
+ if (cached !== undefined)
41
+ return cached;
42
+ // Safe fallback: compute once and cache.
43
+ const computed = this._getSideByDelta(connector.hostElement, connector.fNodeHost, connector);
44
+ this._lastSide.set(connector, computed);
45
+ return computed;
46
+ }
47
+ // Normal path: compute with hysteresis, then remember.
48
+ const side = this._getSideByDelta(connector.hostElement, connector.fNodeHost, connector);
49
+ this._lastSide.set(connector, side);
50
+ return side;
51
+ }
52
+ /**
53
+ * Determines the side of the connector relative to the node host by
54
+ * comparing distances from the connector's gravity center to each host edge.
55
+ *
56
+ * Hysteresis rule:
57
+ * If the previously chosen side is within `epsilon` pixels of the new best side,
58
+ * keep the previous side to avoid flicker.
59
+ *
60
+ * @param connectorHost - The connector element (HTML or SVG).
61
+ * @param nodeHost - The parent node element (HTML or SVG).
62
+ * @param connectorKey - The connector object, used as WeakMap key.
63
+ * @returns The most stable connectable side.
64
+ */
65
+ _getSideByDelta(connectorHost, nodeHost, connectorKey) {
66
+ const childRect = RectExtensions.fromElement(connectorHost);
67
+ const parentRect = nodeHost.getBoundingClientRect();
68
+ const cx = childRect.gravityCenter.x;
69
+ const cy = childRect.gravityCenter.y;
70
+ const deltaLeft = cx - parentRect.left;
71
+ const deltaRight = parentRect.right - cx;
72
+ const deltaTop = cy - parentRect.top;
73
+ const deltaBottom = parentRect.bottom - cy;
74
+ // Determine best side (min delta) in one pass
75
+ let minIdx = 0;
76
+ let minVal = deltaLeft;
77
+ // i=1..3 correspond to Right, Top, Bottom respectively
78
+ const candidates = [deltaLeft, deltaRight, deltaTop, deltaBottom];
79
+ for (let i = 1; i < 4; i++) {
80
+ const v = candidates[i];
81
+ if (v < minVal) {
82
+ minVal = v;
83
+ minIdx = i;
84
+ }
85
+ }
86
+ let candidate = minIdx === 0
87
+ ? EFConnectableSide.LEFT
88
+ : minIdx === 1
89
+ ? EFConnectableSide.RIGHT
90
+ : minIdx === 2
91
+ ? EFConnectableSide.TOP
92
+ : EFConnectableSide.BOTTOM;
93
+ // Hysteresis: prefer previously chosen side if it's almost as good
94
+ const prev = this._lastSide.get(connectorKey);
95
+ if (prev !== undefined && prev !== candidate) {
96
+ const prevIdx = prev === EFConnectableSide.LEFT
97
+ ? 0
98
+ : prev === EFConnectableSide.RIGHT
99
+ ? 1
100
+ : prev === EFConnectableSide.TOP
101
+ ? 2
102
+ : 3;
103
+ const prevDelta = prevIdx === 0
104
+ ? deltaLeft
105
+ : prevIdx === 1
106
+ ? deltaRight
107
+ : prevIdx === 2
108
+ ? deltaTop
109
+ : deltaBottom;
110
+ // How much better the new side is (smaller is better)
111
+ const advantage = prevDelta - minVal;
112
+ if (advantage <= this._epsilon) {
113
+ candidate = prev;
114
+ }
115
+ }
116
+ return candidate;
117
+ }
118
+ /** Returns true if a drag operation is currently active. */
119
+ _isDragging() {
120
+ return this._mediator.execute(new IsDragStartedRequest());
121
+ }
122
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectableSideByInternalPosition, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
123
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectableSideByInternalPosition });
124
+ };
125
+ CalculateConnectableSideByInternalPosition = __decorate([
126
+ FExecutionRegister(CalculateConnectableSideByInternalPositionRequest)
127
+ ], CalculateConnectableSideByInternalPosition);
128
+ export { CalculateConnectableSideByInternalPosition };
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectableSideByInternalPosition, decorators: [{
130
+ type: Injectable
131
+ }] });
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktaW50ZXJuYWwtcG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMvY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktaW50ZXJuYWwtcG9zaXRpb24vY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktaW50ZXJuYWwtcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlEQUFpRCxFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDOUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFNUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQVMsMEJBQTBCLENBQUMsQ0FBQztBQUUvRjs7Ozs7Ozs7R0FRRztBQUdJLElBQU0sMENBQTBDLEdBQWhELE1BQU0sMENBQTBDO0lBR3BDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFL0M7OztPQUdHO0lBQ2MsU0FBUyxHQUFHLElBQUksT0FBTyxFQUE2QixDQUFDO0lBRXRFLDRGQUE0RjtJQUMzRSxRQUFRLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FDMUMsQ0FBQyxFQUNELE1BQU0sQ0FB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QWpJWSwwQ0FBMEM7a0JBRnRELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgQ2FsY3VsYXRlQ29ubmVjdGFibGVTaWRlQnlJbnRlcm5hbFBvc2l0aW9uUmVxdWVzdCB9IGZyb20gJy4vY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktaW50ZXJuYWwtcG9zaXRpb24tcmVxdWVzdCc7XG5pbXBvcnQgeyBFRkNvbm5lY3RhYmxlU2lkZSB9IGZyb20gJy4uLy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBSZWN0RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgSXNEcmFnU3RhcnRlZFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9mLWRyYWdnYWJsZSc7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBjb25maWd1cmluZyB0aGUgc2lkZSBkZXRlY3Rpb24gdG9sZXJhbmNlIChpbiBwaXhlbHMpLlxuICogQSBuZXcgc2lkZSBtdXN0IGJlYXQgdGhlIHByZXZpb3VzIHNpZGUgYnkgbW9yZSB0aGFuIHRoaXMgdmFsdWUgdG8gc3dpdGNoLlxuICovXG5leHBvcnQgY29uc3QgQ09OTkVDVEFCTEVfU0lERV9FUFNJTE9OID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oJ0NPTk5FQ1RBQkxFX1NJREVfRVBTSUxPTicpO1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGNvbm5lY3RhYmxlIHNpZGUgb2YgYSBjb25uZWN0b3IgcmVsYXRpdmUgdG8gaXRzIG5vZGUgaG9zdC5cbiAqXG4gKiBPcHRpbWl6YXRpb25zICYgYmVoYXZpb3I6XG4gKiAtIEh5c3RlcmVzaXMgdmlhIGVwc2lsb24gdG8gYXZvaWQgaml0dGVyIG5lYXIgYm91bmRhcmllcy5cbiAqIC0gUGVyLWNvbm5lY3RvciBtZW1vaXphdGlvbiB1c2luZyBXZWFrTWFwIChubyBsZWFrcykuXG4gKiAtIER1cmluZyBkcmFnIChpc0RyYWdnaW5nID09PSB0cnVlKSB0aGUgbGFzdCBtZW1vcml6ZWQgc2lkZSBpcyByZXR1cm5lZCBpbW1lZGlhdGVseVxuICogICBmb3IgbWF4aW11bSBzdGFiaWxpdHkgYW5kIHBlcmZvcm1hbmNlOyBhIHNhZmUgZmFsbGJhY2sgY29tcHV0ZXMgaXQgaWYgbWlzc2luZy5cbiAqL1xuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihDYWxjdWxhdGVDb25uZWN0YWJsZVNpZGVCeUludGVybmFsUG9zaXRpb25SZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIENhbGN1bGF0ZUNvbm5lY3RhYmxlU2lkZUJ5SW50ZXJuYWxQb3NpdGlvblxuICBpbXBsZW1lbnRzIElFeGVjdXRpb248Q2FsY3VsYXRlQ29ubmVjdGFibGVTaWRlQnlJbnRlcm5hbFBvc2l0aW9uUmVxdWVzdCwgRUZDb25uZWN0YWJsZVNpZGU+XG57XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgbGFzdCBjb21wdXRlZCBzaWRlIHBlciBjb25uZWN0b3IuXG4gICAqIFdlYWtNYXAgZW5zdXJlcyBlbnRyaWVzIGFyZSBnYXJiYWdlLWNvbGxlY3RlZCB3aXRoIHRoZSBjb25uZWN0b3Igb2JqZWN0cy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhc3RTaWRlID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBFRkNvbm5lY3RhYmxlU2lkZT4oKTtcblxuICAvKiogUGl4ZWwgdGhyZXNob2xkIHRvIHByZXZlbnQgc2lkZSBzd2l0Y2hpbmcgdW5sZXNzIHRoZSBuZXcgc2lkZSBpcyBzdWZmaWNpZW50bHkgYmV0dGVyLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9lcHNpbG9uOiBudW1iZXIgPSBNYXRoLm1heChcbiAgICAwLFxuICAgIGluamVjdChDT05ORUNUQUJMRV9TSURFX0VQU0lMT04sIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gMixcbiAgKTtcblxuICAvKipcbiAgICogRW50cnkgcG9pbnQ6IHJldHVybnMgdGhlIGNvbm5lY3RhYmxlIHNpZGUgZm9yIGEgZ2l2ZW4gY29ubmVjdG9yLlxuICAgKiBJZiBhIGRyYWcgaXMgaW4gcHJvZ3Jlc3MsIHJldHVybnMgdGhlIGxhc3QgbWVtb3JpemVkIHNpZGUgZm9yIHN0YWJpbGl0eS5cbiAgICovXG4gIHB1YmxpYyBoYW5kbGUoe1xuICAgIGNvbm5lY3RvcixcbiAgfTogQ2FsY3VsYXRlQ29ubmVjdGFibGVTaWRlQnlJbnRlcm5hbFBvc2l0aW9uUmVxdWVzdCk6IEVGQ29ubmVjdGFibGVTaWRlIHtcbiAgICAvLyBGYXN0IHBhdGggZHVyaW5nIGRyYWc6IHVzZSBtZW1vcml6ZWQgc2lkZSAoZ3VhcmFudGVlZCB0byBiZSBwcmVzZW50IGJ5IGNhbGxlcuKAmXMgY29udHJhY3QpLlxuICAgIGlmICh0aGlzLl9pc0RyYWdnaW5nKCkpIHtcbiAgICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuX2xhc3RTaWRlLmdldChjb25uZWN0b3IpO1xuICAgICAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2FjaGVkO1xuICAgICAgLy8gU2FmZSBmYWxsYmFjazogY29tcHV0ZSBvbmNlIGFuZCBjYWNoZS5cbiAgICAgIGNvbnN0IGNvbXB1dGVkID0gdGhpcy5fZ2V0U2lkZUJ5RGVsdGEoY29ubmVjdG9yLmhvc3RFbGVtZW50LCBjb25uZWN0b3IuZk5vZGVIb3N0LCBjb25uZWN0b3IpO1xuICAgICAgdGhpcy5fbGFzdFNpZGUuc2V0KGNvbm5lY3RvciwgY29tcHV0ZWQpO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWQ7XG4gICAgfVxuXG4gICAgLy8gTm9ybWFsIHBhdGg6IGNvbXB1dGUgd2l0aCBoeXN0ZXJlc2lzLCB0aGVuIHJlbWVtYmVyLlxuICAgIGNvbnN0IHNpZGUgPSB0aGlzLl9nZXRTaWRlQnlEZWx0YShjb25uZWN0b3IuaG9zdEVsZW1lbnQsIGNvbm5lY3Rvci5mTm9kZUhvc3QsIGNvbm5lY3Rvcik7XG4gICAgdGhpcy5fbGFzdFNpZGUuc2V0KGNvbm5lY3Rvciwgc2lkZSk7XG5cbiAgICByZXR1cm4gc2lkZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBzaWRlIG9mIHRoZSBjb25uZWN0b3IgcmVsYXRpdmUgdG8gdGhlIG5vZGUgaG9zdCBieVxuICAgKiBjb21wYXJpbmcgZGlzdGFuY2VzIGZyb20gdGhlIGNvbm5lY3RvcidzIGdyYXZpdHkgY2VudGVyIHRvIGVhY2ggaG9zdCBlZGdlLlxuICAgKlxuICAgKiBIeXN0ZXJlc2lzIHJ1bGU6XG4gICAqIElmIHRoZSBwcmV2aW91c2x5IGNob3NlbiBzaWRlIGlzIHdpdGhpbiBgZXBzaWxvbmAgcGl4ZWxzIG9mIHRoZSBuZXcgYmVzdCBzaWRlLFxuICAgKiBrZWVwIHRoZSBwcmV2aW91cyBzaWRlIHRvIGF2b2lkIGZsaWNrZXIuXG4gICAqXG4gICAqIEBwYXJhbSBjb25uZWN0b3JIb3N0IC0gVGhlIGNvbm5lY3RvciBlbGVtZW50IChIVE1MIG9yIFNWRykuXG4gICAqIEBwYXJhbSBub2RlSG9zdCAtIFRoZSBwYXJlbnQgbm9kZSBlbGVtZW50IChIVE1MIG9yIFNWRykuXG4gICAqIEBwYXJhbSBjb25uZWN0b3JLZXkgLSBUaGUgY29ubmVjdG9yIG9iamVjdCwgdXNlZCBhcyBXZWFrTWFwIGtleS5cbiAgICogQHJldHVybnMgVGhlIG1vc3Qgc3RhYmxlIGNvbm5lY3RhYmxlIHNpZGUuXG4gICAqL1xuICBwcml2YXRlIF9nZXRTaWRlQnlEZWx0YShcbiAgICBjb25uZWN0b3JIb3N0OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQsXG4gICAgbm9kZUhvc3Q6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCxcbiAgICBjb25uZWN0b3JLZXk6IG9iamVjdCxcbiAgKTogRUZDb25uZWN0YWJsZVNpZGUge1xuICAgIGNvbnN0IGNoaWxkUmVjdCA9IFJlY3RFeHRlbnNpb25zLmZyb21FbGVtZW50KGNvbm5lY3Rvckhvc3QpO1xuICAgIGNvbnN0IHBhcmVudFJlY3QgPSBub2RlSG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IGN4ID0gY2hpbGRSZWN0LmdyYXZpdHlDZW50ZXIueDtcbiAgICBjb25zdCBjeSA9IGNoaWxkUmVjdC5ncmF2aXR5Q2VudGVyLnk7XG5cbiAgICBjb25zdCBkZWx0YUxlZnQgPSBjeCAtIHBhcmVudFJlY3QubGVmdDtcbiAgICBjb25zdCBkZWx0YVJpZ2h0ID0gcGFyZW50UmVjdC5yaWdodCAtIGN4O1xuICAgIGNvbnN0IGRlbHRhVG9wID0gY3kgLSBwYXJlbnRSZWN0LnRvcDtcbiAgICBjb25zdCBkZWx0YUJvdHRvbSA9IHBhcmVudFJlY3QuYm90dG9tIC0gY3k7XG5cbiAgICAvLyBEZXRlcm1pbmUgYmVzdCBzaWRlIChtaW4gZGVsdGEpIGluIG9uZSBwYXNzXG4gICAgbGV0IG1pbklkeCA9IDA7XG4gICAgbGV0IG1pblZhbCA9IGRlbHRhTGVmdDtcblxuICAgIC8vIGk9MS4uMyBjb3JyZXNwb25kIHRvIFJpZ2h0LCBUb3AsIEJvdHRvbSByZXNwZWN0aXZlbHlcbiAgICBjb25zdCBjYW5kaWRhdGVzID0gW2RlbHRhTGVmdCwgZGVsdGFSaWdodCwgZGVsdGFUb3AsIGRlbHRhQm90dG9tXSBhcyBjb25zdDtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IDQ7IGkrKykge1xuICAgICAgY29uc3QgdiA9IGNhbmRpZGF0ZXNbaV07XG4gICAgICBpZiAodiA8IG1pblZhbCkge1xuICAgICAgICBtaW5WYWwgPSB2O1xuICAgICAgICBtaW5JZHggPSBpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjYW5kaWRhdGUgPVxuICAgICAgbWluSWR4ID09PSAwXG4gICAgICAgID8gRUZDb25uZWN0YWJsZVNpZGUuTEVGVFxuICAgICAgICA6IG1pbklkeCA9PT0gMVxuICAgICAgICAgID8gRUZDb25uZWN0YWJsZVNpZGUuUklHSFRcbiAgICAgICAgICA6IG1pbklkeCA9PT0gMlxuICAgICAgICAgICAgPyBFRkNvbm5lY3RhYmxlU2lkZS5UT1BcbiAgICAgICAgICAgIDogRUZDb25uZWN0YWJsZVNpZGUuQk9UVE9NO1xuXG4gICAgLy8gSHlzdGVyZXNpczogcHJlZmVyIHByZXZpb3VzbHkgY2hvc2VuIHNpZGUgaWYgaXQncyBhbG1vc3QgYXMgZ29vZFxuICAgIGNvbnN0IHByZXYgPSB0aGlzLl9sYXN0U2lkZS5nZXQoY29ubmVjdG9yS2V5KTtcbiAgICBpZiAocHJldiAhPT0gdW5kZWZpbmVkICYmIHByZXYgIT09IGNhbmRpZGF0ZSkge1xuICAgICAgY29uc3QgcHJldklkeCA9XG4gICAgICAgIHByZXYgPT09IEVGQ29ubmVjdGFibGVTaWRlLkxFRlRcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IHByZXYgPT09IEVGQ29ubmVjdGFibGVTaWRlLlJJR0hUXG4gICAgICAgICAgICA/IDFcbiAgICAgICAgICAgIDogcHJldiA9PT0gRUZDb25uZWN0YWJsZVNpZGUuVE9QXG4gICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICA6IDM7XG5cbiAgICAgIGNvbnN0IHByZXZEZWx0YSA9XG4gICAgICAgIHByZXZJZHggPT09IDBcbiAgICAgICAgICA/IGRlbHRhTGVmdFxuICAgICAgICAgIDogcHJldklkeCA9PT0gMVxuICAgICAgICAgICAgPyBkZWx0YVJpZ2h0XG4gICAgICAgICAgICA6IHByZXZJZHggPT09IDJcbiAgICAgICAgICAgICAgPyBkZWx0YVRvcFxuICAgICAgICAgICAgICA6IGRlbHRhQm90dG9tO1xuXG4gICAgICAvLyBIb3cgbXVjaCBiZXR0ZXIgdGhlIG5ldyBzaWRlIGlzIChzbWFsbGVyIGlzIGJldHRlcilcbiAgICAgIGNvbnN0IGFkdmFudGFnZSA9IHByZXZEZWx0YSAtIG1pblZhbDtcbiAgICAgIGlmIChhZHZhbnRhZ2UgPD0gdGhpcy5fZXBzaWxvbikge1xuICAgICAgICBjYW5kaWRhdGUgPSBwcmV2O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjYW5kaWRhdGU7XG4gIH1cblxuICAvKiogUmV0dXJucyB0cnVlIGlmIGEgZHJhZyBvcGVyYXRpb24gaXMgY3VycmVudGx5IGFjdGl2ZS4gKi9cbiAgcHJpdmF0ZSBfaXNEcmFnZ2luZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgSXNEcmFnU3RhcnRlZFJlcXVlc3QoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './calculate-connectable-side-by-internal-position';
2
+ export * from './calculate-connectable-side-by-internal-position-request';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMvY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktaW50ZXJuYWwtcG9zaXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtREFBbUQsQ0FBQztBQUVsRSxjQUFjLDJEQUEyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYWxjdWxhdGUtY29ubmVjdGFibGUtc2lkZS1ieS1pbnRlcm5hbC1wb3NpdGlvbic7XG5cbmV4cG9ydCAqIGZyb20gJy4vY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktaW50ZXJuYWwtcG9zaXRpb24tcmVxdWVzdCc7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export class CalculateConnectorsConnectableSidesRequest {
2
+ nodeOrGroup;
3
+ static fToken = Symbol('CalculateConnectorsConnectableSidesRequest');
4
+ constructor(nodeOrGroup) {
5
+ this.nodeOrGroup = nodeOrGroup;
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMtcmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2Ytbm9kZS9jYWxjdWxhdGUtY29ubmVjdG9ycy1jb25uZWN0YWJsZS1zaWRlcy9jYWxjdWxhdGUtY29ubmVjdG9ycy1jb25uZWN0YWJsZS1zaWRlcy1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTywwQ0FBMEM7SUFFekI7SUFENUIsTUFBTSxDQUFVLE1BQU0sR0FBRyxNQUFNLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUM5RSxZQUE0QixXQUFzQjtRQUF0QixnQkFBVyxHQUFYLFdBQVcsQ0FBVztJQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGTm9kZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9mLW5vZGUnO1xuXG5leHBvcnQgY2xhc3MgQ2FsY3VsYXRlQ29ubmVjdG9yc0Nvbm5lY3RhYmxlU2lkZXNSZXF1ZXN0IHtcbiAgc3RhdGljIHJlYWRvbmx5IGZUb2tlbiA9IFN5bWJvbCgnQ2FsY3VsYXRlQ29ubmVjdG9yc0Nvbm5lY3RhYmxlU2lkZXNSZXF1ZXN0Jyk7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBub2RlT3JHcm91cDogRk5vZGVCYXNlKSB7fVxufVxuIl19
@@ -0,0 +1,73 @@
1
+ import { __decorate } from "tslib";
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { FExecutionRegister, FMediator } from '@foblex/mediator';
4
+ import { CalculateConnectorsConnectableSidesRequest } from './calculate-connectors-connectable-sides-request';
5
+ import { EFConnectableSide } from '../../../f-connectors';
6
+ import { CalculateConnectableSideByConnectedPositionsRequest } from './calculate-connectable-side-by-connected-positions';
7
+ import { CalculateConnectableSideByInternalPositionRequest } from './calculate-connectable-side-by-internal-position';
8
+ import { isCalculateMode } from './utils';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Execution that calculates connectable sides for all connectors of a node.
12
+ */
13
+ let CalculateConnectorsConnectableSides = class CalculateConnectorsConnectableSides {
14
+ _mediator = inject(FMediator);
15
+ /**
16
+ * Orchestrates side calculation for all connectors of the given node.
17
+ */
18
+ handle({ nodeOrGroup }) {
19
+ const connectors = nodeOrGroup.connectors;
20
+ const len = connectors.length;
21
+ for (let i = 0; i < len; i++) {
22
+ const connection = connectors[i];
23
+ connection.fConnectableSide = this._resolveSideForConnectorFast(connection);
24
+ }
25
+ const toRecalc = new Set();
26
+ for (let i = 0; i < len; i++) {
27
+ const source = connectors[i];
28
+ const outs = source.toConnector;
29
+ if (outs && outs.length) {
30
+ for (let j = 0, m = outs.length; j < m; j++) {
31
+ const target = outs[j];
32
+ const userSide = target.userFConnectableSide;
33
+ if (isCalculateMode(userSide)) {
34
+ toRecalc.add(target);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ if (toRecalc.size > 0) {
40
+ toRecalc.forEach((target) => {
41
+ target.fConnectableSide = this._calculateByConnectedPositions(target);
42
+ });
43
+ }
44
+ }
45
+ /**
46
+ * Resolves the connectable side for a connector quickly.
47
+ * Avoids intermediate arrays and redundant allocations.
48
+ */
49
+ _resolveSideForConnectorFast(connector) {
50
+ const mode = connector.userFConnectableSide;
51
+ if (mode === EFConnectableSide.AUTO) {
52
+ return this._mediator.execute(new CalculateConnectableSideByInternalPositionRequest(connector));
53
+ }
54
+ if (isCalculateMode(mode)) {
55
+ return this._calculateByConnectedPositions(connector);
56
+ }
57
+ return mode;
58
+ }
59
+ /** Delegates to the connected-positions calculation execution. */
60
+ _calculateByConnectedPositions(connector) {
61
+ return this._mediator.execute(new CalculateConnectableSideByConnectedPositionsRequest(connector));
62
+ }
63
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectorsConnectableSides, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
64
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectorsConnectableSides });
65
+ };
66
+ CalculateConnectorsConnectableSides = __decorate([
67
+ FExecutionRegister(CalculateConnectorsConnectableSidesRequest)
68
+ ], CalculateConnectorsConnectableSides);
69
+ export { CalculateConnectorsConnectableSides };
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectorsConnectableSides, decorators: [{
71
+ type: Injectable
72
+ }] });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM5RyxPQUFPLEVBQUUsaUJBQWlCLEVBQWtCLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1EQUFtRCxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDMUgsT0FBTyxFQUFFLGlEQUFpRCxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFFMUM7O0dBRUc7QUFHSSxJQUFNLG1DQUFtQyxHQUF6QyxNQUFNLG1DQUFtQztJQUc3QixTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRS9DOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsV0FBVyxFQUE4QztRQUN2RSxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFFOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUUzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0IsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDaEMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDO29CQUM3QyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO3dCQUM5QixRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN2QixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzFCLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLDRCQUE0QixDQUFDLFNBQXlCO1FBQzVELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQztRQUU1QyxJQUFJLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUMzQixJQUFJLGlEQUFpRCxDQUFDLFNBQVMsQ0FBQyxDQUNqRSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtFQUFrRTtJQUMxRCw4QkFBOEIsQ0FBQyxTQUF5QjtRQUM5RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUMzQixJQUFJLG1EQUFtRCxDQUFDLFNBQVMsQ0FBQyxDQUNuRSxDQUFDO0lBQ0osQ0FBQzt3R0FqRVUsbUNBQW1DOzRHQUFuQyxtQ0FBbUM7O0FBQW5DLG1DQUFtQztJQUQvQyxrQkFBa0IsQ0FBQywwQ0FBMEMsQ0FBQztHQUNsRCxtQ0FBbUMsQ0FrRS9DOzs0RkFsRVksbUNBQW1DO2tCQUYvQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgQ2FsY3VsYXRlQ29ubmVjdG9yc0Nvbm5lY3RhYmxlU2lkZXNSZXF1ZXN0IH0gZnJvbSAnLi9jYWxjdWxhdGUtY29ubmVjdG9ycy1jb25uZWN0YWJsZS1zaWRlcy1yZXF1ZXN0JztcbmltcG9ydCB7IEVGQ29ubmVjdGFibGVTaWRlLCBGQ29ubmVjdG9yQmFzZSB9IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBDYWxjdWxhdGVDb25uZWN0YWJsZVNpZGVCeUNvbm5lY3RlZFBvc2l0aW9uc1JlcXVlc3QgfSBmcm9tICcuL2NhbGN1bGF0ZS1jb25uZWN0YWJsZS1zaWRlLWJ5LWNvbm5lY3RlZC1wb3NpdGlvbnMnO1xuaW1wb3J0IHsgQ2FsY3VsYXRlQ29ubmVjdGFibGVTaWRlQnlJbnRlcm5hbFBvc2l0aW9uUmVxdWVzdCB9IGZyb20gJy4vY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktaW50ZXJuYWwtcG9zaXRpb24nO1xuaW1wb3J0IHsgaXNDYWxjdWxhdGVNb2RlIH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogRXhlY3V0aW9uIHRoYXQgY2FsY3VsYXRlcyBjb25uZWN0YWJsZSBzaWRlcyBmb3IgYWxsIGNvbm5lY3RvcnMgb2YgYSBub2RlLlxuICovXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKENhbGN1bGF0ZUNvbm5lY3RvcnNDb25uZWN0YWJsZVNpZGVzUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBDYWxjdWxhdGVDb25uZWN0b3JzQ29ubmVjdGFibGVTaWRlc1xuICBpbXBsZW1lbnRzIElFeGVjdXRpb248Q2FsY3VsYXRlQ29ubmVjdG9yc0Nvbm5lY3RhYmxlU2lkZXNSZXF1ZXN0LCB2b2lkPlxue1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuXG4gIC8qKlxuICAgKiBPcmNoZXN0cmF0ZXMgc2lkZSBjYWxjdWxhdGlvbiBmb3IgYWxsIGNvbm5lY3RvcnMgb2YgdGhlIGdpdmVuIG5vZGUuXG4gICAqL1xuICBwdWJsaWMgaGFuZGxlKHsgbm9kZU9yR3JvdXAgfTogQ2FsY3VsYXRlQ29ubmVjdG9yc0Nvbm5lY3RhYmxlU2lkZXNSZXF1ZXN0KTogdm9pZCB7XG4gICAgY29uc3QgY29ubmVjdG9ycyA9IG5vZGVPckdyb3VwLmNvbm5lY3RvcnM7XG4gICAgY29uc3QgbGVuID0gY29ubmVjdG9ycy5sZW5ndGg7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gY29ubmVjdG9yc1tpXTtcbiAgICAgIGNvbm5lY3Rpb24uZkNvbm5lY3RhYmxlU2lkZSA9IHRoaXMuX3Jlc29sdmVTaWRlRm9yQ29ubmVjdG9yRmFzdChjb25uZWN0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCB0b1JlY2FsYyA9IG5ldyBTZXQ8RkNvbm5lY3RvckJhc2U+KCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBjb25uZWN0b3JzW2ldO1xuICAgICAgY29uc3Qgb3V0cyA9IHNvdXJjZS50b0Nvbm5lY3RvcjtcbiAgICAgIGlmIChvdXRzICYmIG91dHMubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwLCBtID0gb3V0cy5sZW5ndGg7IGogPCBtOyBqKyspIHtcbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBvdXRzW2pdO1xuICAgICAgICAgIGNvbnN0IHVzZXJTaWRlID0gdGFyZ2V0LnVzZXJGQ29ubmVjdGFibGVTaWRlO1xuICAgICAgICAgIGlmIChpc0NhbGN1bGF0ZU1vZGUodXNlclNpZGUpKSB7XG4gICAgICAgICAgICB0b1JlY2FsYy5hZGQodGFyZ2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9SZWNhbGMuc2l6ZSA+IDApIHtcbiAgICAgIHRvUmVjYWxjLmZvckVhY2goKHRhcmdldCkgPT4ge1xuICAgICAgICB0YXJnZXQuZkNvbm5lY3RhYmxlU2lkZSA9IHRoaXMuX2NhbGN1bGF0ZUJ5Q29ubmVjdGVkUG9zaXRpb25zKHRhcmdldCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIGNvbm5lY3RhYmxlIHNpZGUgZm9yIGEgY29ubmVjdG9yIHF1aWNrbHkuXG4gICAqIEF2b2lkcyBpbnRlcm1lZGlhdGUgYXJyYXlzIGFuZCByZWR1bmRhbnQgYWxsb2NhdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIF9yZXNvbHZlU2lkZUZvckNvbm5lY3RvckZhc3QoY29ubmVjdG9yOiBGQ29ubmVjdG9yQmFzZSk6IEVGQ29ubmVjdGFibGVTaWRlIHtcbiAgICBjb25zdCBtb2RlID0gY29ubmVjdG9yLnVzZXJGQ29ubmVjdGFibGVTaWRlO1xuXG4gICAgaWYgKG1vZGUgPT09IEVGQ29ubmVjdGFibGVTaWRlLkFVVE8pIHtcbiAgICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlPEVGQ29ubmVjdGFibGVTaWRlPihcbiAgICAgICAgbmV3IENhbGN1bGF0ZUNvbm5lY3RhYmxlU2lkZUJ5SW50ZXJuYWxQb3NpdGlvblJlcXVlc3QoY29ubmVjdG9yKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ2FsY3VsYXRlTW9kZShtb2RlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NhbGN1bGF0ZUJ5Q29ubmVjdGVkUG9zaXRpb25zKGNvbm5lY3Rvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGU7XG4gIH1cblxuICAvKiogRGVsZWdhdGVzIHRvIHRoZSBjb25uZWN0ZWQtcG9zaXRpb25zIGNhbGN1bGF0aW9uIGV4ZWN1dGlvbi4gKi9cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlQnlDb25uZWN0ZWRQb3NpdGlvbnMoY29ubmVjdG9yOiBGQ29ubmVjdG9yQmFzZSk6IEVGQ29ubmVjdGFibGVTaWRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShcbiAgICAgIG5ldyBDYWxjdWxhdGVDb25uZWN0YWJsZVNpZGVCeUNvbm5lY3RlZFBvc2l0aW9uc1JlcXVlc3QoY29ubmVjdG9yKSxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,12 @@
1
+ import { EFConnectableSide } from '../../../../f-connectors';
2
+ export const CALCULATABLE_SIDES = {
3
+ [EFConnectableSide.CALCULATE]: [
4
+ EFConnectableSide.TOP,
5
+ EFConnectableSide.BOTTOM,
6
+ EFConnectableSide.LEFT,
7
+ EFConnectableSide.RIGHT,
8
+ ],
9
+ [EFConnectableSide.CALCULATE_HORIZONTAL]: [EFConnectableSide.LEFT, EFConnectableSide.RIGHT],
10
+ [EFConnectableSide.CALCULATE_VERTICAL]: [EFConnectableSide.TOP, EFConnectableSide.BOTTOM],
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRhYmxlLXNpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZi1ub2RlL2NhbGN1bGF0ZS1jb25uZWN0b3JzLWNvbm5lY3RhYmxlLXNpZGVzL2NvbnN0YW50cy9jYWxjdWxhdGFibGUtc2lkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUM3QixpQkFBaUIsQ0FBQyxHQUFHO1FBQ3JCLGlCQUFpQixDQUFDLE1BQU07UUFDeEIsaUJBQWlCLENBQUMsSUFBSTtRQUN0QixpQkFBaUIsQ0FBQyxLQUFLO0tBQ3hCO0lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQztJQUMzRixDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0NBQzFGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFRkNvbm5lY3RhYmxlU2lkZSB9IGZyb20gJy4uLy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBDQUxDVUxBVEFCTEVfU0lERVMgPSB7XG4gIFtFRkNvbm5lY3RhYmxlU2lkZS5DQUxDVUxBVEVdOiBbXG4gICAgRUZDb25uZWN0YWJsZVNpZGUuVE9QLFxuICAgIEVGQ29ubmVjdGFibGVTaWRlLkJPVFRPTSxcbiAgICBFRkNvbm5lY3RhYmxlU2lkZS5MRUZULFxuICAgIEVGQ29ubmVjdGFibGVTaWRlLlJJR0hULFxuICBdLFxuICBbRUZDb25uZWN0YWJsZVNpZGUuQ0FMQ1VMQVRFX0hPUklaT05UQUxdOiBbRUZDb25uZWN0YWJsZVNpZGUuTEVGVCwgRUZDb25uZWN0YWJsZVNpZGUuUklHSFRdLFxuICBbRUZDb25uZWN0YWJsZVNpZGUuQ0FMQ1VMQVRFX1ZFUlRJQ0FMXTogW0VGQ29ubmVjdGFibGVTaWRlLlRPUCwgRUZDb25uZWN0YWJsZVNpZGUuQk9UVE9NXSxcbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './calculatable-sides';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NhbGN1bGF0YWJsZS1zaWRlcyc7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export * from './calculate-connectable-side-by-connected-positions';
2
+ export * from './calculate-connectable-side-by-internal-position';
3
+ export * from './constants';
4
+ export * from './models';
5
+ export * from './utils';
6
+ export * from './calculate-connectors-connectable-sides';
7
+ export * from './calculate-connectors-connectable-sides-request';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxREFBcUQsQ0FBQztBQUVwRSxjQUFjLG1EQUFtRCxDQUFDO0FBRWxFLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGNBQWMsVUFBVSxDQUFDO0FBRXpCLGNBQWMsU0FBUyxDQUFDO0FBRXhCLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrREFBa0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktY29ubmVjdGVkLXBvc2l0aW9ucyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY2FsY3VsYXRlLWNvbm5lY3RhYmxlLXNpZGUtYnktaW50ZXJuYWwtcG9zaXRpb24nO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jYWxjdWxhdGUtY29ubmVjdG9ycy1jb25uZWN0YWJsZS1zaWRlcy1yZXF1ZXN0JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './t-calculate-mode';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3QtY2FsY3VsYXRlLW1vZGUnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidC1jYWxjdWxhdGUtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2Ytbm9kZS9jYWxjdWxhdGUtY29ubmVjdG9ycy1jb25uZWN0YWJsZS1zaWRlcy9tb2RlbHMvdC1jYWxjdWxhdGUtbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRUZDb25uZWN0YWJsZVNpZGUgfSBmcm9tICcuLi8uLi8uLi8uLi9mLWNvbm5lY3RvcnMnO1xuXG5leHBvcnQgdHlwZSBUQ2FsY3VsYXRlTW9kZSA9XG4gIHwgRUZDb25uZWN0YWJsZVNpZGUuQ0FMQ1VMQVRFXG4gIHwgRUZDb25uZWN0YWJsZVNpZGUuQ0FMQ1VMQVRFX0hPUklaT05UQUxcbiAgfCBFRkNvbm5lY3RhYmxlU2lkZS5DQUxDVUxBVEVfVkVSVElDQUw7XG4iXX0=
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Converts allowed sides array to a compact bit mask.
3
+ * If not provided or empty -> all sides allowed.
4
+ */
5
+ import { EFConnectableSide } from '../../../../f-connectors';
6
+ const SNAP_EPS = 2;
7
+ var SideMask;
8
+ (function (SideMask) {
9
+ SideMask[SideMask["NONE"] = 0] = "NONE";
10
+ SideMask[SideMask["LEFT"] = 1] = "LEFT";
11
+ SideMask[SideMask["RIGHT"] = 2] = "RIGHT";
12
+ SideMask[SideMask["TOP"] = 4] = "TOP";
13
+ SideMask[SideMask["BOTTOM"] = 8] = "BOTTOM";
14
+ SideMask[SideMask["ALL"] = 15] = "ALL";
15
+ })(SideMask || (SideMask = {}));
16
+ /**
17
+ * Determines final side using ideal side first; if disallowed, picks best fallback.
18
+ * Inputs are numbers to avoid object wrappers on hot path.
19
+ */
20
+ export function determineSide(selfX, selfY, avgX, avgY, allowed) {
21
+ const allowedMask = _toSideMask(allowed);
22
+ const dx = avgX - selfX;
23
+ const dy = avgY - selfY;
24
+ const ideal = _pickIdealSide(dx, dy);
25
+ if (_isAllowed(ideal, allowedMask)) {
26
+ return ideal;
27
+ }
28
+ return _pickFallbackSide(dx, dy, allowedMask, ideal);
29
+ }
30
+ /**
31
+ * Converts allowed sides array to a compact bit mask.
32
+ * If not provided or empty -> all sides allowed.
33
+ */
34
+ function _toSideMask(allowed) {
35
+ if (!allowed || allowed.length === 0)
36
+ return SideMask.ALL;
37
+ let mask = SideMask.NONE;
38
+ for (let i = 0; i < allowed.length; i++) {
39
+ switch (allowed[i]) {
40
+ case EFConnectableSide.LEFT:
41
+ mask |= SideMask.LEFT;
42
+ break;
43
+ case EFConnectableSide.RIGHT:
44
+ mask |= SideMask.RIGHT;
45
+ break;
46
+ case EFConnectableSide.TOP:
47
+ mask |= SideMask.TOP;
48
+ break;
49
+ case EFConnectableSide.BOTTOM:
50
+ mask |= SideMask.BOTTOM;
51
+ break;
52
+ }
53
+ }
54
+ return mask || SideMask.ALL;
55
+ }
56
+ /**
57
+ * Picks the "ideal" side based on vector (dx, dy) with hysteresis.
58
+ */
59
+ function _pickIdealSide(dx, dy) {
60
+ const ax = dx < 0 ? -dx : dx;
61
+ const ay = dy < 0 ? -dy : dy;
62
+ if (ax - ay > SNAP_EPS) {
63
+ return dx < 0 ? EFConnectableSide.LEFT : EFConnectableSide.RIGHT;
64
+ }
65
+ if (ay - ax > SNAP_EPS) {
66
+ return dy < 0 ? EFConnectableSide.TOP : EFConnectableSide.BOTTOM;
67
+ }
68
+ return dy < 0 ? EFConnectableSide.TOP : EFConnectableSide.BOTTOM;
69
+ }
70
+ /**
71
+ * Quick membership check via bit mask.
72
+ */
73
+ function _isAllowed(side, mask) {
74
+ switch (side) {
75
+ case EFConnectableSide.LEFT:
76
+ return (mask & SideMask.LEFT) !== 0;
77
+ case EFConnectableSide.RIGHT:
78
+ return (mask & SideMask.RIGHT) !== 0;
79
+ case EFConnectableSide.TOP:
80
+ return (mask & SideMask.TOP) !== 0;
81
+ case EFConnectableSide.BOTTOM:
82
+ return (mask & SideMask.BOTTOM) !== 0;
83
+ default:
84
+ return true;
85
+ }
86
+ }
87
+ /**
88
+ * Picks the best available side from allowed mask by maximizing directional score.
89
+ * No intermediate objects, constant-time operations.
90
+ */
91
+ function _pickFallbackSide(dx, dy, allowedMask, ideal) {
92
+ let bestSide = ideal;
93
+ let bestScore = -Infinity;
94
+ if (allowedMask & SideMask.RIGHT) {
95
+ const s = dx;
96
+ if (s > bestScore) {
97
+ bestScore = s;
98
+ bestSide = EFConnectableSide.RIGHT;
99
+ }
100
+ }
101
+ if (allowedMask & SideMask.LEFT) {
102
+ const s = -dx;
103
+ if (s > bestScore) {
104
+ bestScore = s;
105
+ bestSide = EFConnectableSide.LEFT;
106
+ }
107
+ }
108
+ if (allowedMask & SideMask.BOTTOM) {
109
+ const s = dy;
110
+ if (s > bestScore) {
111
+ bestScore = s;
112
+ bestSide = EFConnectableSide.BOTTOM;
113
+ }
114
+ }
115
+ if (allowedMask & SideMask.TOP) {
116
+ const s = -dy;
117
+ if (s > bestScore) {
118
+ bestScore = s;
119
+ bestSide = EFConnectableSide.TOP;
120
+ }
121
+ }
122
+ return bestSide;
123
+ }
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZXJtaW5lLXNpZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMvdXRpbHMvZGV0ZXJtaW5lLXNpZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBRW5CLElBQUssUUFPSjtBQVBELFdBQUssUUFBUTtJQUNYLHVDQUFRLENBQUE7SUFDUix1Q0FBYSxDQUFBO0lBQ2IseUNBQWMsQ0FBQTtJQUNkLHFDQUFZLENBQUE7SUFDWiwyQ0FBZSxDQUFBO0lBQ2Ysc0NBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQVBJLFFBQVEsS0FBUixRQUFRLFFBT1o7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUMzQixLQUFhLEVBQ2IsS0FBYSxFQUNiLElBQVksRUFDWixJQUFZLEVBQ1osT0FBNkI7SUFFN0IsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXpDLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7SUFDeEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUV4QixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXJDLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8saUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVEOzs7R0FH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LENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udmVydHMgYWxsb3dlZCBzaWRlcyBhcnJheSB0byBhIGNvbXBhY3QgYml0IG1hc2suXG4gKiBJZiBub3QgcHJvdmlkZWQgb3IgZW1wdHkgLT4gYWxsIHNpZGVzIGFsbG93ZWQuXG4gKi9cbmltcG9ydCB7IEVGQ29ubmVjdGFibGVTaWRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZi1jb25uZWN0b3JzJztcblxuY29uc3QgU05BUF9FUFMgPSAyO1xuXG5lbnVtIFNpZGVNYXNrIHtcbiAgTk9ORSA9IDAsXG4gIExFRlQgPSAxIDw8IDAsXG4gIFJJR0hUID0gMSA8PCAxLFxuICBUT1AgPSAxIDw8IDIsXG4gIEJPVFRPTSA9IDEgPDwgMyxcbiAgQUxMID0gKDEgPDwgNCkgLSAxLFxufVxuXG4vKipcbiAqIERldGVybWluZXMgZmluYWwgc2lkZSB1c2luZyBpZGVhbCBzaWRlIGZpcnN0OyBpZiBkaXNhbGxvd2VkLCBwaWNrcyBiZXN0IGZhbGxiYWNrLlxuICogSW5wdXRzIGFyZSBudW1iZXJzIHRvIGF2b2lkIG9iamVjdCB3cmFwcGVycyBvbiBob3QgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVybWluZVNpZGUoXG4gIHNlbGZYOiBudW1iZXIsXG4gIHNlbGZZOiBudW1iZXIsXG4gIGF2Z1g6IG51bWJlcixcbiAgYXZnWTogbnVtYmVyLFxuICBhbGxvd2VkPzogRUZDb25uZWN0YWJsZVNpZGVbXSxcbik6IEVGQ29ubmVjdGFibGVTaWRlIHtcbiAgY29uc3QgYWxsb3dlZE1hc2sgPSBfdG9TaWRlTWFzayhhbGxvd2VkKTtcblxuICBjb25zdCBkeCA9IGF2Z1ggLSBzZWxmWDtcbiAgY29uc3QgZHkgPSBhdmdZIC0gc2VsZlk7XG5cbiAgY29uc3QgaWRlYWwgPSBfcGlja0lkZWFsU2lkZShkeCwgZHkpO1xuXG4gIGlmIChfaXNBbGxvd2VkKGlkZWFsLCBhbGxvd2VkTWFzaykpIHtcbiAgICByZXR1cm4gaWRlYWw7XG4gIH1cblxuICByZXR1cm4gX3BpY2tGYWxsYmFja1NpZGUoZHgsIGR5LCBhbGxvd2VkTWFzaywgaWRlYWwpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFsbG93ZWQgc2lkZXMgYXJyYXkgdG8gYSBjb21wYWN0IGJpdCBtYXNrLlxuICogSWYgbm90IHByb3ZpZGVkIG9yIGVtcHR5IC0+IGFsbCBzaWRlcyBhbGxvd2VkLlxuICovXG5mdW5jdGlvbiBfdG9TaWRlTWFzayhhbGxvd2VkPzogRUZDb25uZWN0YWJsZVNpZGVbXSk6IFNpZGVNYXNrIHtcbiAgaWYgKCFhbGxvd2VkIHx8IGFsbG93ZWQubGVuZ3RoID09PSAwKSByZXR1cm4gU2lkZU1hc2suQUxMO1xuXG4gIGxldCBtYXNrID0gU2lkZU1hc2suTk9ORTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxvd2VkLmxlbmd0aDsgaSsrKSB7XG4gICAgc3dpdGNoIChhbGxvd2VkW2ldKSB7XG4gICAgICBjYXNlIEVGQ29ubmVjdGFibGVTaWRlLkxFRlQ6XG4gICAgICAgIG1hc2sgfD0gU2lkZU1hc2suTEVGVDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVGQ29ubmVjdGFibGVTaWRlLlJJR0hUOlxuICAgICAgICBtYXNrIHw9IFNpZGVNYXNrLlJJR0hUO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRUZDb25uZWN0YWJsZVNpZGUuVE9QOlxuICAgICAgICBtYXNrIHw9IFNpZGVNYXNrLlRPUDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVGQ29ubmVjdGFibGVTaWRlLkJPVFRPTTpcbiAgICAgICAgbWFzayB8PSBTaWRlTWFzay5CT1RUT007XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXNrIHx8IFNpZGVNYXNrLkFMTDtcbn1cblxuLyoqXG4gKiBQaWNrcyB0aGUgXCJpZGVhbFwiIHNpZGUgYmFzZWQgb24gdmVjdG9yIChkeCwgZHkpIHdpdGggaHlzdGVyZXNpcy5cbiAqL1xuZnVuY3Rpb24gX3BpY2tJZGVhbFNpZGUoZHg6IG51bWJlciwgZHk6IG51bWJlcik6IEVGQ29ubmVjdGFibGVTaWRlIHtcbiAgY29uc3QgYXggPSBkeCA8IDAgPyAtZHggOiBkeDtcbiAgY29uc3QgYXkgPSBkeSA8IDAgPyAtZHkgOiBkeTtcblxuICBpZiAoYXggLSBheSA+IFNOQVBfRVBTKSB7XG4gICAgcmV0dXJuIGR4IDwgMCA/IEVGQ29ubmVjdGFibGVTaWRlLkxFRlQgOiBFRkNvbm5lY3RhYmxlU2lkZS5SSUdIVDtcbiAgfVxuICBpZiAoYXkgLSBheCA+IFNOQVBfRVBTKSB7XG4gICAgcmV0dXJuIGR5IDwgMCA/IEVGQ29ubmVjdGFibGVTaWRlLlRPUCA6IEVGQ29ubmVjdGFibGVTaWRlLkJPVFRPTTtcbiAgfVxuXG4gIHJldHVybiBkeSA8IDAgPyBFRkNvbm5lY3RhYmxlU2lkZS5UT1AgOiBFRkNvbm5lY3RhYmxlU2lkZS5CT1RUT007XG59XG5cbi8qKlxuICogUXVpY2sgbWVtYmVyc2hpcCBjaGVjayB2aWEgYml0IG1hc2suXG4gKi9cbmZ1bmN0aW9uIF9pc0FsbG93ZWQoc2lkZTogRUZDb25uZWN0YWJsZVNpZGUsIG1hc2s6IFNpZGVNYXNrKTogYm9vbGVhbiB7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgRUZDb25uZWN0YWJsZVNpZGUuTEVGVDpcbiAgICAgIHJldHVybiAobWFzayAmIFNpZGVNYXNrLkxFRlQpICE9PSAwO1xuICAgIGNhc2UgRUZDb25uZWN0YWJsZVNpZGUuUklHSFQ6XG4gICAgICByZXR1cm4gKG1hc2sgJiBTaWRlTWFzay5SSUdIVCkgIT09IDA7XG4gICAgY2FzZSBFRkNvbm5lY3RhYmxlU2lkZS5UT1A6XG4gICAgICByZXR1cm4gKG1hc2sgJiBTaWRlTWFzay5UT1ApICE9PSAwO1xuICAgIGNhc2UgRUZDb25uZWN0YWJsZVNpZGUuQk9UVE9NOlxuICAgICAgcmV0dXJuIChtYXNrICYgU2lkZU1hc2suQk9UVE9NKSAhPT0gMDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBQaWNrcyB0aGUgYmVzdCBhdmFpbGFibGUgc2lkZSBmcm9tIGFsbG93ZWQgbWFzayBieSBtYXhpbWl6aW5nIGRpcmVjdGlvbmFsIHNjb3JlLlxuICogTm8gaW50ZXJtZWRpYXRlIG9iamVjdHMsIGNvbnN0YW50LXRpbWUgb3BlcmF0aW9ucy5cbiAqL1xuZnVuY3Rpb24gX3BpY2tGYWxsYmFja1NpZGUoXG4gIGR4OiBudW1iZXIsXG4gIGR5OiBudW1iZXIsXG4gIGFsbG93ZWRNYXNrOiBTaWRlTWFzayxcbiAgaWRlYWw6IEVGQ29ubmVjdGFibGVTaWRlLFxuKTogRUZDb25uZWN0YWJsZVNpZGUge1xuICBsZXQgYmVzdFNpZGU6IEVGQ29ubmVjdGFibGVTaWRlID0gaWRlYWw7XG4gIGxldCBiZXN0U2NvcmUgPSAtSW5maW5pdHk7XG5cbiAgaWYgKGFsbG93ZWRNYXNrICYgU2lkZU1hc2suUklHSFQpIHtcbiAgICBjb25zdCBzID0gZHg7XG4gICAgaWYgKHMgPiBiZXN0U2NvcmUpIHtcbiAgICAgIGJlc3RTY29yZSA9IHM7XG4gICAgICBiZXN0U2lkZSA9IEVGQ29ubmVjdGFibGVTaWRlLlJJR0hUO1xuICAgIH1cbiAgfVxuICBpZiAoYWxsb3dlZE1hc2sgJiBTaWRlTWFzay5MRUZUKSB7XG4gICAgY29uc3QgcyA9IC1keDtcbiAgICBpZiAocyA+IGJlc3RTY29yZSkge1xuICAgICAgYmVzdFNjb3JlID0gcztcbiAgICAgIGJlc3RTaWRlID0gRUZDb25uZWN0YWJsZVNpZGUuTEVGVDtcbiAgICB9XG4gIH1cbiAgaWYgKGFsbG93ZWRNYXNrICYgU2lkZU1hc2suQk9UVE9NKSB7XG4gICAgY29uc3QgcyA9IGR5O1xuICAgIGlmIChzID4gYmVzdFNjb3JlKSB7XG4gICAgICBiZXN0U2NvcmUgPSBzO1xuICAgICAgYmVzdFNpZGUgPSBFRkNvbm5lY3RhYmxlU2lkZS5CT1RUT007XG4gICAgfVxuICB9XG4gIGlmIChhbGxvd2VkTWFzayAmIFNpZGVNYXNrLlRPUCkge1xuICAgIGNvbnN0IHMgPSAtZHk7XG4gICAgaWYgKHMgPiBiZXN0U2NvcmUpIHtcbiAgICAgIGJlc3RTY29yZSA9IHM7XG4gICAgICBiZXN0U2lkZSA9IEVGQ29ubmVjdGFibGVTaWRlLlRPUDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYmVzdFNpZGU7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './determine-side';
2
+ export * from './is-calculate-mode';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZXRlcm1pbmUtc2lkZSc7XG5leHBvcnQgKiBmcm9tICcuL2lzLWNhbGN1bGF0ZS1tb2RlJztcbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { EFConnectableSide } from '../../../../f-connectors';
2
+ /**
3
+ * Checks if the given side is one of the calculate modes.
4
+ * @param side The connectable side to check.
5
+ * @returns True if the side is a calculate mode, false otherwise.
6
+ */
7
+ export function isCalculateMode(side) {
8
+ return (side === EFConnectableSide.CALCULATE ||
9
+ side === EFConnectableSide.CALCULATE_HORIZONTAL ||
10
+ side === EFConnectableSide.CALCULATE_VERTICAL);
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtY2FsY3VsYXRlLW1vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWNvbm5lY3RvcnMtY29ubmVjdGFibGUtc2lkZXMvdXRpbHMvaXMtY2FsY3VsYXRlLW1vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0Q7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBdUI7SUFDckQsT0FBTyxDQUNMLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxTQUFTO1FBQ3BDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxvQkFBb0I7UUFDL0MsSUFBSSxLQUFLLGlCQUFpQixDQUFDLGtCQUFrQixDQUM5QyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVGQ29ubmVjdGFibGVTaWRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZi1jb25uZWN0b3JzJztcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHNpZGUgaXMgb25lIG9mIHRoZSBjYWxjdWxhdGUgbW9kZXMuXG4gKiBAcGFyYW0gc2lkZSBUaGUgY29ubmVjdGFibGUgc2lkZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHNpZGUgaXMgYSBjYWxjdWxhdGUgbW9kZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDYWxjdWxhdGVNb2RlKHNpZGU6IEVGQ29ubmVjdGFibGVTaWRlKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgc2lkZSA9PT0gRUZDb25uZWN0YWJsZVNpZGUuQ0FMQ1VMQVRFIHx8XG4gICAgc2lkZSA9PT0gRUZDb25uZWN0YWJsZVNpZGUuQ0FMQ1VMQVRFX0hPUklaT05UQUwgfHxcbiAgICBzaWRlID09PSBFRkNvbm5lY3RhYmxlU2lkZS5DQUxDVUxBVEVfVkVSVElDQUxcbiAgKTtcbn1cbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  export class CalculateInputConnectionsRequest {
2
- fNode;
2
+ nodeOrGroup;
3
3
  static fToken = Symbol('CalculateInputConnectionsRequest');
4
- constructor(fNode) {
5
- this.fNode = fNode;
4
+ constructor(nodeOrGroup) {
5
+ this.nodeOrGroup = nodeOrGroup;
6
6
  }
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWlucHV0LWNvbm5lY3Rpb25zLXJlcXVlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWlucHV0LWNvbm5lY3Rpb25zL2NhbGN1bGF0ZS1pbnB1dC1jb25uZWN0aW9ucy1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxnQ0FBZ0M7SUFHbEM7SUFGVCxNQUFNLENBQVUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3BFLFlBQ1MsS0FBZ0I7UUFBaEIsVUFBSyxHQUFMLEtBQUssQ0FBVztJQUV6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRk5vZGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi1ub2RlJztcblxuZXhwb3J0IGNsYXNzIENhbGN1bGF0ZUlucHV0Q29ubmVjdGlvbnNSZXF1ZXN0IHtcbiAgc3RhdGljIHJlYWRvbmx5IGZUb2tlbiA9IFN5bWJvbCgnQ2FsY3VsYXRlSW5wdXRDb25uZWN0aW9uc1JlcXVlc3QnKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZOb2RlOiBGTm9kZUJhc2UsXG4gICkge1xuICB9XG59XG4iXX0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWlucHV0LWNvbm5lY3Rpb25zLXJlcXVlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvY2FsY3VsYXRlLWlucHV0LWNvbm5lY3Rpb25zL2NhbGN1bGF0ZS1pbnB1dC1jb25uZWN0aW9ucy1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxnQ0FBZ0M7SUFFZjtJQUQ1QixNQUFNLENBQVUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3BFLFlBQTRCLFdBQXNCO1FBQXRCLGdCQUFXLEdBQVgsV0FBVyxDQUFXO0lBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uLy4uLy4uL2Ytbm9kZSc7XG5cbmV4cG9ydCBjbGFzcyBDYWxjdWxhdGVJbnB1dENvbm5lY3Rpb25zUmVxdWVzdCB7XG4gIHN0YXRpYyByZWFkb25seSBmVG9rZW4gPSBTeW1ib2woJ0NhbGN1bGF0ZUlucHV0Q29ubmVjdGlvbnNSZXF1ZXN0Jyk7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBub2RlT3JHcm91cDogRk5vZGVCYXNlKSB7fVxufVxuIl19