@foblex/flow 17.7.1 → 17.8.1

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 (545) hide show
  1. package/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.d.ts +2 -2
  2. package/domain/f-background/remove-background-from-store/remove-background-from-store.execution.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 +12 -0
  5. 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
  6. package/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.d.ts +2 -2
  7. package/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.d.ts +2 -2
  8. package/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.d.ts +2 -2
  9. package/domain/f-connection/calculate-connection-line-by-behavior/index.d.ts +2 -2
  10. package/domain/f-connection/providers.d.ts +2 -2
  11. package/domain/f-connection/redraw-connections/redraw-connections.execution.d.ts +2 -2
  12. package/domain/f-connectors/add-input-to-store/add-input-to-store-request.d.ts +2 -2
  13. package/domain/f-connectors/add-input-to-store/add-input-to-store.d.ts +12 -0
  14. package/domain/f-connectors/add-input-to-store/index.d.ts +1 -1
  15. package/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.d.ts +2 -2
  16. package/domain/f-connectors/add-outlet-to-store/{add-outlet-to-store.execution.d.ts → add-outlet-to-store.d.ts} +5 -5
  17. package/domain/f-connectors/add-outlet-to-store/index.d.ts +1 -1
  18. package/domain/f-connectors/add-output-to-store/add-output-to-store-request.d.ts +2 -2
  19. package/domain/f-connectors/add-output-to-store/{add-output-to-store.execution.d.ts → add-output-to-store.d.ts} +5 -5
  20. package/domain/f-connectors/add-output-to-store/index.d.ts +1 -1
  21. package/domain/f-connectors/{find-closest-connector/find-closest-connector.request.d.ts → calculate-closest-connector/calculate-closest-connector-request.d.ts} +3 -3
  22. package/domain/f-connectors/calculate-closest-connector/calculate-closest-connector.d.ts +16 -0
  23. package/domain/f-connectors/calculate-closest-connector/index.d.ts +2 -0
  24. 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
  25. 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
  26. 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
  27. 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
  28. package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.d.ts +2 -2
  29. package/domain/f-connectors/get-connector-and-rect/{get-connector-and-rect.execution.d.ts → get-connector-and-rect.d.ts} +4 -4
  30. package/domain/f-connectors/get-connector-and-rect/index.d.ts +1 -1
  31. package/domain/f-connectors/index.d.ts +1 -1
  32. package/domain/f-connectors/mark-connectable-connectors/index.d.ts +2 -2
  33. package/domain/f-connectors/mark-connectable-connectors/{mark-connectable-connectors.request.d.ts → mark-connectable-connectors-request.d.ts} +2 -2
  34. package/domain/f-connectors/mark-connectable-connectors/{mark-connectable-connectors.execution.d.ts → mark-connectable-connectors.d.ts} +5 -5
  35. package/domain/f-connectors/providers.d.ts +11 -11
  36. package/domain/f-connectors/remove-input-from-store/index.d.ts +1 -1
  37. package/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.d.ts +2 -2
  38. package/domain/f-connectors/remove-input-from-store/{remove-input-from-store.execution.d.ts → remove-input-from-store.d.ts} +4 -4
  39. package/domain/f-connectors/unmark-connectable-connectors/index.d.ts +2 -2
  40. package/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.request.d.ts → unmark-connectable-connectors-request.d.ts} +2 -2
  41. package/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.execution.d.ts → unmark-connectable-connectors.d.ts} +5 -5
  42. package/domain/f-draggable/providers.d.ts +1 -1
  43. package/domain/f-draggable/start-drag-sequence/start-drag-sequence.execution.d.ts +2 -2
  44. package/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.d.ts +1 -1
  45. package/domain/f-flow/get-flow-state/providers.d.ts +1 -1
  46. package/domain/f-flow/providers.d.ts +1 -1
  47. package/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.d.ts +1 -1
  48. package/domain/i-map.d.ts +1 -3
  49. package/domain/providers.d.ts +1 -1
  50. package/esm2022/domain/css-cls.mjs +2 -2
  51. package/esm2022/domain/f-background/add-background-to-store/add-background-to-store-request.mjs +1 -1
  52. package/esm2022/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.mjs +8 -8
  53. package/esm2022/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.mjs +1 -1
  54. package/esm2022/domain/f-background/providers.mjs +2 -2
  55. package/esm2022/domain/f-background/remove-background-from-store/remove-background-from-store-request.mjs +1 -1
  56. package/esm2022/domain/f-background/remove-background-from-store/remove-background-from-store.execution.mjs +2 -2
  57. package/esm2022/domain/f-background/set-background-transform/set-background-transform-request.mjs +1 -1
  58. package/esm2022/domain/f-canvas/add-canvas-to-store/add-canvas-to-store-request.mjs +1 -1
  59. package/esm2022/domain/f-canvas/center-group-or-node/center-group-or-node-request.mjs +1 -1
  60. package/esm2022/domain/f-canvas/center-group-or-node/center-group-or-node.execution.mjs +1 -1
  61. package/esm2022/domain/f-canvas/fit-to-flow/fit-to-flow-request.mjs +1 -1
  62. package/esm2022/domain/f-canvas/fit-to-flow/fit-to-flow.execution.mjs +1 -1
  63. package/esm2022/domain/f-canvas/get-canvas/get-canvas.execution.mjs +1 -1
  64. package/esm2022/domain/f-canvas/input-canvas-position/input-canvas-position-request.mjs +1 -1
  65. package/esm2022/domain/f-canvas/input-canvas-position/input-canvas-position.execution.mjs +1 -1
  66. package/esm2022/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.mjs +1 -1
  67. package/esm2022/domain/f-canvas/providers.mjs +2 -2
  68. package/esm2022/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation-request.mjs +1 -1
  69. package/esm2022/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.mjs +1 -1
  70. package/esm2022/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.mjs +1 -1
  71. package/esm2022/domain/f-canvas/update-scale/update-scale-request.mjs +1 -1
  72. package/esm2022/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store-request.mjs +1 -1
  73. package/esm2022/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store-request.mjs +1 -1
  74. package/esm2022/domain/f-connection/add-connection-to-store/add-connection-to-store-request.mjs +1 -1
  75. package/esm2022/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store-request.mjs +1 -1
  76. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior-request.mjs +16 -0
  77. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.mjs +32 -0
  78. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.mjs +4 -4
  79. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.mjs +8 -4
  80. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.mjs +10 -10
  81. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/index.mjs +3 -3
  82. package/esm2022/domain/f-connection/create-connection-markers/create-connection-markers.execution.mjs +1 -1
  83. package/esm2022/domain/f-connection/providers.mjs +4 -4
  84. package/esm2022/domain/f-connection/redraw-connections/redraw-connections-request.mjs +1 -1
  85. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +9 -9
  86. package/esm2022/domain/f-connection/remove-connection-from-store/remove-connection-from-store-request.mjs +1 -1
  87. package/esm2022/domain/f-connection/remove-connection-from-store/remove-connection-from-store.execution.mjs +1 -1
  88. package/esm2022/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store-request.mjs +1 -1
  89. package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store-request.mjs +4 -4
  90. package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store.mjs +25 -0
  91. package/esm2022/domain/f-connectors/add-input-to-store/index.mjs +2 -2
  92. package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.mjs +4 -4
  93. package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.mjs +25 -0
  94. package/esm2022/domain/f-connectors/add-outlet-to-store/index.mjs +2 -2
  95. package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store-request.mjs +4 -4
  96. package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store.mjs +25 -0
  97. package/esm2022/domain/f-connectors/add-output-to-store/index.mjs +2 -2
  98. package/esm2022/domain/f-connectors/calculate-closest-connector/calculate-closest-connector-request.mjs +10 -0
  99. package/esm2022/domain/f-connectors/calculate-closest-connector/calculate-closest-connector.mjs +49 -0
  100. package/esm2022/domain/f-connectors/calculate-closest-connector/index.mjs +3 -0
  101. package/esm2022/domain/f-connectors/find-connectable-connector-using-priority-and-position/find-connectable-connector-using-priority-and-position.execution.mjs +9 -6
  102. 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
  103. 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
  104. 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 +8 -8
  105. 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
  106. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.mjs +4 -4
  107. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.mjs +31 -0
  108. package/esm2022/domain/f-connectors/get-connector-and-rect/index.mjs +2 -2
  109. package/esm2022/domain/f-connectors/index.mjs +2 -2
  110. package/esm2022/domain/f-connectors/mark-connectable-connectors/index.mjs +3 -3
  111. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors-request.mjs +8 -0
  112. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.mjs +30 -0
  113. package/esm2022/domain/f-connectors/providers.mjs +20 -20
  114. package/esm2022/domain/f-connectors/remove-input-from-store/index.mjs +2 -2
  115. package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.mjs +4 -4
  116. package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store.mjs +25 -0
  117. package/esm2022/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store-request.mjs +1 -1
  118. package/esm2022/domain/f-connectors/remove-output-from-store/remove-output-from-store-request.mjs +1 -1
  119. package/esm2022/domain/f-connectors/unmark-connectable-connectors/index.mjs +3 -3
  120. package/esm2022/domain/f-connectors/unmark-connectable-connectors/unmark-connectable-connectors-request.mjs +8 -0
  121. package/esm2022/domain/f-connectors/unmark-connectable-connectors/unmark-connectable-connectors.mjs +30 -0
  122. package/esm2022/domain/f-draggable/add-dnd-to-store/add-dnd-to-store-request.mjs +1 -1
  123. package/esm2022/domain/f-draggable/emit-selection-change-event/emit-selection-change-event.execution.mjs +1 -1
  124. package/esm2022/domain/f-draggable/on-pointer-move/on-pointer-move-request.mjs +1 -1
  125. package/esm2022/domain/f-draggable/on-pointer-move/on-pointer-move.execution.mjs +1 -1
  126. package/esm2022/domain/f-draggable/providers.mjs +2 -2
  127. package/esm2022/domain/f-draggable/start-drag-sequence/start-drag-sequence.execution.mjs +3 -3
  128. package/esm2022/domain/f-flow/add-flow-to-store/add-flow-to-store-request.mjs +1 -1
  129. package/esm2022/domain/f-flow/get-flow/get-flow.execution.mjs +1 -1
  130. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.mjs +5 -5
  131. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.mjs +1 -1
  132. package/esm2022/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.mjs +15 -9
  133. package/esm2022/domain/f-flow/get-flow-state/get-flow-state.execution.mjs +2 -2
  134. package/esm2022/domain/f-flow/get-flow-state/providers.mjs +2 -2
  135. package/esm2022/domain/f-flow/providers.mjs +2 -2
  136. package/esm2022/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store-request.mjs +1 -1
  137. package/esm2022/domain/f-line-alignment/providers.mjs +2 -2
  138. package/esm2022/domain/f-node/add-node-to-store/add-node-to-store-request.mjs +1 -1
  139. package/esm2022/domain/f-node/calculate-input-connections/calculate-input-connections-request.mjs +1 -1
  140. package/esm2022/domain/f-node/calculate-input-connections/calculate-input-connections.mjs +3 -6
  141. package/esm2022/domain/f-node/calculate-output-connections/calculate-output-connections-request.mjs +1 -1
  142. package/esm2022/domain/f-node/calculate-output-connections/calculate-output-connections.mjs +3 -6
  143. package/esm2022/domain/f-node/fit-to-child-nodes-and-groups/fit-to-child-nodes-and-groups-request.mjs +1 -1
  144. package/esm2022/domain/f-node/fit-to-child-nodes-and-groups/fit-to-child-nodes-and-groups.mjs +1 -1
  145. package/esm2022/domain/f-node/get-child-node-ids/get-child-node-ids.mjs +1 -1
  146. package/esm2022/domain/f-node/get-child-node-ids/get-child-node-ids.request.mjs +1 -1
  147. package/esm2022/domain/f-node/get-node-padding/get-node-padding.mjs +2 -2
  148. package/esm2022/domain/f-node/get-node-padding/get-node-padding.request.mjs +1 -1
  149. package/esm2022/domain/f-node/get-parent-nodes/get-parent-nodes.mjs +1 -1
  150. package/esm2022/domain/f-node/get-parent-nodes/get-parent-nodes.request.mjs +1 -1
  151. package/esm2022/domain/f-node/providers.mjs +3 -3
  152. package/esm2022/domain/f-node/remove-node-from-store/remove-node-from-store-request.mjs +1 -1
  153. package/esm2022/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed-request.mjs +1 -1
  154. package/esm2022/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.mjs +1 -1
  155. package/esm2022/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.mjs +3 -3
  156. package/esm2022/domain/f-selection/get-current-selection/get-current-selection.execution.mjs +2 -2
  157. package/esm2022/domain/f-selection/providers.mjs +2 -2
  158. package/esm2022/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.mjs +1 -1
  159. package/esm2022/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.mjs +1 -1
  160. package/esm2022/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.mjs +1 -1
  161. package/esm2022/domain/f-zoom/add-zoom-to-store/add-zoom-to-store.execution.mjs +2 -2
  162. package/esm2022/domain/f-zoom/providers.mjs +2 -2
  163. package/esm2022/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.mjs +3 -3
  164. package/esm2022/domain/f-zoom/set-zoom/set-zoom-request.mjs +1 -1
  165. package/esm2022/domain/f-zoom/set-zoom/set-zoom.execution.mjs +1 -1
  166. package/esm2022/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.mjs +1 -1
  167. package/esm2022/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.mjs +1 -1
  168. package/esm2022/domain/get-element-rounded-rect/get-element-rounded-rect.execution.mjs +1 -1
  169. package/esm2022/domain/get-normalized-connector-rect/get-normalized-connector-rect.execution.mjs +1 -1
  170. package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect-request.mjs +1 -1
  171. package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect.execution.mjs +2 -2
  172. package/esm2022/domain/get-normalized-point/get-normalized-point-request.mjs +1 -1
  173. package/esm2022/domain/get-normalized-point/get-normalized-point.execution.mjs +1 -1
  174. package/esm2022/domain/i-map.mjs +1 -1
  175. package/esm2022/domain/log-deprecated.mjs +1 -1
  176. package/esm2022/domain/log-execution-time.mjs +1 -1
  177. package/esm2022/domain/providers.mjs +2 -2
  178. package/esm2022/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.mjs +2 -2
  179. package/esm2022/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.mjs +2 -3
  180. package/esm2022/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.mjs +1 -1
  181. package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.mjs +1 -1
  182. package/esm2022/domain/update-item-and-children-layers/update-item-and-children-layers.execution.mjs +1 -1
  183. package/esm2022/drag-toolkit/drag-and-drop-base.mjs +3 -3
  184. package/esm2022/drag-toolkit/event.extensions.mjs +1 -1
  185. package/esm2022/drag-toolkit/pointer-events/i-pointer-up-event.mjs +1 -1
  186. package/esm2022/drag-toolkit/pointer-events/i-touch-down-event.mjs +1 -1
  187. package/esm2022/drag-toolkit/pointer-events/i-touch-move-event.mjs +1 -1
  188. package/esm2022/f-backgroud/f-background.component.mjs +4 -4
  189. package/esm2022/f-backgroud/f-circle-pattern/f-circle-pattern.component.mjs +7 -7
  190. package/esm2022/f-backgroud/f-rect-pattern/f-rect-pattern.component.mjs +7 -7
  191. package/esm2022/f-backgroud/index.mjs +1 -1
  192. package/esm2022/f-backgroud/providers.mjs +2 -2
  193. package/esm2022/f-canvas/f-canvas-base.mjs +1 -1
  194. package/esm2022/f-canvas/f-canvas.component.mjs +3 -3
  195. package/esm2022/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.mjs +1 -1
  196. package/esm2022/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.mjs +1 -1
  197. package/esm2022/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.mjs +2 -2
  198. package/esm2022/f-connection/common/domain/f-bezier.path-builder.mjs +27 -11
  199. package/esm2022/f-connection/common/domain/f-segment.path-builder.mjs +43 -25
  200. package/esm2022/f-connection/common/domain/f-straight.path-builder.mjs +9 -3
  201. package/esm2022/f-connection/common/f-connection-base.mjs +36 -27
  202. package/esm2022/f-connection/common/f-connection-identifiers.mjs +2 -2
  203. package/esm2022/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +20 -30
  204. package/esm2022/f-connection/common/f-connection-text/f-connection-text.component.mjs +20 -33
  205. package/esm2022/f-connection/common/f-drag-handle/f-connection-drag-handle-end.component.mjs +4 -4
  206. package/esm2022/f-connection/common/f-drag-handle/f-connection-drag-handle-start.component.mjs +4 -4
  207. package/esm2022/f-connection/common/f-gradient/f-connection-gradient.component.mjs +18 -28
  208. package/esm2022/f-connection/common/f-path/f-connection-path.component.mjs +16 -26
  209. package/esm2022/f-connection/common/f-selection/f-connection-selection.component.mjs +10 -20
  210. package/esm2022/f-connection/common/i-has-connection-color.mjs +1 -1
  211. package/esm2022/f-connection/common/i-has-connection-from-to.mjs +1 -1
  212. package/esm2022/f-connection/f-connection/f-connection.component.mjs +25 -26
  213. package/esm2022/f-connection/f-connection-builder/f-connection-builders.mjs +1 -1
  214. package/esm2022/f-connection/f-connection-builder/f-connection-factory.mjs +1 -1
  215. package/esm2022/f-connection/f-connection-builder/i-f-connection-builder-response.mjs +1 -1
  216. package/esm2022/f-connection/f-connection-center/f-connection-center.directive.mjs +21 -4
  217. package/esm2022/f-connection/f-connection-content/f-connection-content.mjs +96 -0
  218. package/esm2022/f-connection/f-connection-content/index.mjs +3 -0
  219. package/esm2022/f-connection/f-connection-content/polyline-content-engine/i-polyline-content.mjs +2 -0
  220. package/esm2022/f-connection/f-connection-content/polyline-content-engine/index.mjs +6 -0
  221. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-align.mjs +6 -0
  222. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-layout-engine.mjs +29 -0
  223. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-place.mjs +65 -0
  224. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-sampler-result.mjs +2 -0
  225. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-tangent.mjs +2 -0
  226. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/index.mjs +5 -0
  227. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline-sampler.mjs +143 -0
  228. package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline.mjs +68 -0
  229. package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +17 -21
  230. package/esm2022/f-connection/f-marker/f-marker-base.mjs +2 -8
  231. package/esm2022/f-connection/f-marker/f-marker.directive.mjs +13 -22
  232. package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +17 -21
  233. package/esm2022/f-connection/index.mjs +2 -1
  234. package/esm2022/f-connection/providers.mjs +3 -3
  235. package/esm2022/f-connectors/f-connector-base.mjs +1 -1
  236. package/esm2022/f-connectors/f-node-input/f-node-input-base.mjs +2 -2
  237. package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +35 -33
  238. package/esm2022/f-connectors/f-node-outlet/f-node-outlet-base.mjs +6 -6
  239. package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +23 -26
  240. package/esm2022/f-connectors/f-node-output/f-node-output-base.mjs +4 -4
  241. package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +31 -33
  242. package/esm2022/f-connectors/f-source-connector-base.mjs +11 -0
  243. package/esm2022/f-connectors/index.mjs +2 -1
  244. package/esm2022/f-connectors/providers.mjs +2 -2
  245. package/esm2022/f-draggable/domain/f-drag-started-event.mjs +4 -2
  246. package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.mjs +1 -1
  247. package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.mjs +1 -1
  248. package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.mjs +1 -1
  249. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +7 -7
  250. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.request.mjs +1 -1
  251. package/esm2022/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.execution.mjs +2 -2
  252. package/esm2022/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.request.mjs +1 -1
  253. package/esm2022/f-draggable/f-canvas/move-preparation/f-canvas-move-preparation.execution.mjs +1 -1
  254. package/esm2022/f-draggable/f-canvas/move-preparation/f-canvas-move-preparation.request.mjs +1 -1
  255. package/esm2022/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.execution.mjs +20 -18
  256. package/esm2022/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.request.mjs +1 -1
  257. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/drag-handler-preparation/f-create-connection-drag-handler-preparation.execution.mjs +2 -2
  258. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/drag-handler-preparation/f-create-connection-drag-handler-preparation.request.mjs +1 -1
  259. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.execution.mjs +1 -1
  260. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.request.mjs +1 -1
  261. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-outlet-preparation/f-create-connection-from-outlet-preparation.execution.mjs +1 -1
  262. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-outlet-preparation/f-create-connection-from-outlet-preparation.request.mjs +1 -1
  263. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.execution.mjs +1 -1
  264. package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.request.mjs +1 -1
  265. package/esm2022/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.mjs +38 -36
  266. package/esm2022/f-draggable/f-connection/f-create-connection/get-first-connectable-output/get-first-connectable-output.execution.mjs +1 -1
  267. package/esm2022/f-draggable/f-connection/f-create-connection/get-first-connectable-output/get-first-connectable-output.request.mjs +1 -1
  268. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.drag-handler.mjs +23 -21
  269. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.event.mjs +1 -1
  270. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-source.drag-handler.mjs +6 -6
  271. package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-target.drag-handler.mjs +5 -5
  272. package/esm2022/f-draggable/f-connection/f-reassign-connection/i-f-reassign-handler.mjs +1 -1
  273. package/esm2022/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.execution.mjs +5 -5
  274. package/esm2022/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.request.mjs +1 -1
  275. package/esm2022/f-draggable/f-connection/f-reassign-connection/reassign-preparation/f-reassign-connection-preparation.execution.mjs +3 -3
  276. package/esm2022/f-draggable/f-connection/f-reassign-connection/reassign-preparation/f-reassign-connection-preparation.request.mjs +1 -1
  277. package/esm2022/f-draggable/f-connection/f-reassign-connection/reassign-preparation/is-pointer-inside-start-or-end-drag-handles.mjs +1 -1
  278. package/esm2022/f-draggable/f-drag-blocker.directive.mjs +2 -2
  279. package/esm2022/f-draggable/f-drag-handler/i-f-drag-handler.mjs +1 -1
  280. package/esm2022/f-draggable/f-draggable-base.mjs +3 -10
  281. package/esm2022/f-draggable/f-draggable.directive.mjs +32 -36
  282. package/esm2022/f-draggable/f-drop-to-group/drop-to-group-finalize/drop-to-group-finalize-request.mjs +1 -1
  283. package/esm2022/f-draggable/f-drop-to-group/drop-to-group-finalize/drop-to-group-finalize.mjs +1 -1
  284. package/esm2022/f-draggable/f-drop-to-group/drop-to-group-preparation/drop-to-group-preparation-request.mjs +1 -1
  285. package/esm2022/f-draggable/f-drop-to-group/drop-to-group-preparation/drop-to-group-preparation.mjs +1 -1
  286. package/esm2022/f-draggable/f-drop-to-group/f-node-drop-to-group.drag-handler.mjs +12 -19
  287. package/esm2022/f-draggable/f-drop-to-group/providers.mjs +2 -2
  288. package/esm2022/f-draggable/f-drop-to-group/sort-containers-for-drop-by-layer/sort-containers-for-drop-by-layer-request.mjs +1 -1
  289. package/esm2022/f-draggable/f-drop-to-group/sort-containers-for-drop-by-layer/sort-containers-for-drop-by-layer.mjs +13 -7
  290. package/esm2022/f-draggable/f-node-move/connection-drag-handlers/base-connection.drag-handler.mjs +4 -4
  291. package/esm2022/f-draggable/f-node-move/constraint/drag-constraint-pipeline.mjs +1 -1
  292. package/esm2022/f-draggable/f-node-move/constraint/expand-rect-from-baseline.mjs +5 -3
  293. package/esm2022/f-draggable/f-node-move/constraint/rect-constraint.mjs +3 -2
  294. package/esm2022/f-draggable/f-node-move/constraint/snap-to-grid.mjs +3 -3
  295. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/build-drag-hierarchy/build-drag-hierarchy-request.mjs +1 -1
  296. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/build-drag-hierarchy/build-drag-hierarchy-response.mjs +1 -1
  297. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/build-drag-hierarchy/build-drag-hierarchy.mjs +1 -1
  298. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/calculate-drag-limits/calculate-drag-limits-request.mjs +1 -1
  299. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/calculate-drag-limits/calculate-drag-limits.mjs +3 -3
  300. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/calculate-drag-limits/i-drag-limits.mjs +1 -1
  301. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/calculate-drag-limits/i-soft-limit.mjs +1 -1
  302. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-drag-model-from-selection-request.mjs +1 -1
  303. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-drag-model-from-selection.mjs +8 -11
  304. 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-request.mjs +1 -1
  305. 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
  306. 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-request.mjs +1 -1
  307. 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
  308. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-summary-drag-handler/create-summary-drag-handler-request.mjs +1 -1
  309. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-summary-drag-handler/create-summary-drag-handler.mjs +1 -1
  310. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/get-node-bounding-include-paddings/get-node-bounding-include-paddings-request.mjs +1 -1
  311. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/get-node-bounding-include-paddings/get-node-bounding-include-paddings-response.mjs +1 -1
  312. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/get-node-bounding-include-paddings/get-node-bounding-include-paddings.mjs +2 -2
  313. package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/providers.mjs +1 -1
  314. package/esm2022/f-draggable/f-node-move/create-snap-lines/create-snap-lines-request.mjs +1 -1
  315. package/esm2022/f-draggable/f-node-move/create-snap-lines/create-snap-lines.mjs +1 -1
  316. package/esm2022/f-draggable/f-node-move/create-snap-lines/snap-lines.drag-handler.mjs +1 -1
  317. package/esm2022/f-draggable/f-node-move/f-move-nodes.event.mjs +1 -1
  318. package/esm2022/f-draggable/f-node-move/move-drag-handler.mjs +1 -1
  319. package/esm2022/f-draggable/f-node-move/move-finalize/f-node-move-finalize.execution.mjs +2 -2
  320. package/esm2022/f-draggable/f-node-move/move-finalize/f-node-move-finalize.request.mjs +1 -1
  321. package/esm2022/f-draggable/f-node-move/move-preparation/f-node-move-preparation.execution.mjs +1 -1
  322. package/esm2022/f-draggable/f-node-move/move-preparation/f-node-move-preparation.request.mjs +1 -1
  323. package/esm2022/f-draggable/f-node-move/move-summary-drag-handler.mjs +2 -2
  324. package/esm2022/f-draggable/f-node-resize/apply-child-resize-constraints/apply-child-resize-constraints-request.mjs +1 -1
  325. package/esm2022/f-draggable/f-node-resize/apply-child-resize-constraints/apply-child-resize-constraints.mjs +3 -2
  326. package/esm2022/f-draggable/f-node-resize/apply-parent-resize-constraints/apply-parent-resize-constraints-request.mjs +1 -1
  327. package/esm2022/f-draggable/f-node-resize/apply-parent-resize-constraints/apply-parent-resize-constraints.mjs +15 -13
  328. package/esm2022/f-draggable/f-node-resize/calculate-changed-rect-from-difference/calculate-changed-rect-from-difference-request.mjs +1 -1
  329. package/esm2022/f-draggable/f-node-resize/calculate-changed-rect-from-difference/calculate-changed-rect-from-difference.mjs +1 -1
  330. package/esm2022/f-draggable/f-node-resize/calculate-direct-children-union-rect/calculate-direct-children-union-rect-request.mjs +1 -1
  331. package/esm2022/f-draggable/f-node-resize/calculate-direct-children-union-rect/calculate-direct-children-union-rect.mjs +1 -1
  332. package/esm2022/f-draggable/f-node-resize/calculate-resize-limits/calculate-resize-limits-request.mjs +1 -1
  333. package/esm2022/f-draggable/f-node-resize/calculate-resize-limits/calculate-resize-limits.mjs +2 -2
  334. package/esm2022/f-draggable/f-node-resize/constraint/i-resize-constraint.mjs +1 -1
  335. package/esm2022/f-draggable/f-node-resize/constraint/i-resize-limit.mjs +1 -1
  336. package/esm2022/f-draggable/f-node-resize/constraint/i-resize-limits.mjs +1 -1
  337. package/esm2022/f-draggable/f-node-resize/node-resize.drag-handler.mjs +1 -1
  338. package/esm2022/f-draggable/f-node-resize/resize-finalize/node-resize-finalize-request.mjs +1 -1
  339. package/esm2022/f-draggable/f-node-resize/resize-finalize/node-resize-finalize.mjs +2 -2
  340. package/esm2022/f-draggable/f-node-resize/resize-preparation/node-resize-preparation-request.mjs +1 -1
  341. package/esm2022/f-draggable/f-node-resize/resize-preparation/node-resize-preparation.mjs +2 -2
  342. package/esm2022/f-draggable/f-node-rotate/calculate-difference-after-rotation.mjs +1 -1
  343. package/esm2022/f-draggable/f-node-rotate/f-node-rotate.drag-handler.mjs +4 -4
  344. package/esm2022/f-draggable/f-node-rotate/rotate-finalize/f-node-rotate-finalize.execution.mjs +5 -4
  345. package/esm2022/f-draggable/f-node-rotate/rotate-finalize/f-node-rotate-finalize.request.mjs +1 -1
  346. package/esm2022/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.execution.mjs +29 -17
  347. package/esm2022/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.request.mjs +1 -1
  348. package/esm2022/f-draggable/f-single-select/f-single-select.execution.mjs +1 -1
  349. package/esm2022/f-draggable/f-single-select/f-single-select.request.mjs +1 -1
  350. package/esm2022/f-draggable/i-f-drag-and-drop-plugin.mjs +1 -1
  351. package/esm2022/f-draggable/index.mjs +1 -1
  352. package/esm2022/f-draggable/providers.mjs +2 -2
  353. package/esm2022/f-external-item/domain/constraint/external-rect-constraint.mjs +3 -3
  354. package/esm2022/f-external-item/domain/create-placeholder/f-external-item-create-placeholder.execution.mjs +1 -1
  355. package/esm2022/f-external-item/domain/create-preview/f-external-item-create-preview.execution.mjs +2 -2
  356. package/esm2022/f-external-item/domain/f-create-node.event.mjs +1 -1
  357. package/esm2022/f-external-item/domain/f-external-item.drag-handler.mjs +2 -2
  358. package/esm2022/f-external-item/domain/finalize/f-external-item-finalize.execution.mjs +9 -10
  359. package/esm2022/f-external-item/domain/finalize/f-external-item-finalize.request.mjs +1 -1
  360. package/esm2022/f-external-item/domain/preparation/f-external-item-preparation.execution.mjs +2 -2
  361. package/esm2022/f-external-item/domain/preparation/f-external-item-preparation.request.mjs +1 -1
  362. package/esm2022/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.execution.mjs +5 -5
  363. package/esm2022/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.request.mjs +1 -1
  364. package/esm2022/f-external-item/f-external-item-base.mjs +1 -1
  365. package/esm2022/f-external-item/f-external-item-placeholder.directive.mjs +5 -5
  366. package/esm2022/f-external-item/f-external-item-preview.directive.mjs +4 -4
  367. package/esm2022/f-external-item/f-external-item.directive.mjs +13 -20
  368. package/esm2022/f-external-item/f-external-item.service.mjs +3 -3
  369. package/esm2022/f-external-item/providers.mjs +2 -2
  370. package/esm2022/f-flow/f-flow.component.mjs +5 -5
  371. package/esm2022/f-flow/providers.mjs +2 -2
  372. package/esm2022/f-flow.module.mjs +3 -3
  373. package/esm2022/f-line-alignment/domain/snap-line-element.mjs +19 -15
  374. package/esm2022/f-line-alignment/domain/snap-line-service.mjs +16 -18
  375. package/esm2022/f-line-alignment/f-line-alignment.component.mjs +4 -4
  376. package/esm2022/f-line-alignment/providers.mjs +2 -2
  377. package/esm2022/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.mjs +14 -18
  378. package/esm2022/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.mjs +1 -1
  379. package/esm2022/f-minimap/domain/f-minimap-data.mjs +1 -1
  380. package/esm2022/f-minimap/domain/f-minimap.drag-handler.mjs +25 -25
  381. package/esm2022/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.execution.mjs +2 -2
  382. package/esm2022/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.execution.mjs +9 -8
  383. package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.mjs +9 -11
  384. package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.mjs +1 -1
  385. package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.mjs +26 -32
  386. package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.mjs +1 -1
  387. package/esm2022/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.execution.mjs +2 -1
  388. package/esm2022/f-minimap/f-minimap-canvas.directive.mjs +2 -2
  389. package/esm2022/f-minimap/f-minimap-flow.directive.mjs +3 -3
  390. package/esm2022/f-minimap/f-minimap-view.directive.mjs +2 -2
  391. package/esm2022/f-minimap/f-minimap.component.mjs +1 -1
  392. package/esm2022/f-node/f-drag-handle.directive.mjs +3 -3
  393. package/esm2022/f-node/f-group.directive.mjs +6 -4
  394. package/esm2022/f-node/f-node-base.mjs +1 -1
  395. package/esm2022/f-node/f-node.directive.mjs +16 -14
  396. package/esm2022/f-node/f-resize-handle/f-resize-handle.directive.mjs +5 -5
  397. package/esm2022/f-selection-area/domain/providers.mjs +2 -2
  398. package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.mjs +2 -2
  399. package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.mjs +1 -1
  400. package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.mjs +2 -2
  401. package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.mjs +1 -1
  402. package/esm2022/f-selection-area/domain/selection-area.drag-handle.mjs +1 -1
  403. package/esm2022/f-selection-area/f-selection-area.component.mjs +2 -2
  404. package/esm2022/f-selection-area/providers.mjs +2 -2
  405. package/esm2022/f-storage/f-components-store.mjs +1 -1
  406. package/esm2022/f-storage/features/listen-components-data-changed/listen-data-changes.execution.mjs +3 -4
  407. package/esm2022/f-storage/features/listen-count-changes/listen-count-changes.execution.mjs +3 -4
  408. package/esm2022/f-storage/features/listen-transform-changes/listen-transform-changes.execution.mjs +2 -2
  409. package/esm2022/f-storage/features/notify-data-changed/notify-data-changed.execution.mjs +2 -2
  410. package/esm2022/f-storage/features/notify-transform-changed/notify-transform-changed.execution.mjs +2 -2
  411. package/esm2022/f-zoom/f-zoom.directive.mjs +4 -4
  412. package/esm2022/f-zoom/providers.mjs +2 -2
  413. package/esm2022/mixins/change-selection/change-selection.mjs +5 -6
  414. package/esm2022/mixins/change-selection/i-selectable.mjs +1 -1
  415. package/esm2022/mixins/change-visibility/change-visibility.mjs +4 -3
  416. package/esm2022/mixins/constructor.mjs +1 -1
  417. package/esm2022/reactivity/debounce-time.mjs +2 -2
  418. package/esm2022/reactivity/f-channel-hub.mjs +1 -1
  419. package/esm2022/reactivity/f-channel.mjs +1 -1
  420. package/esm2022/reactivity/f-resize-channel.mjs +1 -1
  421. package/esm2022/reactivity/index.mjs +1 -2
  422. package/esm2022/reactivity/notify-on-start.mjs +1 -1
  423. package/esm2022/utils/index.mjs +2 -1
  424. package/esm2022/utils/infinity-min-max.mjs +2 -2
  425. package/esm2022/utils/string-attribute.mjs +4 -0
  426. package/f-backgroud/providers.d.ts +1 -1
  427. package/f-connection/common/domain/f-bezier.path-builder.d.ts +2 -2
  428. package/f-connection/common/domain/f-segment.path-builder.d.ts +7 -7
  429. package/f-connection/common/f-connection-base.d.ts +13 -11
  430. package/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +6 -11
  431. package/f-connection/common/f-connection-text/f-connection-text.component.d.ts +6 -12
  432. package/f-connection/common/f-gradient/f-connection-gradient.component.d.ts +5 -10
  433. package/f-connection/common/f-path/f-connection-path.component.d.ts +2 -7
  434. package/f-connection/common/f-selection/f-connection-selection.component.d.ts +2 -6
  435. package/f-connection/common/i-has-connection-from-to.d.ts +3 -3
  436. package/f-connection/f-connection/f-connection.component.d.ts +6 -6
  437. package/f-connection/f-connection-builder/f-connection-builders.d.ts +1 -3
  438. package/f-connection/f-connection-builder/i-f-connection-builder-response.d.ts +1 -0
  439. package/f-connection/f-connection-center/f-connection-center.directive.d.ts +6 -1
  440. package/f-connection/f-connection-content/f-connection-content.d.ts +69 -0
  441. package/f-connection/f-connection-content/index.d.ts +2 -0
  442. package/f-connection/f-connection-content/polyline-content-engine/i-polyline-content.d.ts +9 -0
  443. package/f-connection/f-connection-content/polyline-content-engine/index.d.ts +5 -0
  444. package/f-connection/f-connection-content/polyline-content-engine/polyline-content-align.d.ts +4 -0
  445. package/f-connection/f-connection-content/polyline-content-engine/polyline-content-layout-engine.d.ts +21 -0
  446. package/f-connection/f-connection-content/polyline-content-engine/polyline-content-place.d.ts +18 -0
  447. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-sampler-result.d.ts +11 -0
  448. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-tangent.d.ts +4 -0
  449. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/index.d.ts +4 -0
  450. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline-sampler.d.ts +60 -0
  451. package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline.d.ts +29 -0
  452. package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +4 -6
  453. package/f-connection/f-marker/f-marker-base.d.ts +0 -3
  454. package/f-connection/f-marker/f-marker.directive.d.ts +4 -6
  455. package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +4 -6
  456. package/f-connection/index.d.ts +1 -0
  457. package/f-connection/providers.d.ts +2 -2
  458. package/f-connectors/f-connector-base.d.ts +3 -2
  459. package/f-connectors/f-node-input/f-node-input-base.d.ts +3 -2
  460. package/f-connectors/f-node-input/f-node-input.directive.d.ts +8 -9
  461. package/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +3 -3
  462. package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +6 -8
  463. package/f-connectors/f-node-output/f-node-output-base.d.ts +4 -5
  464. package/f-connectors/f-node-output/f-node-output.directive.d.ts +7 -9
  465. package/f-connectors/f-source-connector-base.d.ts +7 -0
  466. package/f-connectors/index.d.ts +1 -0
  467. package/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.d.ts +1 -1
  468. package/f-draggable/domain/providers.d.ts +1 -1
  469. package/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.execution.d.ts +2 -2
  470. package/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.execution.d.ts +9 -9
  471. package/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.d.ts +5 -5
  472. package/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.drag-handler.d.ts +4 -4
  473. package/f-draggable/f-connection/f-reassign-connection/f-reassign-source.drag-handler.d.ts +5 -5
  474. package/f-draggable/f-connection/f-reassign-connection/f-reassign-target.drag-handler.d.ts +5 -5
  475. package/f-draggable/f-connection/providers.d.ts +1 -1
  476. package/f-draggable/f-draggable-base.d.ts +7 -10
  477. package/f-draggable/f-draggable.directive.d.ts +10 -12
  478. package/f-draggable/f-drop-to-group/f-node-drop-to-group.drag-handler.d.ts +2 -6
  479. package/f-draggable/f-node-move/create-drag-model-from-selection/providers.d.ts +1 -1
  480. package/f-draggable/f-node-move/providers.d.ts +1 -1
  481. package/f-draggable/f-node-resize/apply-parent-resize-constraints/apply-parent-resize-constraints.d.ts +2 -2
  482. package/f-draggable/f-node-resize/resize-finalize/node-resize-finalize.d.ts +1 -1
  483. package/f-draggable/f-node-rotate/f-node-rotate.drag-handler.d.ts +1 -1
  484. package/f-draggable/f-node-rotate/providers.d.ts +1 -1
  485. package/f-draggable/f-node-rotate/rotate-finalize/f-node-rotate-finalize.execution.d.ts +1 -1
  486. package/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.execution.d.ts +1 -1
  487. package/f-draggable/providers.d.ts +1 -1
  488. package/f-external-item/domain/finalize/f-external-item-finalize.execution.d.ts +1 -1
  489. package/f-external-item/f-external-item-base.d.ts +3 -3
  490. package/f-external-item/f-external-item-placeholder.directive.d.ts +1 -1
  491. package/f-external-item/f-external-item-preview.directive.d.ts +1 -1
  492. package/f-external-item/f-external-item-token.d.ts +1 -1
  493. package/f-external-item/f-external-item.directive.d.ts +5 -6
  494. package/f-external-item/f-external-item.service.d.ts +1 -1
  495. package/f-line-alignment/domain/snap-line-element.d.ts +2 -3
  496. package/f-line-alignment/domain/snap-line-service.d.ts +3 -4
  497. package/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.d.ts +5 -7
  498. package/f-minimap/domain/f-minimap.drag-handler.d.ts +10 -10
  499. package/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.execution.d.ts +3 -3
  500. package/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.d.ts +1 -3
  501. package/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.d.ts +7 -10
  502. package/f-minimap/providers.d.ts +1 -1
  503. package/f-node/f-node.directive.d.ts +2 -2
  504. package/f-node/f-resize-handle/f-resize-handle.directive.d.ts +1 -1
  505. package/f-node/providers.d.ts +1 -1
  506. package/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.d.ts +2 -2
  507. package/f-storage/f-components-store.d.ts +1 -1
  508. package/f-storage/features/listen-components-data-changed/listen-data-changes.execution.d.ts +2 -2
  509. package/f-storage/features/listen-count-changes/listen-count-changes.execution.d.ts +2 -2
  510. package/f-storage/features/listen-transform-changes/listen-transform-changes.execution.d.ts +2 -2
  511. package/f-storage/features/notify-data-changed/notify-data-changed.execution.d.ts +2 -2
  512. package/f-storage/features/notify-transform-changed/notify-transform-changed.execution.d.ts +2 -2
  513. package/f-storage/providers.d.ts +1 -1
  514. package/fesm2022/foblex-flow.mjs +1411 -1018
  515. package/fesm2022/foblex-flow.mjs.map +1 -1
  516. package/package.json +1 -1
  517. package/reactivity/index.d.ts +0 -1
  518. package/schematics/ng-add/index.js +1 -1
  519. package/schematics/ng-add/index.js.map +1 -1
  520. package/schematics/ng-update/index.js +1 -1
  521. package/schematics/ng-update/index.js.map +1 -1
  522. package/schematics/shared/foblex-dependencies.js +1 -1
  523. package/utils/index.d.ts +1 -0
  524. package/utils/infinity-min-max.d.ts +1 -1
  525. package/utils/string-attribute.d.ts +1 -0
  526. package/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.d.ts +0 -12
  527. package/domain/f-connectors/add-input-to-store/add-input-to-store.execution.d.ts +0 -12
  528. package/domain/f-connectors/find-closest-connector/find-closest-connector.execution.d.ts +0 -16
  529. package/domain/f-connectors/find-closest-connector/index.d.ts +0 -2
  530. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.execution.mjs +0 -32
  531. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.mjs +0 -16
  532. package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store.execution.mjs +0 -25
  533. package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.execution.mjs +0 -25
  534. package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store.execution.mjs +0 -25
  535. package/esm2022/domain/f-connectors/find-closest-connector/find-closest-connector.execution.mjs +0 -47
  536. package/esm2022/domain/f-connectors/find-closest-connector/find-closest-connector.request.mjs +0 -10
  537. package/esm2022/domain/f-connectors/find-closest-connector/index.mjs +0 -3
  538. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.mjs +0 -31
  539. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.execution.mjs +0 -30
  540. package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.request.mjs +0 -8
  541. package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store.execution.mjs +0 -25
  542. package/esm2022/domain/f-connectors/unmark-connectable-connectors/unmark-connectable-connectors.execution.mjs +0 -30
  543. package/esm2022/domain/f-connectors/unmark-connectable-connectors/unmark-connectable-connectors.request.mjs +0 -8
  544. package/esm2022/reactivity/mediator-effect.mjs +0 -14
  545. package/reactivity/mediator-effect.d.ts +0 -2
@@ -1,7 +1,7 @@
1
1
  import { PointExtensions } from '@foblex/2d';
2
2
  import { EFConnectableSide } from '../../../f-connectors';
3
- import { CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest } from './calculate-center-between-points';
4
- import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';
3
+ import { CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest, } from './calculate-center-between-points';
4
+ import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, } from './calculate-connection-center';
5
5
  const CONNECTOR_SIDE_POINT = {
6
6
  [EFConnectableSide.LEFT]: PointExtensions.initialize(-1, 0),
7
7
  [EFConnectableSide.RIGHT]: PointExtensions.initialize(1, 0),
@@ -12,18 +12,30 @@ const CONNECTOR_SIDE_POINT = {
12
12
  export class FSegmentPathBuilder {
13
13
  handle(request) {
14
14
  const { source, sourceSide, target, targetSide } = request;
15
- const { points, center } = this.getPathPoints(source, sourceSide, target, targetSide, request.offset);
16
- const path = this.buildPath(points, request.radius);
15
+ const { points, center } = this._getPathPoints(source, sourceSide, target, targetSide, request.offset);
16
+ const path = this._buildPath(points, request.radius);
17
17
  const penultimatePoint = points.length > 1 ? points[points.length - 2] : source;
18
18
  const secondPoint = points.length > 1 ? points[1] : target;
19
- return { path, connectionCenter: center, penultimatePoint, secondPoint };
19
+ return {
20
+ path,
21
+ connectionCenter: center,
22
+ penultimatePoint,
23
+ secondPoint,
24
+ points,
25
+ };
20
26
  }
21
- getPathPoints(source, sourceSide, target, targetSide, offset) {
27
+ _getPathPoints(source, sourceSide, target, targetSide, offset) {
22
28
  const sourceDirection = CONNECTOR_SIDE_POINT[sourceSide];
23
29
  const targetDirection = CONNECTOR_SIDE_POINT[targetSide];
24
- const sourceGap = { x: source.x + sourceDirection.x * offset, y: source.y + sourceDirection.y * offset };
25
- const targetGap = { x: target.x + targetDirection.x * offset, y: target.y + targetDirection.y * offset };
26
- const direction = this.getDirection(sourceGap, sourceSide, targetGap);
30
+ const sourceGap = {
31
+ x: source.x + sourceDirection.x * offset,
32
+ y: source.y + sourceDirection.y * offset,
33
+ };
34
+ const targetGap = {
35
+ x: target.x + targetDirection.x * offset,
36
+ y: target.y + targetDirection.y * offset,
37
+ };
38
+ const direction = this._getDirection(sourceGap, sourceSide, targetGap);
27
39
  const directionAccessor = direction.x !== 0 ? 'x' : 'y';
28
40
  const currentDirection = direction[directionAccessor];
29
41
  let points = [];
@@ -60,10 +72,12 @@ export class FSegmentPathBuilder {
60
72
  if (diff <= offset) {
61
73
  const gapOffset = Math.min(offset - 1, offset - diff);
62
74
  if (sourceDirection[directionAccessor] === currentDirection) {
63
- sourceGapOffset[directionAccessor] = (sourceGap[directionAccessor] > source[directionAccessor] ? -1 : 1) * gapOffset;
75
+ sourceGapOffset[directionAccessor] =
76
+ (sourceGap[directionAccessor] > source[directionAccessor] ? -1 : 1) * gapOffset;
64
77
  }
65
78
  else {
66
- targetGapOffset[directionAccessor] = (targetGap[directionAccessor] > target[directionAccessor] ? -1 : 1) * gapOffset;
79
+ targetGapOffset[directionAccessor] =
80
+ (targetGap[directionAccessor] > target[directionAccessor] ? -1 : 1) * gapOffset;
67
81
  }
68
82
  }
69
83
  }
@@ -89,37 +103,41 @@ export class FSegmentPathBuilder {
89
103
  target,
90
104
  ];
91
105
  const center = new CalculateConnectionCenterHandler().handle(new CalculateConnectionCenterRequest(pathPoints));
92
- return { points: pathPoints, center: center };
106
+ return { points: pathPoints, center };
93
107
  }
94
- getDirection(source, sourceSide, target) {
108
+ _getDirection(source, sourceSide, target) {
95
109
  if (sourceSide === EFConnectableSide.LEFT || sourceSide === EFConnectableSide.RIGHT) {
96
- return source.x < target.x ? PointExtensions.initialize(1, 0) : PointExtensions.initialize(-1, 0);
110
+ return source.x < target.x
111
+ ? PointExtensions.initialize(1, 0)
112
+ : PointExtensions.initialize(-1, 0);
97
113
  }
98
- return source.y < target.y ? PointExtensions.initialize(0, 1) : PointExtensions.initialize(0, -1);
114
+ return source.y < target.y
115
+ ? PointExtensions.initialize(0, 1)
116
+ : PointExtensions.initialize(0, -1);
99
117
  }
100
- distance(a, b) {
118
+ _distance(a, b) {
101
119
  return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));
102
120
  }
103
- buildPath(points, borderRadius) {
121
+ _buildPath(points, borderRadius) {
104
122
  let path = '';
105
123
  for (let i = 0; i < points.length; i++) {
106
124
  const p = points[i];
107
125
  let segment = '';
108
126
  if (i > 0 && i < points.length - 1) {
109
- segment = this.getBend(points[i - 1], p, points[i + 1], borderRadius);
127
+ segment = this._getBend(points[i - 1], p, points[i + 1], borderRadius);
110
128
  }
111
129
  else if (i === points.length - 1) {
112
- segment = this.buildLastLineSegment(i, p);
130
+ segment = this._buildLastLineSegment(i, p);
113
131
  }
114
132
  else {
115
- segment = this.buildMoveOrLineSegment(i, p);
133
+ segment = this._buildMoveOrLineSegment(i, p);
116
134
  }
117
135
  path += segment;
118
136
  }
119
137
  return path;
120
138
  }
121
- getBend(a, b, c, size) {
122
- const bendSize = Math.min(this.distance(a, b) / 2, this.distance(b, c) / 2, size);
139
+ _getBend(a, b, c, size) {
140
+ const bendSize = Math.min(this._distance(a, b) / 2, this._distance(b, c) / 2, size);
123
141
  const { x, y } = b;
124
142
  if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {
125
143
  return `L${x} ${y}`;
@@ -133,11 +151,11 @@ export class FSegmentPathBuilder {
133
151
  const yDir = a.y < c.y ? -1 : 1;
134
152
  return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;
135
153
  }
136
- buildMoveOrLineSegment(index, point) {
154
+ _buildMoveOrLineSegment(index, point) {
137
155
  return `${index === 0 ? 'M' : 'L'}${point.x} ${point.y}`;
138
156
  }
139
- buildLastLineSegment(index, point) {
157
+ _buildLastLineSegment(index, point) {
140
158
  return `L${point.x + 0.0002} ${point.y + 0.0002}`;
141
159
  }
142
160
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1zZWdtZW50LnBhdGgtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2NvbW1vbi9kb21haW4vZi1zZWdtZW50LnBhdGgtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVMsZUFBZSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ25ELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFDTCxtQ0FBbUMsRUFDbkMsbUNBQW1DLEVBQ3BDLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdDQUFnQyxFQUFFLGdDQUFnQyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFRakgsTUFBTSxvQkFBb0IsR0FBaUI7SUFFekMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUzRCxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUzRCxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTFELENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTVELENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBQzNELENBQUM7QUFFRixNQUFNLE9BQU8sbUJBQW1CO0lBRXZCLE1BQU0sQ0FBQyxPQUFtQztRQUMvQyxNQUFNLEVBQUMsTUFBTSxFQUFFLFVB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RCxPQUFPLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVPLG9CQUFvQixDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3ZELE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ3BELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVBvaW50LCBQb2ludEV4dGVuc2lvbnN9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHtFRkNvbm5lY3RhYmxlU2lkZX0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0b3JzJztcbmltcG9ydCB7XG4gIENhbGN1bGF0ZUNlbnRlckJldHdlZW5Qb2ludHNIYW5kbGVyLFxuICBDYWxjdWxhdGVDZW50ZXJCZXR3ZWVuUG9pbnRzUmVxdWVzdFxufSBmcm9tICcuL2NhbGN1bGF0ZS1jZW50ZXItYmV0d2Vlbi1wb2ludHMnO1xuaW1wb3J0IHtDYWxjdWxhdGVDb25uZWN0aW9uQ2VudGVySGFuZGxlciwgQ2FsY3VsYXRlQ29ubmVjdGlvbkNlbnRlclJlcXVlc3R9IGZyb20gJy4vY2FsY3VsYXRlLWNvbm5lY3Rpb24tY2VudGVyJztcbmltcG9ydCB7XG4gIElGQ29ubmVjdGlvbkJ1aWxkZXIsXG4gIElGQ29ubmVjdGlvbkJ1aWxkZXJSZXF1ZXN0LFxuICBJRkNvbm5lY3Rpb25CdWlsZGVyUmVzcG9uc2Vcbn0gZnJvbSAnLi4vLi4vZi1jb25uZWN0aW9uLWJ1aWxkZXInO1xuaW1wb3J0IHtJTWFwfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuXG5jb25zdCBDT05ORUNUT1JfU0lERV9QT0lOVDogSU1hcDxJUG9pbnQ+ID0ge1xuXG4gIFtFRkNvbm5lY3RhYmxlU2lkZS5MRUZUXTogUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoLTEsIDApLFxuXG4gIFtFRkNvbm5lY3RhYmxlU2lkZS5SSUdIVF06IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKDEsIDApLFxuXG4gIFtFRkNvbm5lY3RhYmxlU2lkZS5UT1BdOiBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgwLCAtMSksXG5cbiAgW0VGQ29ubmVjdGFibGVTaWRlLkJPVFRPTV06IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKDAsIDEpLFxuXG4gIFtFRkNvbm5lY3RhYmxlU2lkZS5BVVRPXTogUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoMCwgMCksXG59O1xuXG5leHBvcnQgY2xhc3MgRlNlZ21lbnRQYXRoQnVpbGRlciBpbXBsZW1lbnRzIElGQ29ubmVjdGlvbkJ1aWxkZXIge1xuXG4gIHB1YmxpYyBoYW5kbGUocmVxdWVzdDogSUZDb25uZWN0aW9uQnVpbGRlclJlcXVlc3QpOiBJRkNvbm5lY3Rpb25CdWlsZGVyUmVzcG9uc2Uge1xuICAgIGNvbnN0IHtzb3VyY2UsIHNvdXJjZVNpZGUsIHRhcmdldCwgdGFyZ2V0U2lkZX0gPSByZXF1ZXN0O1xuXG4gICAgY29uc3Qge3BvaW50cywgY2VudGVyfSA9IHRoaXMuZ2V0UGF0aFBvaW50cyhcbiAgICAgIHNvdXJjZSxcbiAgICAgIHNvdXJjZVNpZGUsXG4gICAgICB0YXJnZXQsXG4gICAgICB0YXJnZXRTaWRlLFxuICAgICAgcmVxdWVzdC5vZmZzZXRcbiAgICApO1xuXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoKHBvaW50cywgcmVxdWVzdC5yYWRpdXMpO1xuXG4gICAgY29uc3QgcGVudWx0aW1hdGVQb2ludCA9IHBvaW50cy5sZW5ndGggPiAxID8gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAyXSA6IHNvdXJjZTtcbiAgICBjb25zdCBzZWNvbmRQb2ludCA9IHBvaW50cy5sZW5ndGggPiAxID8gcG9pbnRzWzFdIDogdGFyZ2V0O1xuXG5cbiAgICByZXR1cm4ge3BhdGgsIGNvbm5lY3Rpb25DZW50ZXI6IGNlbnRlciwgcGVudWx0aW1hdGVQb2ludCwgc2Vjb25kUG9pbnR9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXRoUG9pbnRzKFxuICAgIHNvdXJjZTogSVBvaW50LCBzb3VyY2VTaWRlOiBFRkNvbm5lY3RhYmxlU2lkZSwgdGFyZ2V0OiBJUG9pbnQsIHRhcmdldFNpZGU6IEVGQ29ubmVjdGFibGVTaWRlLCBvZmZzZXQ6IG51bWJlclxuICApOiB7IHBvaW50czogSVBvaW50W10sIGNlbnRlcjogSVBvaW50IH0ge1xuXG4gICAgY29uc3Qgc291cmNlRGlyZWN0aW9uID0gQ09OTkVDVE9SX1NJREVfUE9JTlRbc291cmNlU2lkZV07XG4gICAgY29uc3QgdGFyZ2V0RGlyZWN0aW9uID0gQ09OTkVDVE9SX1NJREVfUE9JTlRbdGFyZ2V0U2lkZV07XG5cbiAgICBjb25zdCBzb3VyY2VHYXA6IElQb2ludCA9IHt4OiBzb3VyY2UueCArIHNvdXJjZURpcmVjdGlvbi54ICogb2Zmc2V0LCB5OiBzb3VyY2UueSArIHNvdXJjZURpcmVjdGlvbi55ICogb2Zmc2V0fTtcbiAgICBjb25zdCB0YXJnZXRHYXA6IElQb2ludCA9IHt4OiB0YXJnZXQueCArIHRhcmdldERpcmVjdGlvbi54ICogb2Zmc2V0LCB5OiB0YXJnZXQueSArIHRhcmdldERpcmVjdGlvbi55ICogb2Zmc2V0fTtcblxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuZ2V0RGlyZWN0aW9uKHNvdXJjZUdhcCwgc291cmNlU2lkZSwgdGFyZ2V0R2FwKTtcbiAgICBjb25zdCBkaXJlY3Rpb25BY2Nlc3NvciA9IGRpcmVjdGlvbi54ICE9PSAwID8gJ3gnIDogJ3knO1xuICAgIGNvbnN0IGN1cnJlbnREaXJlY3Rpb24gPSBkaXJlY3Rpb25bZGlyZWN0aW9uQWNjZXNzb3JdO1xuXG4gICAgbGV0IHBvaW50czogSVBvaW50W10gPSBbXTtcbiAgICBjb25zdCBzb3VyY2VHYXBPZmZzZXQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuICAgIGNvbnN0IHRhcmdldEdhcE9mZnNldCA9IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG5cbiAgICBjb25zdCBjZW50ZXJCZXR3ZWVuUG9pbnRzID0gbmV3IENhbGN1bGF0ZUNlbnRlckJldHdlZW5Qb2ludHNIYW5kbGVyKCkuaGFuZGxlKFxuICAgICAgbmV3IENhbGN1bGF0ZUNlbnRlckJldHdlZW5Qb2ludHNSZXF1ZXN0KHNvdXJjZSwgdGFyZ2V0KVxuICAgICk7XG5cbiAgICBpZiAoc291cmNlRGlyZWN0aW9uW2RpcmVjdGlvbkFjY2Vzc29yXSAqIHRhcmdldERpcmVjdGlvbltkaXJlY3Rpb25BY2Nlc3Nvcl0gPT09IC0xKSB7XG4gICAgICBjb25zdCB2ZXJ0aWNhbFNwbGl0OiBJUG9pbnRbXSA9IFtcbiAgICAgICAge3g6IGNlbnRlckJldHdlZW5Qb2ludHMueCwgeTogc291cmNlR2FwLnl9LFxuICAgICAgICB7eDogY2VudGVyQmV0d2VlblBvaW50cy54LCB5OiB0YXJnZXRHYXAueX0sXG4gICAgICBdO1xuICAgICAgY29uc3QgaG9yaXpvbnRhbFNwbGl0OiBJUG9pbnRbXSA9IFtcbiAgICAgICAge3g6IHNvdXJjZUdhcC54LCB5OiBjZW50ZXJCZXR3ZWVuUG9pbnRzLnl9LFxuICAgICAgICB7eDogdGFyZ2V0R2FwLngsIHk6IGNlbnRlckJldHdlZW5Qb2ludHMueX0sXG4gICAgICBdO1xuXG4gICAgICBpZiAoc291cmNlRGlyZWN0aW9uW2RpcmVjdGlvbkFjY2Vzc29yXSA9PT0gY3VycmVudERpcmVjdGlvbikge1xuICAgICAgICBwb2ludHMgPSBkaXJlY3Rpb25BY2Nlc3NvciA9PT0gJ3gnID8gdmVydGljYWxTcGxpdCA6IGhvcml6b250YWxTcGxpdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvaW50cyA9IGRpcmVjdGlvbkFjY2Vzc29yID09PSAneCcgPyBob3Jpem9udGFsU3BsaXQgOiB2ZXJ0aWNhbFNwbGl0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzb3VyY2VUYXJnZXQ6IElQb2ludFtdID0gW3t4OiBzb3VyY2VHYXAueCwgeTogdGFyZ2V0R2FwLnl9XTtcbiAgICAgIGNvbnN0IHRhcmdldFNvdXJjZTogSVBvaW50W10gPSBbe3g6IHRhcmdldEdhcC54LCB5OiBzb3VyY2VHYXAueX1dO1xuXG4gICAgICBpZiAoZGlyZWN0aW9uQWNjZXNzb3IgPT09ICd4Jykge1xuICAgICAgICBwb2ludHMgPSBzb3VyY2VEaXJlY3Rpb24ueCA9PT0gY3VycmVudERpcmVjdGlvbiA/IHRhcmdldFNvdXJjZSA6IHNvdXJjZVRhcmdldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvaW50cyA9IHNvdXJjZURpcmVjdGlvbi55ID09PSBjdXJyZW50RGlyZWN0aW9uID8gc291cmNlVGFyZ2V0IDogdGFyZ2V0U291cmNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc291cmNlU2lkZSA9PT0gdGFyZ2V0U2lkZSkge1xuICAgICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoc291cmNlW2RpcmVjdGlvbkFjY2Vzc29yXSAtIHRhcmdldFtkaXJlY3Rpb25BY2Nlc3Nvcl0pO1xuXG4gICAgICAgIGlmIChkaWZmIDw9IG9mZnNldCkge1xuICAgICAgICAgIGNvbnN0IGdhcE9mZnNldCA9IE1hdGgubWluKG9mZnNldCAtIDEsIG9mZnNldCAtIGRpZmYpO1xuICAgICAgICAgIGlmIChzb3VyY2VEaXJlY3Rpb25bZGlyZWN0aW9uQWNjZXNzb3JdID09PSBjdXJyZW50RGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBzb3VyY2VHYXBPZmZzZXRbZGlyZWN0aW9uQWNjZXNzb3JdID0gKHNvdXJjZUdhcFtkaXJlY3Rpb25BY2Nlc3Nvcl0gPiBzb3VyY2VbZGlyZWN0aW9uQWNjZXNzb3JdID8gLTEgOiAxKSAqIGdhcE9mZnNldDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0R2FwT2Zmc2V0W2RpcmVjdGlvbkFjY2Vzc29yXSA9ICh0YXJnZXRHYXBbZGlyZWN0aW9uQWNjZXNzb3JdID4gdGFyZ2V0W2RpcmVjdGlvbkFjY2Vzc29yXSA/IC0xIDogMSkgKiBnYXBPZmZzZXQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzb3VyY2VTaWRlICE9PSB0YXJnZXRTaWRlKSB7XG4gICAgICAgIGNvbnN0IGRpckFjY2Vzc29yT3Bwb3NpdGUgPSBkaXJlY3Rpb25BY2Nlc3NvciA9PT0gJ3gnID8gJ3knIDogJ3gnO1xuICAgICAgICBjb25zdCBpc1NhbWVEaXIgPSBzb3VyY2VEaXJlY3Rpb25bZGlyZWN0aW9uQWNjZXNzb3JdID09PSB0YXJnZXREaXJlY3Rpb25bZGlyQWNjZXNzb3JPcHBvc2l0ZV07XG4gICAgICAgIGNvbnN0IHNvdXJjZUd0VGFyZ2V0T3BwbyA9IHNvdXJjZUdhcFtkaXJBY2Nlc3Nvck9wcG9zaXRlXSA+IHRhcmdldEdhcFtkaXJBY2Nlc3Nvck9wcG9zaXRlXTtcbiAgICAgICAgY29uc3Qgc291cmNlTHRUYXJnZXRPcHBvID0gc291cmNlR2FwW2RpckFjY2Vzc29yT3Bwb3NpdGVdIDwgdGFyZ2V0R2FwW2RpckFjY2Vzc29yT3Bwb3NpdGVdO1xuICAgICAgICBjb25zdCBmbGlwU291cmNlVGFyZ2V0ID1cbiAgICAgICAgICAoc291cmNlRGlyZWN0aW9uW2RpcmVjdGlvbkFjY2Vzc29yXSA9PT0gMSAmJlxuICAgICAgICAgICAgKCghaXNTYW1lRGlyICYmIHNvdXJjZUd0VGFyZ2V0T3BwbykgfHwgKGlzU2FtZURpciAmJiBzb3VyY2VMdFRhcmdldE9wcG8pKSkgfHxcbiAgICAgICAgICAoc291cmNlRGlyZWN0aW9uW2RpcmVjdGlvbkFjY2Vzc29yXSAhPT0gMSAmJlxuICAgICAgICAgICAgKCghaXNTYW1lRGlyICYmIHNvdXJjZUx0VGFyZ2V0T3BwbykgfHwgKGlzU2FtZURpciAmJiBzb3VyY2VHdFRhcmdldE9wcG8pKSk7XG5cbiAgICAgICAgaWYgKGZsaXBTb3VyY2VUYXJnZXQpIHtcbiAgICAgICAgICBwb2ludHMgPSBkaXJlY3Rpb25BY2Nlc3NvciA9PT0gJ3gnID8gc291cmNlVGFyZ2V0IDogdGFyZ2V0U291cmNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aFBvaW50cyA9IFtcbiAgICAgIHNvdXJjZSxcbiAgICAgIHt4OiBzb3VyY2VHYXAueCArIHNvdXJjZUdhcE9mZnNldC54LCB5OiBzb3VyY2VHYXAueSArIHNvdXJjZUdhcE9mZnNldC55fSxcbiAgICAgIC4uLnBvaW50cyxcbiAgICAgIHt4OiB0YXJnZXRHYXAueCArIHRhcmdldEdhcE9mZnNldC54LCB5OiB0YXJnZXRHYXAueSArIHRhcmdldEdhcE9mZnNldC55fSxcbiAgICAgIHRhcmdldCxcbiAgICBdO1xuXG4gICAgY29uc3QgY2VudGVyID0gbmV3IENhbGN1bGF0ZUNvbm5lY3Rpb25DZW50ZXJIYW5kbGVyKCkuaGFuZGxlKFxuICAgICAgbmV3IENhbGN1bGF0ZUNvbm5lY3Rpb25DZW50ZXJSZXF1ZXN0KHBhdGhQb2ludHMpXG4gICAgKTtcblxuICAgIHJldHVybiB7cG9pbnRzOiBwYXRoUG9pbnRzLCBjZW50ZXI6IGNlbnRlcn07XG4gIH1cblxuICBwcml2YXRlIGdldERpcmVjdGlvbihzb3VyY2U6IElQb2ludCwgc291cmNlU2lkZTogRUZDb25uZWN0YWJsZVNpZGUsIHRhcmdldDogSVBvaW50KTogSVBvaW50IHtcbiAgICBpZiAoc291cmNlU2lkZSA9PT0gRUZDb25uZWN0YWJsZVNpZGUuTEVGVCB8fCBzb3VyY2VTaWRlID09PSBFRkNvbm5lY3RhYmxlU2lkZS5SSUdIVCkge1xuICAgICAgcmV0dXJuIHNvdXJjZS54IDwgdGFyZ2V0LnggPyBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgxLCAwKSA6IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKC0xLCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZS55IDwgdGFyZ2V0LnkgPyBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgwLCAxKSA6IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKDAsIC0xKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzdGFuY2UoYTogSVBvaW50LCBiOiBJUG9pbnQpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coYi54IC0gYS54LCAyKSArIE1hdGgucG93KGIueSAtIGEueSwgMikpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBhdGgocG9pbnRzOiBJUG9pbnRbXSwgYm9yZGVyUmFkaXVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCBwYXRoID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICBsZXQgc2VnbWVudCA9ICcnO1xuXG4gICAgICBpZiAoaSA+IDAgJiYgaSA8IHBvaW50cy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHNlZ21lbnQgPSB0aGlzLmdldEJlbmQocG9pbnRzW2kgLSAxXSwgcCwgcG9pbnRzW2kgKyAxXSwgYm9yZGVyUmFkaXVzKTtcbiAgICAgIH0gZWxzZSBpZiAoaSA9PT0gcG9pbnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgc2VnbWVudCA9IHRoaXMuYnVpbGRMYXN0TGluZVNlZ21lbnQoaSwgcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWdtZW50ID0gdGhpcy5idWlsZE1vdmVPckxpbmVTZWdtZW50KGksIHApO1xuICAgICAgfVxuICAgICAgcGF0aCArPSBzZWdtZW50O1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCZW5kKGE6IElQb2ludCwgYjogSVBvaW50LCBjOiBJUG9pbnQsIHNpemU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgYmVuZFNpemUgPSBNYXRoLm1pbih0aGlzLmRpc3RhbmNlKGEsIGIpIC8gMiwgdGhpcy5kaXN0YW5jZShiLCBjKSAvIDIsIHNpemUpO1xuICAgIGNvbnN0IHt4LCB5fSA9IGI7XG5cbiAgICBpZiAoKGEueCA9PT0geCAmJiB4ID09PSBjLngpIHx8IChhLnkgPT09IHkgJiYgeSA9PT0gYy55KSkge1xuICAgICAgcmV0dXJuIGBMJHt4fSAke3l9YDtcbiAgICB9XG5cbiAgICBpZiAoYS55ID09PSB5KSB7XG4gICAgICBjb25zdCB4RGlyID0gYS54IDwgYy54ID8gLTEgOiAxO1xuICAgICAgY29uc3QgeURpciA9IGEueSA8IGMueSA/IDEgOiAtMTtcbiAgICAgIHJldHVybiBgTCAke3ggKyBiZW5kU2l6ZSAqIHhEaXJ9LCR7eX1RICR7eH0sJHt5fSAke3h9LCR7eSArIGJlbmRTaXplICogeURpcn1gO1xuICAgIH1cblxuICAgIGNvbnN0IHhEaXIgPSBhLnggPCBjLnggPyAxIDogLTE7XG4gICAgY29uc3QgeURpciA9IGEueSA8IGMueSA/IC0xIDogMTtcbiAgICByZXR1cm4gYEwgJHt4fSwke3kgKyBiZW5kU2l6ZSAqIHlEaXJ9USAke3h9LCR7eX0gJHt4ICsgYmVuZFNpemUgKiB4RGlyfSwke3l9YDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRNb3ZlT3JMaW5lU2VnbWVudChpbmRleDogbnVtYmVyLCBwb2ludDogSVBvaW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7aW5kZXggPT09IDAgPyAnTScgOiAnTCd9JHtwb2ludC54fSAke3BvaW50Lnl9YDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMYXN0TGluZVNlZ21lbnQoaW5kZXg6IG51bWJlciwgcG9pbnQ6IElQb2ludCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBMJHtwb2ludC54ICsgMC4wMDAyfSAke3BvaW50LnkgKyAwLjAwMDJ9YDtcbiAgfVxufVxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1zZWdtZW50LnBhdGgtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2NvbW1vbi9kb21haW4vZi1zZWdtZW50LnBhdGgtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFDTCxtQ0FBbUMsRUFDbkMsbUNBQW1DLEdBQ3BDLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyxnQ0FBZ0MsR0FDakMsTUFBTSwrQkFBK0IsQ0FBQztBQVF2QyxNQUFNLG9CQUFvQixHQUFpQjtJQUN6QyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTNELENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTNELENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFMUQsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFNUQsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDM0QsQ0FBQztBQUVGLE1BQU0sT0FBTyxtQkFBbUI7SUFDdkIsTUFBTSxDQUFDLE9BQW1DO1FBQy9DLE1BQU0sRUFBRSxNQUFNLEVBQUUs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QUFhLEVBQUUsS0FBYTtRQUMxRCxPQUFPLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3hELE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ3BELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2ludCwgUG9pbnRFeHRlbnNpb25zIH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBFRkNvbm5lY3RhYmxlU2lkZSB9IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQge1xuICBDYWxjdWxhdGVDZW50ZXJCZXR3ZWVuUG9pbnRzSGFuZGxlcixcbiAgQ2FsY3VsYXRlQ2VudGVyQmV0d2VlblBvaW50c1JlcXVlc3QsXG59IGZyb20gJy4vY2FsY3VsYXRlLWNlbnRlci1iZXR3ZWVuLXBvaW50cyc7XG5pbXBvcnQge1xuICBDYWxjdWxhdGVDb25uZWN0aW9uQ2VudGVySGFuZGxlcixcbiAgQ2FsY3VsYXRlQ29ubmVjdGlvbkNlbnRlclJlcXVlc3QsXG59IGZyb20gJy4vY2FsY3VsYXRlLWNvbm5lY3Rpb24tY2VudGVyJztcbmltcG9ydCB7XG4gIElGQ29ubmVjdGlvbkJ1aWxkZXIsXG4gIElGQ29ubmVjdGlvbkJ1aWxkZXJSZXF1ZXN0LFxuICBJRkNvbm5lY3Rpb25CdWlsZGVyUmVzcG9uc2UsXG59IGZyb20gJy4uLy4uL2YtY29ubmVjdGlvbi1idWlsZGVyJztcbmltcG9ydCB7IElNYXAgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuXG5jb25zdCBDT05ORUNUT1JfU0lERV9QT0lOVDogSU1hcDxJUG9pbnQ+ID0ge1xuICBbRUZDb25uZWN0YWJsZVNpZGUuTEVGVF06IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKC0xLCAwKSxcblxuICBbRUZDb25uZWN0YWJsZVNpZGUuUklHSFRdOiBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgxLCAwKSxcblxuICBbRUZDb25uZWN0YWJsZVNpZGUuVE9QXTogUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoMCwgLTEpLFxuXG4gIFtFRkNvbm5lY3RhYmxlU2lkZS5CT1RUT01dOiBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgwLCAxKSxcblxuICBbRUZDb25uZWN0YWJsZVNpZGUuQVVUT106IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKDAsIDApLFxufTtcblxuZXhwb3J0IGNsYXNzIEZTZWdtZW50UGF0aEJ1aWxkZXIgaW1wbGVtZW50cyBJRkNvbm5lY3Rpb25CdWlsZGVyIHtcbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBJRkNvbm5lY3Rpb25CdWlsZGVyUmVxdWVzdCk6IElGQ29ubmVjdGlvbkJ1aWxkZXJSZXNwb25zZSB7XG4gICAgY29uc3QgeyBzb3VyY2UsIHNvdXJjZVNpZGUsIHRhcmdldCwgdGFyZ2V0U2lkZSB9ID0gcmVxdWVzdDtcblxuICAgIGNvbnN0IHsgcG9pbnRzLCBjZW50ZXIgfSA9IHRoaXMuX2dldFBhdGhQb2ludHMoXG4gICAgICBzb3VyY2UsXG4gICAgICBzb3VyY2VTaWRlLFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGFyZ2V0U2lkZSxcbiAgICAgIHJlcXVlc3Qub2Zmc2V0LFxuICAgICk7XG5cbiAgICBjb25zdCBwYXRoID0gdGhpcy5fYnVpbGRQYXRoKHBvaW50cywgcmVxdWVzdC5yYWRpdXMpO1xuXG4gICAgY29uc3QgcGVudWx0aW1hdGVQb2ludCA9IHBvaW50cy5sZW5ndGggPiAxID8gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAyXSA6IHNvdXJjZTtcbiAgICBjb25zdCBzZWNvbmRQb2ludCA9IHBvaW50cy5sZW5ndGggPiAxID8gcG9pbnRzWzFdIDogdGFyZ2V0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGgsXG4gICAgICBjb25uZWN0aW9uQ2VudGVyOiBjZW50ZXIsXG4gICAgICBwZW51bHRpbWF0ZVBvaW50LFxuICAgICAgc2Vjb25kUG9pbnQsXG4gICAgICBwb2ludHMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFBhdGhQb2ludHMoXG4gICAgc291cmNlOiBJUG9pbnQsXG4gICAgc291cmNlU2lkZTogRUZDb25uZWN0YWJsZVNpZGUsXG4gICAgdGFyZ2V0OiBJUG9pbnQsXG4gICAgdGFyZ2V0U2lkZTogRUZDb25uZWN0YWJsZVNpZGUsXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICk6IHsgcG9pbnRzOiBJUG9pbnRbXTsgY2VudGVyOiBJUG9pbnQgfSB7XG4gICAgY29uc3Qgc291cmNlRGlyZWN0aW9uID0gQ09OTkVDVE9SX1NJREVfUE9JTlRbc291cmNlU2lkZV07XG4gICAgY29uc3QgdGFyZ2V0RGlyZWN0aW9uID0gQ09OTkVDVE9SX1NJREVfUE9JTlRbdGFyZ2V0U2lkZV07XG5cbiAgICBjb25zdCBzb3VyY2VHYXA6IElQb2ludCA9IHtcbiAgICAgIHg6IHNvdXJjZS54ICsgc291cmNlRGlyZWN0aW9uLnggKiBvZmZzZXQsXG4gICAgICB5OiBzb3VyY2UueSArIHNvdXJjZURpcmVjdGlvbi55ICogb2Zmc2V0LFxuICAgIH07XG4gICAgY29uc3QgdGFyZ2V0R2FwOiBJUG9pbnQgPSB7XG4gICAgICB4OiB0YXJnZXQueCArIHRhcmdldERpcmVjdGlvbi54ICogb2Zmc2V0LFxuICAgICAgeTogdGFyZ2V0LnkgKyB0YXJnZXREaXJlY3Rpb24ueSAqIG9mZnNldCxcbiAgICB9O1xuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gdGhpcy5fZ2V0RGlyZWN0aW9uKHNvdXJjZUdhcCwgc291cmNlU2lkZSwgdGFyZ2V0R2FwKTtcbiAgICBjb25zdCBkaXJlY3Rpb25BY2Nlc3NvciA9IGRpcmVjdGlvbi54ICE9PSAwID8gJ3gnIDogJ3knO1xuICAgIGNvbnN0IGN1cnJlbnREaXJlY3Rpb24gPSBkaXJlY3Rpb25bZGlyZWN0aW9uQWNjZXNzb3JdO1xuXG4gICAgbGV0IHBvaW50czogSVBvaW50W10gPSBbXTtcbiAgICBjb25zdCBzb3VyY2VHYXBPZmZzZXQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuICAgIGNvbnN0IHRhcmdldEdhcE9mZnNldCA9IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG5cbiAgICBjb25zdCBjZW50ZXJCZXR3ZWVuUG9pbnRzID0gbmV3IENhbGN1bGF0ZUNlbnRlckJldHdlZW5Qb2ludHNIYW5kbGVyKCkuaGFuZGxlKFxuICAgICAgbmV3IENhbGN1bGF0ZUNlbnRlckJldHdlZW5Qb2ludHNSZXF1ZXN0KHNvdXJjZSwgdGFyZ2V0KSxcbiAgICApO1xuXG4gICAgaWYgKHNvdXJjZURpcmVjdGlvbltkaXJlY3Rpb25BY2Nlc3Nvcl0gKiB0YXJnZXREaXJlY3Rpb25bZGlyZWN0aW9uQWNjZXNzb3JdID09PSAtMSkge1xuICAgICAgY29uc3QgdmVydGljYWxTcGxpdDogSVBvaW50W10gPSBbXG4gICAgICAgIHsgeDogY2VudGVyQmV0d2VlblBvaW50cy54LCB5OiBzb3VyY2VHYXAueSB9LFxuICAgICAgICB7IHg6IGNlbnRlckJldHdlZW5Qb2ludHMueCwgeTogdGFyZ2V0R2FwLnkgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBob3Jpem9udGFsU3BsaXQ6IElQb2ludFtdID0gW1xuICAgICAgICB7IHg6IHNvdXJjZUdhcC54LCB5OiBjZW50ZXJCZXR3ZWVuUG9pbnRzLnkgfSxcbiAgICAgICAgeyB4OiB0YXJnZXRHYXAueCwgeTogY2VudGVyQmV0d2VlblBvaW50cy55IH0sXG4gICAgICBdO1xuXG4gICAgICBpZiAoc291cmNlRGlyZWN0aW9uW2RpcmVjdGlvbkFjY2Vzc29yXSA9PT0gY3VycmVudERpcmVjdGlvbikge1xuICAgICAgICBwb2ludHMgPSBkaXJlY3Rpb25BY2Nlc3NvciA9PT0gJ3gnID8gdmVydGljYWxTcGxpdCA6IGhvcml6b250YWxTcGxpdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvaW50cyA9IGRpcmVjdGlvbkFjY2Vzc29yID09PSAneCcgPyBob3Jpem9udGFsU3BsaXQgOiB2ZXJ0aWNhbFNwbGl0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzb3VyY2VUYXJnZXQ6IElQb2ludFtdID0gW3sgeDogc291cmNlR2FwLngsIHk6IHRhcmdldEdhcC55IH1dO1xuICAgICAgY29uc3QgdGFyZ2V0U291cmNlOiBJUG9pbnRbXSA9IFt7IHg6IHRhcmdldEdhcC54LCB5OiBzb3VyY2VHYXAueSB9XTtcblxuICAgICAgaWYgKGRpcmVjdGlvbkFjY2Vzc29yID09PSAneCcpIHtcbiAgICAgICAgcG9pbnRzID0gc291cmNlRGlyZWN0aW9uLnggPT09IGN1cnJlbnREaXJlY3Rpb24gPyB0YXJnZXRTb3VyY2UgOiBzb3VyY2VUYXJnZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb2ludHMgPSBzb3VyY2VEaXJlY3Rpb24ueSA9PT0gY3VycmVudERpcmVjdGlvbiA/IHNvdXJjZVRhcmdldCA6IHRhcmdldFNvdXJjZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNvdXJjZVNpZGUgPT09IHRhcmdldFNpZGUpIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKHNvdXJjZVtkaXJlY3Rpb25BY2Nlc3Nvcl0gLSB0YXJnZXRbZGlyZWN0aW9uQWNjZXNzb3JdKTtcblxuICAgICAgICBpZiAoZGlmZiA8PSBvZmZzZXQpIHtcbiAgICAgICAgICBjb25zdCBnYXBPZmZzZXQgPSBNYXRoLm1pbihvZmZzZXQgLSAxLCBvZmZzZXQgLSBkaWZmKTtcbiAgICAgICAgICBpZiAoc291cmNlRGlyZWN0aW9uW2RpcmVjdGlvbkFjY2Vzc29yXSA9PT0gY3VycmVudERpcmVjdGlvbikge1xuICAgICAgICAgICAgc291cmNlR2FwT2Zmc2V0W2RpcmVjdGlvbkFjY2Vzc29yXSA9XG4gICAgICAgICAgICAgIChzb3VyY2VHYXBbZGlyZWN0aW9uQWNjZXNzb3JdID4gc291cmNlW2RpcmVjdGlvbkFjY2Vzc29yXSA/IC0xIDogMSkgKiBnYXBPZmZzZXQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhcmdldEdhcE9mZnNldFtkaXJlY3Rpb25BY2Nlc3Nvcl0gPVxuICAgICAgICAgICAgICAodGFyZ2V0R2FwW2RpcmVjdGlvbkFjY2Vzc29yXSA+IHRhcmdldFtkaXJlY3Rpb25BY2Nlc3Nvcl0gPyAtMSA6IDEpICogZ2FwT2Zmc2V0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc291cmNlU2lkZSAhPT0gdGFyZ2V0U2lkZSkge1xuICAgICAgICBjb25zdCBkaXJBY2Nlc3Nvck9wcG9zaXRlID0gZGlyZWN0aW9uQWNjZXNzb3IgPT09ICd4JyA/ICd5JyA6ICd4JztcbiAgICAgICAgY29uc3QgaXNTYW1lRGlyID1cbiAgICAgICAgICBzb3VyY2VEaXJlY3Rpb25bZGlyZWN0aW9uQWNjZXNzb3JdID09PSB0YXJnZXREaXJlY3Rpb25bZGlyQWNjZXNzb3JPcHBvc2l0ZV07XG4gICAgICAgIGNvbnN0IHNvdXJjZUd0VGFyZ2V0T3BwbyA9IHNvdXJjZUdhcFtkaXJBY2Nlc3Nvck9wcG9zaXRlXSA+IHRhcmdldEdhcFtkaXJBY2Nlc3Nvck9wcG9zaXRlXTtcbiAgICAgICAgY29uc3Qgc291cmNlTHRUYXJnZXRPcHBvID0gc291cmNlR2FwW2RpckFjY2Vzc29yT3Bwb3NpdGVdIDwgdGFyZ2V0R2FwW2RpckFjY2Vzc29yT3Bwb3NpdGVdO1xuICAgICAgICBjb25zdCBmbGlwU291cmNlVGFyZ2V0ID1cbiAgICAgICAgICAoc291cmNlRGlyZWN0aW9uW2RpcmVjdGlvbkFjY2Vzc29yXSA9PT0gMSAmJlxuICAgICAgICAgICAgKCghaXNTYW1lRGlyICYmIHNvdXJjZUd0VGFyZ2V0T3BwbykgfHwgKGlzU2FtZURpciAmJiBzb3VyY2VMdFRhcmdldE9wcG8pKSkgfHxcbiAgICAgICAgICAoc291cmNlRGlyZWN0aW9uW2RpcmVjdGlvbkFjY2Vzc29yXSAhPT0gMSAmJlxuICAgICAgICAgICAgKCghaXNTYW1lRGlyICYmIHNvdXJjZUx0VGFyZ2V0T3BwbykgfHwgKGlzU2FtZURpciAmJiBzb3VyY2VHdFRhcmdldE9wcG8pKSk7XG5cbiAgICAgICAgaWYgKGZsaXBTb3VyY2VUYXJnZXQpIHtcbiAgICAgICAgICBwb2ludHMgPSBkaXJlY3Rpb25BY2Nlc3NvciA9PT0gJ3gnID8gc291cmNlVGFyZ2V0IDogdGFyZ2V0U291cmNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aFBvaW50cyA9IFtcbiAgICAgIHNvdXJjZSxcbiAgICAgIHsgeDogc291cmNlR2FwLnggKyBzb3VyY2VHYXBPZmZzZXQueCwgeTogc291cmNlR2FwLnkgKyBzb3VyY2VHYXBPZmZzZXQueSB9LFxuICAgICAgLi4ucG9pbnRzLFxuICAgICAgeyB4OiB0YXJnZXRHYXAueCArIHRhcmdldEdhcE9mZnNldC54LCB5OiB0YXJnZXRHYXAueSArIHRhcmdldEdhcE9mZnNldC55IH0sXG4gICAgICB0YXJnZXQsXG4gICAgXTtcblxuICAgIGNvbnN0IGNlbnRlciA9IG5ldyBDYWxjdWxhdGVDb25uZWN0aW9uQ2VudGVySGFuZGxlcigpLmhhbmRsZShcbiAgICAgIG5ldyBDYWxjdWxhdGVDb25uZWN0aW9uQ2VudGVyUmVxdWVzdChwYXRoUG9pbnRzKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgcG9pbnRzOiBwYXRoUG9pbnRzLCBjZW50ZXIgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERpcmVjdGlvbihzb3VyY2U6IElQb2ludCwgc291cmNlU2lkZTogRUZDb25uZWN0YWJsZVNpZGUsIHRhcmdldDogSVBvaW50KTogSVBvaW50IHtcbiAgICBpZiAoc291cmNlU2lkZSA9PT0gRUZDb25uZWN0YWJsZVNpZGUuTEVGVCB8fCBzb3VyY2VTaWRlID09PSBFRkNvbm5lY3RhYmxlU2lkZS5SSUdIVCkge1xuICAgICAgcmV0dXJuIHNvdXJjZS54IDwgdGFyZ2V0LnhcbiAgICAgICAgPyBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgxLCAwKVxuICAgICAgICA6IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKC0xLCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc291cmNlLnkgPCB0YXJnZXQueVxuICAgICAgPyBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgwLCAxKVxuICAgICAgOiBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgwLCAtMSk7XG4gIH1cblxuICBwcml2YXRlIF9kaXN0YW5jZShhOiBJUG9pbnQsIGI6IElQb2ludCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhiLnggLSBhLngsIDIpICsgTWF0aC5wb3coYi55IC0gYS55LCAyKSk7XG4gIH1cblxuICBwcml2YXRlIF9idWlsZFBhdGgocG9pbnRzOiBJUG9pbnRbXSwgYm9yZGVyUmFkaXVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCBwYXRoID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICBsZXQgc2VnbWVudCA9ICcnO1xuXG4gICAgICBpZiAoaSA+IDAgJiYgaSA8IHBvaW50cy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHNlZ21lbnQgPSB0aGlzLl9nZXRCZW5kKHBvaW50c1tpIC0gMV0sIHAsIHBvaW50c1tpICsgMV0sIGJvcmRlclJhZGl1cyk7XG4gICAgICB9IGVsc2UgaWYgKGkgPT09IHBvaW50cy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHNlZ21lbnQgPSB0aGlzLl9idWlsZExhc3RMaW5lU2VnbWVudChpLCBwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZ21lbnQgPSB0aGlzLl9idWlsZE1vdmVPckxpbmVTZWdtZW50KGksIHApO1xuICAgICAgfVxuICAgICAgcGF0aCArPSBzZWdtZW50O1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QmVuZChhOiBJUG9pbnQsIGI6IElQb2ludCwgYzogSVBvaW50LCBzaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJlbmRTaXplID0gTWF0aC5taW4odGhpcy5fZGlzdGFuY2UoYSwgYikgLyAyLCB0aGlzLl9kaXN0YW5jZShiLCBjKSAvIDIsIHNpemUpO1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gYjtcblxuICAgIGlmICgoYS54ID09PSB4ICYmIHggPT09IGMueCkgfHwgKGEueSA9PT0geSAmJiB5ID09PSBjLnkpKSB7XG4gICAgICByZXR1cm4gYEwke3h9ICR7eX1gO1xuICAgIH1cblxuICAgIGlmIChhLnkgPT09IHkpIHtcbiAgICAgIGNvbnN0IHhEaXIgPSBhLnggPCBjLnggPyAtMSA6IDE7XG4gICAgICBjb25zdCB5RGlyID0gYS55IDwgYy55ID8gMSA6IC0xO1xuXG4gICAgICByZXR1cm4gYEwgJHt4ICsgYmVuZFNpemUgKiB4RGlyfSwke3l9USAke3h9LCR7eX0gJHt4fSwke3kgKyBiZW5kU2l6ZSAqIHlEaXJ9YDtcbiAgICB9XG5cbiAgICBjb25zdCB4RGlyID0gYS54IDwgYy54ID8gMSA6IC0xO1xuICAgIGNvbnN0IHlEaXIgPSBhLnkgPCBjLnkgPyAtMSA6IDE7XG5cbiAgICByZXR1cm4gYEwgJHt4fSwke3kgKyBiZW5kU2l6ZSAqIHlEaXJ9USAke3h9LCR7eX0gJHt4ICsgYmVuZFNpemUgKiB4RGlyfSwke3l9YDtcbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkTW92ZU9yTGluZVNlZ21lbnQoaW5kZXg6IG51bWJlciwgcG9pbnQ6IElQb2ludCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2luZGV4ID09PSAwID8gJ00nIDogJ0wnfSR7cG9pbnQueH0gJHtwb2ludC55fWA7XG4gIH1cblxuICBwcml2YXRlIF9idWlsZExhc3RMaW5lU2VnbWVudChpbmRleDogbnVtYmVyLCBwb2ludDogSVBvaW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEwke3BvaW50LnggKyAwLjAwMDJ9ICR7cG9pbnQueSArIDAuMDAwMn1gO1xuICB9XG59XG4iXX0=
@@ -1,10 +1,16 @@
1
- import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';
1
+ import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, } from './calculate-connection-center';
2
2
  export class FStraightPathBuilder {
3
3
  handle(request) {
4
4
  const { source, target } = request;
5
5
  const path = `M ${source.x} ${source.y} L ${target.x + 0.0002} ${target.y + 0.0002}`;
6
6
  const connectionCenter = new CalculateConnectionCenterHandler().handle(new CalculateConnectionCenterRequest([source, target]));
7
- return { path, connectionCenter, penultimatePoint: source, secondPoint: target };
7
+ return {
8
+ path,
9
+ connectionCenter,
10
+ penultimatePoint: source,
11
+ secondPoint: target,
12
+ points: [source, connectionCenter, target],
13
+ };
8
14
  }
9
15
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1zdHJhaWdodC5wYXRoLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9jb21tb24vZG9tYWluL2Ytc3RyYWlnaHQucGF0aC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBRSxnQ0FBZ0MsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBT2pILE1BQU0sT0FBTyxvQkFBb0I7SUFFeEIsTUFBTSxDQUFDLE9BQW1DO1FBQy9DLE1BQU0sRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLEdBQUcsT0FBTyxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFFckYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGdDQUFnQyxFQUFFLENBQUMsTUFBTSxDQUNwRSxJQUFJLGdDQUFnQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQ3ZELENBQUM7UUFFRixPQUFPLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYWxjdWxhdGVDb25uZWN0aW9uQ2VudGVySGFuZGxlciwgQ2FsY3VsYXRlQ29ubmVjdGlvbkNlbnRlclJlcXVlc3R9IGZyb20gJy4vY2FsY3VsYXRlLWNvbm5lY3Rpb24tY2VudGVyJztcbmltcG9ydCB7XG4gIElGQ29ubmVjdGlvbkJ1aWxkZXIsXG4gIElGQ29ubmVjdGlvbkJ1aWxkZXJSZXF1ZXN0LFxuICBJRkNvbm5lY3Rpb25CdWlsZGVyUmVzcG9uc2Vcbn0gZnJvbSAnLi4vLi4vZi1jb25uZWN0aW9uLWJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgRlN0cmFpZ2h0UGF0aEJ1aWxkZXIgaW1wbGVtZW50cyBJRkNvbm5lY3Rpb25CdWlsZGVyIHtcblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IElGQ29ubmVjdGlvbkJ1aWxkZXJSZXF1ZXN0KTogSUZDb25uZWN0aW9uQnVpbGRlclJlc3BvbnNlIHtcbiAgICBjb25zdCB7c291cmNlLCB0YXJnZXR9ID0gcmVxdWVzdDtcbiAgICBjb25zdCBwYXRoID0gYE0gJHtzb3VyY2UueH0gJHtzb3VyY2UueX0gTCAke3RhcmdldC54ICsgMC4wMDAyfSAke3RhcmdldC55ICsgMC4wMDAyfWA7XG5cbiAgICBjb25zdCBjb25uZWN0aW9uQ2VudGVyID0gbmV3IENhbGN1bGF0ZUNvbm5lY3Rpb25DZW50ZXJIYW5kbGVyKCkuaGFuZGxlKFxuICAgICAgbmV3IENhbGN1bGF0ZUNvbm5lY3Rpb25DZW50ZXJSZXF1ZXN0KFtzb3VyY2UsIHRhcmdldF0pXG4gICAgKTtcblxuICAgIHJldHVybiB7cGF0aCwgY29ubmVjdGlvbkNlbnRlciwgcGVudWx0aW1hdGVQb2ludDogc291cmNlLCBzZWNvbmRQb2ludDogdGFyZ2V0fTtcbiAgfVxufVxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1zdHJhaWdodC5wYXRoLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9jb21tb24vZG9tYWluL2Ytc3RyYWlnaHQucGF0aC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEdBQ2pDLE1BQU0sK0JBQStCLENBQUM7QUFPdkMsTUFBTSxPQUFPLG9CQUFvQjtJQUN4QixNQUFNLENBQUMsT0FBbUM7UUFDL0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDbkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUVyRixNQUFNLGdCQUFnQixHQUFHLElBQUksZ0NBQWdDLEVBQUUsQ0FBQyxNQUFNLENBQ3BFLElBQUksZ0NBQWdDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FDdkQsQ0FBQztRQUVGLE9BQU87WUFDTCxJQUFJO1lBQ0osZ0JBQWdCO1lBQ2hCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsV0FBVyxFQUFFLE1BQU07WUFDbkIsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2FsY3VsYXRlQ29ubmVjdGlvbkNlbnRlckhhbmRsZXIsXG4gIENhbGN1bGF0ZUNvbm5lY3Rpb25DZW50ZXJSZXF1ZXN0LFxufSBmcm9tICcuL2NhbGN1bGF0ZS1jb25uZWN0aW9uLWNlbnRlcic7XG5pbXBvcnQge1xuICBJRkNvbm5lY3Rpb25CdWlsZGVyLFxuICBJRkNvbm5lY3Rpb25CdWlsZGVyUmVxdWVzdCxcbiAgSUZDb25uZWN0aW9uQnVpbGRlclJlc3BvbnNlLFxufSBmcm9tICcuLi8uLi9mLWNvbm5lY3Rpb24tYnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBGU3RyYWlnaHRQYXRoQnVpbGRlciBpbXBsZW1lbnRzIElGQ29ubmVjdGlvbkJ1aWxkZXIge1xuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IElGQ29ubmVjdGlvbkJ1aWxkZXJSZXF1ZXN0KTogSUZDb25uZWN0aW9uQnVpbGRlclJlc3BvbnNlIHtcbiAgICBjb25zdCB7IHNvdXJjZSwgdGFyZ2V0IH0gPSByZXF1ZXN0O1xuICAgIGNvbnN0IHBhdGggPSBgTSAke3NvdXJjZS54fSAke3NvdXJjZS55fSBMICR7dGFyZ2V0LnggKyAwLjAwMDJ9ICR7dGFyZ2V0LnkgKyAwLjAwMDJ9YDtcblxuICAgIGNvbnN0IGNvbm5lY3Rpb25DZW50ZXIgPSBuZXcgQ2FsY3VsYXRlQ29ubmVjdGlvbkNlbnRlckhhbmRsZXIoKS5oYW5kbGUoXG4gICAgICBuZXcgQ2FsY3VsYXRlQ29ubmVjdGlvbkNlbnRlclJlcXVlc3QoW3NvdXJjZSwgdGFyZ2V0XSksXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXRoLFxuICAgICAgY29ubmVjdGlvbkNlbnRlcixcbiAgICAgIHBlbnVsdGltYXRlUG9pbnQ6IHNvdXJjZSxcbiAgICAgIHNlY29uZFBvaW50OiB0YXJnZXQsXG4gICAgICBwb2ludHM6IFtzb3VyY2UsIGNvbm5lY3Rpb25DZW50ZXIsIHRhcmdldF0sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,14 +1,15 @@
1
- import { contentChildren, Directive, input, signal, viewChild } from '@angular/core';
1
+ import { contentChildren, Directive, ElementRef, inject, input, signal, viewChild, } from '@angular/core';
2
2
  import { LineExtensions, PointExtensions } from '@foblex/2d';
3
3
  import { CONNECTION_PATH } from './f-path';
4
4
  import { CONNECTION_GRADIENT } from './f-gradient';
5
- import { FConnectionDragHandleEndComponent, FConnectionDragHandleStartComponent } from './f-drag-handle';
5
+ import { FConnectionDragHandleEndComponent, FConnectionDragHandleStartComponent, } from './f-drag-handle';
6
6
  import { FConnectionSelectionComponent } from './f-selection';
7
7
  import { CONNECTION_TEXT } from './f-connection-text';
8
- import { mixinChangeSelection, mixinChangeVisibility } from '../../mixins';
9
- import { FConnectionCenterDirective } from "../f-connection-center";
8
+ import { FConnectionFactory } from '../f-connection-builder';
9
+ import { mixinChangeSelection, mixinChangeVisibility, } from '../../mixins';
10
+ import { FConnectionCenterDirective } from '../f-connection-center';
11
+ import { ConnectionContentLayoutEngine, FConnectionContent, } from '../f-connection-content';
10
12
  import * as i0 from "@angular/core";
11
- import * as i1 from "../f-connection-builder";
12
13
  const MIXIN_BASE = mixinChangeSelection(mixinChangeVisibility(class {
13
14
  hostElement;
14
15
  constructor(hostElement) {
@@ -16,7 +17,7 @@ const MIXIN_BASE = mixinChangeSelection(mixinChangeVisibility(class {
16
17
  }
17
18
  }));
18
19
  export class FConnectionBase extends MIXIN_BASE {
19
- cFactory;
20
+ _connectionFactory = inject(FConnectionFactory);
20
21
  fStartColor = input('black');
21
22
  fEndColor = input('black');
22
23
  path = '';
@@ -32,12 +33,16 @@ export class FConnectionBase extends MIXIN_BASE {
32
33
  fSelection = viewChild.required(FConnectionSelectionComponent);
33
34
  fTextComponent = viewChild.required(CONNECTION_TEXT);
34
35
  fConnectionCenter = viewChild('fConnectionCenter');
35
- fConnectionCenters = contentChildren(FConnectionCenterDirective, { descendants: true });
36
- penultimatePoint = PointExtensions.initialize();
37
- secondPoint = PointExtensions.initialize();
38
- constructor(elementReference, cFactory) {
39
- super(elementReference.nativeElement);
40
- this.cFactory = cFactory;
36
+ fConnectionCenters = contentChildren(FConnectionCenterDirective, {
37
+ descendants: true,
38
+ });
39
+ fConnectionContents = contentChildren(FConnectionContent, {
40
+ descendants: true,
41
+ });
42
+ _penultimatePoint = PointExtensions.initialize();
43
+ _secondPoint = PointExtensions.initialize();
44
+ constructor() {
45
+ super(inject((ElementRef)).nativeElement);
41
46
  }
42
47
  initialize() {
43
48
  this.fPath().initialize();
@@ -49,22 +54,26 @@ export class FConnectionBase extends MIXIN_BASE {
49
54
  }
50
55
  setLine({ point1, point2 }, sourceSide, targetSide) {
51
56
  this.line = LineExtensions.initialize(point1, point2);
52
- const pathResult = this.getPathResult(point1, sourceSide, point2, targetSide);
57
+ const pathResult = this._getPathResult(point1, sourceSide, point2, targetSide);
53
58
  this.path = pathResult.path;
54
- this.penultimatePoint = pathResult.penultimatePoint || point1;
55
- this.secondPoint = pathResult.secondPoint || point2;
56
- this.fConnectionCenter()?.nativeElement?.setAttribute('style', this.getTransform(pathResult.connectionCenter));
59
+ this._penultimatePoint = pathResult.penultimatePoint || point1;
60
+ this._secondPoint = pathResult.secondPoint || point2;
61
+ new ConnectionContentLayoutEngine().layout(this.line, pathResult, this._contents());
62
+ this.fConnectionCenter()?.nativeElement?.setAttribute('style', this._createTransformString(pathResult.connectionCenter));
57
63
  }
58
- getPathResult(source, sourceSide, target, targetSide) {
64
+ _contents() {
65
+ return Array.from(this.fConnectionContents()?.values() ?? []);
66
+ }
67
+ _getPathResult(source, sourceSide, target, targetSide) {
59
68
  const radius = this.fRadius > 0 ? this.fRadius : 0;
60
69
  const offset = this.fOffset > 0 ? this.fOffset : 1;
61
- return this.cFactory.handle({
70
+ return this._connectionFactory.handle({
62
71
  type: this.fType,
63
- payload: { source, sourceSide, target, targetSide, radius, offset }
72
+ payload: { source, sourceSide, target, targetSide, radius, offset },
64
73
  });
65
74
  }
66
- getTransform(position) {
67
- return `position: absolute; pointerEvents: all; transform: translate(-50%, -50%); left: ${position.x}px; top: ${position.y}px`;
75
+ _createTransformString(position, rotate = 0) {
76
+ return `position: fixed; pointer-events: all; transform: translate(-50%, -50%) rotate(${rotate}deg); left: ${position.x}px; top: ${position.y}px`;
68
77
  }
69
78
  markChildrenAsSelected() {
70
79
  this.fPath().select();
@@ -76,14 +85,14 @@ export class FConnectionBase extends MIXIN_BASE {
76
85
  this.fPath().setPath(this.path);
77
86
  this.fSelection().setPath(this.path);
78
87
  this.fGradient().redraw(this.line);
79
- this.fDragHandleEnd().redraw(this.penultimatePoint, this.line.point2);
80
- this.fDragHandleStart()?.redraw(this.secondPoint, this.line.point1);
88
+ this.fDragHandleEnd().redraw(this._penultimatePoint, this.line.point2);
89
+ this.fDragHandleStart()?.redraw(this._secondPoint, this.line.point1);
81
90
  this.fTextComponent().redraw(this.line);
82
91
  }
83
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, deps: [{ token: i0.ElementRef }, { token: i1.FConnectionFactory }], target: i0.ɵɵFactoryTarget.Directive });
84
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: FConnectionBase, inputs: { fStartColor: { classPropertyName: "fStartColor", publicName: "fStartColor", isSignal: true, isRequired: false, transformFunction: null }, fEndColor: { classPropertyName: "fEndColor", publicName: "fEndColor", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "fConnectionCenters", predicate: FConnectionCenterDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "fDefs", first: true, predicate: ["defs"], descendants: true, isSignal: true }, { propertyName: "fPath", first: true, predicate: CONNECTION_PATH, descendants: true, isSignal: true }, { propertyName: "fGradient", first: true, predicate: CONNECTION_GRADIENT, descendants: true, isSignal: true }, { propertyName: "fDragHandleStart", first: true, predicate: FConnectionDragHandleStartComponent, descendants: true, isSignal: true }, { propertyName: "fDragHandleEnd", first: true, predicate: FConnectionDragHandleEndComponent, descendants: true, isSignal: true }, { propertyName: "fSelection", first: true, predicate: FConnectionSelectionComponent, descendants: true, isSignal: true }, { propertyName: "fTextComponent", first: true, predicate: CONNECTION_TEXT, descendants: true, isSignal: true }, { propertyName: "fConnectionCenter", first: true, predicate: ["fConnectionCenter"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
92
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
93
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: FConnectionBase, inputs: { fStartColor: { classPropertyName: "fStartColor", publicName: "fStartColor", isSignal: true, isRequired: false, transformFunction: null }, fEndColor: { classPropertyName: "fEndColor", publicName: "fEndColor", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "fConnectionCenters", predicate: FConnectionCenterDirective, descendants: true, isSignal: true }, { propertyName: "fConnectionContents", predicate: FConnectionContent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "fDefs", first: true, predicate: ["defs"], descendants: true, isSignal: true }, { propertyName: "fPath", first: true, predicate: CONNECTION_PATH, descendants: true, isSignal: true }, { propertyName: "fGradient", first: true, predicate: CONNECTION_GRADIENT, descendants: true, isSignal: true }, { propertyName: "fDragHandleStart", first: true, predicate: FConnectionDragHandleStartComponent, descendants: true, isSignal: true }, { propertyName: "fDragHandleEnd", first: true, predicate: FConnectionDragHandleEndComponent, descendants: true, isSignal: true }, { propertyName: "fSelection", first: true, predicate: FConnectionSelectionComponent, descendants: true, isSignal: true }, { propertyName: "fTextComponent", first: true, predicate: CONNECTION_TEXT, descendants: true, isSignal: true }, { propertyName: "fConnectionCenter", first: true, predicate: ["fConnectionCenter"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
85
94
  }
86
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, decorators: [{
87
96
  type: Directive
88
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FConnectionFactory }] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9jb21tb24vZi1jb25uZWN0aW9uLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGVBQWUsRUFDZixTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixjQUFjLEVBQUUsZUFBZSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBTTFFLE9BQU8sRUFBQyxlQUFlLEVBQWtCLE1BQU0sVUFBVSxDQUFDO0FBQzFELE9BQU8sRUFBQyxtQkFBbUIsRUFBc0IsTUFBTSxjQUFjLENBQUM7QUFDdEUsT0FBTyxFQUFDLGlDQUFpQyxFQUFFLG1DQUFtQyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBQyxlQUFlLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFJckUsT0FBTyxFQUVMLG9CQUFvQixFQUFFLHFCQUFxQixFQUM1QyxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRWxFLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUNyQyxxQkFBcUIsQ0FDbkI7SUFFVztJQURULFlBQ1MsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFFakMsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUFDO0FBR1IsTUFBTSxPQUFnQixlQUFnQixTQUFRLFVBQVU7SUErRDVDO0lBdkRNLFdBQVcsR0FBRyxLQUFLLENBQVMsT0FBTyxDQUFDLENBQUM7SUFFckMsU0FBUyxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztJQVU1QyxJQUFJLEdBQVcs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Q3BFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7d0dBckhtQixlQUFlOzRGQUFmLGVBQWUsdVZBd0RrQiwwQkFBMEIsdU1BbEJuQixlQUFlLDRGQUVQLG1CQUFtQixtR0FFMUMsbUNBQW1DLGlHQUU1QixpQ0FBaUMsNkZBRXJDLDZCQUE2QixpR0FFUixlQUFlOzs0RkFoRGhFLGVBQWU7a0JBRHBDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBib29sZWFuQXR0cmlidXRlLFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbiAgU2lnbmFsLFxuICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lMaW5lLCBJUG9pbnQsIExpbmVFeHRlbnNpb25zLCBQb2ludEV4dGVuc2lvbnN9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHtFRkNvbm5lY3Rpb25CZWhhdmlvcn0gZnJvbSAnLi9lLWYtY29ubmVjdGlvbi1iZWhhdmlvcic7XG5pbXBvcnQge0VGQ29ubmVjdGlvblR5cGV9IGZyb20gJy4vZS1mLWNvbm5lY3Rpb24tdHlwZSc7XG5pbXBvcnQge0lIYXNDb25uZWN0aW9uQ29sb3J9IGZyb20gJy4vaS1oYXMtY29ubmVjdGlvbi1jb2xvcic7XG5pbXBvcnQge0lIYXNDb25uZWN0aW9uRnJvbVRvfSBmcm9tICcuL2ktaGFzLWNvbm5lY3Rpb24tZnJvbS10byc7XG5pbXBvcnQge0lIYXNDb25uZWN0aW9uVGV4dH0gZnJvbSAnLi9pLWhhcy1jb25uZWN0aW9uLXRleHQnO1xuaW1wb3J0IHtDT05ORUNUSU9OX1BBVEgsIElDb25uZWN0aW9uUGF0aH0gZnJvbSAnLi9mLXBhdGgnO1xuaW1wb3J0IHtDT05ORUNUSU9OX0dSQURJRU5ULCBJQ29ubmVjdGlvbkdyYWRpZW50fSBmcm9tICcuL2YtZ3JhZGllbnQnO1xuaW1wb3J0IHtGQ29ubmVjdGlvbkRyYWdIYW5kbGVFbmRDb21wb25lbnQsIEZDb25uZWN0aW9uRHJhZ0hhbmRsZVN0YXJ0Q29tcG9uZW50fSBmcm9tICcuL2YtZHJhZy1oYW5kbGUnO1xuaW1wb3J0IHtGQ29ubmVjdGlvblNlbGVjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi9mLXNlbGVjdGlvbic7XG5pbXBvcnQge0NPTk5FQ1RJT05fVEVYVCwgSUNvbm5lY3Rpb25UZXh0fSBmcm9tICcuL2YtY29ubmVjdGlvbi10ZXh0JztcbmltcG9ydCB7RUZDb25uZWN0YWJsZVNpZGV9IGZyb20gJy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQge0ZDb25uZWN0aW9uRmFjdG9yeX0gZnJvbSAnLi4vZi1jb25uZWN0aW9uLWJ1aWxkZXInO1xuaW1wb3J0IHtJSGFzSG9zdEVsZW1lbnR9IGZyb20gJy4uLy4uL2ktaGFzLWhvc3QtZWxlbWVudCc7XG5pbXBvcnQge1xuICBJU2VsZWN0YWJsZSwgSUNhbkNoYW5nZVZpc2liaWxpdHksXG4gIG1peGluQ2hhbmdlU2VsZWN0aW9uLCBtaXhpbkNoYW5nZVZpc2liaWxpdHlcbn0gZnJvbSAnLi4vLi4vbWl4aW5zJztcbmltcG9ydCB7RkNvbm5lY3Rpb25DZW50ZXJEaXJlY3RpdmV9IGZyb20gXCIuLi9mLWNvbm5lY3Rpb24tY2VudGVyXCI7XG5cbmNvbnN0IE1JWElOX0JBU0UgPSBtaXhpbkNoYW5nZVNlbGVjdGlvbihcbiAgbWl4aW5DaGFuZ2VWaXNpYmlsaXR5KFxuICAgIGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50XG4gICAgICApIHtcbiAgICAgIH1cbiAgICB9KSk7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZDb25uZWN0aW9uQmFzZSBleHRlbmRzIE1JWElOX0JBU0VcbiAgaW1wbGVtZW50cyBJSGFzSG9zdEVsZW1lbnQsIElTZWxlY3RhYmxlLFxuICAgIElDYW5DaGFuZ2VWaXNpYmlsaXR5LFxuICAgIElIYXNDb25uZWN0aW9uQ29sb3IsXG4gICAgSUhhc0Nvbm5lY3Rpb25Gcm9tVG8sIElIYXNDb25uZWN0aW9uVGV4dCB7XG5cbiAgcHVibGljIGFic3RyYWN0IG92ZXJyaWRlIGZJZDogU2lnbmFsPHN0cmluZz47XG5cbiAgcHVibGljIHJlYWRvbmx5IGZTdGFydENvbG9yID0gaW5wdXQ8c3RyaW5nPignYmxhY2snKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZkVuZENvbG9yID0gaW5wdXQ8c3RyaW5nPignYmxhY2snKTtcblxuICBwdWJsaWMgYWJzdHJhY3QgZk91dHB1dElkOiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IGZJbnB1dElkOiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IGZSYWRpdXM6IG51bWJlcjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZk9mZnNldDogbnVtYmVyO1xuXG4gIHB1YmxpYyBwYXRoOiBzdHJpbmcgPSAnJztcblxuICBwdWJsaWMgbGluZTogSUxpbmUgPSBMaW5lRXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZSZWFzc2lnbmFibGVTdGFydDogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZkRyYWdnaW5nRGlzYWJsZWQ6IFNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGZTZWxlY3Rpb25EaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICBwdWJsaWMgYWJzdHJhY3QgYm91bmRpbmdFbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQ7XG5cbiAgcHVibGljIGFic3RyYWN0IGZCZWhhdmlvcjogRUZDb25uZWN0aW9uQmVoYXZpb3I7XG5cbiAgcHVibGljIGFic3RyYWN0IGZUeXBlOiBFRkNvbm5lY3Rpb25UeXBlIHwgc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBmRGVmcyA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFNWR0RlZnNFbGVtZW50Pj4oJ2RlZnMnKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZlBhdGggPSB2aWV3Q2hpbGQucmVxdWlyZWQ8SUNvbm5lY3Rpb25QYXRoPihDT05ORUNUSU9OX1BBVEgpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmR3JhZGllbnQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8SUNvbm5lY3Rpb25HcmFkaWVudD4oQ09OTkVDVElPTl9HUkFESUVOVCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZEcmFnSGFuZGxlU3RhcnQgPSB2aWV3Q2hpbGQoRkNvbm5lY3Rpb25EcmFnSGFuZGxlU3RhcnRDb21wb25lbnQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmRHJhZ0hhbmRsZUVuZCA9IHZpZXdDaGlsZC5yZXF1aXJlZChGQ29ubmVjdGlvbkRyYWdIYW5kbGVFbmRDb21wb25lbnQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmU2VsZWN0aW9uID0gdmlld0NoaWxkLnJlcXVpcmVkKEZDb25uZWN0aW9uU2VsZWN0aW9uQ29tcG9uZW50KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZlRleHRDb21wb25lbnQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8SUNvbm5lY3Rpb25UZXh0PihDT05ORUNUSU9OX1RFWFQpO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmVGV4dDogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmVGV4dFN0YXJ0T2Zmc2V0OiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZDb25uZWN0aW9uQ2VudGVyID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PignZkNvbm5lY3Rpb25DZW50ZXInKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZkNvbm5lY3Rpb25DZW50ZXJzID0gY29udGVudENoaWxkcmVuKEZDb25uZWN0aW9uQ2VudGVyRGlyZWN0aXZlLCB7ZGVzY2VuZGFudHM6IHRydWV9KTtcblxuICBwcml2YXRlIHBlbnVsdGltYXRlUG9pbnQ6IElQb2ludCA9IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG4gIHByaXZhdGUgc2Vjb25kUG9pbnQ6IElQb2ludCA9IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWZlcmVuY2U6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgY0ZhY3Rvcnk6IEZDb25uZWN0aW9uRmFjdG9yeVxuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy5mUGF0aCgpLmluaXRpYWxpemUoKTtcbiAgICB0aGlzLmZHcmFkaWVudCgpLmluaXRpYWxpemUoKTtcbiAgICB0aGlzLnJlZHJhdygpO1xuICB9XG5cbiAgcHVibGljIGlzQ29udGFpbnMoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmhvc3RFbGVtZW50LmZpcnN0Q2hpbGQ/Lmxhc3RDaGlsZCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoZWxlbWVudCk7XG4gIH1cblxuICBwdWJsaWMgc2V0TGluZSh7cG9pbnQxLCBwb2ludDJ9OiBJTGluZSwgc291cmNlU2lkZTogRUZDb25uZWN0YWJsZVNpZGUsIHRhcmdldFNpZGU6IEVGQ29ubmVjdGFibGVTaWRlKTogdm9pZCB7XG4gICAgdGhpcy5saW5lID0gTGluZUV4dGVuc2lvbnMuaW5pdGlhbGl6ZShwb2ludDEsIHBvaW50Mik7XG4gICAgY29uc3QgcGF0aFJlc3VsdCA9IHRoaXMuZ2V0UGF0aFJlc3VsdChwb2ludDEsIHNvdXJjZVNpZGUsIHBvaW50MiwgdGFyZ2V0U2lkZSk7XG4gICAgdGhpcy5wYXRoID0gcGF0aFJlc3VsdC5wYXRoO1xuICAgIHRoaXMucGVudWx0aW1hdGVQb2ludCA9IHBhdGhSZXN1bHQucGVudWx0aW1hdGVQb2ludCB8fCBwb2ludDE7XG4gICAgdGhpcy5zZWNvbmRQb2ludCA9IHBhdGhSZXN1bHQuc2Vjb25kUG9pbnQgfHwgcG9pbnQyO1xuICAgIHRoaXMuZkNvbm5lY3Rpb25DZW50ZXIoKT8ubmF0aXZlRWxlbWVudD8uc2V0QXR0cmlidXRlKCdzdHlsZScsIHRoaXMuZ2V0VHJhbnNmb3JtKHBhdGhSZXN1bHQuY29ubmVjdGlvbkNlbnRlcikpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXRoUmVzdWx0KHNvdXJjZTogSVBvaW50LCBzb3VyY2VTaWRlOiBFRkNvbm5lY3RhYmxlU2lkZSwgdGFyZ2V0OiBJUG9pbnQsIHRhcmdldFNpZGU6IEVGQ29ubmVjdGFibGVTaWRlKTogYW55IHtcbiAgICBjb25zdCByYWRpdXMgPSB0aGlzLmZSYWRpdXMgPiAwID8gdGhpcy5mUmFkaXVzIDogMDtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmZPZmZzZXQgPiAwID8gdGhpcy5mT2Zmc2V0IDogMTtcbiAgICByZXR1cm4gdGhpcy5jRmFjdG9yeS5oYW5kbGUoXG4gICAgICB7XG4gICAgICAgIHR5cGU6IHRoaXMuZlR5cGUsXG4gICAgICAgIHBheWxvYWQ6IHtzb3VyY2UsIHNvdXJjZVNpZGUsIHRhcmdldCwgdGFyZ2V0U2lkZSwgcmFkaXVzLCBvZmZzZXR9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHJhbnNmb3JtKHBvc2l0aW9uOiBJUG9pbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBgcG9zaXRpb246IGFic29sdXRlOyBwb2ludGVyRXZlbnRzOiBhbGw7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOyBsZWZ0OiAke3Bvc2l0aW9uLnh9cHg7IHRvcDogJHtwb3NpdGlvbi55fXB4YDtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBtYXJrQ2hpbGRyZW5Bc1NlbGVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZlBhdGgoKS5zZWxlY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSB1bm1hcmtDaGlsZHJlbkFzU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mUGF0aCgpLmRlc2VsZWN0KCk7XG4gIH1cblxuICBwdWJsaWMgcmVkcmF3KCk6IHZvaWQge1xuICAgIHRoaXMuZlBhdGgoKS5zZXRQYXRoKHRoaXMucGF0aCk7XG4gICAgdGhpcy5mU2VsZWN0aW9uKCkuc2V0UGF0aCh0aGlzLnBhdGgpO1xuICAgIHRoaXMuZkdyYWRpZW50KCkucmVkcmF3KHRoaXMubGluZSk7XG4gICAgdGhpcy5mRHJhZ0hhbmRsZUVuZCgpLnJlZHJhdyh0aGlzLnBlbnVsdGltYXRlUG9pbnQsIHRoaXMubGluZS5wb2ludDIpO1xuICAgIHRoaXMuZkRyYWdIYW5kbGVTdGFydCgpPy5yZWRyYXcodGhpcy5zZWNvbmRQb2ludCwgdGhpcy5saW5lLnBvaW50MSk7XG4gICAgdGhpcy5mVGV4dENvbXBvbmVudCgpLnJlZHJhdyh0aGlzLmxpbmUpO1xuICB9XG59XG4iXX0=
97
+ }], ctorParameters: () => [] });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9jb21tb24vZi1jb25uZWN0aW9uLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWlCLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNNUUsT0FBTyxFQUFFLGVBQWUsRUFBbUIsTUFBTSxVQUFVLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUF1QixNQUFNLGNBQWMsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLG1DQUFtQyxHQUNwQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE9BQU8sRUFHTCxvQkFBb0IsRUFDcEIscUJBQXFCLEdBQ3RCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0Isa0JBQWtCLEdBQ25CLE1BQU0seUJBQXlCLENBQUM7O0FBRWpDLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUNyQyxxQkFBcUIsQ0FDbkI7SUFDcUI7SUFBbkIsWUFBbUIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0NBQ2hELENBQ0YsQ0FDRixDQUFDO0FBR0YsTUFB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QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQzt3R0FqSm1CLGVBQWU7NEZBQWYsZUFBZSx1VkE4RGtCLDBCQUEwQix5RkFJekIsa0JBQWtCLHVNQXRCWixlQUFlLDRGQUVQLG1CQUFtQixtR0FFMUMsbUNBQW1DLGlHQUU1QixpQ0FBaUMsNkZBRXJDLDZCQUE2QixpR0FFUixlQUFlOzs0RkF0RGhFLGVBQWU7a0JBRHBDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxuICBTaWduYWwsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTGluZSwgSVBvaW50LCBMaW5lRXh0ZW5zaW9ucywgUG9pbnRFeHRlbnNpb25zIH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBFRkNvbm5lY3Rpb25CZWhhdmlvciB9IGZyb20gJy4vZS1mLWNvbm5lY3Rpb24tYmVoYXZpb3InO1xuaW1wb3J0IHsgRUZDb25uZWN0aW9uVHlwZSB9IGZyb20gJy4vZS1mLWNvbm5lY3Rpb24tdHlwZSc7XG5pbXBvcnQgeyBJSGFzQ29ubmVjdGlvbkNvbG9yIH0gZnJvbSAnLi9pLWhhcy1jb25uZWN0aW9uLWNvbG9yJztcbmltcG9ydCB7IElIYXNDb25uZWN0aW9uRnJvbVRvIH0gZnJvbSAnLi9pLWhhcy1jb25uZWN0aW9uLWZyb20tdG8nO1xuaW1wb3J0IHsgSUhhc0Nvbm5lY3Rpb25UZXh0IH0gZnJvbSAnLi9pLWhhcy1jb25uZWN0aW9uLXRleHQnO1xuaW1wb3J0IHsgQ09OTkVDVElPTl9QQVRILCBJQ29ubmVjdGlvblBhdGggfSBmcm9tICcuL2YtcGF0aCc7XG5pbXBvcnQgeyBDT05ORUNUSU9OX0dSQURJRU5ULCBJQ29ubmVjdGlvbkdyYWRpZW50IH0gZnJvbSAnLi9mLWdyYWRpZW50JztcbmltcG9ydCB7XG4gIEZDb25uZWN0aW9uRHJhZ0hhbmRsZUVuZENvbXBvbmVudCxcbiAgRkNvbm5lY3Rpb25EcmFnSGFuZGxlU3RhcnRDb21wb25lbnQsXG59IGZyb20gJy4vZi1kcmFnLWhhbmRsZSc7XG5pbXBvcnQgeyBGQ29ubmVjdGlvblNlbGVjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZi1zZWxlY3Rpb24nO1xuaW1wb3J0IHsgQ09OTkVDVElPTl9URVhULCBJQ29ubmVjdGlvblRleHQgfSBmcm9tICcuL2YtY29ubmVjdGlvbi10ZXh0JztcbmltcG9ydCB7IEVGQ29ubmVjdGFibGVTaWRlIH0gZnJvbSAnLi4vLi4vZi1jb25uZWN0b3JzJztcbmltcG9ydCB7IEZDb25uZWN0aW9uRmFjdG9yeSB9IGZyb20gJy4uL2YtY29ubmVjdGlvbi1idWlsZGVyJztcbmltcG9ydCB7IElIYXNIb3N0RWxlbWVudCB9IGZyb20gJy4uLy4uL2ktaGFzLWhvc3QtZWxlbWVudCc7XG5pbXBvcnQge1xuICBJU2VsZWN0YWJsZSxcbiAgSUNhbkNoYW5nZVZpc2liaWxpdHksXG4gIG1peGluQ2hhbmdlU2VsZWN0aW9uLFxuICBtaXhpbkNoYW5nZVZpc2liaWxpdHksXG59IGZyb20gJy4uLy4uL21peGlucyc7XG5pbXBvcnQgeyBGQ29ubmVjdGlvbkNlbnRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2YtY29ubmVjdGlvbi1jZW50ZXInO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbkNvbnRlbnRMYXlvdXRFbmdpbmUsXG4gIEZDb25uZWN0aW9uQ29udGVudCxcbn0gZnJvbSAnLi4vZi1jb25uZWN0aW9uLWNvbnRlbnQnO1xuXG5jb25zdCBNSVhJTl9CQVNFID0gbWl4aW5DaGFuZ2VTZWxlY3Rpb24oXG4gIG1peGluQ2hhbmdlVmlzaWJpbGl0eShcbiAgICBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7fVxuICAgIH0sXG4gICksXG4pO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGQ29ubmVjdGlvbkJhc2VcbiAgZXh0ZW5kcyBNSVhJTl9CQVNFXG4gIGltcGxlbWVudHNcbiAgICBJSGFzSG9zdEVsZW1lbnQsXG4gICAgSVNlbGVjdGFibGUsXG4gICAgSUNhbkNoYW5nZVZpc2liaWxpdHksXG4gICAgSUhhc0Nvbm5lY3Rpb25Db2xvcixcbiAgICBJSGFzQ29ubmVjdGlvbkZyb21UbyxcbiAgICBJSGFzQ29ubmVjdGlvblRleHRcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfY29ubmVjdGlvbkZhY3RvcnkgPSBpbmplY3QoRkNvbm5lY3Rpb25GYWN0b3J5KTtcblxuICBwdWJsaWMgYWJzdHJhY3Qgb3ZlcnJpZGUgZklkOiBTaWduYWw8c3RyaW5nPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgZlN0YXJ0Q29sb3IgPSBpbnB1dDxzdHJpbmc+KCdibGFjaycpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmRW5kQ29sb3IgPSBpbnB1dDxzdHJpbmc+KCdibGFjaycpO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmT3V0cHV0SWQ6IFNpZ25hbDxzdHJpbmc+O1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmSW5wdXRJZDogU2lnbmFsPHN0cmluZz47XG5cbiAgcHVibGljIGFic3RyYWN0IGZSYWRpdXM6IG51bWJlcjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZk9mZnNldDogbnVtYmVyO1xuXG4gIHB1YmxpYyBwYXRoOiBzdHJpbmcgPSAnJztcblxuICBwdWJsaWMgbGluZSA9IExpbmVFeHRlbnNpb25zLmluaXRpYWxpemUoKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZlJlYXNzaWduYWJsZVN0YXJ0OiBTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmRHJhZ2dpbmdEaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgZlNlbGVjdGlvbkRpc2FibGVkOiBTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBib3VuZGluZ0VsZW1lbnQ6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudDtcblxuICBwdWJsaWMgYWJzdHJhY3QgZkJlaGF2aW9yOiBFRkNvbm5lY3Rpb25CZWhhdmlvcjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZlR5cGU6IEVGQ29ubmVjdGlvblR5cGUgfCBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZEZWZzID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8U1ZHRGVmc0VsZW1lbnQ+PignZGVmcycpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmUGF0aCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxJQ29ubmVjdGlvblBhdGg+KENPTk5FQ1RJT05fUEFUSCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZHcmFkaWVudCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxJQ29ubmVjdGlvbkdyYWRpZW50PihDT05ORUNUSU9OX0dSQURJRU5UKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZkRyYWdIYW5kbGVTdGFydCA9IHZpZXdDaGlsZChGQ29ubmVjdGlvbkRyYWdIYW5kbGVTdGFydENvbXBvbmVudCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZEcmFnSGFuZGxlRW5kID0gdmlld0NoaWxkLnJlcXVpcmVkKEZDb25uZWN0aW9uRHJhZ0hhbmRsZUVuZENvbXBvbmVudCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZTZWxlY3Rpb24gPSB2aWV3Q2hpbGQucmVxdWlyZWQoRkNvbm5lY3Rpb25TZWxlY3Rpb25Db21wb25lbnQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmVGV4dENvbXBvbmVudCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxJQ29ubmVjdGlvblRleHQ+KENPTk5FQ1RJT05fVEVYVCk7XG5cbiAgcHVibGljIGFic3RyYWN0IGZUZXh0OiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IGZUZXh0U3RhcnRPZmZzZXQ6IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgZkNvbm5lY3Rpb25DZW50ZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdmQ29ubmVjdGlvbkNlbnRlcicpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmQ29ubmVjdGlvbkNlbnRlcnMgPSBjb250ZW50Q2hpbGRyZW4oRkNvbm5lY3Rpb25DZW50ZXJEaXJlY3RpdmUsIHtcbiAgICBkZXNjZW5kYW50czogdHJ1ZSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZDb25uZWN0aW9uQ29udGVudHMgPSBjb250ZW50Q2hpbGRyZW4oRkNvbm5lY3Rpb25Db250ZW50LCB7XG4gICAgZGVzY2VuZGFudHM6IHRydWUsXG4gIH0pO1xuXG4gIHByaXZhdGUgX3BlbnVsdGltYXRlUG9pbnQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuICBwcml2YXRlIF9zZWNvbmRQb2ludCA9IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50PikubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZQYXRoKCkuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMuZkdyYWRpZW50KCkuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMucmVkcmF3KCk7XG4gIH1cblxuICBwdWJsaWMgaXNDb250YWlucyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuaG9zdEVsZW1lbnQuZmlyc3RDaGlsZD8ubGFzdENoaWxkIGFzIEhUTUxFbGVtZW50KS5jb250YWlucyhlbGVtZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMaW5lKFxuICAgIHsgcG9pbnQxLCBwb2ludDIgfTogSUxpbmUsXG4gICAgc291cmNlU2lkZTogRUZDb25uZWN0YWJsZVNpZGUsXG4gICAgdGFyZ2V0U2lkZTogRUZDb25uZWN0YWJsZVNpZGUsXG4gICk6IHZvaWQge1xuICAgIHRoaXMubGluZSA9IExpbmVFeHRlbnNpb25zLmluaXRpYWxpemUocG9pbnQxLCBwb2ludDIpO1xuICAgIGNvbnN0IHBhdGhSZXN1bHQgPSB0aGlzLl9nZXRQYXRoUmVzdWx0KHBvaW50MSwgc291cmNlU2lkZSwgcG9pbnQyLCB0YXJnZXRTaWRlKTtcblxuICAgIHRoaXMucGF0aCA9IHBhdGhSZXN1bHQucGF0aDtcbiAgICB0aGlzLl9wZW51bHRpbWF0ZVBvaW50ID0gcGF0aFJlc3VsdC5wZW51bHRpbWF0ZVBvaW50IHx8IHBvaW50MTtcbiAgICB0aGlzLl9zZWNvbmRQb2ludCA9IHBhdGhSZXN1bHQuc2Vjb25kUG9pbnQgfHwgcG9pbnQyO1xuXG4gICAgbmV3IENvbm5lY3Rpb25Db250ZW50TGF5b3V0RW5naW5lKCkubGF5b3V0KHRoaXMubGluZSwgcGF0aFJlc3VsdCwgdGhpcy5fY29udGVudHMoKSk7XG5cbiAgICB0aGlzLmZDb25uZWN0aW9uQ2VudGVyKCk/Lm5hdGl2ZUVsZW1lbnQ/LnNldEF0dHJpYnV0ZShcbiAgICAgICdzdHlsZScsXG4gICAgICB0aGlzLl9jcmVhdGVUcmFuc2Zvcm1TdHJpbmcocGF0aFJlc3VsdC5jb25uZWN0aW9uQ2VudGVyKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29udGVudHMoKTogRkNvbm5lY3Rpb25Db250ZW50W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZkNvbm5lY3Rpb25Db250ZW50cygpPy52YWx1ZXMoKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQYXRoUmVzdWx0KFxuICAgIHNvdXJjZTogSVBvaW50LFxuICAgIHNvdXJjZVNpZGU6IEVGQ29ubmVjdGFibGVTaWRlLFxuICAgIHRhcmdldDogSVBvaW50LFxuICAgIHRhcmdldFNpZGU6IEVGQ29ubmVjdGFibGVTaWRlLFxuICApIHtcbiAgICBjb25zdCByYWRpdXMgPSB0aGlzLmZSYWRpdXMgPiAwID8gdGhpcy5mUmFkaXVzIDogMDtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmZPZmZzZXQgPiAwID8gdGhpcy5mT2Zmc2V0IDogMTtcblxuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uRmFjdG9yeS5oYW5kbGUoe1xuICAgICAgdHlwZTogdGhpcy5mVHlwZSxcbiAgICAgIHBheWxvYWQ6IHsgc291cmNlLCBzb3VyY2VTaWRlLCB0YXJnZXQsIHRhcmdldFNpZGUsIHJhZGl1cywgb2Zmc2V0IH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVUcmFuc2Zvcm1TdHJpbmcocG9zaXRpb246IElQb2ludCwgcm90YXRlOiBudW1iZXIgPSAwKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBvc2l0aW9uOiBmaXhlZDsgcG9pbnRlci1ldmVudHM6IGFsbDsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKCR7cm90YXRlfWRlZyk7IGxlZnQ6ICR7cG9zaXRpb24ueH1weDsgdG9wOiAke3Bvc2l0aW9uLnl9cHhgO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG1hcmtDaGlsZHJlbkFzU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mUGF0aCgpLnNlbGVjdCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHVubWFya0NoaWxkcmVuQXNTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZQYXRoKCkuZGVzZWxlY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWRyYXcoKTogdm9pZCB7XG4gICAgdGhpcy5mUGF0aCgpLnNldFBhdGgodGhpcy5wYXRoKTtcbiAgICB0aGlzLmZTZWxlY3Rpb24oKS5zZXRQYXRoKHRoaXMucGF0aCk7XG4gICAgdGhpcy5mR3JhZGllbnQoKS5yZWRyYXcodGhpcy5saW5lKTtcbiAgICB0aGlzLmZEcmFnSGFuZGxlRW5kKCkucmVkcmF3KHRoaXMuX3BlbnVsdGltYXRlUG9pbnQsIHRoaXMubGluZS5wb2ludDIpO1xuICAgIHRoaXMuZkRyYWdIYW5kbGVTdGFydCgpPy5yZWRyYXcodGhpcy5fc2Vjb25kUG9pbnQsIHRoaXMubGluZS5wb2ludDEpO1xuICAgIHRoaXMuZlRleHRDb21wb25lbnQoKS5yZWRyYXcodGhpcy5saW5lKTtcbiAgfVxufVxuIl19
@@ -17,6 +17,6 @@ export const F_CONNECTION_IDENTIFIERS = {
17
17
  },
18
18
  linkToConnection(connectionId) {
19
19
  return `#${F_CONNECTION_IDENTIFIERS.connectionId(connectionId)}`;
20
- }
20
+ },
21
21
  };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWlkZW50aWZpZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vY29tbW9uL2YtY29ubmVjdGlvbi1pZGVudGlmaWVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFFdEMsTUFBTSxDQUFDLFlBQW9CO1FBQ3pCLE9BQU8scUJBQXFCLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELHdCQUF3QixDQUFDLFlBQW9CO1FBQzNDLE9BQU8scUJBQXFCLENBQUMsMkJBQTJCLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELFlBQVksQ0FBQyxZQUFvQjtRQUMvQixPQUFPLHFCQUFxQixDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsVUFBVSxDQUFDLFlBQW9CO1FBQzdCLE9BQU8scUJBQXFCLENBQUMsc0JBQXNCLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELGNBQWMsQ0FBQyxZQUFvQjtRQUNqQyxPQUFPLFFBQVMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBRSxHQUFHLENBQUM7SUFDeEUsQ0FBQztJQUNELGdCQUFnQixDQUFDLFlBQW9CO1FBQ25DLE9BQU8sSUFBSyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFFLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0NBQ0YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZURvbUVsZW1lbnRJZCB9IGZyb20gJ0Bmb2JsZXgvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgRl9DT05ORUNUSU9OX0lERU5USUZJRVJTID0ge1xuXG4gIHRleHRJZChjb25uZWN0aW9uSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZURvbUVsZW1lbnRJZCgnY29ubmVjdGlvbl90ZXh0XycgKyBjb25uZWN0aW9uSWQpO1xuICB9LFxuICBjb25uZWN0aW9uRm9yU2VsZWN0aW9uSWQoY29ubmVjdGlvbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBub3JtYWxpemVEb21FbGVtZW50SWQoJ2Nvbm5lY3Rpb25fZm9yX3NlbGVjdGlvbl8nICsgY29ubmVjdGlvbklkKTtcbiAgfSxcbiAgY29ubmVjdGlvbklkKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbm9ybWFsaXplRG9tRWxlbWVudElkKCdjb25uZWN0aW9uXycgKyBjb25uZWN0aW9uSWQpO1xuICB9LFxuICBncmFkaWVudElkKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbm9ybWFsaXplRG9tRWxlbWVudElkKCdjb25uZWN0aW9uX2dyYWRpZW50XycgKyBjb25uZWN0aW9uSWQpO1xuICB9LFxuICBsaW5rVG9HcmFkaWVudChjb25uZWN0aW9uSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGB1cmwoIyR7IEZfQ09OTkVDVElPTl9JREVOVElGSUVSUy5ncmFkaWVudElkKGNvbm5lY3Rpb25JZCkgfSlgO1xuICB9LFxuICBsaW5rVG9Db25uZWN0aW9uKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCMkeyBGX0NPTk5FQ1RJT05fSURFTlRJRklFUlMuY29ubmVjdGlvbklkKGNvbm5lY3Rpb25JZCkgfWA7XG4gIH1cbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWlkZW50aWZpZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vY29tbW9uL2YtY29ubmVjdGlvbi1pZGVudGlmaWVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFFdEMsTUFBTSxDQUFDLFlBQW9CO1FBQ3pCLE9BQU8scUJBQXFCLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELHdCQUF3QixDQUFDLFlBQW9CO1FBQzNDLE9BQU8scUJBQXFCLENBQUMsMkJBQTJCLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELFlBQVksQ0FBQyxZQUFvQjtRQUMvQixPQUFPLHFCQUFxQixDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsVUFBVSxDQUFDLFlBQW9CO1FBQzdCLE9BQU8scUJBQXFCLENBQUMsc0JBQXNCLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELGNBQWMsQ0FBQyxZQUFvQjtRQUNqQyxPQUFPLFFBQVMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBRSxHQUFHLENBQUM7SUFDeEUsQ0FBQztJQUNELGdCQUFnQixDQUFDLFlBQW9CO1FBQ25DLE9BQU8sSUFBSyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFFLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0NBQ0YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZURvbUVsZW1lbnRJZCB9IGZyb20gJ0Bmb2JsZXgvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgRl9DT05ORUNUSU9OX0lERU5USUZJRVJTID0ge1xuXG4gIHRleHRJZChjb25uZWN0aW9uSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZURvbUVsZW1lbnRJZCgnY29ubmVjdGlvbl90ZXh0XycgKyBjb25uZWN0aW9uSWQpO1xuICB9LFxuICBjb25uZWN0aW9uRm9yU2VsZWN0aW9uSWQoY29ubmVjdGlvbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBub3JtYWxpemVEb21FbGVtZW50SWQoJ2Nvbm5lY3Rpb25fZm9yX3NlbGVjdGlvbl8nICsgY29ubmVjdGlvbklkKTtcbiAgfSxcbiAgY29ubmVjdGlvbklkKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbm9ybWFsaXplRG9tRWxlbWVudElkKCdjb25uZWN0aW9uXycgKyBjb25uZWN0aW9uSWQpO1xuICB9LFxuICBncmFkaWVudElkKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbm9ybWFsaXplRG9tRWxlbWVudElkKCdjb25uZWN0aW9uX2dyYWRpZW50XycgKyBjb25uZWN0aW9uSWQpO1xuICB9LFxuICBsaW5rVG9HcmFkaWVudChjb25uZWN0aW9uSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGB1cmwoIyR7IEZfQ09OTkVDVElPTl9JREVOVElGSUVSUy5ncmFkaWVudElkKGNvbm5lY3Rpb25JZCkgfSlgO1xuICB9LFxuICBsaW5rVG9Db25uZWN0aW9uKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCMkeyBGX0NPTk5FQ1RJT05fSURFTlRJRklFUlMuY29ubmVjdGlvbklkKGNvbm5lY3Rpb25JZCkgfWA7XG4gIH0sXG59XG4iXX0=
@@ -1,50 +1,43 @@
1
- import { Directive, Inject } from '@angular/core';
1
+ import { Directive, ElementRef, inject } from '@angular/core';
2
2
  import { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';
3
3
  import { F_CONNECTION } from '../f-connection.injection-token';
4
+ import { BrowserService } from '@foblex/platform';
4
5
  import * as i0 from "@angular/core";
5
- import * as i1 from "@foblex/platform";
6
6
  export class FConnectionTextPathDirective {
7
- elementReference;
8
- base;
9
- fBrowser;
7
+ hostElement = inject((ElementRef)).nativeElement;
8
+ _base = inject(F_CONNECTION);
9
+ _browser = inject(BrowserService);
10
10
  get linkToConnection() {
11
- return F_CONNECTION_IDENTIFIERS.linkToConnection(this.base.fId() + this.base.fOutputId + this.base.fInputId);
12
- }
13
- get hostElement() {
14
- return this.elementReference.nativeElement;
11
+ return F_CONNECTION_IDENTIFIERS.linkToConnection(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
15
12
  }
16
13
  symbolWidth = 8;
17
14
  fontSize = '12px';
18
- constructor(elementReference, base, fBrowser) {
19
- this.elementReference = elementReference;
20
- this.base = base;
21
- this.fBrowser = fBrowser;
22
- }
23
15
  ngOnInit() {
24
16
  this.hostElement.setAttribute('text-anchor', `middle`);
25
- this.symbolWidth = this.getSymbolWidth(this.base.fText || '');
17
+ this.symbolWidth = this._getSymbolWidth(this._base.fText || '');
26
18
  }
27
19
  getBBox() {
28
20
  return this.hostElement.getBBox();
29
21
  }
30
22
  redraw() {
31
- this.hostElement.setAttribute('startOffset', this.base.fTextStartOffset || '50%');
23
+ this.hostElement.setAttribute('startOffset', this._base.fTextStartOffset || '50%');
32
24
  }
33
- getFontStyles(element) {
34
- const computedStyles = this.fBrowser.window.getComputedStyle(element);
25
+ _getFontStyles(element) {
26
+ const computedStyles = this._browser.window.getComputedStyle(element);
35
27
  return {
36
28
  fontSize: computedStyles.fontSize,
37
- fontFamily: computedStyles.fontFamily
29
+ fontFamily: computedStyles.fontFamily,
38
30
  };
39
31
  }
40
- getSymbolWidth(name) {
32
+ _getSymbolWidth(name) {
41
33
  const text = name || 'connection';
42
- const { fontFamily, fontSize } = this.getFontStyles(this.hostElement);
34
+ const { fontFamily, fontSize } = this._getFontStyles(this.hostElement);
43
35
  this.fontSize = fontSize || '12px';
44
- const canvas = this.fBrowser.document.createElement('canvas');
36
+ const canvas = this._browser.document.createElement('canvas');
45
37
  let context;
46
38
  try {
47
39
  context = canvas.getContext('2d');
40
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
48
41
  }
49
42
  catch (e) {
50
43
  context = null;
@@ -57,7 +50,7 @@ export class FConnectionTextPathDirective {
57
50
  const symbolWidth = metrics.width / text.length;
58
51
  return symbolWidth;
59
52
  }
60
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextPathDirective, deps: [{ token: i0.ElementRef }, { token: F_CONNECTION }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Directive });
53
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextPathDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
61
54
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionTextPathDirective, selector: "textPath[f-connection-text-path]", host: { properties: { "attr.href": "linkToConnection" } }, ngImport: i0 });
62
55
  }
63
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextPathDirective, decorators: [{
@@ -65,11 +58,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
65
58
  args: [{
66
59
  selector: 'textPath[f-connection-text-path]',
67
60
  host: {
68
- '[attr.href]': 'linkToConnection'
69
- }
61
+ '[attr.href]': 'linkToConnection',
62
+ },
70
63
  }]
71
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
72
- type: Inject,
73
- args: [F_CONNECTION]
74
- }] }, { type: i1.BrowserService }] });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLXRleHQtcGF0aC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9jb21tb24vZi1jb25uZWN0aW9uLXRleHQvZi1jb25uZWN0aW9uLXRleHQtcGF0aC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFZL0QsTUFBTSxPQUFPLDRCQUE0QjtJQWdCM0I7SUFDc0I7SUFDdEI7SUFoQlosSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyx3QkFBd0IsQ0FBQyxnQkFBZ0IsQ0FDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDM0QsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFFTSxXQUFXLEdBQVcsQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBVyxNQUFNLENBQUM7SUFFakMsWUFDWSxnQkFBZ0QsRUFDMUIsSUFBK0MsRUFDckUsUUFBd0I7UUFGeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFnQztRQUMxQixTQUFJLEdBQUosSUFBSSxDQUEyQztRQUNyRSxhQUFRLEdBQVIsUUFBUSxDQUFnQjtJQUVwQyxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU8sYUFBYSxDQUFDLE9BQTJCO1FBQy9DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RFLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVE7WUFDakMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxVQUFVO1NBQ3RDLENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLElBQVk7UUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLFlBQVksQ0FBQztRQUNsQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLE1BQU0sQ0FBQztRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsSUFBSSxPQUFPLENBQUM7UUFFWixJQUFJLENBQUM7WUFDSCxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUVELE9BQU8sQ0FBQyxJQUFJLEdBQUcsR0FBSSxRQUFTLElBQUssVUFBVyxFQUFFLENBQUM7UUFFL0MsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzt3R0FoRVUsNEJBQTRCLDRDQWlCM0IsWUFBWTs0RkFqQmIsNEJBQTRCOzs0RkFBNUIsNEJBQTRCO2tCQU54QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQ0FBa0M7b0JBQzVDLElBQUksRUFBRTt3QkFDSixhQUFhLEVBQUUsa0JBQWtCO3FCQUNsQztpQkFDRjs7MEJBa0JNLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZfQ09OTkVDVElPTl9JREVOVElGSUVSUyB9IGZyb20gJy4uL2YtY29ubmVjdGlvbi1pZGVudGlmaWVycyc7XG5pbXBvcnQgeyBGX0NPTk5FQ1RJT04gfSBmcm9tICcuLi9mLWNvbm5lY3Rpb24uaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IElIYXNDb25uZWN0aW9uVGV4dCB9IGZyb20gJy4uL2ktaGFzLWNvbm5lY3Rpb24tdGV4dCc7XG5pbXBvcnQgeyBJSGFzQ29ubmVjdGlvbkZyb21UbyB9IGZyb20gJy4uL2ktaGFzLWNvbm5lY3Rpb24tZnJvbS10byc7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJ0Bmb2JsZXgvcGxhdGZvcm0nO1xuaW1wb3J0IHsgSUhhc0hvc3RFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vaS1oYXMtaG9zdC1lbGVtZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAndGV4dFBhdGhbZi1jb25uZWN0aW9uLXRleHQtcGF0aF0nLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmhyZWZdJzogJ2xpbmtUb0Nvbm5lY3Rpb24nXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgRkNvbm5lY3Rpb25UZXh0UGF0aERpcmVjdGl2ZSBpbXBsZW1lbnRzIElIYXNIb3N0RWxlbWVudCwgT25Jbml0IHtcblxuICBwdWJsaWMgZ2V0IGxpbmtUb0Nvbm5lY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRl9DT05ORUNUSU9OX0lERU5USUZJRVJTLmxpbmtUb0Nvbm5lY3Rpb24oXG4gICAgICB0aGlzLmJhc2UuZklkKCkgKyB0aGlzLmJhc2UuZk91dHB1dElkICsgdGhpcy5iYXNlLmZJbnB1dElkXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaG9zdEVsZW1lbnQoKTogU1ZHVGV4dFBhdGhFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgc3ltYm9sV2lkdGg6IG51bWJlciA9IDg7XG4gIHB1YmxpYyBmb250U2l6ZTogc3RyaW5nID0gJzEycHgnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmZXJlbmNlOiBFbGVtZW50UmVmPFNWR1RleHRQYXRoRWxlbWVudD4sXG4gICAgICBASW5qZWN0KEZfQ09OTkVDVElPTikgcHJpdmF0ZSBiYXNlOiBJSGFzQ29ubmVjdGlvblRleHQgJiBJSGFzQ29ubmVjdGlvbkZyb21UbyxcbiAgICAgIHByaXZhdGUgZkJyb3dzZXI6IEJyb3dzZXJTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKCd0ZXh0LWFuY2hvcicsIGBtaWRkbGVgKTtcbiAgICB0aGlzLnN5bWJvbFdpZHRoID0gdGhpcy5nZXRTeW1ib2xXaWR0aCh0aGlzLmJhc2UuZlRleHQgfHwgJycpO1xuICB9XG5cbiAgcHVibGljIGdldEJCb3goKTogRE9NUmVjdCB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEVsZW1lbnQuZ2V0QkJveCgpO1xuICB9XG5cbiAgcHVibGljIHJlZHJhdygpOiB2b2lkIHtcbiAgICB0aGlzLmhvc3RFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3RhcnRPZmZzZXQnLCB0aGlzLmJhc2UuZlRleHRTdGFydE9mZnNldCB8fCAnNTAlJyk7XG4gIH1cblxuICBwcml2YXRlIGdldEZvbnRTdHlsZXMoZWxlbWVudDogU1ZHVGV4dFBhdGhFbGVtZW50KTogeyBmb250U2l6ZTogc3RyaW5nLCBmb250RmFtaWx5OiBzdHJpbmcgfSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZXMgPSB0aGlzLmZCcm93c2VyLndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAgIHJldHVybiB7XG4gICAgICBmb250U2l6ZTogY29tcHV0ZWRTdHlsZXMuZm9udFNpemUsXG4gICAgICBmb250RmFtaWx5OiBjb21wdXRlZFN0eWxlcy5mb250RmFtaWx5XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3ltYm9sV2lkdGgobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCB0ZXh0ID0gbmFtZSB8fCAnY29ubmVjdGlvbic7XG4gICAgY29uc3QgeyBmb250RmFtaWx5LCBmb250U2l6ZSB9ID0gdGhpcy5nZXRGb250U3R5bGVzKHRoaXMuaG9zdEVsZW1lbnQpO1xuICAgIHRoaXMuZm9udFNpemUgPSBmb250U2l6ZSB8fCAnMTJweCc7XG4gICAgY29uc3QgY2FudmFzID0gdGhpcy5mQnJvd3Nlci5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBsZXQgY29udGV4dDtcblxuICAgIHRyeSB7XG4gICAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29udGV4dCA9IG51bGw7XG4gICAgfVxuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29udGV4dC5mb250ID0gYCR7IGZvbnRTaXplIH0gJHsgZm9udEZhbWlseSB9YDtcblxuICAgIGNvbnN0IG1ldHJpY3MgPSBjb250ZXh0Lm1lYXN1cmVUZXh0KHRleHQpO1xuICAgIGNvbnN0IHN5bWJvbFdpZHRoID0gbWV0cmljcy53aWR0aCAvIHRleHQubGVuZ3RoO1xuICAgIHJldHVybiBzeW1ib2xXaWR0aDtcbiAgfVxufVxuXG4iXX0=
64
+ }] });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLXRleHQtcGF0aC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9jb21tb24vZi1jb25uZWN0aW9uLXRleHQvZi1jb25uZWN0aW9uLXRleHQtcGF0aC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUcvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBU2xELE1BQU0sT0FBTyw0QkFBNEI7SUFDdkIsV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQThCLENBQUEsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUNsRSxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBOEMsQ0FBQztJQUMxRSxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRW5ELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sd0JBQXdCLENBQUMsZ0JBQWdCLENBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUNsRSxDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVcsR0FBVyxDQUFDLENBQUM7SUFDeEIsUUFBUSxHQUFXLE1BQU0sQ0FBQztJQUUxQixRQUFRO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBMkI7UUFDaEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEUsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUTtZQUNqQyxVQUFVLEVBQUUsY0FBYyxDQUFDLFVBQVU7U0FDdEMsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBWTtRQUNsQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksWUFBWSxDQUFDO1FBQ2xDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksTUFBTSxDQUFDO1FBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxJQUFJLE9BQU8sQ0FBQztRQUVaLElBQUksQ0FBQztZQUNILE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLDZEQUE2RDtRQUMvRCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUVELE9BQU8sQ0FBQyxJQUFJLEdBQUcsR0FBRyxRQUFRLElBQUksVUFBVSxFQUFFLENBQUM7UUFFM0MsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFaEQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzt3R0EzRFUsNEJBQTRCOzRGQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBTnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsSUFBSSxFQUFFO3dCQUNKLGFBQWEsRUFBRSxrQkFBa0I7cUJBQ2xDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRl9DT05ORUNUSU9OX0lERU5USUZJRVJTIH0gZnJvbSAnLi4vZi1jb25uZWN0aW9uLWlkZW50aWZpZXJzJztcbmltcG9ydCB7IEZfQ09OTkVDVElPTiB9IGZyb20gJy4uL2YtY29ubmVjdGlvbi5pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHsgSUhhc0Nvbm5lY3Rpb25UZXh0IH0gZnJvbSAnLi4vaS1oYXMtY29ubmVjdGlvbi10ZXh0JztcbmltcG9ydCB7IElIYXNDb25uZWN0aW9uRnJvbVRvIH0gZnJvbSAnLi4vaS1oYXMtY29ubmVjdGlvbi1mcm9tLXRvJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnQGZvYmxleC9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBJSGFzSG9zdEVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9pLWhhcy1ob3N0LWVsZW1lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICd0ZXh0UGF0aFtmLWNvbm5lY3Rpb24tdGV4dC1wYXRoXScsXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuaHJlZl0nOiAnbGlua1RvQ29ubmVjdGlvbicsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEZDb25uZWN0aW9uVGV4dFBhdGhEaXJlY3RpdmUgaW1wbGVtZW50cyBJSGFzSG9zdEVsZW1lbnQsIE9uSW5pdCB7XG4gIHB1YmxpYyByZWFkb25seSBob3N0RWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmPFNWR1RleHRQYXRoRWxlbWVudD4pLm5hdGl2ZUVsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Jhc2UgPSBpbmplY3QoRl9DT05ORUNUSU9OKSBhcyBJSGFzQ29ubmVjdGlvblRleHQgJiBJSGFzQ29ubmVjdGlvbkZyb21UbztcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJvd3NlciA9IGluamVjdChCcm93c2VyU2VydmljZSk7XG5cbiAgcHVibGljIGdldCBsaW5rVG9Db25uZWN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZfQ09OTkVDVElPTl9JREVOVElGSUVSUy5saW5rVG9Db25uZWN0aW9uKFxuICAgICAgdGhpcy5fYmFzZS5mSWQoKSArIHRoaXMuX2Jhc2UuZk91dHB1dElkKCkgKyB0aGlzLl9iYXNlLmZJbnB1dElkKCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzeW1ib2xXaWR0aDogbnVtYmVyID0gODtcbiAgcHVibGljIGZvbnRTaXplOiBzdHJpbmcgPSAnMTJweCc7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKCd0ZXh0LWFuY2hvcicsIGBtaWRkbGVgKTtcbiAgICB0aGlzLnN5bWJvbFdpZHRoID0gdGhpcy5fZ2V0U3ltYm9sV2lkdGgodGhpcy5fYmFzZS5mVGV4dCB8fCAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QkJveCgpOiBET01SZWN0IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0RWxlbWVudC5nZXRCQm94KCk7XG4gIH1cblxuICBwdWJsaWMgcmVkcmF3KCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdGFydE9mZnNldCcsIHRoaXMuX2Jhc2UuZlRleHRTdGFydE9mZnNldCB8fCAnNTAlJyk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRGb250U3R5bGVzKGVsZW1lbnQ6IFNWR1RleHRQYXRoRWxlbWVudCk6IHsgZm9udFNpemU6IHN0cmluZzsgZm9udEZhbWlseTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGVzID0gdGhpcy5fYnJvd3Nlci53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBmb250U2l6ZTogY29tcHV0ZWRTdHlsZXMuZm9udFNpemUsXG4gICAgICBmb250RmFtaWx5OiBjb21wdXRlZFN0eWxlcy5mb250RmFtaWx5LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9nZXRTeW1ib2xXaWR0aChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGNvbnN0IHRleHQgPSBuYW1lIHx8ICdjb25uZWN0aW9uJztcbiAgICBjb25zdCB7IGZvbnRGYW1pbHksIGZvbnRTaXplIH0gPSB0aGlzLl9nZXRGb250U3R5bGVzKHRoaXMuaG9zdEVsZW1lbnQpO1xuICAgIHRoaXMuZm9udFNpemUgPSBmb250U2l6ZSB8fCAnMTJweCc7XG4gICAgY29uc3QgY2FudmFzID0gdGhpcy5fYnJvd3Nlci5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBsZXQgY29udGV4dDtcblxuICAgIHRyeSB7XG4gICAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29udGV4dCA9IG51bGw7XG4gICAgfVxuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29udGV4dC5mb250ID0gYCR7Zm9udFNpemV9ICR7Zm9udEZhbWlseX1gO1xuXG4gICAgY29uc3QgbWV0cmljcyA9IGNvbnRleHQubWVhc3VyZVRleHQodGV4dCk7XG4gICAgY29uc3Qgc3ltYm9sV2lkdGggPSBtZXRyaWNzLndpZHRoIC8gdGV4dC5sZW5ndGg7XG5cbiAgICByZXR1cm4gc3ltYm9sV2lkdGg7XG4gIH1cbn1cbiJdfQ==