@foblex/flow 17.8.0 → 17.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior-request.d.ts +12 -0
  2. package/domain/f-connection/calculate-connection-line-by-behavior/{calculate-connection-line-by-behavior.execution.d.ts → calculate-connection-line-by-behavior.d.ts} +4 -4
  3. package/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.d.ts +2 -2
  4. package/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.d.ts +2 -2
  5. package/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.d.ts +2 -2
  6. package/domain/f-connection/calculate-connection-line-by-behavior/index.d.ts +2 -2
  7. package/domain/f-connection/providers.d.ts +2 -2
  8. package/domain/f-connection/redraw-connections/redraw-connections.execution.d.ts +2 -2
  9. package/domain/f-connectors/add-input-to-store/add-input-to-store-request.d.ts +2 -2
  10. package/domain/f-connectors/add-input-to-store/add-input-to-store.d.ts +12 -0
  11. package/domain/f-connectors/add-input-to-store/index.d.ts +1 -1
  12. package/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.d.ts +2 -2
  13. package/domain/f-connectors/add-outlet-to-store/{add-outlet-to-store.execution.d.ts → add-outlet-to-store.d.ts} +5 -5
  14. package/domain/f-connectors/add-outlet-to-store/index.d.ts +1 -1
  15. package/domain/f-connectors/add-output-to-store/add-output-to-store-request.d.ts +2 -2
  16. package/domain/f-connectors/add-output-to-store/{add-output-to-store.execution.d.ts → add-output-to-store.d.ts} +5 -5
  17. package/domain/f-connectors/add-output-to-store/index.d.ts +1 -1
  18. package/domain/f-connectors/{find-closest-connector/find-closest-connector.request.d.ts → calculate-closest-connector/calculate-closest-connector-request.d.ts} +3 -3
  19. package/domain/f-connectors/calculate-closest-connector/calculate-closest-connector.d.ts +16 -0
  20. package/domain/f-connectors/calculate-closest-connector/index.d.ts +2 -0
  21. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.d.ts +3 -3
  22. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.d.ts +2 -2
  23. package/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.execution.d.ts +2 -2
  24. package/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.request.d.ts +2 -2
  25. package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.d.ts +2 -2
  26. package/domain/f-connectors/get-connector-and-rect/{get-connector-and-rect.execution.d.ts → get-connector-and-rect.d.ts} +4 -4
  27. package/domain/f-connectors/get-connector-and-rect/index.d.ts +1 -1
  28. package/domain/f-connectors/index.d.ts +1 -1
  29. package/domain/f-connectors/mark-connectable-connectors/index.d.ts +2 -2
  30. package/domain/f-connectors/mark-connectable-connectors/{mark-connectable-connectors.request.d.ts → mark-connectable-connectors-request.d.ts} +2 -2
  31. package/domain/f-connectors/mark-connectable-connectors/{mark-connectable-connectors.execution.d.ts → mark-connectable-connectors.d.ts} +5 -5
  32. package/domain/f-connectors/providers.d.ts +11 -11
  33. package/domain/f-connectors/remove-input-from-store/index.d.ts +1 -1
  34. package/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.d.ts +2 -2
  35. package/domain/f-connectors/remove-input-from-store/{remove-input-from-store.execution.d.ts → remove-input-from-store.d.ts} +4 -4
  36. package/domain/f-connectors/unmark-connectable-connectors/index.d.ts +2 -2
  37. package/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.request.d.ts → unmark-connectable-connectors-request.d.ts} +2 -2
  38. package/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.execution.d.ts → unmark-connectable-connectors.d.ts} +5 -5
  39. package/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.d.ts +1 -1
  40. package/domain/providers.d.ts +1 -1
  41. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior-request.mjs +16 -0
  42. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.mjs +32 -0
  43. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.mjs +4 -4
  44. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.mjs +8 -4
  45. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.mjs +10 -10
  46. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/index.mjs +3 -3
  47. package/esm2022/domain/f-connection/providers.mjs +3 -3
  48. package/esm2022/domain/f-connection/redraw-connections/redraw-connections-request.mjs +1 -1
  49. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +9 -9
  50. package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store-request.mjs +4 -4
  51. package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store.mjs +25 -0
  52. package/esm2022/domain/f-connectors/add-input-to-store/index.mjs +2 -2
  53. package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.mjs +4 -4
  54. package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.mjs +25 -0
  55. package/esm2022/domain/f-connectors/add-outlet-to-store/index.mjs +2 -2
  56. package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store-request.mjs +4 -4
  57. package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store.mjs +25 -0
  58. package/esm2022/domain/f-connectors/add-output-to-store/index.mjs +2 -2
  59. package/esm2022/domain/f-connectors/calculate-closest-connector/calculate-closest-connector-request.mjs +10 -0
  60. package/esm2022/domain/f-connectors/calculate-closest-connector/calculate-closest-connector.mjs +49 -0
  61. package/esm2022/domain/f-connectors/calculate-closest-connector/index.mjs +3 -0
  62. package/esm2022/domain/f-connectors/find-connectable-connector-using-priority-and-position/find-connectable-connector-using-priority-and-position.execution.mjs +9 -6
  63. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.mjs +14 -14
  64. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.mjs +4 -4
  65. package/esm2022/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.execution.mjs +9 -9
  66. package/esm2022/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.request.mjs +4 -4
  67. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.mjs +4 -4
  68. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.mjs +31 -0
  69. package/esm2022/domain/f-connectors/get-connector-and-rect/index.mjs +2 -2
  70. package/esm2022/domain/f-connectors/index.mjs +2 -2
  71. package/esm2022/domain/f-connectors/mark-connectable-connectors/index.mjs +3 -3
  72. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors-request.mjs +8 -0
  73. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.mjs +30 -0
  74. package/esm2022/domain/f-connectors/providers.mjs +20 -20
  75. package/esm2022/domain/f-connectors/remove-input-from-store/index.mjs +2 -2
  76. package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.mjs +4 -4
  77. package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store.mjs +25 -0
  78. package/esm2022/domain/f-connectors/unmark-connectable-connectors/index.mjs +3 -3
  79. package/esm2022/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.request.mjs → unmark-connectable-connectors-request.mjs} +4 -4
  80. package/esm2022/domain/f-connectors/unmark-connectable-connectors/unmark-connectable-connectors.mjs +30 -0
  81. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.mjs +4 -4
  82. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.mjs +12 -6
  83. package/esm2022/domain/f-node/calculate-input-connections/calculate-input-connections.mjs +3 -6
  84. package/esm2022/domain/f-node/calculate-output-connections/calculate-output-connections.mjs +3 -6
  85. package/esm2022/f-connection/common/domain/f-bezier.path-builder.mjs +26 -10
  86. package/esm2022/f-connection/common/domain/f-segment.path-builder.mjs +41 -23
  87. package/esm2022/f-connection/common/domain/f-straight.path-builder.mjs +9 -3
  88. package/esm2022/f-connection/common/f-connection-base.mjs +34 -25
  89. package/esm2022/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +17 -27
  90. package/esm2022/f-connection/common/f-connection-text/f-connection-text.component.mjs +20 -33
  91. package/esm2022/f-connection/common/f-gradient/f-connection-gradient.component.mjs +17 -27
  92. package/esm2022/f-connection/common/f-path/f-connection-path.component.mjs +16 -26
  93. package/esm2022/f-connection/common/f-selection/f-connection-selection.component.mjs +10 -20
  94. package/esm2022/f-connection/common/i-has-connection-from-to.mjs +1 -1
  95. package/esm2022/f-connection/f-connection/f-connection.component.mjs +24 -25
  96. package/esm2022/f-connection/f-connection-builder/i-f-connection-builder-response.mjs +1 -1
  97. package/esm2022/f-connection/f-connection-center/f-connection-center.directive.mjs +21 -4
  98. package/esm2022/f-connection/f-connection-content/f-connection-content.mjs +96 -0
  99. package/esm2022/f-connection/f-connection-content/index.mjs +3 -0
  100. package/esm2022/f-connection/f-connection-content/polyline-content-engine/i-polyline-content.mjs +2 -0
  101. package/esm2022/f-connection/f-connection-content/polyline-content-engine/index.mjs +6 -0
  102. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-align.mjs +6 -0
  103. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-layout-engine.mjs +29 -0
  104. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-place.mjs +65 -0
  105. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-sampler-result.mjs +2 -0
  106. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-tangent.mjs +2 -0
  107. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/index.mjs +5 -0
  108. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline-sampler.mjs +143 -0
  109. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline.mjs +68 -0
  110. package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +17 -21
  111. package/esm2022/f-connection/f-marker/f-marker-base.mjs +2 -8
  112. package/esm2022/f-connection/f-marker/f-marker.directive.mjs +13 -22
  113. package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +17 -21
  114. package/esm2022/f-connection/index.mjs +2 -1
  115. package/esm2022/f-connectors/f-connector-base.mjs +1 -1
  116. package/esm2022/f-connectors/f-node-input/f-node-input-base.mjs +2 -2
  117. package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +34 -32
  118. package/esm2022/f-connectors/f-node-outlet/f-node-outlet-base.mjs +6 -6
  119. package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +23 -26
  120. package/esm2022/f-connectors/f-node-output/f-node-output-base.mjs +4 -4
  121. package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +30 -32
  122. package/esm2022/f-connectors/f-source-connector-base.mjs +11 -0
  123. package/esm2022/f-connectors/index.mjs +2 -1
  124. package/esm2022/f-draggable/domain/f-drag-started-event.mjs +4 -2
  125. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +7 -7
  126. package/esm2022/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.execution.mjs +2 -2
  127. package/esm2022/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.execution.mjs +20 -18
  128. package/esm2022/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.mjs +38 -36
  129. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.drag-handler.mjs +21 -19
  130. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-source.drag-handler.mjs +6 -6
  131. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-target.drag-handler.mjs +5 -5
  132. package/esm2022/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.execution.mjs +5 -5
  133. package/esm2022/f-draggable/f-drag-handler/i-f-drag-handler.mjs +1 -1
  134. package/esm2022/f-draggable/f-draggable-base.mjs +2 -2
  135. package/esm2022/f-draggable/f-draggable.directive.mjs +10 -20
  136. package/esm2022/f-draggable/f-node-move/connection-drag-handlers/base-connection.drag-handler.mjs +3 -3
  137. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-drag-model-from-selection.mjs +9 -12
  138. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-input-connection-handler-and-set-to-node-handler/create-input-connection-handler-and-set-to-node-handler.mjs +5 -5
  139. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-output-connection-handler-and-set-to-node-handler/create-output-connection-handler-and-set-to-node-handler.mjs +5 -5
  140. package/esm2022/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.execution.mjs +28 -16
  141. package/esm2022/f-node/f-node.directive.mjs +6 -2
  142. package/esm2022/mixins/change-selection/change-selection.mjs +5 -6
  143. package/esm2022/mixins/change-visibility/change-visibility.mjs +4 -3
  144. package/esm2022/mixins/constructor.mjs +1 -1
  145. package/esm2022/utils/index.mjs +2 -1
  146. package/esm2022/utils/string-attribute.mjs +4 -0
  147. package/f-connection/common/domain/f-bezier.path-builder.d.ts +2 -2
  148. package/f-connection/common/domain/f-segment.path-builder.d.ts +7 -7
  149. package/f-connection/common/f-connection-base.d.ts +13 -11
  150. package/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +6 -11
  151. package/f-connection/common/f-connection-text/f-connection-text.component.d.ts +6 -12
  152. package/f-connection/common/f-gradient/f-connection-gradient.component.d.ts +5 -10
  153. package/f-connection/common/f-path/f-connection-path.component.d.ts +2 -7
  154. package/f-connection/common/f-selection/f-connection-selection.component.d.ts +2 -6
  155. package/f-connection/common/i-has-connection-from-to.d.ts +3 -3
  156. package/f-connection/f-connection/f-connection.component.d.ts +6 -6
  157. package/f-connection/f-connection-builder/i-f-connection-builder-response.d.ts +1 -0
  158. package/f-connection/f-connection-center/f-connection-center.directive.d.ts +6 -1
  159. package/f-connection/f-connection-content/f-connection-content.d.ts +69 -0
  160. package/f-connection/f-connection-content/index.d.ts +2 -0
  161. package/f-connection/f-connection-content/polyline-content-engine/i-polyline-content.d.ts +9 -0
  162. package/f-connection/f-connection-content/polyline-content-engine/index.d.ts +5 -0
  163. package/f-connection/f-connection-content/polyline-content-engine/polyline-content-align.d.ts +4 -0
  164. package/f-connection/f-connection-content/polyline-content-engine/polyline-content-layout-engine.d.ts +21 -0
  165. package/f-connection/f-connection-content/polyline-content-engine/polyline-content-place.d.ts +18 -0
  166. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-sampler-result.d.ts +11 -0
  167. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-tangent.d.ts +4 -0
  168. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/index.d.ts +4 -0
  169. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline-sampler.d.ts +60 -0
  170. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline.d.ts +29 -0
  171. package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +4 -6
  172. package/f-connection/f-marker/f-marker-base.d.ts +0 -3
  173. package/f-connection/f-marker/f-marker.directive.d.ts +4 -6
  174. package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +4 -6
  175. package/f-connection/index.d.ts +1 -0
  176. package/f-connection/providers.d.ts +2 -2
  177. package/f-connectors/f-connector-base.d.ts +3 -2
  178. package/f-connectors/f-node-input/f-node-input-base.d.ts +3 -2
  179. package/f-connectors/f-node-input/f-node-input.directive.d.ts +8 -9
  180. package/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +3 -3
  181. package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +6 -8
  182. package/f-connectors/f-node-output/f-node-output-base.d.ts +4 -5
  183. package/f-connectors/f-node-output/f-node-output.directive.d.ts +7 -9
  184. package/f-connectors/f-source-connector-base.d.ts +7 -0
  185. package/f-connectors/index.d.ts +1 -0
  186. package/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.d.ts +1 -1
  187. package/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.execution.d.ts +2 -2
  188. package/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.execution.d.ts +9 -9
  189. package/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.d.ts +5 -5
  190. package/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.drag-handler.d.ts +4 -4
  191. package/f-draggable/f-connection/f-reassign-connection/f-reassign-source.drag-handler.d.ts +5 -5
  192. package/f-draggable/f-connection/f-reassign-connection/f-reassign-target.drag-handler.d.ts +5 -5
  193. package/f-draggable/f-draggable-base.d.ts +1 -1
  194. package/f-draggable/f-draggable.directive.d.ts +5 -6
  195. package/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.execution.d.ts +1 -1
  196. package/f-node/f-node.directive.d.ts +1 -1
  197. package/fesm2022/foblex-flow.mjs +1083 -669
  198. package/fesm2022/foblex-flow.mjs.map +1 -1
  199. package/package.json +1 -1
  200. package/utils/index.d.ts +1 -0
  201. package/utils/string-attribute.d.ts +1 -0
  202. package/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.d.ts +0 -12
  203. package/domain/f-connectors/add-input-to-store/add-input-to-store.execution.d.ts +0 -12
  204. package/domain/f-connectors/find-closest-connector/find-closest-connector.execution.d.ts +0 -16
  205. package/domain/f-connectors/find-closest-connector/index.d.ts +0 -2
  206. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.execution.mjs +0 -32
  207. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.mjs +0 -16
  208. package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store.execution.mjs +0 -25
  209. package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.execution.mjs +0 -25
  210. package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store.execution.mjs +0 -25
  211. package/esm2022/domain/f-connectors/find-closest-connector/find-closest-connector.execution.mjs +0 -47
  212. package/esm2022/domain/f-connectors/find-closest-connector/find-closest-connector.request.mjs +0 -10
  213. package/esm2022/domain/f-connectors/find-closest-connector/index.mjs +0 -3
  214. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.mjs +0 -31
  215. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.execution.mjs +0 -30
  216. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.request.mjs +0 -8
  217. package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store.execution.mjs +0 -25
  218. package/esm2022/domain/f-connectors/unmark-connectable-connectors/unmark-connectable-connectors.execution.mjs +0 -30
@@ -1,5 +1,5 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, inject, input, Input, numberAttribute, } from "@angular/core";
2
- import { EFConnectionBehavior, EFConnectionType, } from '../common';
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, inject, input, Input, numberAttribute, } from '@angular/core';
2
+ import { EFConnectionBehavior, EFConnectionType } from '../common';
3
3
  import { NotifyDataChangedRequest } from '../../f-storage';
4
4
  import { F_CONNECTION } from '../common/f-connection.injection-token';
5
5
  //TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common
@@ -9,21 +9,27 @@ import { FConnectionBase } from '../common/f-connection-base';
9
9
  import { castToEnum } from '@foblex/utils';
10
10
  import { FMediator } from '@foblex/mediator';
11
11
  import { AddConnectionToStoreRequest, RemoveConnectionFromStoreRequest } from '../../domain';
12
+ import { stringAttribute } from '../../utils';
12
13
  import * as i0 from "@angular/core";
13
- import * as i1 from "../f-connection-builder";
14
- import * as i2 from "../common/f-connection-text/f-connection-text.component";
15
- import * as i3 from "../common/f-drag-handle/f-connection-drag-handle-start.component";
16
- import * as i4 from "../common/f-drag-handle/f-connection-drag-handle-end.component";
17
- import * as i5 from "../common/f-gradient/f-connection-gradient.component";
18
- import * as i6 from "../common/f-path/f-connection-path.component";
19
- import * as i7 from "../common/f-selection/f-connection-selection.component";
14
+ import * as i1 from "../common/f-connection-text/f-connection-text.component";
15
+ import * as i2 from "../common/f-drag-handle/f-connection-drag-handle-start.component";
16
+ import * as i3 from "../common/f-drag-handle/f-connection-drag-handle-end.component";
17
+ import * as i4 from "../common/f-gradient/f-connection-gradient.component";
18
+ import * as i5 from "../common/f-path/f-connection-path.component";
19
+ import * as i6 from "../common/f-selection/f-connection-selection.component";
20
20
  let uniqueId = 0;
21
21
  export class FConnectionComponent extends FConnectionBase {
22
22
  fId = input(`f-connection-${uniqueId++}`, { alias: 'fConnectionId' });
23
+ /** @deprecated [fText] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead. */
23
24
  fText = '';
25
+ /** @deprecated [fTextStartOffset] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead. */
24
26
  fTextStartOffset = '';
25
- fOutputId = '';
26
- fInputId = '';
27
+ fOutputId = input('', {
28
+ transform: (value) => stringAttribute(value) || '',
29
+ });
30
+ fInputId = input('', {
31
+ transform: (value) => stringAttribute(value) || '',
32
+ });
27
33
  fRadius = 8;
28
34
  fOffset = 12;
29
35
  fBehavior = EFConnectionBehavior.FIXED;
@@ -38,9 +44,6 @@ export class FConnectionComponent extends FConnectionBase {
38
44
  return this.fPath().hostElement;
39
45
  }
40
46
  _mediator = inject(FMediator);
41
- constructor(elementReference, fConnectionFactory) {
42
- super(elementReference, fConnectionFactory);
43
- }
44
47
  ngOnInit() {
45
48
  this._mediator.execute(new AddConnectionToStoreRequest(this));
46
49
  }
@@ -50,25 +53,21 @@ export class FConnectionComponent extends FConnectionBase {
50
53
  ngOnDestroy() {
51
54
  this._mediator.execute(new RemoveConnectionFromStoreRequest(this));
52
55
  }
53
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, deps: [{ token: i0.ElementRef }, { token: i1.FConnectionFactory }], target: i0.ɵɵFactoryTarget.Component });
54
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionComponent, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fText: { classPropertyName: "fText", publicName: "fText", isSignal: false, isRequired: false, transformFunction: null }, fTextStartOffset: { classPropertyName: "fTextStartOffset", publicName: "fTextStartOffset", isSignal: false, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal: false, isRequired: false, transformFunction: null }, fInputId: { classPropertyName: "fInputId", publicName: "fInputId", isSignal: false, isRequired: false, transformFunction: null }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fSelectionDisabled: { classPropertyName: "fSelectionDisabled", publicName: "fSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, fReassignableStart: { classPropertyName: "fReassignableStart", publicName: "fReassignableStart", isSignal: true, isRequired: false, transformFunction: null }, fDraggingDisabled: { classPropertyName: "fDraggingDisabled", publicName: "fReassignDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "fId()", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center{pointer-events:all}\n"], dependencies: [{ kind: "component", type: i2.FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: i3.FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: i4.FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: i5.FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: i6.FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: i7.FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
57
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionComponent, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fText: { classPropertyName: "fText", publicName: "fText", isSignal: false, isRequired: false, transformFunction: null }, fTextStartOffset: { classPropertyName: "fTextStartOffset", publicName: "fTextStartOffset", isSignal: false, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal: true, isRequired: false, transformFunction: null }, fInputId: { classPropertyName: "fInputId", publicName: "fInputId", isSignal: true, isRequired: false, transformFunction: null }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fSelectionDisabled: { classPropertyName: "fSelectionDisabled", publicName: "fSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, fReassignableStart: { classPropertyName: "fReassignableStart", publicName: "fReassignableStart", isSignal: true, isRequired: false, transformFunction: null }, fDraggingDisabled: { classPropertyName: "fDraggingDisabled", publicName: "fReassignDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "fId()", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"overflow: visible; display: block; vertical-align: middle;\"\n>\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: i1.FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: i2.FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: i3.FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: i4.FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: i5.FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: i6.FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
58
  }
56
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, decorators: [{
57
60
  type: Component,
58
- args: [{ selector: "f-connection", exportAs: 'fComponent', changeDetection: ChangeDetectionStrategy.OnPush, host: {
61
+ args: [{ selector: 'f-connection', exportAs: 'fComponent', changeDetection: ChangeDetectionStrategy.OnPush, host: {
59
62
  '[attr.id]': 'fId()',
60
- class: "f-component f-connection",
63
+ class: 'f-component f-connection',
61
64
  '[class.f-connection-selection-disabled]': 'fSelectionDisabled()',
62
65
  '[class.f-connection-reassign-disabled]': 'fDraggingDisabled()',
63
- }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center{pointer-events:all}\n"] }]
64
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FConnectionFactory }], propDecorators: { fText: [{
66
+ }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"overflow: visible; display: block; vertical-align: middle;\"\n>\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"] }]
67
+ }], propDecorators: { fText: [{
65
68
  type: Input
66
69
  }], fTextStartOffset: [{
67
70
  type: Input
68
- }], fOutputId: [{
69
- type: Input
70
- }], fInputId: [{
71
- type: Input
72
71
  }], fRadius: [{
73
72
  type: Input,
74
73
  args: [{ transform: numberAttribute }]
@@ -81,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
81
80
  }], fType: [{
82
81
  type: Input
83
82
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi9mLWNvbm5lY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsTUFBTSxFQUFFLEtBQUssRUFDYixLQUFLLEVBQ0wsZUFBZSxHQUloQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGdCQUFnQixHQUNqQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsZ0hBQWdIO0FBQ2hILHdFQUF3RTtBQUN4RSxnREFBZ0Q7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7O0FBRTdGLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQWdCakIsTUFBTSxPQUFPLG9CQUNYLFNBQVEsZUFBZTtJQUVQLEdBQUcsR0FBRyxLQUFLLENBQVMsZ0JBQWdCLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFF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dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LCBpbnB1dCxcbiAgSW5wdXQsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEVGQ29ubmVjdGlvbkJlaGF2aW9yLFxuICBFRkNvbm5lY3Rpb25UeXBlLFxufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgTm90aWZ5RGF0YUNoYW5nZWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IEZDb25uZWN0aW9uRmFjdG9yeSB9IGZyb20gJy4uL2YtY29ubmVjdGlvbi1idWlsZGVyJztcbmltcG9ydCB7IEZfQ09OTkVDVElPTiB9IGZyb20gJy4uL2NvbW1vbi9mLWNvbm5lY3Rpb24uaW5qZWN0aW9uLXRva2VuJztcbi8vVE9ETzogTmVlZCB0byBkZWFsIHdpdGggY3ljbGljIGRlcGVuZGVuY2llcywgc2luY2UgaW4gc29tZSBjYXNlcyBhbiBlcnJvciBvY2N1cnMgd2hlbiBpbXBvcnRpbmcgdGhlbSAuLi9jb21tb25cbi8vIFR5cGVFcnJvcjogQ2xhc3MgZXh0ZW5kcyB2YWx1ZSB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFxuLy8gYXQgZi1jb25uZWN0aW9uLWZvci1jcmVhdGUuY29tcG9uZW50LnRzOjM0OjExXG5pbXBvcnQgeyBGQ29ubmVjdGlvbkJhc2UgfSBmcm9tICcuLi9jb21tb24vZi1jb25uZWN0aW9uLWJhc2UnO1xuaW1wb3J0IHsgY2FzdFRvRW51bSB9IGZyb20gJ0Bmb2JsZXgvdXRpbHMnO1xuaW1wb3J0IHsgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBBZGRDb25uZWN0aW9uVG9TdG9yZVJlcXVlc3QsIFJlbW92ZUNvbm5lY3Rpb25Gcm9tU3RvcmVSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImYtY29ubmVjdGlvblwiLFxuICBleHBvcnRBczogJ2ZDb21wb25lbnQnLFxuICB0ZW1wbGF0ZVVybDogXCIuL2YtY29ubmVjdGlvbi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZi1jb25uZWN0aW9uLmNvbXBvbmVudC5zY3NzXCJdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnZklkKCknLFxuICAgIGNsYXNzOiBcImYtY29tcG9uZW50IGYtY29ubmVjdGlvblwiLFxuICAgICdbY2xhc3MuZi1jb25uZWN0aW9uLXNlbGVjdGlvbi1kaXNhYmxlZF0nOiAnZlNlbGVjdGlvbkRpc2FibGVkKCknLFxuICAgICdbY2xhc3MuZi1jb25uZWN0aW9uLXJlYXNzaWduLWRpc2FibGVkXSc6ICdmRHJhZ2dpbmdEaXNhYmxlZCgpJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGX0NPTk5FQ1RJT04sIHVzZUV4aXN0aW5nOiBGQ29ubmVjdGlvbkNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgRkNvbm5lY3Rpb25Db21wb25lbnRcbiAgZXh0ZW5kcyBGQ29ubmVjdGlvbkJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZklkID0gaW5wdXQ8c3RyaW5nPihgZi1jb25uZWN0aW9uLSR7dW5pcXVlSWQrK31gLCB7IGFsaWFzOiAnZkNvbm5lY3Rpb25JZCcgfSk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGZUZXh0OiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZlRleHRTdGFydE9mZnNldDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGZPdXRwdXRJZDogYW55ID0gJyc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGZJbnB1dElkOiBhbnkgPSAnJztcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZlJhZGl1czogbnVtYmVyID0gODtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZk9mZnNldDogbnVtYmVyID0gMTI7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IHVua25vd24pID0+IGNhc3RUb0VudW0odmFsdWUsICdmQmVoYXZpb3InLCBFRkNvbm5lY3Rpb25CZWhhdmlvcikgfSlcbiAgcHVibGljIG92ZXJyaWRlIGZCZWhhdmlvcjogRUZDb25uZWN0aW9uQmVoYXZpb3IgPSBFRkNvbm5lY3Rpb25CZWhhdmlvci5GSVhFRDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZlR5cGU6IEVGQ29ubmVjdGlvblR5cGUgfCBzdHJpbmcgPSBFRkNvbm5lY3Rpb25UeXBlLlNUUkFJR0hUO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBmU2VsZWN0aW9uRGlzYWJsZWQgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZSZWFzc2lnbmFibGVTdGFydCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZkRyYWdnaW5nRGlzYWJsZWQgPSBpbnB1dChmYWxzZSwge1xuICAgIGFsaWFzOiAnZlJlYXNzaWduRGlzYWJsZWQnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCBib3VuZGluZ0VsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5mUGF0aCgpLmhvc3RFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmZXJlbmNlOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBmQ29ubmVjdGlvbkZhY3Rvcnk6IEZDb25uZWN0aW9uRmFjdG9yeSxcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZmVyZW5jZSwgZkNvbm5lY3Rpb25GYWN0b3J5KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBBZGRDb25uZWN0aW9uVG9TdG9yZVJlcXVlc3QodGhpcykpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IE5vdGlmeURhdGFDaGFuZ2VkUmVxdWVzdCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBSZW1vdmVDb25uZWN0aW9uRnJvbVN0b3JlUmVxdWVzdCh0aGlzKSk7XG4gIH1cbn1cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHN0eWxlPVwib3ZlcmZsb3c6IHZpc2libGU7IGRpc3BsYXk6IGJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1wiPlxuICA8ZGVmcyAjZGVmcz48L2RlZnM+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPGcgY2xhc3M9XCJmLWNvbm5lY3Rpb24tZ3JvdXBcIj5cbiAgICA8bGluZWFyR3JhZGllbnQgZkNvbm5lY3Rpb25HcmFkaWVudD48L2xpbmVhckdyYWRpZW50PlxuICAgIDxwYXRoIGZDb25uZWN0aW9uU2VsZWN0aW9uIFthdHRyLmRdPVwicGF0aFwiPjwvcGF0aD5cbiAgICA8Zz5cbiAgICAgIDxwYXRoIGYtY29ubmVjdGlvbi1wYXRoIFthdHRyLmRdPVwicGF0aFwiPjwvcGF0aD5cbiAgICAgIEBpZiAoZlJlYXNzaWduYWJsZVN0YXJ0KCkpIHtcbiAgICAgICAgPGNpcmNsZSBmLWNvbm5lY3Rpb24tZHJhZy1oYW5kbGUtc3RhcnQgcj1cIjhcIj48L2NpcmNsZT5cbiAgICAgIH1cbiAgICAgIDxjaXJjbGUgZi1jb25uZWN0aW9uLWRyYWctaGFuZGxlLWVuZCByPVwiOFwiPjwvY2lyY2xlPlxuICAgIDwvZz5cbiAgICA8dGV4dCBmLWNvbm5lY3Rpb24tdGV4dD48L3RleHQ+XG4gIDwvZz5cbjwvc3ZnPlxuQGlmIChmQ29ubmVjdGlvbkNlbnRlcnMoKS5sZW5ndGgpIHtcbiAgPGRpdiAjZkNvbm5lY3Rpb25DZW50ZXIgY2xhc3M9XCJmLWNvbm5lY3Rpb24tY2VudGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZDb25uZWN0aW9uQ2VudGVyXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG59XG4iXX0=
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi9mLWNvbm5lY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsZUFBZSxHQUloQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RFLGdIQUFnSDtBQUNoSCx3RUFBd0U7QUFDeEUsZ0RBQWdEO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7QUFFOUMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBZ0JqQixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZUFBZTtJQUN2QyxHQUFHLEdBQUcsS0FBSyxDQUFTLGdCQUFnQixRQUFR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RUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtnQkFJOUUsS0FBSztzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIElucHV0LFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRUZDb25uZWN0aW9uQmVoYXZpb3IsIEVGQ29ubmVjdGlvblR5cGUgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgTm90aWZ5RGF0YUNoYW5nZWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IEZfQ09OTkVDVElPTiB9IGZyb20gJy4uL2NvbW1vbi9mLWNvbm5lY3Rpb24uaW5qZWN0aW9uLXRva2VuJztcbi8vVE9ETzogTmVlZCB0byBkZWFsIHdpdGggY3ljbGljIGRlcGVuZGVuY2llcywgc2luY2UgaW4gc29tZSBjYXNlcyBhbiBlcnJvciBvY2N1cnMgd2hlbiBpbXBvcnRpbmcgdGhlbSAuLi9jb21tb25cbi8vIFR5cGVFcnJvcjogQ2xhc3MgZXh0ZW5kcyB2YWx1ZSB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFxuLy8gYXQgZi1jb25uZWN0aW9uLWZvci1jcmVhdGUuY29tcG9uZW50LnRzOjM0OjExXG5pbXBvcnQgeyBGQ29ubmVjdGlvbkJhc2UgfSBmcm9tICcuLi9jb21tb24vZi1jb25uZWN0aW9uLWJhc2UnO1xuaW1wb3J0IHsgY2FzdFRvRW51bSB9IGZyb20gJ0Bmb2JsZXgvdXRpbHMnO1xuaW1wb3J0IHsgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBBZGRDb25uZWN0aW9uVG9TdG9yZVJlcXVlc3QsIFJlbW92ZUNvbm5lY3Rpb25Gcm9tU3RvcmVSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IHN0cmluZ0F0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZi1jb25uZWN0aW9uJyxcbiAgZXhwb3J0QXM6ICdmQ29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2YtY29ubmVjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2YtY29ubmVjdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnZklkKCknLFxuICAgIGNsYXNzOiAnZi1jb21wb25lbnQgZi1jb25uZWN0aW9uJyxcbiAgICAnW2NsYXNzLmYtY29ubmVjdGlvbi1zZWxlY3Rpb24tZGlzYWJsZWRdJzogJ2ZTZWxlY3Rpb25EaXNhYmxlZCgpJyxcbiAgICAnW2NsYXNzLmYtY29ubmVjdGlvbi1yZWFzc2lnbi1kaXNhYmxlZF0nOiAnZkRyYWdnaW5nRGlzYWJsZWQoKScsXG4gIH0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRl9DT05ORUNUSU9OLCB1c2VFeGlzdGluZzogRkNvbm5lY3Rpb25Db21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZDb25uZWN0aW9uQ29tcG9uZW50IGV4dGVuZHMgRkNvbm5lY3Rpb25CYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBvdmVycmlkZSBmSWQgPSBpbnB1dDxzdHJpbmc+KGBmLWNvbm5lY3Rpb24tJHt1bmlxdWVJZCsrfWAsIHsgYWxpYXM6ICdmQ29ubmVjdGlvbklkJyB9KTtcblxuICAvKiogQGRlcHJlY2F0ZWQgW2ZUZXh0XSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdjE4LjAuMC4gVXNlIEZDb25uZWN0aW9uQ29udGVudCBkaXJlY3RpdmUgaW5zdGVhZC4gKi9cbiAgQElucHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGZUZXh0OiBzdHJpbmcgPSAnJztcblxuICAvKiogQGRlcHJlY2F0ZWQgW2ZUZXh0U3RhcnRPZmZzZXRdIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTguMC4wLiBVc2UgRkNvbm5lY3Rpb25Db250ZW50IGRpcmVjdGl2ZSBpbnN0ZWFkLiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZlRleHRTdGFydE9mZnNldDogc3RyaW5nID0gJyc7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZPdXRwdXRJZCA9IGlucHV0PHN0cmluZywgdW5rbm93bj4oJycsIHtcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gc3RyaW5nQXR0cmlidXRlKHZhbHVlKSB8fCAnJyxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZJbnB1dElkID0gaW5wdXQ8c3RyaW5nLCB1bmtub3duPignJywge1xuICAgIHRyYW5zZm9ybTogKHZhbHVlKSA9PiBzdHJpbmdBdHRyaWJ1dGUodmFsdWUpIHx8ICcnLFxuICB9KTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZlJhZGl1czogbnVtYmVyID0gODtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZk9mZnNldDogbnVtYmVyID0gMTI7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IHVua25vd24pID0+IGNhc3RUb0VudW0odmFsdWUsICdmQmVoYXZpb3InLCBFRkNvbm5lY3Rpb25CZWhhdmlvcikgfSlcbiAgcHVibGljIG92ZXJyaWRlIGZCZWhhdmlvcjogRUZDb25uZWN0aW9uQmVoYXZpb3IgPSBFRkNvbm5lY3Rpb25CZWhhdmlvci5GSVhFRDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZlR5cGU6IEVGQ29ubmVjdGlvblR5cGUgfCBzdHJpbmcgPSBFRkNvbm5lY3Rpb25UeXBlLlNUUkFJR0hUO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBmU2VsZWN0aW9uRGlzYWJsZWQgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZSZWFzc2lnbmFibGVTdGFydCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZkRyYWdnaW5nRGlzYWJsZWQgPSBpbnB1dChmYWxzZSwge1xuICAgIGFsaWFzOiAnZlJlYXNzaWduRGlzYWJsZWQnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCBib3VuZGluZ0VsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5mUGF0aCgpLmhvc3RFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgQWRkQ29ubmVjdGlvblRvU3RvcmVSZXF1ZXN0KHRoaXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBOb3RpZnlEYXRhQ2hhbmdlZFJlcXVlc3QoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgUmVtb3ZlQ29ubmVjdGlvbkZyb21TdG9yZVJlcXVlc3QodGhpcykpO1xuICB9XG59XG4iLCI8c3ZnXG4gIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICBzdHlsZT1cIm92ZXJmbG93OiB2aXNpYmxlOyBkaXNwbGF5OiBibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcIlxuPlxuICA8ZGVmcyAjZGVmcz48L2RlZnM+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPGcgY2xhc3M9XCJmLWNvbm5lY3Rpb24tZ3JvdXBcIj5cbiAgICA8bGluZWFyR3JhZGllbnQgZkNvbm5lY3Rpb25HcmFkaWVudD48L2xpbmVhckdyYWRpZW50PlxuICAgIDxwYXRoIGZDb25uZWN0aW9uU2VsZWN0aW9uIFthdHRyLmRdPVwicGF0aFwiPjwvcGF0aD5cbiAgICA8Zz5cbiAgICAgIDxwYXRoIGYtY29ubmVjdGlvbi1wYXRoIFthdHRyLmRdPVwicGF0aFwiPjwvcGF0aD5cbiAgICAgIEBpZiAoZlJlYXNzaWduYWJsZVN0YXJ0KCkpIHtcbiAgICAgICAgPGNpcmNsZSBmLWNvbm5lY3Rpb24tZHJhZy1oYW5kbGUtc3RhcnQgcj1cIjhcIj48L2NpcmNsZT5cbiAgICAgIH1cbiAgICAgIDxjaXJjbGUgZi1jb25uZWN0aW9uLWRyYWctaGFuZGxlLWVuZCByPVwiOFwiPjwvY2lyY2xlPlxuICAgIDwvZz5cbiAgICA8dGV4dCBmLWNvbm5lY3Rpb24tdGV4dD48L3RleHQ+XG4gIDwvZz5cbjwvc3ZnPlxuQGlmIChmQ29ubmVjdGlvbkNlbnRlcnMoKS5sZW5ndGgpIHtcbiAgPGRpdiAjZkNvbm5lY3Rpb25DZW50ZXIgY2xhc3M9XCJmLWNvbm5lY3Rpb24tY2VudGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZDb25uZWN0aW9uQ2VudGVyXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG59XG5cbkBpZiAoZkNvbm5lY3Rpb25Db250ZW50cygpLmxlbmd0aCkge1xuICA8bmctY29udGVudCBzZWxlY3Q9XCJbZkNvbm5lY3Rpb25Db250ZW50XVwiPjwvbmctY29udGVudD5cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1mLWNvbm5lY3Rpb24tYnVpbGRlci1yZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi1idWlsZGVyL2ktZi1jb25uZWN0aW9uLWJ1aWxkZXItcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2ludCB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGQ29ubmVjdGlvbkJ1aWxkZXJSZXNwb25zZSB7XG5cbiAgcGF0aDogc3RyaW5nO1xuXG4gIGNvbm5lY3Rpb25DZW50ZXI6IElQb2ludDtcblxuICBwZW51bHRpbWF0ZVBvaW50OiBJUG9pbnQ7XG5cbiAgc2Vjb25kUG9pbnQ6IElQb2ludDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1mLWNvbm5lY3Rpb24tYnVpbGRlci1yZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi1idWlsZGVyL2ktZi1jb25uZWN0aW9uLWJ1aWxkZXItcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2ludCB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGQ29ubmVjdGlvbkJ1aWxkZXJSZXNwb25zZSB7XG4gIHBhdGg6IHN0cmluZztcblxuICBjb25uZWN0aW9uQ2VudGVyOiBJUG9pbnQ7XG5cbiAgcGVudWx0aW1hdGVQb2ludDogSVBvaW50O1xuXG4gIHNlY29uZFBvaW50OiBJUG9pbnQ7XG5cbiAgcG9pbnRzPzogSVBvaW50W107XG59XG4iXX0=
@@ -1,13 +1,30 @@
1
- import { Directive, } from "@angular/core";
1
+ import { booleanAttribute, Directive, input, isDevMode } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ let warnedFConnectionCenter = false;
4
+ /** @deprecated '[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead.' */
3
5
  export class FConnectionCenterDirective {
6
+ /**
7
+ * @deprecated '[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead.'
8
+ */
9
+ fConnectionCenter = input(true, {
10
+ alias: 'fConnectionCenter',
11
+ transform: (v) => {
12
+ // Превращаем presence-атрибут в boolean
13
+ const val = booleanAttribute(v);
14
+ if (!warnedFConnectionCenter && isDevMode()) {
15
+ warnedFConnectionCenter = true;
16
+ console.warn('[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use [FConnectionContent] instead.');
17
+ }
18
+ return val;
19
+ },
20
+ });
4
21
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionCenterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionCenterDirective, selector: "[fConnectionCenter]", ngImport: i0 });
22
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FConnectionCenterDirective, selector: "[fConnectionCenter]", inputs: { fConnectionCenter: { classPropertyName: "fConnectionCenter", publicName: "fConnectionCenter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
6
23
  }
7
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionCenterDirective, decorators: [{
8
25
  type: Directive,
9
26
  args: [{
10
- selector: "[fConnectionCenter]",
27
+ selector: '[fConnectionCenter]',
11
28
  }]
12
29
  }] });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWNlbnRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9mLWNvbm5lY3Rpb24tY2VudGVyL2YtY29ubmVjdGlvbi1jZW50ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7O0FBS3ZCLE1BQU0sT0FBTywwQkFBMEI7d0dBQTFCLDBCQUEwQjs0RkFBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUh0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2ZDb25uZWN0aW9uQ2VudGVyXVwiLFxufSlcbmV4cG9ydCBjbGFzcyBGQ29ubmVjdGlvbkNlbnRlckRpcmVjdGl2ZSB7XG59XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWNlbnRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9mLWNvbm5lY3Rpb24tY2VudGVyL2YtY29ubmVjdGlvbi1jZW50ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFOUUsSUFBSSx1QkFBdUIsR0FBRyxLQUFLLENBQUM7QUFDcEMsZ0lBQWdJO0FBSWhJLE1BQU0sT0FBTywwQkFBMEI7SUFDckM7O09BRUc7SUFDTSxpQkFBaUIsR0FBRyxLQUFLLENBQW1CLElBQUksRUFBRTtRQUN6RCxLQUFLLEVBQUUsbUJBQW1CO1FBQzFCLFNBQVMsRUFBRSxDQUFDLENBQVUsRUFBRSxFQUFFO1lBQ3hCLHdDQUF3QztZQUN4QyxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsdUJBQXVCLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDNUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO2dCQUMvQixPQUFPLENBQUMsSUFBSSxDQUNWLHFHQUFxRyxDQUN0RyxDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztLQUNGLENBQUMsQ0FBQzt3R0FsQlEsMEJBQTBCOzRGQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtpQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIGlucHV0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxubGV0IHdhcm5lZEZDb25uZWN0aW9uQ2VudGVyID0gZmFsc2U7XG4vKiogQGRlcHJlY2F0ZWQgJ1tmQ29ubmVjdGlvbkNlbnRlcl0gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHYxOC4wLjAuIFVzZSBGQ29ubmVjdGlvbkNvbnRlbnQgZGlyZWN0aXZlIGluc3RlYWQuJyAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZDb25uZWN0aW9uQ2VudGVyXScsXG59KVxuZXhwb3J0IGNsYXNzIEZDb25uZWN0aW9uQ2VudGVyRGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkICdbZkNvbm5lY3Rpb25DZW50ZXJdIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTguMC4wLiBVc2UgRkNvbm5lY3Rpb25Db250ZW50IGRpcmVjdGl2ZSBpbnN0ZWFkLidcbiAgICovXG4gIHJlYWRvbmx5IGZDb25uZWN0aW9uQ2VudGVyID0gaW5wdXQ8Ym9vbGVhbiwgdW5rbm93bj4odHJ1ZSwge1xuICAgIGFsaWFzOiAnZkNvbm5lY3Rpb25DZW50ZXInLFxuICAgIHRyYW5zZm9ybTogKHY6IHVua25vd24pID0+IHtcbiAgICAgIC8vINCf0YDQtdCy0YDQsNGJ0LDQtdC8IHByZXNlbmNlLdCw0YLRgNC40LHRg9GCINCyIGJvb2xlYW5cbiAgICAgIGNvbnN0IHZhbCA9IGJvb2xlYW5BdHRyaWJ1dGUodik7XG4gICAgICBpZiAoIXdhcm5lZEZDb25uZWN0aW9uQ2VudGVyICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIHdhcm5lZEZDb25uZWN0aW9uQ2VudGVyID0gdHJ1ZTtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdbZkNvbm5lY3Rpb25DZW50ZXJdIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTguMC4wLiBVc2UgW0ZDb25uZWN0aW9uQ29udGVudF0gaW5zdGVhZC4nLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsO1xuICAgIH0sXG4gIH0pO1xufVxuIl19
@@ -0,0 +1,96 @@
1
+ import { Directive, effect, ElementRef, inject, Injector, input, untracked } from '@angular/core';
2
+ import { NotifyDataChangedRequest } from '../../f-storage';
3
+ import { FMediator } from '@foblex/mediator';
4
+ import { castToEnum } from '@foblex/utils';
5
+ import { PolylineContentAlign } from './polyline-content-engine';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Directive for placing custom user content (text, icons, buttons, etc.)
9
+ * along a connection line.
10
+ *
11
+ * It allows you to specify the position along the connection,
12
+ * shift the content sideways (perpendicular to the path),
13
+ * apply a margin near the edges, and control orientation.
14
+ *
15
+ * ### Usage examples
16
+ *
17
+ * ```html
18
+ * <!-- Text centered on the connection -->
19
+ * <div fConnectionContent [position]="0.5">
20
+ * Hello
21
+ * </div>
22
+ *
23
+ * <!-- Button near the start of the connection, shifted upward by 12px -->
24
+ * <button fConnectionContent [position]="0.2" [offset]="-12">
25
+ * +
26
+ * </button>
27
+ *
28
+ * <!-- Icon at the end of the connection, with 6px margin and rotated along the path -->
29
+ * <span fConnectionContent [position]="1" [margin]="6" align="along">
30
+ * ⮕
31
+ * </span>
32
+ * ```
33
+ */
34
+ export class FConnectionContent {
35
+ _mediator = inject(FMediator);
36
+ _injector = inject(Injector);
37
+ /**
38
+ * The host DOM element to which the directive is applied.
39
+ * Used internally for positioning calculations.
40
+ */
41
+ hostElement = inject((ElementRef)).nativeElement;
42
+ /**
43
+ * Position along the connection.
44
+ *
45
+ * A normalized value in the range `0..1`:
46
+ * - `0` — at the start of the connection,
47
+ * - `1` — at the end of the connection,
48
+ * - `0.5` — at the middle of the connection (default).
49
+ */
50
+ position = input(0.5, {
51
+ transform: (v) => (v < 0 ? 0 : v > 1 ? 1 : v),
52
+ });
53
+ /**
54
+ * Perpendicular offset from the connection line (in pixels).
55
+ *
56
+ * - Positive values shift the element to the right
57
+ * relative to the line direction.
58
+ * - Negative values shift it to the left.
59
+ * - Default: `0` (no shift).
60
+ */
61
+ offset = input(0);
62
+ /**
63
+ * Controls the orientation (rotation) of the content relative to the connection.
64
+ *
65
+ * Possible values:
66
+ * - `'none'` — no rotation (default).
67
+ * - `'along'` — aligned along the path (tangent).
68
+ */
69
+ align = input(PolylineContentAlign.NONE, {
70
+ transform: (x) => castToEnum(x, 'align', PolylineContentAlign),
71
+ });
72
+ ngOnInit() {
73
+ this._listenChanges();
74
+ }
75
+ _listenChanges() {
76
+ effect(() => {
77
+ this.offset();
78
+ this.position();
79
+ this.align();
80
+ untracked(() => this._mediator.execute(new NotifyDataChangedRequest()));
81
+ }, { injector: this._injector });
82
+ }
83
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
84
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FConnectionContent, isStandalone: true, selector: "[fConnectionContent]", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "f-connection-content" }, ngImport: i0 });
85
+ }
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionContent, decorators: [{
87
+ type: Directive,
88
+ args: [{
89
+ selector: '[fConnectionContent]',
90
+ standalone: true,
91
+ host: {
92
+ 'class': 'f-connection-content',
93
+ },
94
+ }]
95
+ }] });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9mLWNvbm5lY3Rpb24tY29udGVudC9mLWNvbm5lY3Rpb24tY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBb0Isb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFbkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBUUgsTUFBTSxPQUFPLGtCQUFrQjtJQUNaLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU5Qzs7O09BR0c7SUFDYSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUMsYUFBYSxDQUFDO0lBRTVFOzs7Ozs7O09BT0c7SUFDYSxRQUFRLEdBQUcsS0FBSyxDQUFpQixHQUFHLEVBQUU7UUFDcEQsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDOUMsQ0FBQyxDQUFDO0lBRUg7Ozs7Ozs7T0FPRztJQUNhLE1BQU0sR0FBRyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFFMUM7Ozs7OztPQU1HO0lBQ2EsS0FBSyxHQUFHLEtBQUssQ0FBZ0Msb0JBQW9CLENBQUMsSUFBSSxFQUFFO1FBQ3RGLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUF1QixDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixDQUFDO0tBQ3JGLENBQUMsQ0FBQztJQUVJLFFBQVE7UUFDYixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSx3QkFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUM3QixDQUFDO0lBQ0osQ0FBQzt3R0F6RFUsa0JBQWtCOzRGQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBUDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixPQUFPLEVBQUUsc0JBQXNCO3FCQUNoQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIEluamVjdG9yLCBpbnB1dCwgT25Jbml0LCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vdGlmeURhdGFDaGFuZ2VkUmVxdWVzdCB9IGZyb20gJy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGTWVkaWF0b3IgfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcbmltcG9ydCB7IGNhc3RUb0VudW0gfSBmcm9tICdAZm9ibGV4L3V0aWxzJztcbmltcG9ydCB7IElQb2x5bGluZUNvbnRlbnQsIFBvbHlsaW5lQ29udGVudEFsaWduIH0gZnJvbSAnLi9wb2x5bGluZS1jb250ZW50LWVuZ2luZSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIGZvciBwbGFjaW5nIGN1c3RvbSB1c2VyIGNvbnRlbnQgKHRleHQsIGljb25zLCBidXR0b25zLCBldGMuKVxuICogYWxvbmcgYSBjb25uZWN0aW9uIGxpbmUuXG4gKlxuICogSXQgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBwb3NpdGlvbiBhbG9uZyB0aGUgY29ubmVjdGlvbixcbiAqIHNoaWZ0IHRoZSBjb250ZW50IHNpZGV3YXlzIChwZXJwZW5kaWN1bGFyIHRvIHRoZSBwYXRoKSxcbiAqIGFwcGx5IGEgbWFyZ2luIG5lYXIgdGhlIGVkZ2VzLCBhbmQgY29udHJvbCBvcmllbnRhdGlvbi5cbiAqXG4gKiAjIyMgVXNhZ2UgZXhhbXBsZXNcbiAqXG4gKiBgYGBodG1sXG4gKiA8IS0tIFRleHQgY2VudGVyZWQgb24gdGhlIGNvbm5lY3Rpb24gLS0+XG4gKiA8ZGl2IGZDb25uZWN0aW9uQ29udGVudCBbcG9zaXRpb25dPVwiMC41XCI+XG4gKiAgIEhlbGxvXG4gKiA8L2Rpdj5cbiAqXG4gKiA8IS0tIEJ1dHRvbiBuZWFyIHRoZSBzdGFydCBvZiB0aGUgY29ubmVjdGlvbiwgc2hpZnRlZCB1cHdhcmQgYnkgMTJweCAtLT5cbiAqIDxidXR0b24gZkNvbm5lY3Rpb25Db250ZW50IFtwb3NpdGlvbl09XCIwLjJcIiBbb2Zmc2V0XT1cIi0xMlwiPlxuICogICArXG4gKiA8L2J1dHRvbj5cbiAqXG4gKiA8IS0tIEljb24gYXQgdGhlIGVuZCBvZiB0aGUgY29ubmVjdGlvbiwgd2l0aCA2cHggbWFyZ2luIGFuZCByb3RhdGVkIGFsb25nIHRoZSBwYXRoIC0tPlxuICogPHNwYW4gZkNvbm5lY3Rpb25Db250ZW50IFtwb3NpdGlvbl09XCIxXCIgW21hcmdpbl09XCI2XCIgYWxpZ249XCJhbG9uZ1wiPlxuICogICDirpVcbiAqIDwvc3Bhbj5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZkNvbm5lY3Rpb25Db250ZW50XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnZi1jb25uZWN0aW9uLWNvbnRlbnQnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBGQ29ubmVjdGlvbkNvbnRlbnQgaW1wbGVtZW50cyBPbkluaXQsIElQb2x5bGluZUNvbnRlbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgLyoqXG4gICAqIFRoZSBob3N0IERPTSBlbGVtZW50IHRvIHdoaWNoIHRoZSBkaXJlY3RpdmUgaXMgYXBwbGllZC5cbiAgICogVXNlZCBpbnRlcm5hbGx5IGZvciBwb3NpdGlvbmluZyBjYWxjdWxhdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaG9zdEVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uIGFsb25nIHRoZSBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBBIG5vcm1hbGl6ZWQgdmFsdWUgaW4gdGhlIHJhbmdlIGAwLi4xYDpcbiAgICogLSBgMGAg4oCUIGF0IHRoZSBzdGFydCBvZiB0aGUgY29ubmVjdGlvbixcbiAgICogLSBgMWAg4oCUIGF0IHRoZSBlbmQgb2YgdGhlIGNvbm5lY3Rpb24sXG4gICAqIC0gYDAuNWAg4oCUIGF0IHRoZSBtaWRkbGUgb2YgdGhlIGNvbm5lY3Rpb24gKGRlZmF1bHQpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8bnVtYmVyLCBudW1iZXI+KDAuNSwge1xuICAgIHRyYW5zZm9ybTogKHYpID0+ICh2IDwgMCA/IDAgOiB2ID4gMSA/IDEgOiB2KSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFBlcnBlbmRpY3VsYXIgb2Zmc2V0IGZyb20gdGhlIGNvbm5lY3Rpb24gbGluZSAoaW4gcGl4ZWxzKS5cbiAgICpcbiAgICogLSBQb3NpdGl2ZSB2YWx1ZXMgc2hpZnQgdGhlIGVsZW1lbnQgdG8gdGhlIHJpZ2h0XG4gICAqICAgcmVsYXRpdmUgdG8gdGhlIGxpbmUgZGlyZWN0aW9uLlxuICAgKiAtIE5lZ2F0aXZlIHZhbHVlcyBzaGlmdCBpdCB0byB0aGUgbGVmdC5cbiAgICogLSBEZWZhdWx0OiBgMGAgKG5vIHNoaWZ0KS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvZmZzZXQgPSBpbnB1dDxudW1iZXI+KDApO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgb3JpZW50YXRpb24gKHJvdGF0aW9uKSBvZiB0aGUgY29udGVudCByZWxhdGl2ZSB0byB0aGUgY29ubmVjdGlvbi5cbiAgICpcbiAgICogUG9zc2libGUgdmFsdWVzOlxuICAgKiAtIGAnbm9uZSdgIOKAlCBubyByb3RhdGlvbiAoZGVmYXVsdCkuXG4gICAqIC0gYCdhbG9uZydgIOKAlCBhbGlnbmVkIGFsb25nIHRoZSBwYXRoICh0YW5nZW50KS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGlnbiA9IGlucHV0PFBvbHlsaW5lQ29udGVudEFsaWduLCB1bmtub3duPihQb2x5bGluZUNvbnRlbnRBbGlnbi5OT05FLCB7XG4gICAgdHJhbnNmb3JtOiAoeCkgPT4gY2FzdFRvRW51bTxQb2x5bGluZUNvbnRlbnRBbGlnbj4oeCwgJ2FsaWduJywgUG9seWxpbmVDb250ZW50QWxpZ24pLFxuICB9KTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdGVuQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMub2Zmc2V0KCk7XG4gICAgICAgIHRoaXMucG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5hbGlnbigpO1xuICAgICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgTm90aWZ5RGF0YUNoYW5nZWRSZXF1ZXN0KCkpKTtcbiAgICAgIH0sXG4gICAgICB7IGluamVjdG9yOiB0aGlzLl9pbmplY3RvciB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './polyline-content-engine';
2
+ export * from './f-connection-content';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9mLWNvbm5lY3Rpb24tY29udGVudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BvbHlsaW5lLWNvbnRlbnQtZW5naW5lJztcbmV4cG9ydCAqIGZyb20gJy4vZi1jb25uZWN0aW9uLWNvbnRlbnQnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1wb2x5bGluZS1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vZi1jb25uZWN0aW9uLWNvbnRlbnQvcG9seWxpbmUtY29udGVudC1lbmdpbmUvaS1wb2x5bGluZS1jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvbHlsaW5lQ29udGVudEFsaWduIH0gZnJvbSAnLi9wb2x5bGluZS1jb250ZW50LWFsaWduJztcblxuLyoqIERvbWFpbiBjb250cmFjdCBmb3IgY29udGVudCBpdGVtIHRvIGJlIHBsYWNlZCBhbG9uZyB0aGUgcGF0aC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBvbHlsaW5lQ29udGVudCB7XG4gIHBvc2l0aW9uOiBTaWduYWw8bnVtYmVyPjtcblxuICBvZmZzZXQ6IFNpZ25hbDxudW1iZXI+O1xuXG4gIGFsaWduOiBTaWduYWw8UG9seWxpbmVDb250ZW50QWxpZ24+O1xuXG4gIGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cbiJdfQ==
@@ -0,0 +1,6 @@
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';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9mLWNvbm5lY3Rpb24tY29udGVudC9wb2x5bGluZS1jb250ZW50LWVuZ2luZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BvbHlsaW5lLXNhbXBsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9wb2x5bGluZS1jb250ZW50LWFsaWduJztcbmV4cG9ydCAqIGZyb20gJy4vaS1wb2x5bGluZS1jb250ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcG9seWxpbmUtY29udGVudC1sYXlvdXQtZW5naW5lJztcbmV4cG9ydCAqIGZyb20gJy4vcG9seWxpbmUtY29udGVudC1wbGFjZSc7XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export var PolylineContentAlign;
2
+ (function (PolylineContentAlign) {
3
+ PolylineContentAlign["NONE"] = "none";
4
+ PolylineContentAlign["ALONG"] = "along";
5
+ })(PolylineContentAlign || (PolylineContentAlign = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWxpbmUtY29udGVudC1hbGlnbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi1jb250ZW50L3BvbHlsaW5lLWNvbnRlbnQtZW5naW5lL3BvbHlsaW5lLWNvbnRlbnQtYWxpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksb0JBSVg7QUFKRCxXQUFZLG9CQUFvQjtJQUM5QixxQ0FBYSxDQUFBO0lBRWIsdUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSlcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUkvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFBvbHlsaW5lQ29udGVudEFsaWduIHtcbiAgTk9ORSA9ICdub25lJyxcblxuICBBTE9ORyA9ICdhbG9uZycsXG59XG4iXX0=
@@ -0,0 +1,29 @@
1
+ import { PolylineSampler } from './polyline-sampler';
2
+ import { PolylineContentPlace } from './polyline-content-place';
3
+ /**
4
+ * Engine that orchestrates positioning and orientation of all
5
+ * connection contents along a computed path.
6
+ */
7
+ export class ConnectionContentLayoutEngine {
8
+ _placement;
9
+ constructor(_placement = new PolylineContentPlace()) {
10
+ this._placement = _placement;
11
+ }
12
+ layout(line, builderResult, contents) {
13
+ const sampler = new PolylineSampler(builderResult.points ?? calculatePathPointsIfEmpty(line, builderResult));
14
+ const total = sampler.totalLength;
15
+ for (const item of contents) {
16
+ const { position, rotationDeg } = this._placement.compute(sampler, item);
17
+ const style = this._createTransformString(position, rotationDeg);
18
+ item.hostElement.setAttribute('style', style);
19
+ }
20
+ return total;
21
+ }
22
+ _createTransformString(position, rotationDeg) {
23
+ return `position: fixed; pointer-events: all; transform: translate(-50%, -50%) rotate(${rotationDeg}deg); left: ${position.x}px; top: ${position.y}px`;
24
+ }
25
+ }
26
+ function calculatePathPointsIfEmpty({ point1, point2 }, { secondPoint, connectionCenter, penultimatePoint }) {
27
+ return [point1, secondPoint || point1, connectionCenter, penultimatePoint || point2, point2];
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWxpbmUtY29udGVudC1sYXlvdXQtZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vZi1jb25uZWN0aW9uLWNvbnRlbnQvcG9seWxpbmUtY29udGVudC1lbmdpbmUvcG9seWxpbmUtY29udGVudC1sYXlvdXQtZW5naW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sNkJBQTZCO0lBRXJCO0lBRG5CLFlBQ21CLGFBQWEsSUFBSSxvQkFBb0IsRUFBRTtRQUF2QyxlQUFVLEdBQVYsVUFBVSxDQUE2QjtJQUN2RCxDQUFDO0lBRUcsTUFBTSxDQUNYLElBQXdDLEVBQ3hDLGFBQTZHLEVBQzdHLFFBQW9DO1FBRXBDLE1BQU0sT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxNQUFNLElBQUksMEJBQTBCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDN0csTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUVsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVCLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxRQUFnQixFQUFFLFdBQW1CO1FBQ2xFLE9BQU8saUZBQWlGLFdBQVcsZUFBZSxRQUFRLENBQUMsQ0FBQyxZQUFZLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6SixDQUFDO0NBQ0Y7QUFFRCxTQUFTLDBCQUEwQixDQUNqQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVMsRUFDekIsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQStFO0lBRWhJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxJQUFJLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMaW5lLCBJUG9pbnQgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IFBvbHlsaW5lU2FtcGxlciB9IGZyb20gJy4vcG9seWxpbmUtc2FtcGxlcic7XG5pbXBvcnQgeyBJUG9seWxpbmVDb250ZW50IH0gZnJvbSAnLi9pLXBvbHlsaW5lLWNvbnRlbnQnO1xuaW1wb3J0IHsgUG9seWxpbmVDb250ZW50UGxhY2UgfSBmcm9tICcuL3BvbHlsaW5lLWNvbnRlbnQtcGxhY2UnO1xuXG4vKipcbiAqIEVuZ2luZSB0aGF0IG9yY2hlc3RyYXRlcyBwb3NpdGlvbmluZyBhbmQgb3JpZW50YXRpb24gb2YgYWxsXG4gKiBjb25uZWN0aW9uIGNvbnRlbnRzIGFsb25nIGEgY29tcHV0ZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25Db250ZW50TGF5b3V0RW5naW5lIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGxhY2VtZW50ID0gbmV3IFBvbHlsaW5lQ29udGVudFBsYWNlKCksXG4gICkge31cblxuICBwdWJsaWMgbGF5b3V0KFxuICAgIGxpbmU6IHsgcG9pbnQxOiBJUG9pbnQ7IHBvaW50MjogSVBvaW50IH0sXG4gICAgYnVpbGRlclJlc3VsdDogeyBwb2ludHM/OiBJUG9pbnRbXSwgc2Vjb25kUG9pbnQ6IElQb2ludDsgY29ubmVjdGlvbkNlbnRlcjogSVBvaW50OyBwZW51bHRpbWF0ZVBvaW50OiBJUG9pbnQgfSxcbiAgICBjb250ZW50czogSXRlcmFibGU8SVBvbHlsaW5lQ29udGVudD4sXG4gICk6IG51bWJlciB7XG4gICAgY29uc3Qgc2FtcGxlciA9IG5ldyBQb2x5bGluZVNhbXBsZXIoYnVpbGRlclJlc3VsdC5wb2ludHMgPz8gY2FsY3VsYXRlUGF0aFBvaW50c0lmRW1wdHkobGluZSwgYnVpbGRlclJlc3VsdCkpO1xuICAgIGNvbnN0IHRvdGFsID0gc2FtcGxlci50b3RhbExlbmd0aDtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb250ZW50cykge1xuICAgICAgY29uc3QgeyBwb3NpdGlvbiwgcm90YXRpb25EZWcgfSA9IHRoaXMuX3BsYWNlbWVudC5jb21wdXRlKHNhbXBsZXIsIGl0ZW0pO1xuICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLl9jcmVhdGVUcmFuc2Zvcm1TdHJpbmcocG9zaXRpb24sIHJvdGF0aW9uRGVnKTtcbiAgICAgIGl0ZW0uaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsIHN0eWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG90YWw7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVUcmFuc2Zvcm1TdHJpbmcocG9zaXRpb246IElQb2ludCwgcm90YXRpb25EZWc6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBwb3NpdGlvbjogZml4ZWQ7IHBvaW50ZXItZXZlbnRzOiBhbGw7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSgke3JvdGF0aW9uRGVnfWRlZyk7IGxlZnQ6ICR7cG9zaXRpb24ueH1weDsgdG9wOiAke3Bvc2l0aW9uLnl9cHhgO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVBhdGhQb2ludHNJZkVtcHR5KFxuICB7IHBvaW50MSwgcG9pbnQyIH06IElMaW5lLFxuICB7IHNlY29uZFBvaW50LCBjb25uZWN0aW9uQ2VudGVyLCBwZW51bHRpbWF0ZVBvaW50IH06IHsgc2Vjb25kUG9pbnQ6IElQb2ludDsgY29ubmVjdGlvbkNlbnRlcjogSVBvaW50OyBwZW51bHRpbWF0ZVBvaW50OiBJUG9pbnQgfSxcbik6IElQb2ludFtdIHtcbiAgcmV0dXJuIFtwb2ludDEsIHNlY29uZFBvaW50IHx8IHBvaW50MSwgY29ubmVjdGlvbkNlbnRlciwgcGVudWx0aW1hdGVQb2ludCB8fCBwb2ludDIsIHBvaW50Ml07XG59XG4iXX0=
@@ -0,0 +1,65 @@
1
+ import { PolylineContentAlign } from './polyline-content-align';
2
+ /**
3
+ * Encapsulates placement logic for a single content item along the path.
4
+ */
5
+ export class PolylineContentPlace {
6
+ compute(sampler, content) {
7
+ const progress = this._clamp01(content.position());
8
+ const { point, tangent } = sampler.getPointAtLength(progress);
9
+ // Left-hand normal
10
+ const normal = { x: -tangent.y, y: tangent.x };
11
+ // Apply lateral offset
12
+ const lateral = content.offset() ?? 0;
13
+ const x = point.x + normal.x * lateral;
14
+ const y = point.y + normal.y * lateral;
15
+ // Edge guard
16
+ const projectedSize = this._sizeAlongDirection(content.hostElement, tangent);
17
+ const halfExtent = projectedSize * 0.5;
18
+ const distanceFromStart = progress * sampler.totalLength;
19
+ const distanceFromEnd = sampler.totalLength - distanceFromStart;
20
+ const position = this._applyEdgeGuard(x, y, tangent, distanceFromStart, distanceFromEnd, halfExtent);
21
+ const rotationDeg = this._calculateContentRotation(content.align(), tangent);
22
+ return { position, rotationDeg };
23
+ }
24
+ _clamp01(v) {
25
+ return v <= 0 ? 0 : v >= 1 ? 1 : v;
26
+ }
27
+ _applyEdgeGuard(x, y, tangent, distanceFromStart, distanceFromEnd, halfExtent) {
28
+ if (distanceFromStart <= halfExtent) {
29
+ const push = halfExtent - distanceFromStart;
30
+ return { x: x + tangent.x * push, y: y + tangent.y * push };
31
+ }
32
+ if (distanceFromEnd <= halfExtent) {
33
+ const push = halfExtent - distanceFromEnd;
34
+ return { x: x - tangent.x * push, y: y - tangent.y * push };
35
+ }
36
+ return { x, y };
37
+ }
38
+ _sizeAlongDirection(element, dir) {
39
+ const rect = element.getBoundingClientRect();
40
+ return Math.abs(dir.x) * rect.width + Math.abs(dir.y) * rect.height;
41
+ }
42
+ _normalize180(angleDeg) {
43
+ let a = (angleDeg + 180) % 360;
44
+ if (a < 0)
45
+ a += 360;
46
+ return a - 180;
47
+ }
48
+ _keepUpright(angleDeg) {
49
+ let a = this._normalize180(angleDeg);
50
+ if (a > 90)
51
+ a -= 180;
52
+ else if (a < -90)
53
+ a += 180;
54
+ return a;
55
+ }
56
+ _calculateContentRotation(align, tangent) {
57
+ let result = 0;
58
+ if (align === PolylineContentAlign.ALONG) {
59
+ result = (Math.atan2(tangent.y, tangent.x) * 180) / Math.PI;
60
+ result = this._keepUpright(result);
61
+ }
62
+ return result;
63
+ }
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWxpbmUtY29udGVudC1wbGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi1jb250ZW50L3BvbHlsaW5lLWNvbnRlbnQtZW5naW5lL3BvbHlsaW5lLWNvbnRlbnQtcGxhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLE9BQU8sQ0FDWixPQUF3QixFQUN4QixPQUF5QjtRQUV6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTlELG1CQUFtQjtRQUNuQixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUUvQyx1QkFBdUI7UUFDdkIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7UUFFdkMsYUFBYTtRQUNiLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdFLE1B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QyxLQUFLLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUQsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2x5bGluZUNvbnRlbnQgfSBmcm9tICcuL2ktcG9seWxpbmUtY29udGVudCc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IFBvbHlsaW5lU2FtcGxlciB9IGZyb20gJy4vcG9seWxpbmUtc2FtcGxlcic7XG5pbXBvcnQgeyBQb2x5bGluZUNvbnRlbnRBbGlnbiB9IGZyb20gJy4vcG9seWxpbmUtY29udGVudC1hbGlnbic7XG5cbi8qKlxuICogRW5jYXBzdWxhdGVzIHBsYWNlbWVudCBsb2dpYyBmb3IgYSBzaW5nbGUgY29udGVudCBpdGVtIGFsb25nIHRoZSBwYXRoLlxuICovXG5leHBvcnQgY2xhc3MgUG9seWxpbmVDb250ZW50UGxhY2Uge1xuICBwdWJsaWMgY29tcHV0ZShcbiAgICBzYW1wbGVyOiBQb2x5bGluZVNhbXBsZXIsXG4gICAgY29udGVudDogSVBvbHlsaW5lQ29udGVudCxcbiAgKTogeyBwb3NpdGlvbjogSVBvaW50OyByb3RhdGlvbkRlZzogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHByb2dyZXNzID0gdGhpcy5fY2xhbXAwMShjb250ZW50LnBvc2l0aW9uKCkpO1xuICAgIGNvbnN0IHsgcG9pbnQsIHRhbmdlbnQgfSA9IHNhbXBsZXIuZ2V0UG9pbnRBdExlbmd0aChwcm9ncmVzcyk7XG5cbiAgICAvLyBMZWZ0LWhhbmQgbm9ybWFsXG4gICAgY29uc3Qgbm9ybWFsID0geyB4OiAtdGFuZ2VudC55LCB5OiB0YW5nZW50LnggfTtcblxuICAgIC8vIEFwcGx5IGxhdGVyYWwgb2Zmc2V0XG4gICAgY29uc3QgbGF0ZXJhbCA9IGNvbnRlbnQub2Zmc2V0KCkgPz8gMDtcbiAgICBjb25zdCB4ID0gcG9pbnQueCArIG5vcm1hbC54ICogbGF0ZXJhbDtcbiAgICBjb25zdCB5ID0gcG9pbnQueSArIG5vcm1hbC55ICogbGF0ZXJhbDtcblxuICAgIC8vIEVkZ2UgZ3VhcmRcbiAgICBjb25zdCBwcm9qZWN0ZWRTaXplID0gdGhpcy5fc2l6ZUFsb25nRGlyZWN0aW9uKGNvbnRlbnQuaG9zdEVsZW1lbnQsIHRhbmdlbnQpO1xuICAgIGNvbnN0IGhhbGZFeHRlbnQgPSBwcm9qZWN0ZWRTaXplICogMC41O1xuXG4gICAgY29uc3QgZGlzdGFuY2VGcm9tU3RhcnQgPSBwcm9ncmVzcyAqIHNhbXBsZXIudG90YWxMZW5ndGg7XG4gICAgY29uc3QgZGlzdGFuY2VGcm9tRW5kID0gc2FtcGxlci50b3RhbExlbmd0aCAtIGRpc3RhbmNlRnJvbVN0YXJ0O1xuXG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl9hcHBseUVkZ2VHdWFyZCh4LCB5LCB0YW5nZW50LCBkaXN0YW5jZUZyb21TdGFydCwgZGlzdGFuY2VGcm9tRW5kLCBoYWxmRXh0ZW50KTtcblxuICAgIGNvbnN0IHJvdGF0aW9uRGVnID0gdGhpcy5fY2FsY3VsYXRlQ29udGVudFJvdGF0aW9uKGNvbnRlbnQuYWxpZ24oKSwgdGFuZ2VudCk7XG5cbiAgICByZXR1cm4geyBwb3NpdGlvbiwgcm90YXRpb25EZWcgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2NsYW1wMDEodjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdiA8PSAwID8gMCA6IHYgPj0gMSA/IDEgOiB2O1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlFZGdlR3VhcmQoXG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICB0YW5nZW50OiBJUG9pbnQsXG4gICAgZGlzdGFuY2VGcm9tU3RhcnQ6IG51bWJlcixcbiAgICBkaXN0YW5jZUZyb21FbmQ6IG51bWJlcixcbiAgICBoYWxmRXh0ZW50OiBudW1iZXIsXG4gICk6IElQb2ludCB7XG4gICAgaWYgKGRpc3RhbmNlRnJvbVN0YXJ0IDw9IGhhbGZFeHRlbnQpIHtcbiAgICAgIGNvbnN0IHB1c2ggPSBoYWxmRXh0ZW50IC0gZGlzdGFuY2VGcm9tU3RhcnQ7XG5cbiAgICAgIHJldHVybiB7IHg6IHggKyB0YW5nZW50LnggKiBwdXNoLCB5OiB5ICsgdGFuZ2VudC55ICogcHVzaCB9O1xuICAgIH1cbiAgICBpZiAoZGlzdGFuY2VGcm9tRW5kIDw9IGhhbGZFeHRlbnQpIHtcbiAgICAgIGNvbnN0IHB1c2ggPSBoYWxmRXh0ZW50IC0gZGlzdGFuY2VGcm9tRW5kO1xuXG4gICAgICByZXR1cm4geyB4OiB4IC0gdGFuZ2VudC54ICogcHVzaCwgeTogeSAtIHRhbmdlbnQueSAqIHB1c2ggfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyB4LCB5IH07XG4gIH1cblxuICBwcml2YXRlIF9zaXplQWxvbmdEaXJlY3Rpb24oZWxlbWVudDogSFRNTEVsZW1lbnQsIGRpcjogSVBvaW50KTogbnVtYmVyIHtcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIHJldHVybiBNYXRoLmFicyhkaXIueCkgKiByZWN0LndpZHRoICsgTWF0aC5hYnMoZGlyLnkpICogcmVjdC5oZWlnaHQ7XG4gIH1cblxuICBwcml2YXRlIF9ub3JtYWxpemUxODAoYW5nbGVEZWc6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGEgPSAoYW5nbGVEZWcgKyAxODApICUgMzYwO1xuICAgIGlmIChhIDwgMCkgYSArPSAzNjA7XG5cbiAgICByZXR1cm4gYSAtIDE4MDtcbiAgfVxuXG4gIHByaXZhdGUgX2tlZXBVcHJpZ2h0KGFuZ2xlRGVnOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBhID0gdGhpcy5fbm9ybWFsaXplMTgwKGFuZ2xlRGVnKTtcbiAgICBpZiAoYSA+IDkwKSBhIC09IDE4MDtcbiAgICBlbHNlIGlmIChhIDwgLTkwKSBhICs9IDE4MDtcblxuICAgIHJldHVybiBhO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlQ29udGVudFJvdGF0aW9uKGFsaWduOiBQb2x5bGluZUNvbnRlbnRBbGlnbiwgdGFuZ2VudDogSVBvaW50KSB7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG5cbiAgICBpZiAoYWxpZ24gPT09IFBvbHlsaW5lQ29udGVudEFsaWduLkFMT05HKSB7XG4gICAgICByZXN1bHQgPSAoTWF0aC5hdGFuMih0YW5nZW50LnksIHRhbmdlbnQueCkgKiAxODApIC8gTWF0aC5QSTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2tlZXBVcHJpZ2h0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1zYW1wbGVyLXJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi1jb250ZW50L3BvbHlsaW5lLWNvbnRlbnQtZW5naW5lL3BvbHlsaW5lLXNhbXBsZXIvaS1zYW1wbGVyLXJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVRhbmdlbnQgfSBmcm9tICcuL2ktdGFuZ2VudCc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdAZm9ibGV4LzJkJztcblxuLyoqIFJlc3VsdCBvZiBzYW1wbGluZyB0aGUgcGF0aC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNhbXBsZXJSZXN1bHQge1xuICAvKiogSW50ZXJwb2xhdGVkIHBvaW50IG9uIHRoZSBwb2x5bGluZS4gKi9cbiAgcG9pbnQ6IElQb2ludDtcbiAgLyoqIFVuaXQgdGFuZ2VudCAoc2VnbWVudCBkaXJlY3Rpb24pIGF0IHRoYXQgcG9pbnQuICovXG4gIHRhbmdlbnQ6IElUYW5nZW50O1xuICAvKiogV2hldGhlciB0aGUgcmVzdWx0IHdhcyBjbGFtcGVkIHRvIHRoZSBwYXRoIGVkZ2UgKHN0YXJ0IG9yIGVuZCkuICovXG4gIGF0RWRnZTogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS10YW5nZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vZi1jb25uZWN0aW9uLWNvbnRlbnQvcG9seWxpbmUtY29udGVudC1lbmdpbmUvcG9seWxpbmUtc2FtcGxlci9pLXRhbmdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2ludCB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuXG4vKiogVW5pdCB0YW5nZW50IHZlY3Rvci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRhbmdlbnQgZXh0ZW5kcyBJUG9pbnQge31cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './i-sampler-result';
2
+ export * from './i-tangent';
3
+ export * from './polyline';
4
+ export * from './polyline-sampler';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9mLWNvbm5lY3Rpb24tY29udGVudC9wb2x5bGluZS1jb250ZW50LWVuZ2luZS9wb2x5bGluZS1zYW1wbGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsY0FBYyxhQUFhLENBQUM7QUFFNUIsY0FBYyxZQUFZLENBQUM7QUFFM0IsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaS1zYW1wbGVyLXJlc3VsdCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vaS10YW5nZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9wb2x5bGluZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcG9seWxpbmUtc2FtcGxlcic7XG4iXX0=