@foblex/flow 0.0.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 (420) hide show
  1. package/README.md +24 -0
  2. package/esm2022/foblex-flow.mjs +5 -0
  3. package/esm2022/lib/common-behaviours/change-position.mjs +15 -0
  4. package/esm2022/lib/common-behaviours/change-zoom/change-zoom.mjs +25 -0
  5. package/esm2022/lib/common-behaviours/change-zoom/i-can-change-zoom.mjs +2 -0
  6. package/esm2022/lib/common-behaviours/change-zoom/index.mjs +3 -0
  7. package/esm2022/lib/common-behaviours/constructor.mjs +2 -0
  8. package/esm2022/lib/common-behaviours/fit-to-parent/fit-to-parent.mjs +27 -0
  9. package/esm2022/lib/common-behaviours/fit-to-parent/i-can-fit-to-parent.mjs +2 -0
  10. package/esm2022/lib/common-behaviours/fit-to-parent/index.mjs +3 -0
  11. package/esm2022/lib/common-behaviours/index.mjs +6 -0
  12. package/esm2022/lib/common-behaviours/one-to-one-centering/i-can-one-to-one-centering.mjs +2 -0
  13. package/esm2022/lib/common-behaviours/one-to-one-centering/index.mjs +3 -0
  14. package/esm2022/lib/common-behaviours/one-to-one-centering/one-to-one-centering.mjs +24 -0
  15. package/esm2022/lib/components/f-connection/f-connection-base.mjs +28 -0
  16. package/esm2022/lib/components/f-connection/f-connection-identifiers.mjs +21 -0
  17. package/esm2022/lib/components/f-connection/f-connection-text/f-connection-text-path.directive.mjs +38 -0
  18. package/esm2022/lib/components/f-connection/f-connection-text/f-connection-text.component.mjs +55 -0
  19. package/esm2022/lib/components/f-connection/f-connection-text/index.mjs +3 -0
  20. package/esm2022/lib/components/f-connection/f-connection.component.mjs +91 -0
  21. package/esm2022/lib/components/f-connection/f-connection.module.mjs +47 -0
  22. package/esm2022/lib/components/f-connection/f-drag-handle/f-connection-drag-handle.component.mjs +30 -0
  23. package/esm2022/lib/components/f-connection/f-drag-handle/index.mjs +2 -0
  24. package/esm2022/lib/components/f-connection/f-gradient/f-connection-gradient.component.mjs +59 -0
  25. package/esm2022/lib/components/f-connection/f-gradient/index.mjs +2 -0
  26. package/esm2022/lib/components/f-connection/f-path/f-connection-path.component.mjs +55 -0
  27. package/esm2022/lib/components/f-connection/f-path/index.mjs +2 -0
  28. package/esm2022/lib/components/f-connection/f-selection/f-connection-selection.component.mjs +34 -0
  29. package/esm2022/lib/components/f-connection/f-selection/index.mjs +2 -0
  30. package/esm2022/lib/components/f-connection/f-temp-connection/f-temp-connection.component.mjs +61 -0
  31. package/esm2022/lib/components/f-connection/f-temp-connection/index.mjs +3 -0
  32. package/esm2022/lib/components/f-connection/f-temp-connection/temp-connection-input-output-model.mjs +7 -0
  33. package/esm2022/lib/components/f-connection/get-connection-intersect.mjs +10 -0
  34. package/esm2022/lib/components/f-connection/i-input-output-model.mjs +2 -0
  35. package/esm2022/lib/components/f-connection/index.mjs +13 -0
  36. package/esm2022/lib/components/f-connection/public-api.mjs +4 -0
  37. package/esm2022/lib/components/f-connectors/f-connector-base.mjs +14 -0
  38. package/esm2022/lib/components/f-connectors/f-node-input/f-node-input-base.mjs +19 -0
  39. package/esm2022/lib/components/f-connectors/f-node-input/f-node-input.directive.mjs +58 -0
  40. package/esm2022/lib/components/f-connectors/f-node-input/index.mjs +4 -0
  41. package/esm2022/lib/components/f-connectors/f-node-input/is-node-input.mjs +4 -0
  42. package/esm2022/lib/components/f-connectors/f-node-input/public-api.mjs +2 -0
  43. package/esm2022/lib/components/f-connectors/f-node-outlet/f-node-outlet-base.mjs +22 -0
  44. package/esm2022/lib/components/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +56 -0
  45. package/esm2022/lib/components/f-connectors/f-node-outlet/index.mjs +4 -0
  46. package/esm2022/lib/components/f-connectors/f-node-outlet/is-node-outlet.mjs +4 -0
  47. package/esm2022/lib/components/f-connectors/f-node-outlet/public-api.mjs +2 -0
  48. package/esm2022/lib/components/f-connectors/f-node-output/f-node-output-base.mjs +19 -0
  49. package/esm2022/lib/components/f-connectors/f-node-output/f-node-output.directive.mjs +54 -0
  50. package/esm2022/lib/components/f-connectors/f-node-output/index.mjs +4 -0
  51. package/esm2022/lib/components/f-connectors/f-node-output/is-node-output.mjs +4 -0
  52. package/esm2022/lib/components/f-connectors/f-node-output/public-api.mjs +2 -0
  53. package/esm2022/lib/components/f-connectors/f-out-connector-base.mjs +4 -0
  54. package/esm2022/lib/components/f-connectors/get-element-rect-in-canvas.mjs +8 -0
  55. package/esm2022/lib/components/f-connectors/index.mjs +7 -0
  56. package/esm2022/lib/components/f-connectors/public-api.mjs +4 -0
  57. package/esm2022/lib/components/f-flow/f-flow-base.mjs +54 -0
  58. package/esm2022/lib/components/f-flow/f-flow.component.mjs +67 -0
  59. package/esm2022/lib/components/f-flow/index.mjs +3 -0
  60. package/esm2022/lib/components/f-flow/public-api.mjs +2 -0
  61. package/esm2022/lib/components/f-node/f-drag-handle/f-drag-handle.directive.mjs +54 -0
  62. package/esm2022/lib/components/f-node/f-drag-handle/index.mjs +3 -0
  63. package/esm2022/lib/components/f-node/f-drag-handle/is-drag-handle.mjs +20 -0
  64. package/esm2022/lib/components/f-node/f-drag-handle/public-api.mjs +2 -0
  65. package/esm2022/lib/components/f-node/f-foreign-object/f-foreign-object-base.mjs +40 -0
  66. package/esm2022/lib/components/f-node/f-foreign-object/f-foreign-object.component.mjs +49 -0
  67. package/esm2022/lib/components/f-node/f-foreign-object/index.mjs +3 -0
  68. package/esm2022/lib/components/f-node/f-foreign-object/public-api.mjs +2 -0
  69. package/esm2022/lib/components/f-node/f-node-base.mjs +28 -0
  70. package/esm2022/lib/components/f-node/f-node.component.mjs +63 -0
  71. package/esm2022/lib/components/f-node/index.mjs +5 -0
  72. package/esm2022/lib/components/f-node/public-api.mjs +4 -0
  73. package/esm2022/lib/components/index.mjs +6 -0
  74. package/esm2022/lib/components/public-api.mjs +5 -0
  75. package/esm2022/lib/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.handler.mjs +58 -0
  76. package/esm2022/lib/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.request.mjs +6 -0
  77. package/esm2022/lib/directives/f-connect-if-intersect/connect-if-intersect/index.mjs +3 -0
  78. package/esm2022/lib/directives/f-connect-if-intersect/f-connect-if-intersect.directive.mjs +41 -0
  79. package/esm2022/lib/directives/f-connect-if-intersect/index.mjs +3 -0
  80. package/esm2022/lib/directives/f-connect-if-intersect/public-api.mjs +2 -0
  81. package/esm2022/lib/directives/f-containers/f-connections-container/f-connections-container-base.mjs +32 -0
  82. package/esm2022/lib/directives/f-containers/f-connections-container/f-connections-container.component.mjs +30 -0
  83. package/esm2022/lib/directives/f-containers/f-connections-container/index.mjs +3 -0
  84. package/esm2022/lib/directives/f-containers/f-connections-container/public-api.mjs +2 -0
  85. package/esm2022/lib/directives/f-containers/f-items-container/f-items-container-base.mjs +44 -0
  86. package/esm2022/lib/directives/f-containers/f-items-container/f-items-container.directive.mjs +25 -0
  87. package/esm2022/lib/directives/f-containers/f-items-container/index.mjs +3 -0
  88. package/esm2022/lib/directives/f-containers/f-items-container/public-api.mjs +2 -0
  89. package/esm2022/lib/directives/f-containers/f-nodes-container/f-nodes-container-base.mjs +39 -0
  90. package/esm2022/lib/directives/f-containers/f-nodes-container/f-nodes-container.component.mjs +25 -0
  91. package/esm2022/lib/directives/f-containers/f-nodes-container/index.mjs +3 -0
  92. package/esm2022/lib/directives/f-containers/f-nodes-container/public-api.mjs +2 -0
  93. package/esm2022/lib/directives/f-containers/index.mjs +4 -0
  94. package/esm2022/lib/directives/f-containers/public-api.mjs +4 -0
  95. package/esm2022/lib/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.handler.mjs +24 -0
  96. package/esm2022/lib/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.request.mjs +6 -0
  97. package/esm2022/lib/directives/f-draggable/canvas/canvas-on-pointer-down/index.mjs +3 -0
  98. package/esm2022/lib/directives/f-draggable/canvas/canvas-on-pointer-move/canvas.on-pointer-move.mjs +20 -0
  99. package/esm2022/lib/directives/f-draggable/canvas/canvas-on-pointer-move/index.mjs +2 -0
  100. package/esm2022/lib/directives/f-draggable/canvas/index.mjs +3 -0
  101. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection-on-pointer-down.request.mjs +7 -0
  102. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection.on-pointer-down.mjs +78 -0
  103. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/index.mjs +3 -0
  104. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection-on-pointer-up.request.mjs +7 -0
  105. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection.on-pointer-up.mjs +31 -0
  106. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/index.mjs +3 -0
  107. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection.event.mjs +7 -0
  108. package/esm2022/lib/directives/f-draggable/connections/create-connection/create-connection.on-pointer-move.mjs +28 -0
  109. package/esm2022/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.mjs +20 -0
  110. package/esm2022/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.request.mjs +6 -0
  111. package/esm2022/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/index.mjs +3 -0
  112. package/esm2022/lib/directives/f-draggable/connections/create-connection/index.mjs +6 -0
  113. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.mjs +25 -0
  114. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.mjs +7 -0
  115. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.mjs +20 -0
  116. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.request.mjs +6 -0
  117. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/index.mjs +3 -0
  118. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/index.mjs +5 -0
  119. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/index.mjs +3 -0
  120. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.mjs +14 -0
  121. package/esm2022/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.request.mjs +6 -0
  122. package/esm2022/lib/directives/f-draggable/connections/index.mjs +4 -0
  123. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/index.mjs +5 -0
  124. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-connection.event.mjs +9 -0
  125. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/index.mjs +3 -0
  126. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection-on-pointer-down.request.mjs +7 -0
  127. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection.on-pointer-down.mjs +36 -0
  128. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/index.mjs +2 -0
  129. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/reassign-connection.on-pointer-move.mjs +31 -0
  130. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/index.mjs +3 -0
  131. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection-on-pointer-up.request.mjs +7 -0
  132. package/esm2022/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection.on-pointer-up.mjs +23 -0
  133. package/esm2022/lib/directives/f-draggable/default-drag-handler/default-drag.handler.mjs +11 -0
  134. package/esm2022/lib/directives/f-draggable/default-drag-handler/index.mjs +2 -0
  135. package/esm2022/lib/directives/f-draggable/e-draggable-type.mjs +12 -0
  136. package/esm2022/lib/directives/f-draggable/external-item/create-node.event.mjs +7 -0
  137. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.handler.mjs +28 -0
  138. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.request.mjs +6 -0
  139. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-down/index.mjs +3 -0
  140. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-move/external-item-on-pointer-move.handler.mjs +30 -0
  141. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-move/index.mjs +2 -0
  142. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.handler.mjs +26 -0
  143. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.request.mjs +7 -0
  144. package/esm2022/lib/directives/f-draggable/external-item/external-item-on-pointer-up/index.mjs +3 -0
  145. package/esm2022/lib/directives/f-draggable/external-item/index.mjs +5 -0
  146. package/esm2022/lib/directives/f-draggable/f-draggable-base.mjs +103 -0
  147. package/esm2022/lib/directives/f-draggable/f-draggable.directive.mjs +52 -0
  148. package/esm2022/lib/directives/f-draggable/f-draggable.module.mjs +49 -0
  149. package/esm2022/lib/directives/f-draggable/f-draggable.service.mjs +23 -0
  150. package/esm2022/lib/directives/f-draggable/i-drag-handler.mjs +2 -0
  151. package/esm2022/lib/directives/f-draggable/i-draggable-item.mjs +2 -0
  152. package/esm2022/lib/directives/f-draggable/index.mjs +14 -0
  153. package/esm2022/lib/directives/f-draggable/node/index.mjs +4 -0
  154. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-down/index.mjs +3 -0
  155. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-down/node-on-pointer-down.request.mjs +9 -0
  156. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-down/node.on-pointer-down.mjs +88 -0
  157. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-move/f-connection-source.drag-handler.mjs +24 -0
  158. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-move/f-connection-target.drag-handler.mjs +24 -0
  159. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-move/f-connection.drag-handler.mjs +22 -0
  160. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-move/index.mjs +5 -0
  161. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-move/node.on-pointer-move.mjs +23 -0
  162. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-up/index.mjs +3 -0
  163. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-up/node-on-pointer-up.request.mjs +7 -0
  164. package/esm2022/lib/directives/f-draggable/node/node-on-pointer-up/node.on-pointer-up.mjs +28 -0
  165. package/esm2022/lib/directives/f-draggable/public-api.mjs +2 -0
  166. package/esm2022/lib/directives/f-draggable/selection/index.mjs +4 -0
  167. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-down/index.mjs +3 -0
  168. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-down/selection-on-pointer-down.request.mjs +8 -0
  169. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-down/selection.on-pointer-down.mjs +60 -0
  170. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-move/index.mjs +2 -0
  171. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-move/selection.on-pointer-move.mjs +54 -0
  172. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-up/index.mjs +3 -0
  173. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-up/selection-on-pointer-up.request.mjs +8 -0
  174. package/esm2022/lib/directives/f-draggable/selection/selection-on-pointer-up/selection.on-pointer-up.mjs +22 -0
  175. package/esm2022/lib/directives/f-external-item/f-external-item-base.mjs +11 -0
  176. package/esm2022/lib/directives/f-external-item/f-external-item.directive.mjs +44 -0
  177. package/esm2022/lib/directives/f-external-item/f-external-item.service.mjs +25 -0
  178. package/esm2022/lib/directives/f-external-item/index.mjs +5 -0
  179. package/esm2022/lib/directives/f-external-item/is-external-item.mjs +7 -0
  180. package/esm2022/lib/directives/f-external-item/public-api.mjs +2 -0
  181. package/esm2022/lib/directives/f-line-alignment/domain/find-nearest-coordinate-by-x.mjs +40 -0
  182. package/esm2022/lib/directives/f-line-alignment/domain/find-nearest-coordinate-by-y.mjs +40 -0
  183. package/esm2022/lib/directives/f-line-alignment/domain/i-line-alignment-result.mjs +2 -0
  184. package/esm2022/lib/directives/f-line-alignment/domain/i-nearest-coordinate-result.mjs +2 -0
  185. package/esm2022/lib/directives/f-line-alignment/domain/index.mjs +5 -0
  186. package/esm2022/lib/directives/f-line-alignment/f-line-alignment.directive.mjs +105 -0
  187. package/esm2022/lib/directives/f-line-alignment/index.mjs +3 -0
  188. package/esm2022/lib/directives/f-line-alignment/public-api.mjs +2 -0
  189. package/esm2022/lib/directives/f-selection/f-selection.directive.mjs +40 -0
  190. package/esm2022/lib/directives/f-selection/index.mjs +2 -0
  191. package/esm2022/lib/directives/f-selection/public-api.mjs +2 -0
  192. package/esm2022/lib/directives/f-zoom/f-zoom-base.mjs +87 -0
  193. package/esm2022/lib/directives/f-zoom/f-zoom.directive.mjs +57 -0
  194. package/esm2022/lib/directives/f-zoom/index.mjs +3 -0
  195. package/esm2022/lib/directives/f-zoom/public-api.mjs +2 -0
  196. package/esm2022/lib/directives/index.mjs +8 -0
  197. package/esm2022/lib/directives/public-api.mjs +8 -0
  198. package/esm2022/lib/f-flow.module.mjs +79 -0
  199. package/esm2022/lib/i-has-state-changes.mjs +2 -0
  200. package/esm2022/lib/i-selectable.mjs +2 -0
  201. package/esm2022/lib/internal/f-backgroud/f-background-base.mjs +25 -0
  202. package/esm2022/lib/internal/f-backgroud/f-background.directive.mjs +24 -0
  203. package/esm2022/lib/internal/f-backgroud/index.mjs +3 -0
  204. package/esm2022/lib/internal/f-canvas/f-canvas-base.mjs +25 -0
  205. package/esm2022/lib/internal/f-canvas/f-canvas.directive.mjs +19 -0
  206. package/esm2022/lib/internal/f-canvas/index.mjs +3 -0
  207. package/esm2022/lib/internal/index.mjs +3 -0
  208. package/esm2022/lib/public-api.mjs +5 -0
  209. package/esm2022/public-api.mjs +2 -0
  210. package/fesm2022/foblex-flow.mjs +3055 -0
  211. package/fesm2022/foblex-flow.mjs.map +1 -0
  212. package/index.d.ts +5 -0
  213. package/lib/common-behaviours/change-position.d.ts +9 -0
  214. package/lib/common-behaviours/change-zoom/change-zoom.d.ts +6 -0
  215. package/lib/common-behaviours/change-zoom/i-can-change-zoom.d.ts +6 -0
  216. package/lib/common-behaviours/change-zoom/index.d.ts +2 -0
  217. package/lib/common-behaviours/constructor.d.ts +2 -0
  218. package/lib/common-behaviours/fit-to-parent/fit-to-parent.d.ts +6 -0
  219. package/lib/common-behaviours/fit-to-parent/i-can-fit-to-parent.d.ts +4 -0
  220. package/lib/common-behaviours/fit-to-parent/index.d.ts +2 -0
  221. package/lib/common-behaviours/index.d.ts +5 -0
  222. package/lib/common-behaviours/one-to-one-centering/i-can-one-to-one-centering.d.ts +4 -0
  223. package/lib/common-behaviours/one-to-one-centering/index.d.ts +2 -0
  224. package/lib/common-behaviours/one-to-one-centering/one-to-one-centering.d.ts +6 -0
  225. package/lib/components/f-connection/f-connection-base.d.ts +28 -0
  226. package/lib/components/f-connection/f-connection-identifiers.d.ts +8 -0
  227. package/lib/components/f-connection/f-connection-text/f-connection-text-path.directive.d.ts +17 -0
  228. package/lib/components/f-connection/f-connection-text/f-connection-text.component.d.ts +19 -0
  229. package/lib/components/f-connection/f-connection-text/index.d.ts +2 -0
  230. package/lib/components/f-connection/f-connection.component.d.ts +33 -0
  231. package/lib/components/f-connection/f-connection.module.d.ts +15 -0
  232. package/lib/components/f-connection/f-drag-handle/f-connection-drag-handle.component.d.ts +13 -0
  233. package/lib/components/f-connection/f-drag-handle/index.d.ts +1 -0
  234. package/lib/components/f-connection/f-gradient/f-connection-gradient.component.d.ts +21 -0
  235. package/lib/components/f-connection/f-gradient/index.d.ts +1 -0
  236. package/lib/components/f-connection/f-path/f-connection-path.component.d.ts +20 -0
  237. package/lib/components/f-connection/f-path/index.d.ts +1 -0
  238. package/lib/components/f-connection/f-selection/f-connection-selection.component.d.ts +15 -0
  239. package/lib/components/f-connection/f-selection/index.d.ts +1 -0
  240. package/lib/components/f-connection/f-temp-connection/f-temp-connection.component.d.ts +27 -0
  241. package/lib/components/f-connection/f-temp-connection/index.d.ts +2 -0
  242. package/lib/components/f-connection/f-temp-connection/temp-connection-input-output-model.d.ts +7 -0
  243. package/lib/components/f-connection/get-connection-intersect.d.ts +2 -0
  244. package/lib/components/f-connection/i-input-output-model.d.ts +5 -0
  245. package/lib/components/f-connection/index.d.ts +12 -0
  246. package/lib/components/f-connection/public-api.d.ts +3 -0
  247. package/lib/components/f-connectors/f-connector-base.d.ts +13 -0
  248. package/lib/components/f-connectors/f-node-input/f-node-input-base.d.ts +11 -0
  249. package/lib/components/f-connectors/f-node-input/f-node-input.directive.d.ts +17 -0
  250. package/lib/components/f-connectors/f-node-input/index.d.ts +3 -0
  251. package/lib/components/f-connectors/f-node-input/is-node-input.d.ts +1 -0
  252. package/lib/components/f-connectors/f-node-input/public-api.d.ts +1 -0
  253. package/lib/components/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +12 -0
  254. package/lib/components/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +17 -0
  255. package/lib/components/f-connectors/f-node-outlet/index.d.ts +3 -0
  256. package/lib/components/f-connectors/f-node-outlet/is-node-outlet.d.ts +1 -0
  257. package/lib/components/f-connectors/f-node-outlet/public-api.d.ts +1 -0
  258. package/lib/components/f-connectors/f-node-output/f-node-output-base.d.ts +10 -0
  259. package/lib/components/f-connectors/f-node-output/f-node-output.directive.d.ts +16 -0
  260. package/lib/components/f-connectors/f-node-output/index.d.ts +3 -0
  261. package/lib/components/f-connectors/f-node-output/is-node-output.d.ts +1 -0
  262. package/lib/components/f-connectors/f-node-output/public-api.d.ts +1 -0
  263. package/lib/components/f-connectors/f-out-connector-base.d.ts +4 -0
  264. package/lib/components/f-connectors/get-element-rect-in-canvas.d.ts +2 -0
  265. package/lib/components/f-connectors/index.d.ts +6 -0
  266. package/lib/components/f-connectors/public-api.d.ts +3 -0
  267. package/lib/components/f-flow/f-flow-base.d.ts +31 -0
  268. package/lib/components/f-flow/f-flow.component.d.ts +32 -0
  269. package/lib/components/f-flow/index.d.ts +2 -0
  270. package/lib/components/f-flow/public-api.d.ts +1 -0
  271. package/lib/components/f-node/f-drag-handle/f-drag-handle.directive.d.ts +19 -0
  272. package/lib/components/f-node/f-drag-handle/index.d.ts +2 -0
  273. package/lib/components/f-node/f-drag-handle/is-drag-handle.d.ts +1 -0
  274. package/lib/components/f-node/f-drag-handle/public-api.d.ts +1 -0
  275. package/lib/components/f-node/f-foreign-object/f-foreign-object-base.d.ts +20 -0
  276. package/lib/components/f-node/f-foreign-object/f-foreign-object.component.d.ts +16 -0
  277. package/lib/components/f-node/f-foreign-object/index.d.ts +2 -0
  278. package/lib/components/f-node/f-foreign-object/public-api.d.ts +1 -0
  279. package/lib/components/f-node/f-node-base.d.ts +24 -0
  280. package/lib/components/f-node/f-node.component.d.ts +23 -0
  281. package/lib/components/f-node/index.d.ts +4 -0
  282. package/lib/components/f-node/public-api.d.ts +3 -0
  283. package/lib/components/index.d.ts +5 -0
  284. package/lib/components/public-api.d.ts +4 -0
  285. package/lib/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.handler.d.ts +16 -0
  286. package/lib/directives/f-connect-if-intersect/connect-if-intersect/connect-if-intersect.request.d.ts +5 -0
  287. package/lib/directives/f-connect-if-intersect/connect-if-intersect/index.d.ts +2 -0
  288. package/lib/directives/f-connect-if-intersect/f-connect-if-intersect.directive.d.ts +16 -0
  289. package/lib/directives/f-connect-if-intersect/index.d.ts +2 -0
  290. package/lib/directives/f-connect-if-intersect/public-api.d.ts +1 -0
  291. package/lib/directives/f-containers/f-connections-container/f-connections-container-base.d.ts +18 -0
  292. package/lib/directives/f-containers/f-connections-container/f-connections-container.component.d.ts +14 -0
  293. package/lib/directives/f-containers/f-connections-container/index.d.ts +2 -0
  294. package/lib/directives/f-containers/f-connections-container/public-api.d.ts +1 -0
  295. package/lib/directives/f-containers/f-items-container/f-items-container-base.d.ts +23 -0
  296. package/lib/directives/f-containers/f-items-container/f-items-container.directive.d.ts +9 -0
  297. package/lib/directives/f-containers/f-items-container/index.d.ts +2 -0
  298. package/lib/directives/f-containers/f-items-container/public-api.d.ts +1 -0
  299. package/lib/directives/f-containers/f-nodes-container/f-nodes-container-base.d.ts +18 -0
  300. package/lib/directives/f-containers/f-nodes-container/f-nodes-container.component.d.ts +12 -0
  301. package/lib/directives/f-containers/f-nodes-container/index.d.ts +2 -0
  302. package/lib/directives/f-containers/f-nodes-container/public-api.d.ts +1 -0
  303. package/lib/directives/f-containers/index.d.ts +3 -0
  304. package/lib/directives/f-containers/public-api.d.ts +3 -0
  305. package/lib/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.handler.d.ts +12 -0
  306. package/lib/directives/f-draggable/canvas/canvas-on-pointer-down/canvas-on-pointer-down.request.d.ts +5 -0
  307. package/lib/directives/f-draggable/canvas/canvas-on-pointer-down/index.d.ts +2 -0
  308. package/lib/directives/f-draggable/canvas/canvas-on-pointer-move/canvas.on-pointer-move.d.ts +13 -0
  309. package/lib/directives/f-draggable/canvas/canvas-on-pointer-move/index.d.ts +1 -0
  310. package/lib/directives/f-draggable/canvas/index.d.ts +2 -0
  311. package/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection-on-pointer-down.request.d.ts +6 -0
  312. package/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/create-connection.on-pointer-down.d.ts +14 -0
  313. package/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-down/index.d.ts +2 -0
  314. package/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection-on-pointer-up.request.d.ts +7 -0
  315. package/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/create-connection.on-pointer-up.d.ts +11 -0
  316. package/lib/directives/f-draggable/connections/create-connection/create-connection-on-pointer-up/index.d.ts +2 -0
  317. package/lib/directives/f-draggable/connections/create-connection/create-connection.event.d.ts +5 -0
  318. package/lib/directives/f-draggable/connections/create-connection/create-connection.on-pointer-move.d.ts +16 -0
  319. package/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.handler.d.ts +8 -0
  320. package/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/find-first-can-be-connected-output-by-outlet.request.d.ts +5 -0
  321. package/lib/directives/f-draggable/connections/create-connection/find-first-can-be-connected-output-by-outlet/index.d.ts +2 -0
  322. package/lib/directives/f-draggable/connections/create-connection/index.d.ts +5 -0
  323. package/lib/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.d.ts +9 -0
  324. package/lib/directives/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.request.d.ts +8 -0
  325. package/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.handler.d.ts +8 -0
  326. package/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/first-not-connected-input-of-node-under-pointer.request.d.ts +5 -0
  327. package/lib/directives/f-draggable/connections/find-inputs-under-pointer/first-not-connected-input-of-node-under-pointer/index.d.ts +2 -0
  328. package/lib/directives/f-draggable/connections/find-inputs-under-pointer/index.d.ts +4 -0
  329. package/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/index.d.ts +2 -0
  330. package/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.handler.d.ts +8 -0
  331. package/lib/directives/f-draggable/connections/find-inputs-under-pointer/inputs-under-pointer/inputs-under-pointer.request.d.ts +5 -0
  332. package/lib/directives/f-draggable/connections/index.d.ts +3 -0
  333. package/lib/directives/f-draggable/connections/reassign-connection/index.d.ts +4 -0
  334. package/lib/directives/f-draggable/connections/reassign-connection/reassign-connection.event.d.ts +7 -0
  335. package/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/index.d.ts +2 -0
  336. package/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection-on-pointer-down.request.d.ts +6 -0
  337. package/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-down/reassign-connection.on-pointer-down.d.ts +11 -0
  338. package/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/index.d.ts +1 -0
  339. package/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-move/reassign-connection.on-pointer-move.d.ts +17 -0
  340. package/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/index.d.ts +2 -0
  341. package/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection-on-pointer-up.request.d.ts +7 -0
  342. package/lib/directives/f-draggable/connections/reassign-connection/reassign-on-pointer-up/reassign-connection.on-pointer-up.d.ts +11 -0
  343. package/lib/directives/f-draggable/default-drag-handler/default-drag.handler.d.ts +5 -0
  344. package/lib/directives/f-draggable/default-drag-handler/index.d.ts +1 -0
  345. package/lib/directives/f-draggable/e-draggable-type.d.ts +10 -0
  346. package/lib/directives/f-draggable/external-item/create-node.event.d.ts +6 -0
  347. package/lib/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.handler.d.ts +10 -0
  348. package/lib/directives/f-draggable/external-item/external-item-on-pointer-down/external-item-on-pointer-down.request.d.ts +5 -0
  349. package/lib/directives/f-draggable/external-item/external-item-on-pointer-down/index.d.ts +2 -0
  350. package/lib/directives/f-draggable/external-item/external-item-on-pointer-move/external-item-on-pointer-move.handler.d.ts +17 -0
  351. package/lib/directives/f-draggable/external-item/external-item-on-pointer-move/index.d.ts +1 -0
  352. package/lib/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.handler.d.ts +11 -0
  353. package/lib/directives/f-draggable/external-item/external-item-on-pointer-up/external-item-on-pointer-up.request.d.ts +7 -0
  354. package/lib/directives/f-draggable/external-item/external-item-on-pointer-up/index.d.ts +2 -0
  355. package/lib/directives/f-draggable/external-item/index.d.ts +4 -0
  356. package/lib/directives/f-draggable/f-draggable-base.d.ts +46 -0
  357. package/lib/directives/f-draggable/f-draggable.directive.d.ts +22 -0
  358. package/lib/directives/f-draggable/f-draggable.module.d.ts +11 -0
  359. package/lib/directives/f-draggable/f-draggable.service.d.ts +13 -0
  360. package/lib/directives/f-draggable/i-drag-handler.d.ts +9 -0
  361. package/lib/directives/f-draggable/i-draggable-item.d.ts +8 -0
  362. package/lib/directives/f-draggable/index.d.ts +13 -0
  363. package/lib/directives/f-draggable/node/index.d.ts +3 -0
  364. package/lib/directives/f-draggable/node/node-on-pointer-down/index.d.ts +2 -0
  365. package/lib/directives/f-draggable/node/node-on-pointer-down/node-on-pointer-down.request.d.ts +9 -0
  366. package/lib/directives/f-draggable/node/node-on-pointer-down/node.on-pointer-down.d.ts +17 -0
  367. package/lib/directives/f-draggable/node/node-on-pointer-move/f-connection-source.drag-handler.d.ts +15 -0
  368. package/lib/directives/f-draggable/node/node-on-pointer-move/f-connection-target.drag-handler.d.ts +15 -0
  369. package/lib/directives/f-draggable/node/node-on-pointer-move/f-connection.drag-handler.d.ts +14 -0
  370. package/lib/directives/f-draggable/node/node-on-pointer-move/index.d.ts +4 -0
  371. package/lib/directives/f-draggable/node/node-on-pointer-move/node.on-pointer-move.d.ts +15 -0
  372. package/lib/directives/f-draggable/node/node-on-pointer-up/index.d.ts +2 -0
  373. package/lib/directives/f-draggable/node/node-on-pointer-up/node-on-pointer-up.request.d.ts +7 -0
  374. package/lib/directives/f-draggable/node/node-on-pointer-up/node.on-pointer-up.d.ts +11 -0
  375. package/lib/directives/f-draggable/public-api.d.ts +1 -0
  376. package/lib/directives/f-draggable/selection/index.d.ts +3 -0
  377. package/lib/directives/f-draggable/selection/selection-on-pointer-down/index.d.ts +2 -0
  378. package/lib/directives/f-draggable/selection/selection-on-pointer-down/selection-on-pointer-down.request.d.ts +8 -0
  379. package/lib/directives/f-draggable/selection/selection-on-pointer-down/selection.on-pointer-down.d.ts +11 -0
  380. package/lib/directives/f-draggable/selection/selection-on-pointer-move/index.d.ts +1 -0
  381. package/lib/directives/f-draggable/selection/selection-on-pointer-move/selection.on-pointer-move.d.ts +19 -0
  382. package/lib/directives/f-draggable/selection/selection-on-pointer-up/index.d.ts +2 -0
  383. package/lib/directives/f-draggable/selection/selection-on-pointer-up/selection-on-pointer-up.request.d.ts +9 -0
  384. package/lib/directives/f-draggable/selection/selection-on-pointer-up/selection.on-pointer-up.d.ts +8 -0
  385. package/lib/directives/f-external-item/f-external-item-base.d.ts +11 -0
  386. package/lib/directives/f-external-item/f-external-item.directive.d.ts +16 -0
  387. package/lib/directives/f-external-item/f-external-item.service.d.ts +10 -0
  388. package/lib/directives/f-external-item/index.d.ts +4 -0
  389. package/lib/directives/f-external-item/is-external-item.d.ts +2 -0
  390. package/lib/directives/f-external-item/public-api.d.ts +1 -0
  391. package/lib/directives/f-line-alignment/domain/find-nearest-coordinate-by-x.d.ts +3 -0
  392. package/lib/directives/f-line-alignment/domain/find-nearest-coordinate-by-y.d.ts +3 -0
  393. package/lib/directives/f-line-alignment/domain/i-line-alignment-result.d.ts +5 -0
  394. package/lib/directives/f-line-alignment/domain/i-nearest-coordinate-result.d.ts +4 -0
  395. package/lib/directives/f-line-alignment/domain/index.d.ts +4 -0
  396. package/lib/directives/f-line-alignment/f-line-alignment.directive.d.ts +25 -0
  397. package/lib/directives/f-line-alignment/index.d.ts +2 -0
  398. package/lib/directives/f-line-alignment/public-api.d.ts +1 -0
  399. package/lib/directives/f-selection/f-selection.directive.d.ts +15 -0
  400. package/lib/directives/f-selection/index.d.ts +1 -0
  401. package/lib/directives/f-selection/public-api.d.ts +1 -0
  402. package/lib/directives/f-zoom/f-zoom-base.d.ts +24 -0
  403. package/lib/directives/f-zoom/f-zoom.directive.d.ts +15 -0
  404. package/lib/directives/f-zoom/index.d.ts +2 -0
  405. package/lib/directives/f-zoom/public-api.d.ts +1 -0
  406. package/lib/directives/index.d.ts +7 -0
  407. package/lib/directives/public-api.d.ts +7 -0
  408. package/lib/f-flow.module.d.ts +21 -0
  409. package/lib/i-has-state-changes.d.ts +4 -0
  410. package/lib/i-selectable.d.ts +6 -0
  411. package/lib/internal/f-backgroud/f-background-base.d.ts +15 -0
  412. package/lib/internal/f-backgroud/f-background.directive.d.ts +9 -0
  413. package/lib/internal/f-backgroud/index.d.ts +2 -0
  414. package/lib/internal/f-canvas/f-canvas-base.d.ts +12 -0
  415. package/lib/internal/f-canvas/f-canvas.directive.d.ts +8 -0
  416. package/lib/internal/f-canvas/index.d.ts +2 -0
  417. package/lib/internal/index.d.ts +2 -0
  418. package/lib/public-api.d.ts +4 -0
  419. package/package.json +26 -0
  420. package/public-api.d.ts +1 -0
@@ -0,0 +1,88 @@
1
+ import { Point } from '@foblex/core';
2
+ import { isNodeDragHandle } from '../../../../components';
3
+ import { EDraggableType } from '../../e-draggable-type';
4
+ import { FConnectionDragHandler, FConnectionSourceDragHandler, FConnectionTargetDragHandler, NodeOnPointerMove } from '../node-on-pointer-move';
5
+ export class NodeOnPointerDown {
6
+ get fConnectionsContainer() {
7
+ return this.fFlow.fConnectionsContainer;
8
+ }
9
+ get fNodesContainer() {
10
+ return this.fFlow.fNodesContainer;
11
+ }
12
+ constructor(fLineAlignment, fFlow, hostElement) {
13
+ this.fLineAlignment = fLineAlignment;
14
+ this.fFlow = fFlow;
15
+ this.hostElement = hostElement;
16
+ }
17
+ handle(payload) {
18
+ let result;
19
+ const node = this.fNodesContainer.findNode(payload.event.targetElement);
20
+ const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);
21
+ if (node) {
22
+ if (isNodeDragHandle(payload.event.targetElement)) {
23
+ if (!payload.selectedItems.includes(node) && payload.isMoveCurrentNode) {
24
+ payload.selectedItems.push(node);
25
+ node.select();
26
+ }
27
+ this.fNodesContainer.setNodeToTopLayer(node);
28
+ const itemsToDrag = this.calculateDraggableConnectionsAndNodes(payload);
29
+ const draggedNodes = itemsToDrag.filter((x) => {
30
+ return x.type === EDraggableType.NODE;
31
+ }).map((x) => x.fNode);
32
+ this.fLineAlignment?.initialize(this.fNodesContainer.fNodes.toArray(), draggedNodes);
33
+ result = {
34
+ onPointerDownScale: payload.transform.scale,
35
+ onPointerDownPosition: pointerPositionInCanvas.div(payload.transform.scale),
36
+ draggableItems: itemsToDrag
37
+ };
38
+ }
39
+ }
40
+ return result;
41
+ }
42
+ calculateDraggableConnectionsAndNodes(payload) {
43
+ let itemsToDrag = [];
44
+ const selectedNodes = payload.selectedItems.map((x) => {
45
+ return this.fNodesContainer.findNode(x.hostElement);
46
+ }).filter((x) => !!x);
47
+ const nodeDragHandlers = selectedNodes.map((x) => new NodeOnPointerMove(this.fLineAlignment, x));
48
+ itemsToDrag = nodeDragHandlers;
49
+ const allOutputs = selectedNodes.reduce((result, x) => {
50
+ return result.concat(this.getOutputsForNode(x));
51
+ }, []);
52
+ const allInputs = selectedNodes.reduce((result, x) => {
53
+ return result.concat(this.getInputsForNode(x));
54
+ }, []);
55
+ nodeDragHandlers.forEach((nodeHandler) => {
56
+ const outputConnections = this.fConnectionsContainer.findOutgoingConnections(this.getOutputsForNode(nodeHandler.fNode));
57
+ outputConnections.forEach((c) => {
58
+ if (allInputs.includes(c.fromTo.input)) {
59
+ itemsToDrag.push(new FConnectionDragHandler(c, payload.transform, this.hostElement));
60
+ }
61
+ else {
62
+ itemsToDrag.push(new FConnectionSourceDragHandler(c, payload.transform, this.hostElement));
63
+ }
64
+ });
65
+ const inputConnections = this.fConnectionsContainer.findIncomingConnections(this.getInputsForNode(nodeHandler.fNode));
66
+ inputConnections.forEach((c) => {
67
+ if (allOutputs.includes(c.fromTo.output)) {
68
+ const index = itemsToDrag.findIndex((x) => x.type === EDraggableType.CONNECTION && x.connection.id === c.id);
69
+ if (index !== -1) {
70
+ itemsToDrag.push(new FConnectionDragHandler(c, payload.transform, this.hostElement));
71
+ }
72
+ }
73
+ else {
74
+ itemsToDrag.push(new FConnectionTargetDragHandler(c, payload.transform, this.hostElement));
75
+ }
76
+ });
77
+ //itemsToDrag.push(new NodeOnPointerMove(this.fLineAlignment, x.fNode));
78
+ });
79
+ return itemsToDrag;
80
+ }
81
+ getInputsForNode(node) {
82
+ return this.fFlow.inputs.toArray().filter((x) => node.isContains(x.hostElement));
83
+ }
84
+ getOutputsForNode(node) {
85
+ return this.fFlow.outputs.toArray().filter((x) => node.isContains(x.hostElement));
86
+ }
87
+ }
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5vbi1wb2ludGVyLWRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1vbi1wb2ludGVyLWRvd24vbm9kZS5vbi1wb2ludGVyLWRvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvQyxPQUFPLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU9yRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUNMLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLGlCQUFpQixFQUNsQixNQUFNLHlCQUF5QixDQUFDO0FBR2pDLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsSUFBWSxxQkFBcUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFZLGVBQWU7UUFDekIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFDWSxjQUFtRCxFQUNuRCxLQUFnQixFQUNoQixXQUEwQjtRQUYxQixtQkFBYyxHQUFkLGNBQWMsQ0FBcUM7UUFDbkQsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtJQUV0QyxDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQWlDO1FBQzdDLElBQUksTUFBZ0MsQ0FBQztRQUVyQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvRyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtvQkFDdEUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDZjtnQkFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLElBQUssQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLFdBQVcsR0FBcUIsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUUxRixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzVDLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUN4QyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRTlDLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUVyRixNQUFNLEdBQUc7b0JBQ1Asa0JBQWtCLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLO29CQUMzQyxxQkFBcUIsRUFBRSx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7b0JBQzNFLGNBQWMsRUFBRSxXQUFXO2lCQUM1QixDQUFBO2FBQ0Y7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxxQ0FBcUMsQ0FBQyxPQUFpQztRQUM3RSxJQUFJLFdBQVcsR0FBcUIsRUFBRSxDQUFDO1FBRXZDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDcEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBRXJDLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakcsV0FBVyxHQUFHLGdCQUFnQixDQUFDO1FBRS9CLE1BQU0sVUFBVSxHQUFzQixhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBeUIsRUFBRSxDQUFZLEVBQUUsRUFBRTtZQUNyRyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVAsTUFBTSxTQUFTLEdBQXFCLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUF3QixFQUFFLENBQVksRUFBRSxFQUFFO1lBQ2xHLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFUCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN2QyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEgsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzlCLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTyxDQUFDLEtBQU0sQ0FBQyxFQUFFO29CQUN4QyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksc0JBQXNCLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7aUJBQ3RGO3FCQUFNO29CQUNMLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSw0QkFBNEIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztpQkFDNUY7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0SCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFPLENBQUMsTUFBMEIsQ0FBQyxFQUFFO29CQUM3RCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxVQUFVLElBQUssQ0FBNEIsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDekksSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7d0JBQ2hCLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztxQkFDdEY7aUJBQ0Y7cUJBQU07b0JBQ0wsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLDRCQUE0QixDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2lCQUM1RjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsd0VBQXdFO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQWU7UUFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQWU7UUFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUhhbmRsZXIsIFBvaW50IH0gZnJvbSAnQGZvYmxleC9jb3JlJztcbmltcG9ydCB7IE5vZGVPblBvaW50ZXJEb3duUmVxdWVzdCB9IGZyb20gJy4vbm9kZS1vbi1wb2ludGVyLWRvd24ucmVxdWVzdCc7XG5pbXBvcnQgeyBGRmxvd0Jhc2UsIGlzTm9kZURyYWdIYW5kbGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IElEcmFnSGFuZGxlciB9IGZyb20gJy4uLy4uL2ktZHJhZy1oYW5kbGVyJztcbmltcG9ydCB7IEZOb2Rlc0NvbnRhaW5lckJhc2UgfSBmcm9tICcuLi8uLi8uLi9mLWNvbnRhaW5lcnMnO1xuaW1wb3J0IHsgRkNvbm5lY3Rpb25zQ29udGFpbmVyQmFzZSB9IGZyb20gJy4uLy4uLy4uL2YtY29udGFpbmVycyc7XG5pbXBvcnQgeyBGTm9kZUlucHV0QmFzZSwgRk5vZGVPdXRwdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGTm9kZUJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IElEcmFnZ2FibGVJdGVtIH0gZnJvbSAnLi4vLi4vaS1kcmFnZ2FibGUtaXRlbSc7XG5pbXBvcnQgeyBFRHJhZ2dhYmxlVHlwZSB9IGZyb20gJy4uLy4uL2UtZHJhZ2dhYmxlLXR5cGUnO1xuaW1wb3J0IHtcbiAgRkNvbm5lY3Rpb25EcmFnSGFuZGxlcixcbiAgRkNvbm5lY3Rpb25Tb3VyY2VEcmFnSGFuZGxlcixcbiAgRkNvbm5lY3Rpb25UYXJnZXREcmFnSGFuZGxlcixcbiAgTm9kZU9uUG9pbnRlck1vdmVcbn0gZnJvbSAnLi4vbm9kZS1vbi1wb2ludGVyLW1vdmUnO1xuaW1wb3J0IHsgRkxpbmVBbGlnbm1lbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9mLWxpbmUtYWxpZ25tZW50JztcblxuZXhwb3J0IGNsYXNzIE5vZGVPblBvaW50ZXJEb3duXG4gICAgaW1wbGVtZW50cyBJSGFuZGxlcjxOb2RlT25Qb2ludGVyRG93blJlcXVlc3QsIElEcmFnSGFuZGxlciB8IHVuZGVmaW5lZD4ge1xuXG4gIHByaXZhdGUgZ2V0IGZDb25uZWN0aW9uc0NvbnRhaW5lcigpOiBGQ29ubmVjdGlvbnNDb250YWluZXJCYXNlIHtcbiAgICByZXR1cm4gdGhpcy5mRmxvdy5mQ29ubmVjdGlvbnNDb250YWluZXI7XG4gIH1cblxuICBwcml2YXRlIGdldCBmTm9kZXNDb250YWluZXIoKTogRk5vZGVzQ29udGFpbmVyQmFzZSB7XG4gICAgcmV0dXJuIHRoaXMuZkZsb3cuZk5vZGVzQ29udGFpbmVyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGZMaW5lQWxpZ25tZW50OiBGTGluZUFsaWdubWVudERpcmVjdGl2ZSB8IHVuZGVmaW5lZCxcbiAgICAgIHByaXZhdGUgZkZsb3c6IEZGbG93QmFzZSxcbiAgICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IFNWR1NWR0VsZW1lbnRcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHBheWxvYWQ6IE5vZGVPblBvaW50ZXJEb3duUmVxdWVzdCk6IElEcmFnSGFuZGxlciB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJlc3VsdDogSURyYWdIYW5kbGVyIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZk5vZGVzQ29udGFpbmVyLmZpbmROb2RlKHBheWxvYWQuZXZlbnQudGFyZ2V0RWxlbWVudCk7XG4gICAgY29uc3QgcG9pbnRlclBvc2l0aW9uSW5DYW52YXMgPSBQb2ludC5mcm9tUG9pbnQocGF5bG9hZC5ldmVudC5nZXRQb3NpdGlvbigpKS5tYXRyaXhUcmFuc2Zvcm0odGhpcy5ob3N0RWxlbWVudCk7XG5cbiAgICBpZiAobm9kZSkge1xuICAgICAgaWYgKGlzTm9kZURyYWdIYW5kbGUocGF5bG9hZC5ldmVudC50YXJnZXRFbGVtZW50KSkge1xuICAgICAgICBpZiAoIXBheWxvYWQuc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhub2RlKSAmJiBwYXlsb2FkLmlzTW92ZUN1cnJlbnROb2RlKSB7XG4gICAgICAgICAgcGF5bG9hZC5zZWxlY3RlZEl0ZW1zLnB1c2gobm9kZSk7XG4gICAgICAgICAgbm9kZS5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZOb2Rlc0NvbnRhaW5lci5zZXROb2RlVG9Ub3BMYXllcihub2RlISk7XG4gICAgICAgIGNvbnN0IGl0ZW1zVG9EcmFnOiBJRHJhZ2dhYmxlSXRlbVtdID0gdGhpcy5jYWxjdWxhdGVEcmFnZ2FibGVDb25uZWN0aW9uc0FuZE5vZGVzKHBheWxvYWQpO1xuXG4gICAgICAgIGNvbnN0IGRyYWdnZWROb2RlcyA9IGl0ZW1zVG9EcmFnLmZpbHRlcigoeCkgPT4ge1xuICAgICAgICAgIHJldHVybiB4LnR5cGUgPT09IEVEcmFnZ2FibGVUeXBlLk5PREU7XG4gICAgICAgIH0pLm1hcCgoeCkgPT4gKHggYXMgTm9kZU9uUG9pbnRlck1vdmUpLmZOb2RlKTtcblxuICAgICAgICB0aGlzLmZMaW5lQWxpZ25tZW50Py5pbml0aWFsaXplKHRoaXMuZk5vZGVzQ29udGFpbmVyLmZOb2Rlcy50b0FycmF5KCksIGRyYWdnZWROb2Rlcyk7XG5cbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgIG9uUG9pbnRlckRvd25TY2FsZTogcGF5bG9hZC50cmFuc2Zvcm0uc2NhbGUsXG4gICAgICAgICAgb25Qb2ludGVyRG93blBvc2l0aW9uOiBwb2ludGVyUG9zaXRpb25JbkNhbnZhcy5kaXYocGF5bG9hZC50cmFuc2Zvcm0uc2NhbGUpLFxuICAgICAgICAgIGRyYWdnYWJsZUl0ZW1zOiBpdGVtc1RvRHJhZ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlRHJhZ2dhYmxlQ29ubmVjdGlvbnNBbmROb2RlcyhwYXlsb2FkOiBOb2RlT25Qb2ludGVyRG93blJlcXVlc3QpOiBJRHJhZ2dhYmxlSXRlbVtdIHtcbiAgICBsZXQgaXRlbXNUb0RyYWc6IElEcmFnZ2FibGVJdGVtW10gPSBbXTtcblxuICAgIGNvbnN0IHNlbGVjdGVkTm9kZXMgPSBwYXlsb2FkLnNlbGVjdGVkSXRlbXMubWFwKCh4KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5mTm9kZXNDb250YWluZXIuZmluZE5vZGUoeC5ob3N0RWxlbWVudCk7XG4gICAgfSkuZmlsdGVyKCh4KSA9PiAhIXgpIGFzIEZOb2RlQmFzZVtdO1xuXG4gICAgY29uc3Qgbm9kZURyYWdIYW5kbGVycyA9IHNlbGVjdGVkTm9kZXMubWFwKCh4KSA9PiBuZXcgTm9kZU9uUG9pbnRlck1vdmUodGhpcy5mTGluZUFsaWdubWVudCwgeCkpO1xuICAgIGl0ZW1zVG9EcmFnID0gbm9kZURyYWdIYW5kbGVycztcblxuICAgIGNvbnN0IGFsbE91dHB1dHM6IEZOb2RlT3V0cHV0QmFzZVtdID0gc2VsZWN0ZWROb2Rlcy5yZWR1Y2UoKHJlc3VsdDogRk5vZGVPdXRwdXRCYXNlW10sIHg6IEZOb2RlQmFzZSkgPT4ge1xuICAgICAgcmV0dXJuIHJlc3VsdC5jb25jYXQodGhpcy5nZXRPdXRwdXRzRm9yTm9kZSh4KSk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgYWxsSW5wdXRzOiBGTm9kZUlucHV0QmFzZVtdID0gc2VsZWN0ZWROb2Rlcy5yZWR1Y2UoKHJlc3VsdDogRk5vZGVJbnB1dEJhc2VbXSwgeDogRk5vZGVCYXNlKSA9PiB7XG4gICAgICByZXR1cm4gcmVzdWx0LmNvbmNhdCh0aGlzLmdldElucHV0c0Zvck5vZGUoeCkpO1xuICAgIH0sIFtdKTtcblxuICAgIG5vZGVEcmFnSGFuZGxlcnMuZm9yRWFjaCgobm9kZUhhbmRsZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dENvbm5lY3Rpb25zID0gdGhpcy5mQ29ubmVjdGlvbnNDb250YWluZXIuZmluZE91dGdvaW5nQ29ubmVjdGlvbnModGhpcy5nZXRPdXRwdXRzRm9yTm9kZShub2RlSGFuZGxlci5mTm9kZSkpO1xuICAgICAgb3V0cHV0Q29ubmVjdGlvbnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICBpZiAoYWxsSW5wdXRzLmluY2x1ZGVzKGMuZnJvbVRvIS5pbnB1dCEpKSB7XG4gICAgICAgICAgaXRlbXNUb0RyYWcucHVzaChuZXcgRkNvbm5lY3Rpb25EcmFnSGFuZGxlcihjLCBwYXlsb2FkLnRyYW5zZm9ybSwgdGhpcy5ob3N0RWxlbWVudCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1zVG9EcmFnLnB1c2gobmV3IEZDb25uZWN0aW9uU291cmNlRHJhZ0hhbmRsZXIoYywgcGF5bG9hZC50cmFuc2Zvcm0sIHRoaXMuaG9zdEVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBpbnB1dENvbm5lY3Rpb25zID0gdGhpcy5mQ29ubmVjdGlvbnNDb250YWluZXIuZmluZEluY29taW5nQ29ubmVjdGlvbnModGhpcy5nZXRJbnB1dHNGb3JOb2RlKG5vZGVIYW5kbGVyLmZOb2RlKSk7XG4gICAgICBpbnB1dENvbm5lY3Rpb25zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgaWYgKGFsbE91dHB1dHMuaW5jbHVkZXMoYy5mcm9tVG8hLm91dHB1dCEgYXMgRk5vZGVPdXRwdXRCYXNlKSkge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gaXRlbXNUb0RyYWcuZmluZEluZGV4KCh4KSA9PiB4LnR5cGUgPT09IEVEcmFnZ2FibGVUeXBlLkNPTk5FQ1RJT04gJiYgKHggYXMgRkNvbm5lY3Rpb25EcmFnSGFuZGxlcikuY29ubmVjdGlvbi5pZCA9PT0gYy5pZCk7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgaXRlbXNUb0RyYWcucHVzaChuZXcgRkNvbm5lY3Rpb25EcmFnSGFuZGxlcihjLCBwYXlsb2FkLnRyYW5zZm9ybSwgdGhpcy5ob3N0RWxlbWVudCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtc1RvRHJhZy5wdXNoKG5ldyBGQ29ubmVjdGlvblRhcmdldERyYWdIYW5kbGVyKGMsIHBheWxvYWQudHJhbnNmb3JtLCB0aGlzLmhvc3RFbGVtZW50KSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy9pdGVtc1RvRHJhZy5wdXNoKG5ldyBOb2RlT25Qb2ludGVyTW92ZSh0aGlzLmZMaW5lQWxpZ25tZW50LCB4LmZOb2RlKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zVG9EcmFnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnB1dHNGb3JOb2RlKG5vZGU6IEZOb2RlQmFzZSk6IEZOb2RlSW5wdXRCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLmZGbG93LmlucHV0cy50b0FycmF5KCkuZmlsdGVyKCh4KSA9PiBub2RlLmlzQ29udGFpbnMoeC5ob3N0RWxlbWVudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdXRwdXRzRm9yTm9kZShub2RlOiBGTm9kZUJhc2UpOiBGTm9kZU91dHB1dEJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuZkZsb3cub3V0cHV0cy50b0FycmF5KCkuZmlsdGVyKCh4KSA9PiBub2RlLmlzQ29udGFpbnMoeC5ob3N0RWxlbWVudCkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { RectExtensions } from '@foblex/core';
2
+ import { EDraggableType } from '../../e-draggable-type';
3
+ import { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';
4
+ export class FConnectionSourceDragHandler {
5
+ constructor(connection, canvasTransform, canvasHost) {
6
+ this.connection = connection;
7
+ this.type = EDraggableType.CONNECTION;
8
+ this.onPointerDownFromConnectorRect = RectExtensions.initialize();
9
+ this.onPointerDownToConnectorRect = RectExtensions.initialize();
10
+ this.onPointerDownFromConnectorRect = this.connection.fromTo.output.getElementRectInCanvas(canvasTransform, canvasHost);
11
+ this.onPointerDownToConnectorRect = this.connection.fromTo.input.getElementRectInCanvas(canvasTransform, canvasHost);
12
+ }
13
+ initialize() {
14
+ }
15
+ move(difference) {
16
+ const fromPoint = RectExtensions.addPoint(this.onPointerDownFromConnectorRect, difference);
17
+ const vector = getConnectionIntersect(fromPoint, this.onPointerDownToConnectorRect);
18
+ this.connection.setVector(vector);
19
+ this.connection.redraw();
20
+ }
21
+ complete() {
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLXNvdXJjZS5kcmFnLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1vbi1wb2ludGVyLW1vdmUvZi1jb25uZWN0aW9uLXNvdXJjZS5kcmFnLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQyxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXRHLE1BQU0sT0FBTyw0QkFBNEI7SUFPdkMsWUFDVSxVQUE0QyxFQUNwRCxlQUFnQyxFQUNoQyxVQUF5QjtRQUZqQixlQUFVLEdBQVYsVUFBVSxDQUFrQztRQU50QyxTQUFJLEdBQW1CLGNBQWMsQ0FBQyxVQUFVLENBQUM7UUFFaEQsbUNBQThCLEdBQVUsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BFLGlDQUE0QixHQUFVLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQU9qRixJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6SCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFPLENBQUMsS0FBTSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6SCxDQUFDO0lBRU0sVUFBVTtJQUNqQixDQUFDO0lBRU0sSUFBSSxDQUFDLFVBQWtCO1FBQzVCLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxRQUFRO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBvaW50LCBJUmVjdCwgSVRyYW5zZm9ybU1vZGVsLCBSZWN0RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBJRHJhZ2dhYmxlSXRlbSB9IGZyb20gJy4uLy4uL2ktZHJhZ2dhYmxlLWl0ZW0nO1xuaW1wb3J0IHsgRURyYWdnYWJsZVR5cGUgfSBmcm9tICcuLi8uLi9lLWRyYWdnYWJsZS10eXBlJztcbmltcG9ydCB7IEZDb25uZWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi1iYXNlJztcbmltcG9ydCB7IEZOb2RlT3V0cHV0QmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgZ2V0Q29ubmVjdGlvbkludGVyc2VjdCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZi1jb25uZWN0aW9uL2dldC1jb25uZWN0aW9uLWludGVyc2VjdCc7XG5cbmV4cG9ydCBjbGFzcyBGQ29ubmVjdGlvblNvdXJjZURyYWdIYW5kbGVyIGltcGxlbWVudHMgSURyYWdnYWJsZUl0ZW0ge1xuXG4gIHB1YmxpYyByZWFkb25seSB0eXBlOiBFRHJhZ2dhYmxlVHlwZSA9IEVEcmFnZ2FibGVUeXBlLkNPTk5FQ1RJT047XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvblBvaW50ZXJEb3duRnJvbUNvbm5lY3RvclJlY3Q6IElSZWN0ID0gUmVjdEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uUG9pbnRlckRvd25Ub0Nvbm5lY3RvclJlY3Q6IElSZWN0ID0gUmVjdEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlPEZOb2RlT3V0cHV0QmFzZT4sXG4gICAgY2FudmFzVHJhbnNmb3JtOiBJVHJhbnNmb3JtTW9kZWwsXG4gICAgY2FudmFzSG9zdDogU1ZHU1ZHRWxlbWVudFxuICApIHtcbiAgICB0aGlzLm9uUG9pbnRlckRvd25Gcm9tQ29ubmVjdG9yUmVjdCA9IHRoaXMuY29ubmVjdGlvbi5mcm9tVG8hLm91dHB1dC5nZXRFbGVtZW50UmVjdEluQ2FudmFzKGNhbnZhc1RyYW5zZm9ybSwgY2FudmFzSG9zdCk7XG4gICAgdGhpcy5vblBvaW50ZXJEb3duVG9Db25uZWN0b3JSZWN0ID0gdGhpcy5jb25uZWN0aW9uLmZyb21UbyEuaW5wdXQhLmdldEVsZW1lbnRSZWN0SW5DYW52YXMoY2FudmFzVHJhbnNmb3JtLCBjYW52YXNIb3N0KTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKCk6IHZvaWQge1xuICB9XG5cbiAgcHVibGljIG1vdmUoZGlmZmVyZW5jZTogSVBvaW50KTogdm9pZCB7XG4gICAgY29uc3QgZnJvbVBvaW50ID0gUmVjdEV4dGVuc2lvbnMuYWRkUG9pbnQodGhpcy5vblBvaW50ZXJEb3duRnJvbUNvbm5lY3RvclJlY3QsIGRpZmZlcmVuY2UpO1xuICAgIGNvbnN0IHZlY3RvciA9IGdldENvbm5lY3Rpb25JbnRlcnNlY3QoZnJvbVBvaW50LCB0aGlzLm9uUG9pbnRlckRvd25Ub0Nvbm5lY3RvclJlY3QpO1xuICAgIHRoaXMuY29ubmVjdGlvbi5zZXRWZWN0b3IodmVjdG9yKTtcbiAgICB0aGlzLmNvbm5lY3Rpb24ucmVkcmF3KCk7XG4gIH1cblxuICBwdWJsaWMgY29tcGxldGUoKTogdm9pZCB7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { RectExtensions } from '@foblex/core';
2
+ import { EDraggableType } from '../../e-draggable-type';
3
+ import { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';
4
+ export class FConnectionTargetDragHandler {
5
+ constructor(connection, canvasTransform, canvasHost) {
6
+ this.connection = connection;
7
+ this.type = EDraggableType.CONNECTION;
8
+ this.onPointerDownFromConnectorRect = RectExtensions.initialize();
9
+ this.onPointerDownToConnectorRect = RectExtensions.initialize();
10
+ this.onPointerDownFromConnectorRect = this.connection.fromTo.output.getElementRectInCanvas(canvasTransform, canvasHost);
11
+ this.onPointerDownToConnectorRect = this.connection.fromTo.input.getElementRectInCanvas(canvasTransform, canvasHost);
12
+ }
13
+ initialize() {
14
+ }
15
+ move(difference) {
16
+ const toPoint = RectExtensions.addPoint(this.onPointerDownToConnectorRect, difference);
17
+ const vector = getConnectionIntersect(this.onPointerDownFromConnectorRect, toPoint);
18
+ this.connection.setVector(vector);
19
+ this.connection.redraw();
20
+ }
21
+ complete() {
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLXRhcmdldC5kcmFnLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1vbi1wb2ludGVyLW1vdmUvZi1jb25uZWN0aW9uLXRhcmdldC5kcmFnLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQyxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXRHLE1BQU0sT0FBTyw0QkFBNEI7SUFPdkMsWUFDVSxVQUE0QyxFQUNwRCxlQUFnQyxFQUNoQyxVQUF5QjtRQUZqQixlQUFVLEdBQVYsVUFBVSxDQUFrQztRQU50QyxTQUFJLEdBQW1CLGNBQWMsQ0FBQyxVQUFVLENBQUM7UUFFaEQsbUNBQThCLEdBQVUsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BFLGlDQUE0QixHQUFVLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQU9qRixJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6SCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFPLENBQUMsS0FBTSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6SCxDQUFDO0lBRU0sVUFBVTtJQUNqQixDQUFDO0lBRU0sSUFBSSxDQUFDLFVBQWtCO1FBQzVCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZGLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxRQUFRO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBvaW50LCBJUmVjdCwgSVRyYW5zZm9ybU1vZGVsLCBSZWN0RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBJRHJhZ2dhYmxlSXRlbSB9IGZyb20gJy4uLy4uL2ktZHJhZ2dhYmxlLWl0ZW0nO1xuaW1wb3J0IHsgRURyYWdnYWJsZVR5cGUgfSBmcm9tICcuLi8uLi9lLWRyYWdnYWJsZS10eXBlJztcbmltcG9ydCB7IEZDb25uZWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZi1jb25uZWN0aW9uL2YtY29ubmVjdGlvbi1iYXNlJztcbmltcG9ydCB7IEZOb2RlT3V0cHV0QmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgZ2V0Q29ubmVjdGlvbkludGVyc2VjdCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvZi1jb25uZWN0aW9uL2dldC1jb25uZWN0aW9uLWludGVyc2VjdCc7XG5cbmV4cG9ydCBjbGFzcyBGQ29ubmVjdGlvblRhcmdldERyYWdIYW5kbGVyIGltcGxlbWVudHMgSURyYWdnYWJsZUl0ZW0ge1xuXG4gIHB1YmxpYyByZWFkb25seSB0eXBlOiBFRHJhZ2dhYmxlVHlwZSA9IEVEcmFnZ2FibGVUeXBlLkNPTk5FQ1RJT047XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvblBvaW50ZXJEb3duRnJvbUNvbm5lY3RvclJlY3Q6IElSZWN0ID0gUmVjdEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uUG9pbnRlckRvd25Ub0Nvbm5lY3RvclJlY3Q6IElSZWN0ID0gUmVjdEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlPEZOb2RlT3V0cHV0QmFzZT4sXG4gICAgY2FudmFzVHJhbnNmb3JtOiBJVHJhbnNmb3JtTW9kZWwsXG4gICAgY2FudmFzSG9zdDogU1ZHU1ZHRWxlbWVudFxuICApIHtcbiAgICB0aGlzLm9uUG9pbnRlckRvd25Gcm9tQ29ubmVjdG9yUmVjdCA9IHRoaXMuY29ubmVjdGlvbi5mcm9tVG8hLm91dHB1dC5nZXRFbGVtZW50UmVjdEluQ2FudmFzKGNhbnZhc1RyYW5zZm9ybSwgY2FudmFzSG9zdCk7XG4gICAgdGhpcy5vblBvaW50ZXJEb3duVG9Db25uZWN0b3JSZWN0ID0gdGhpcy5jb25uZWN0aW9uLmZyb21UbyEuaW5wdXQhLmdldEVsZW1lbnRSZWN0SW5DYW52YXMoY2FudmFzVHJhbnNmb3JtLCBjYW52YXNIb3N0KTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKCk6IHZvaWQge1xuICB9XG5cbiAgcHVibGljIG1vdmUoZGlmZmVyZW5jZTogSVBvaW50KTogdm9pZCB7XG4gICAgY29uc3QgdG9Qb2ludCA9IFJlY3RFeHRlbnNpb25zLmFkZFBvaW50KHRoaXMub25Qb2ludGVyRG93blRvQ29ubmVjdG9yUmVjdCwgZGlmZmVyZW5jZSk7XG4gICAgY29uc3QgdmVjdG9yID0gZ2V0Q29ubmVjdGlvbkludGVyc2VjdCh0aGlzLm9uUG9pbnRlckRvd25Gcm9tQ29ubmVjdG9yUmVjdCwgdG9Qb2ludCk7XG4gICAgdGhpcy5jb25uZWN0aW9uLnNldFZlY3Rvcih2ZWN0b3IpO1xuICAgIHRoaXMuY29ubmVjdGlvbi5yZWRyYXcoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb21wbGV0ZSgpOiB2b2lkIHtcbiAgfVxufVxuIl19
@@ -0,0 +1,22 @@
1
+ import { Point, VectorExtensions } from '@foblex/core';
2
+ import { EDraggableType } from '../../e-draggable-type';
3
+ import { getConnectionIntersect } from '../../../../components/f-connection/get-connection-intersect';
4
+ export class FConnectionDragHandler {
5
+ constructor(connection, canvasTransform, canvasHost) {
6
+ this.connection = connection;
7
+ this.type = EDraggableType.CONNECTION;
8
+ this.onPointerDownVector = VectorExtensions.initialize();
9
+ this.onPointerDownVector = getConnectionIntersect(this.connection.fromTo.output.getElementRectInCanvas(canvasTransform, canvasHost), this.connection.fromTo.input.getElementRectInCanvas(canvasTransform, canvasHost));
10
+ }
11
+ initialize() {
12
+ }
13
+ move(difference) {
14
+ const fromPoint = Point.fromPoint(this.onPointerDownVector.point1).add(difference);
15
+ const toPoint = Point.fromPoint(this.onPointerDownVector.point2).add(difference);
16
+ this.connection.setVector(VectorExtensions.initialize(fromPoint, toPoint));
17
+ this.connection.redraw();
18
+ }
19
+ complete() {
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLmRyYWctaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvbGliL2RpcmVjdGl2ZXMvZi1kcmFnZ2FibGUvbm9kZS9ub2RlLW9uLXBvaW50ZXItbW92ZS9mLWNvbm5lY3Rpb24uZHJhZy1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV0RyxNQUFNLE9BQU8sc0JBQXNCO0lBTWpDLFlBQ1MsVUFBNEMsRUFDbkQsZUFBZ0MsRUFDaEMsVUFBeUI7UUFGbEIsZUFBVSxHQUFWLFVBQVUsQ0FBa0M7UUFMckMsU0FBSSxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUM7UUFFekMsd0JBQW1CLEdBQVksZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFPbkUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLHNCQUFzQixDQUMvQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxFQUNsRixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU8sQ0FBQyxLQUFNLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUNuRixDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7SUFDakIsQ0FBQztJQUVNLElBQUksQ0FBQyxVQUFrQjtRQUM1QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkYsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWpGLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxRQUFRO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBvaW50LCBJVHJhbnNmb3JtTW9kZWwsIElWZWN0b3IsIFBvaW50LCBWZWN0b3JFeHRlbnNpb25zIH0gZnJvbSAnQGZvYmxleC9jb3JlJztcbmltcG9ydCB7IElEcmFnZ2FibGVJdGVtIH0gZnJvbSAnLi4vLi4vaS1kcmFnZ2FibGUtaXRlbSc7XG5pbXBvcnQgeyBFRHJhZ2dhYmxlVHlwZSB9IGZyb20gJy4uLy4uL2UtZHJhZ2dhYmxlLXR5cGUnO1xuaW1wb3J0IHsgRkNvbm5lY3Rpb25CYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9mLWNvbm5lY3Rpb24vZi1jb25uZWN0aW9uLWJhc2UnO1xuaW1wb3J0IHsgRk5vZGVPdXRwdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBnZXRDb25uZWN0aW9uSW50ZXJzZWN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9mLWNvbm5lY3Rpb24vZ2V0LWNvbm5lY3Rpb24taW50ZXJzZWN0JztcblxuZXhwb3J0IGNsYXNzIEZDb25uZWN0aW9uRHJhZ0hhbmRsZXIgaW1wbGVtZW50cyBJRHJhZ2dhYmxlSXRlbSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSBFRHJhZ2dhYmxlVHlwZS5DT05ORUNUSU9OO1xuXG4gIHByaXZhdGUgb25Qb2ludGVyRG93blZlY3RvcjogSVZlY3RvciA9IFZlY3RvckV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2U8Rk5vZGVPdXRwdXRCYXNlPixcbiAgICBjYW52YXNUcmFuc2Zvcm06IElUcmFuc2Zvcm1Nb2RlbCxcbiAgICBjYW52YXNIb3N0OiBTVkdTVkdFbGVtZW50XG4gICkge1xuICAgIHRoaXMub25Qb2ludGVyRG93blZlY3RvciA9IGdldENvbm5lY3Rpb25JbnRlcnNlY3QoXG4gICAgICB0aGlzLmNvbm5lY3Rpb24uZnJvbVRvIS5vdXRwdXQuZ2V0RWxlbWVudFJlY3RJbkNhbnZhcyhjYW52YXNUcmFuc2Zvcm0sIGNhbnZhc0hvc3QpLFxuICAgICAgdGhpcy5jb25uZWN0aW9uLmZyb21UbyEuaW5wdXQhLmdldEVsZW1lbnRSZWN0SW5DYW52YXMoY2FudmFzVHJhbnNmb3JtLCBjYW52YXNIb3N0KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlKGRpZmZlcmVuY2U6IElQb2ludCk6IHZvaWQge1xuICAgIGNvbnN0IGZyb21Qb2ludCA9IFBvaW50LmZyb21Qb2ludCh0aGlzLm9uUG9pbnRlckRvd25WZWN0b3IucG9pbnQxKS5hZGQoZGlmZmVyZW5jZSk7XG4gICAgY29uc3QgdG9Qb2ludCA9IFBvaW50LmZyb21Qb2ludCh0aGlzLm9uUG9pbnRlckRvd25WZWN0b3IucG9pbnQyKS5hZGQoZGlmZmVyZW5jZSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24uc2V0VmVjdG9yKFZlY3RvckV4dGVuc2lvbnMuaW5pdGlhbGl6ZShmcm9tUG9pbnQsIHRvUG9pbnQpKTtcbiAgICB0aGlzLmNvbm5lY3Rpb24ucmVkcmF3KCk7XG4gIH1cblxuICBwdWJsaWMgY29tcGxldGUoKTogdm9pZCB7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './f-connection.drag-handler';
2
+ export * from './f-connection-source.drag-handler';
3
+ export * from './f-connection-target.drag-handler';
4
+ export * from './node.on-pointer-move';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1vbi1wb2ludGVyLW1vdmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZi1jb25uZWN0aW9uLmRyYWctaGFuZGxlcic7XG5leHBvcnQgKiBmcm9tICcuL2YtY29ubmVjdGlvbi1zb3VyY2UuZHJhZy1oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZi1jb25uZWN0aW9uLXRhcmdldC5kcmFnLWhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9ub2RlLm9uLXBvaW50ZXItbW92ZSc7XG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { Point, PointExtensions } from '@foblex/core';
2
+ import { EDraggableType } from '../../e-draggable-type';
3
+ export class NodeOnPointerMove {
4
+ constructor(fLineAlignment, fNode) {
5
+ this.fLineAlignment = fLineAlignment;
6
+ this.fNode = fNode;
7
+ this.type = EDraggableType.NODE;
8
+ this.onPointerDownPosition = PointExtensions.initialize();
9
+ this.onPointerDownPosition = this.fNode.position;
10
+ }
11
+ initialize() {
12
+ }
13
+ move(difference) {
14
+ const position = Point.fromPoint(this.onPointerDownPosition).add(difference);
15
+ this.fNode.updatePosition(position);
16
+ this.fNode.redraw();
17
+ this.fLineAlignment?.handle(difference);
18
+ }
19
+ complete() {
20
+ this.fNode.completeDrag();
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5vbi1wb2ludGVyLW1vdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1vbi1wb2ludGVyLW1vdmUvbm9kZS5vbi1wb2ludGVyLW1vdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSXhELE1BQU0sT0FBTyxpQkFBaUI7SUFNNUIsWUFDVSxjQUFtRCxFQUNwRCxLQUFnQjtRQURmLG1CQUFjLEdBQWQsY0FBYyxDQUFxQztRQUNwRCxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBTlQsU0FBSSxHQUFtQixjQUFjLENBQUMsSUFBSSxDQUFDO1FBRW5ELDBCQUFxQixHQUFXLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQU1uRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDbkQsQ0FBQztJQUVNLFVBQVU7SUFDakIsQ0FBQztJQUVNLElBQUksQ0FBQyxVQUFrQjtRQUM1QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUG9pbnQsIFBvaW50LCBQb2ludEV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4L2NvcmUnO1xuaW1wb3J0IHsgSURyYWdnYWJsZUl0ZW0gfSBmcm9tICcuLi8uLi9pLWRyYWdnYWJsZS1pdGVtJztcbmltcG9ydCB7IEVEcmFnZ2FibGVUeXBlIH0gZnJvbSAnLi4vLi4vZS1kcmFnZ2FibGUtdHlwZSc7XG5pbXBvcnQgeyBGTm9kZUJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEZMaW5lQWxpZ25tZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZi1saW5lLWFsaWdubWVudCc7XG5cbmV4cG9ydCBjbGFzcyBOb2RlT25Qb2ludGVyTW92ZSBpbXBsZW1lbnRzIElEcmFnZ2FibGVJdGVtIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogRURyYWdnYWJsZVR5cGUgPSBFRHJhZ2dhYmxlVHlwZS5OT0RFO1xuXG4gIHByaXZhdGUgb25Qb2ludGVyRG93blBvc2l0aW9uOiBJUG9pbnQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZkxpbmVBbGlnbm1lbnQ6IEZMaW5lQWxpZ25tZW50RGlyZWN0aXZlIHwgdW5kZWZpbmVkLFxuICAgIHB1YmxpYyBmTm9kZTogRk5vZGVCYXNlXG4gICkge1xuICAgIHRoaXMub25Qb2ludGVyRG93blBvc2l0aW9uID0gdGhpcy5mTm9kZS5wb3NpdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKCk6IHZvaWQge1xuICB9XG5cbiAgcHVibGljIG1vdmUoZGlmZmVyZW5jZTogSVBvaW50KTogdm9pZCB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBQb2ludC5mcm9tUG9pbnQodGhpcy5vblBvaW50ZXJEb3duUG9zaXRpb24pLmFkZChkaWZmZXJlbmNlKTtcbiAgICB0aGlzLmZOb2RlLnVwZGF0ZVBvc2l0aW9uKHBvc2l0aW9uKTtcbiAgICB0aGlzLmZOb2RlLnJlZHJhdygpO1xuICAgIHRoaXMuZkxpbmVBbGlnbm1lbnQ/LmhhbmRsZShkaWZmZXJlbmNlKTtcbiAgfVxuXG4gIHB1YmxpYyBjb21wbGV0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZOb2RlLmNvbXBsZXRlRHJhZygpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './node.on-pointer-up';
2
+ export * from './node-on-pointer-up.request';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1vbi1wb2ludGVyLXVwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbm9kZS5vbi1wb2ludGVyLXVwJztcbmV4cG9ydCAqIGZyb20gJy4vbm9kZS1vbi1wb2ludGVyLXVwLnJlcXVlc3QnO1xuIl19
@@ -0,0 +1,7 @@
1
+ export class NodeOnPointerUpRequest {
2
+ constructor(event, dragHandler) {
3
+ this.event = event;
4
+ this.dragHandler = dragHandler;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1vbi1wb2ludGVyLXVwLnJlcXVlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL25vZGUvbm9kZS1vbi1wb2ludGVyLXVwL25vZGUtb24tcG9pbnRlci11cC5yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFDUyxLQUFvQixFQUNwQixXQUF5QjtRQUR6QixVQUFLLEdBQUwsS0FBSyxDQUFlO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFjO0lBRWxDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2ludGVyRXZlbnQgfSBmcm9tICdAZm9ibGV4L2NvcmUnO1xuaW1wb3J0IHsgSURyYWdIYW5kbGVyIH0gZnJvbSAnLi4vLi4vaS1kcmFnLWhhbmRsZXInO1xuXG5leHBvcnQgY2xhc3MgTm9kZU9uUG9pbnRlclVwUmVxdWVzdCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGV2ZW50OiBJUG9pbnRlckV2ZW50LFxuICAgIHB1YmxpYyBkcmFnSGFuZGxlcjogSURyYWdIYW5kbGVyXG4gICkge1xuICB9XG59XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { Point } from '@foblex/core';
2
+ import { EDraggableType } from '../../e-draggable-type';
3
+ export class NodeOnPointerUp {
4
+ constructor(fLineAlignment, fConnectIfIntersect, hostElement) {
5
+ this.fLineAlignment = fLineAlignment;
6
+ this.fConnectIfIntersect = fConnectIfIntersect;
7
+ this.hostElement = hostElement;
8
+ }
9
+ handle(payload) {
10
+ const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);
11
+ let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);
12
+ const isDragNodes = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.NODE);
13
+ if (isDragNodes) {
14
+ const nearestIntersection = this.fLineAlignment?.findNearestCoordinate(difference);
15
+ if (nearestIntersection) {
16
+ difference.x = nearestIntersection.xResult.value ? (difference.x - nearestIntersection.xResult.distance) : difference.x;
17
+ difference.y = nearestIntersection.yResult.value ? (difference.y - nearestIntersection.yResult.distance) : difference.y;
18
+ }
19
+ payload.dragHandler.draggableItems.forEach((x) => {
20
+ x.move(difference);
21
+ x.complete();
22
+ });
23
+ this.fConnectIfIntersect?.handle(payload.dragHandler.draggableItems);
24
+ this.fLineAlignment?.complete();
25
+ }
26
+ }
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5vbi1wb2ludGVyLXVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9saWIvZGlyZWN0aXZlcy9mLWRyYWdnYWJsZS9ub2RlL25vZGUtb24tcG9pbnRlci11cC9ub2RlLm9uLXBvaW50ZXItdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJeEQsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFDVSxjQUFtRCxFQUNuRCxtQkFBNkQsRUFDOUQsV0FBMEI7UUFGekIsbUJBQWMsR0FBZCxjQUFjLENBQXFDO1FBQ25ELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMEM7UUFDOUQsZ0JBQVcsR0FBWCxXQUFXLENBQWU7SUFFbkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUErQjtRQUMzQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0csSUFBSSxVQUFVLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXBJLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkcsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkYsSUFBSSxtQkFBbUIsRUFBRTtnQkFDdkIsVUFBVSxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFFBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUN6SCxVQUFVLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsUUFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7YUFDMUg7WUFFRCxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUNqQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElIYW5kbGVyLCBQb2ludCB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBOb2RlT25Qb2ludGVyVXBSZXF1ZXN0IH0gZnJvbSAnLi9ub2RlLW9uLXBvaW50ZXItdXAucmVxdWVzdCc7XG5pbXBvcnQgeyBFRHJhZ2dhYmxlVHlwZSB9IGZyb20gJy4uLy4uL2UtZHJhZ2dhYmxlLXR5cGUnO1xuaW1wb3J0IHsgRkNvbm5lY3RJZkludGVyc2VjdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdC1pZi1pbnRlcnNlY3QnO1xuaW1wb3J0IHsgRkxpbmVBbGlnbm1lbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9mLWxpbmUtYWxpZ25tZW50JztcblxuZXhwb3J0IGNsYXNzIE5vZGVPblBvaW50ZXJVcFxuICBpbXBsZW1lbnRzIElIYW5kbGVyPE5vZGVPblBvaW50ZXJVcFJlcXVlc3QsIHZvaWQ+IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZMaW5lQWxpZ25tZW50OiBGTGluZUFsaWdubWVudERpcmVjdGl2ZSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIGZDb25uZWN0SWZJbnRlcnNlY3Q6IEZDb25uZWN0SWZJbnRlcnNlY3REaXJlY3RpdmUgfCB1bmRlZmluZWQsXG4gICAgcHVibGljIGhvc3RFbGVtZW50OiBTVkdTVkdFbGVtZW50LFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGUocGF5bG9hZDogTm9kZU9uUG9pbnRlclVwUmVxdWVzdCk6IHZvaWQge1xuICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbkluQ2FudmFzID0gUG9pbnQuZnJvbVBvaW50KHBheWxvYWQuZXZlbnQuZ2V0UG9zaXRpb24oKSkubWF0cml4VHJhbnNmb3JtKHRoaXMuaG9zdEVsZW1lbnQpO1xuICAgIGxldCBkaWZmZXJlbmNlID0gcG9pbnRlclBvc2l0aW9uSW5DYW52YXMuZGl2KHBheWxvYWQuZHJhZ0hhbmRsZXIub25Qb2ludGVyRG93blNjYWxlKS5zdWIocGF5bG9hZC5kcmFnSGFuZGxlci5vblBvaW50ZXJEb3duUG9zaXRpb24pO1xuXG4gICAgY29uc3QgaXNEcmFnTm9kZXMgPSBwYXlsb2FkLmRyYWdIYW5kbGVyLmRyYWdnYWJsZUl0ZW1zLnNvbWUoKHgpID0+IHgudHlwZSA9PT0gRURyYWdnYWJsZVR5cGUuTk9ERSk7XG5cbiAgICBpZiAoaXNEcmFnTm9kZXMpIHtcbiAgICAgIGNvbnN0IG5lYXJlc3RJbnRlcnNlY3Rpb24gPSB0aGlzLmZMaW5lQWxpZ25tZW50Py5maW5kTmVhcmVzdENvb3JkaW5hdGUoZGlmZmVyZW5jZSk7XG4gICAgICBpZiAobmVhcmVzdEludGVyc2VjdGlvbikge1xuICAgICAgICBkaWZmZXJlbmNlLnggPSBuZWFyZXN0SW50ZXJzZWN0aW9uLnhSZXN1bHQudmFsdWUgPyAoZGlmZmVyZW5jZS54IC0gbmVhcmVzdEludGVyc2VjdGlvbi54UmVzdWx0LmRpc3RhbmNlISkgOiBkaWZmZXJlbmNlLng7XG4gICAgICAgIGRpZmZlcmVuY2UueSA9IG5lYXJlc3RJbnRlcnNlY3Rpb24ueVJlc3VsdC52YWx1ZSA/IChkaWZmZXJlbmNlLnkgLSBuZWFyZXN0SW50ZXJzZWN0aW9uLnlSZXN1bHQuZGlzdGFuY2UhKSA6IGRpZmZlcmVuY2UueTtcbiAgICAgIH1cblxuICAgICAgcGF5bG9hZC5kcmFnSGFuZGxlci5kcmFnZ2FibGVJdGVtcy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgIHgubW92ZShkaWZmZXJlbmNlKTtcbiAgICAgICAgeC5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZDb25uZWN0SWZJbnRlcnNlY3Q/LmhhbmRsZShwYXlsb2FkLmRyYWdIYW5kbGVyLmRyYWdnYWJsZUl0ZW1zKTtcbiAgICAgIHRoaXMuZkxpbmVBbGlnbm1lbnQ/LmNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './f-draggable.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvbGliL2RpcmVjdGl2ZXMvZi1kcmFnZ2FibGUvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mLWRyYWdnYWJsZS5kaXJlY3RpdmUnO1xuIl19
@@ -0,0 +1,4 @@
1
+ export * from './selection-on-pointer-down';
2
+ export * from './selection-on-pointer-move';
3
+ export * from './selection-on-pointer-up';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL3NlbGVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aW9uLW9uLXBvaW50ZXItZG93bic7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi1vbi1wb2ludGVyLW1vdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Rpb24tb24tcG9pbnRlci11cCc7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './selection.on-pointer-down';
2
+ export * from './selection-on-pointer-down.request';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL3NlbGVjdGlvbi9zZWxlY3Rpb24tb24tcG9pbnRlci1kb3duL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aW9uLm9uLXBvaW50ZXItZG93bic7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi1vbi1wb2ludGVyLWRvd24ucmVxdWVzdCc7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export class SelectionOnPointerDownRequest {
2
+ constructor(event, transform, selectedItems) {
3
+ this.event = event;
4
+ this.transform = transform;
5
+ this.selectedItems = selectedItems;
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW9uLXBvaW50ZXItZG93bi5yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9saWIvZGlyZWN0aXZlcy9mLWRyYWdnYWJsZS9zZWxlY3Rpb24vc2VsZWN0aW9uLW9uLXBvaW50ZXItZG93bi9zZWxlY3Rpb24tb24tcG9pbnRlci1kb3duLnJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLDZCQUE2QjtJQUV4QyxZQUNTLEtBQW9CLEVBQ3BCLFNBQTBCLEVBQzFCLGFBQTRCO1FBRjVCLFVBQUssR0FBTCxLQUFLLENBQWU7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFFckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBvaW50ZXJFdmVudCwgSVRyYW5zZm9ybU1vZGVsIH0gZnJvbSAnQGZvYmxleC9jb3JlJztcbmltcG9ydCB7IElTZWxlY3RhYmxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vaS1zZWxlY3RhYmxlJztcblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbk9uUG9pbnRlckRvd25SZXF1ZXN0IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZXZlbnQ6IElQb2ludGVyRXZlbnQsXG4gICAgcHVibGljIHRyYW5zZm9ybTogSVRyYW5zZm9ybU1vZGVsLFxuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBJU2VsZWN0YWJsZVtdXG4gICkge1xuICB9XG59XG4iXX0=
@@ -0,0 +1,60 @@
1
+ import { MouseEventExtensions, Point } from '@foblex/core';
2
+ import { isNodeOutlet, isNodeOutput } from '../../../../components';
3
+ import { SelectionOnPointerMove } from '../selection-on-pointer-move';
4
+ export class SelectionOnPointerDown {
5
+ constructor(fFlow, fSelection, hostElement) {
6
+ this.fFlow = fFlow;
7
+ this.fSelection = fSelection;
8
+ this.hostElement = hostElement;
9
+ }
10
+ handle(payload) {
11
+ const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);
12
+ let node = this.fFlow.fNodesContainer.findNode(payload.event.targetElement);
13
+ const connection = this.fFlow.fConnectionsContainer.findConnectionWithElement(payload.event.targetElement);
14
+ payload.selectedItems.forEach((x) => {
15
+ x.deselect();
16
+ });
17
+ const isMultiselect = MouseEventExtensions.isCommandButton(payload.event.originalEvent) ||
18
+ MouseEventExtensions.isShiftPressed(payload.event.originalEvent);
19
+ if (!isMultiselect) {
20
+ payload.selectedItems = [];
21
+ }
22
+ if (node) {
23
+ if (isNodeOutlet(payload.event.targetElement) || isNodeOutput(payload.event.targetElement)) {
24
+ node = undefined;
25
+ }
26
+ if (node) {
27
+ if (!payload.selectedItems.includes(node)) {
28
+ payload.selectedItems.push(node);
29
+ }
30
+ else {
31
+ payload.selectedItems.splice(payload.selectedItems.indexOf(node), 1);
32
+ }
33
+ }
34
+ }
35
+ else if (connection) {
36
+ if (!payload.selectedItems.includes(connection)) {
37
+ payload.selectedItems.push(connection);
38
+ }
39
+ else {
40
+ payload.selectedItems.splice(payload.selectedItems.indexOf(connection), 1);
41
+ }
42
+ }
43
+ payload.selectedItems.forEach((x) => {
44
+ x.select();
45
+ });
46
+ let draggableItems = [];
47
+ if (MouseEventExtensions.isShiftPressed(payload.event.originalEvent)) {
48
+ draggableItems = [
49
+ new SelectionOnPointerMove(this.fFlow, this.fSelection, payload.selectedItems, pointerPositionInCanvas)
50
+ ];
51
+ }
52
+ return {
53
+ onPointerDownScale: 1,
54
+ onPointerDownPosition: pointerPositionInCanvas.div(1),
55
+ draggableItems: draggableItems,
56
+ selectedItems: payload.selectedItems
57
+ };
58
+ }
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLm9uLXBvaW50ZXItZG93bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvbGliL2RpcmVjdGl2ZXMvZi1kcmFnZ2FibGUvc2VsZWN0aW9uL3NlbGVjdGlvbi1vbi1wb2ludGVyLWRvd24vc2VsZWN0aW9uLm9uLXBvaW50ZXItZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksb0JBQW9CLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBa0MsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSXBHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR3RFLE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFDWSxLQUFnQixFQUNoQixVQUEyQyxFQUMzQyxXQUEwQjtRQUYxQixVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLGVBQVUsR0FBVixVQUFVLENBQWlDO1FBQzNDLGdCQUFXLEdBQVgsV0FBVyxDQUFlO0lBRXRDLENBQUM7SUFFTSxNQUFNLENBQUMsT0FBc0M7UUFDbEQsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRS9HLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUzRyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxhQUFhLEdBQ2Ysb0JBQW9CLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQ2pFLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsT0FBTyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7U0FDNUI7UUFDRCxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQzFGLElBQUksR0FBRyxTQUFTLENBQUM7YUFDbEI7WUFDRCxJQUFJLElBQUksRUFBRTtnQkFDUixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3pDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNsQztxQkFBTTtvQkFDTCxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDdEU7YUFDRjtTQUVGO2FBQU0sSUFBSSxVQUFVLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUMvQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN4QztpQkFBTTtnQkFDTCxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM1RTtTQUNGO1FBQ0QsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksY0FBYyxHQUFxQixFQUFFLENBQUM7UUFDMUMsSUFBSSxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNwRSxjQUFjLEdBQUc7Z0JBQ2YsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSx1QkFBdUIsQ0FBQzthQUN4RyxDQUFDO1NBQ0g7UUFDRCxPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsQ0FBQztZQUNyQixxQkFBcUIsRUFBRSx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JELGNBQWMsRUFBRSxjQUFjO1lBQzlCLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTtTQUNyQyxDQUFBO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUhhbmRsZXIsIE1vdXNlRXZlbnRFeHRlbnNpb25zLCBQb2ludCB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBGRmxvd0Jhc2UsIEZTZWxlY3Rpb25EaXJlY3RpdmUsIGlzTm9kZU91dGxldCwgaXNOb2RlT3V0cHV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBJU2VsZWN0YWJsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2ktc2VsZWN0YWJsZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25PblBvaW50ZXJEb3duUmVxdWVzdCB9IGZyb20gJy4vc2VsZWN0aW9uLW9uLXBvaW50ZXItZG93bi5yZXF1ZXN0JztcbmltcG9ydCB7IElEcmFnSGFuZGxlciB9IGZyb20gJy4uLy4uL2ktZHJhZy1oYW5kbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbk9uUG9pbnRlck1vdmUgfSBmcm9tICcuLi9zZWxlY3Rpb24tb24tcG9pbnRlci1tb3ZlJztcbmltcG9ydCB7IElEcmFnZ2FibGVJdGVtIH0gZnJvbSAnLi4vLi4vaS1kcmFnZ2FibGUtaXRlbSc7XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25PblBvaW50ZXJEb3duIGltcGxlbWVudHMgSUhhbmRsZXI8U2VsZWN0aW9uT25Qb2ludGVyRG93blJlcXVlc3QsIElEcmFnSGFuZGxlcj4ge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBmRmxvdzogRkZsb3dCYXNlLFxuICAgICAgcHJpdmF0ZSBmU2VsZWN0aW9uOiBGU2VsZWN0aW9uRGlyZWN0aXZlIHwgdW5kZWZpbmVkLFxuICAgICAgcHJpdmF0ZSBob3N0RWxlbWVudDogU1ZHU1ZHRWxlbWVudFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGUocGF5bG9hZDogU2VsZWN0aW9uT25Qb2ludGVyRG93blJlcXVlc3QpOiBJRHJhZ0hhbmRsZXIge1xuICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbkluQ2FudmFzID0gUG9pbnQuZnJvbVBvaW50KHBheWxvYWQuZXZlbnQuZ2V0UG9zaXRpb24oKSkubWF0cml4VHJhbnNmb3JtKHRoaXMuaG9zdEVsZW1lbnQpO1xuXG4gICAgbGV0IG5vZGUgPSB0aGlzLmZGbG93LmZOb2Rlc0NvbnRhaW5lci5maW5kTm9kZShwYXlsb2FkLmV2ZW50LnRhcmdldEVsZW1lbnQpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmZGbG93LmZDb25uZWN0aW9uc0NvbnRhaW5lci5maW5kQ29ubmVjdGlvbldpdGhFbGVtZW50KHBheWxvYWQuZXZlbnQudGFyZ2V0RWxlbWVudCk7XG5cbiAgICBwYXlsb2FkLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgeC5kZXNlbGVjdCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGlzTXVsdGlzZWxlY3QgPVxuICAgICAgICBNb3VzZUV2ZW50RXh0ZW5zaW9ucy5pc0NvbW1hbmRCdXR0b24ocGF5bG9hZC5ldmVudC5vcmlnaW5hbEV2ZW50KSB8fFxuICAgICAgICBNb3VzZUV2ZW50RXh0ZW5zaW9ucy5pc1NoaWZ0UHJlc3NlZChwYXlsb2FkLmV2ZW50Lm9yaWdpbmFsRXZlbnQpO1xuICAgIGlmICghaXNNdWx0aXNlbGVjdCkge1xuICAgICAgcGF5bG9hZC5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgfVxuICAgIGlmIChub2RlKSB7XG4gICAgICBpZiAoaXNOb2RlT3V0bGV0KHBheWxvYWQuZXZlbnQudGFyZ2V0RWxlbWVudCkgfHwgaXNOb2RlT3V0cHV0KHBheWxvYWQuZXZlbnQudGFyZ2V0RWxlbWVudCkpIHtcbiAgICAgICAgbm9kZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIGlmICghcGF5bG9hZC5zZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKG5vZGUpKSB7XG4gICAgICAgICAgcGF5bG9hZC5zZWxlY3RlZEl0ZW1zLnB1c2gobm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF5bG9hZC5zZWxlY3RlZEl0ZW1zLnNwbGljZShwYXlsb2FkLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihub2RlKSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvbikge1xuICAgICAgaWYgKCFwYXlsb2FkLnNlbGVjdGVkSXRlbXMuaW5jbHVkZXMoY29ubmVjdGlvbikpIHtcbiAgICAgICAgcGF5bG9hZC5zZWxlY3RlZEl0ZW1zLnB1c2goY29ubmVjdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXlsb2FkLnNlbGVjdGVkSXRlbXMuc3BsaWNlKHBheWxvYWQuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGNvbm5lY3Rpb24pLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGF5bG9hZC5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKHgpID0+IHtcbiAgICAgIHguc2VsZWN0KCk7XG4gICAgfSk7XG5cbiAgICBsZXQgZHJhZ2dhYmxlSXRlbXM6IElEcmFnZ2FibGVJdGVtW10gPSBbXTtcbiAgICBpZiAoTW91c2VFdmVudEV4dGVuc2lvbnMuaXNTaGlmdFByZXNzZWQocGF5bG9hZC5ldmVudC5vcmlnaW5hbEV2ZW50KSkge1xuICAgICAgZHJhZ2dhYmxlSXRlbXMgPSBbXG4gICAgICAgIG5ldyBTZWxlY3Rpb25PblBvaW50ZXJNb3ZlKHRoaXMuZkZsb3csIHRoaXMuZlNlbGVjdGlvbiwgcGF5bG9hZC5zZWxlY3RlZEl0ZW1zLCBwb2ludGVyUG9zaXRpb25JbkNhbnZhcylcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBvblBvaW50ZXJEb3duU2NhbGU6IDEsXG4gICAgICBvblBvaW50ZXJEb3duUG9zaXRpb246IHBvaW50ZXJQb3NpdGlvbkluQ2FudmFzLmRpdigxKSxcbiAgICAgIGRyYWdnYWJsZUl0ZW1zOiBkcmFnZ2FibGVJdGVtcyxcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHBheWxvYWQuc2VsZWN0ZWRJdGVtc1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './selection.on-pointer-move';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL3NlbGVjdGlvbi9zZWxlY3Rpb24tb24tcG9pbnRlci1tb3ZlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi5vbi1wb2ludGVyLW1vdmUnO1xuIl19
@@ -0,0 +1,54 @@
1
+ import { Point, PointExtensions, RectExtensions } from '@foblex/core';
2
+ import { EDraggableType } from '../../e-draggable-type';
3
+ import { getElementRectInCanvas } from '../../../../components';
4
+ export class SelectionOnPointerMove {
5
+ constructor(fFlow, fSelection, selectedOnStart, onPointerDownPosition = PointExtensions.initialize()) {
6
+ this.fFlow = fFlow;
7
+ this.fSelection = fSelection;
8
+ this.selectedOnStart = selectedOnStart;
9
+ this.onPointerDownPosition = onPointerDownPosition;
10
+ this.type = EDraggableType.SELECTION;
11
+ this.selectedItems = [];
12
+ this.items = [];
13
+ const nodeRects = fFlow.fNodesContainer.fNodes.map((x) => {
14
+ return {
15
+ element: x,
16
+ rect: getElementRectInCanvas(x.hostElement, fFlow.transform, this.fFlow.hostElement)
17
+ };
18
+ });
19
+ const lineRects = fFlow.fConnectionsContainer.fConnections.map((x) => {
20
+ return {
21
+ element: x,
22
+ rect: getElementRectInCanvas(x.fPath.hostElement, fFlow.transform, this.fFlow.hostElement)
23
+ };
24
+ });
25
+ this.items = [...nodeRects, ...lineRects].filter((x) => {
26
+ return !selectedOnStart.includes(x.element);
27
+ });
28
+ }
29
+ initialize() {
30
+ this.fSelection?.show();
31
+ this.fSelection?.draw({ ...this.onPointerDownPosition, width: 0, height: 0 });
32
+ }
33
+ move(difference) {
34
+ const currentPoint = Point.fromPoint(difference).add(this.onPointerDownPosition);
35
+ const x = Math.min(this.onPointerDownPosition.x, currentPoint.x);
36
+ const y = Math.min(this.onPointerDownPosition.y, currentPoint.y);
37
+ const width = Math.abs(difference.x);
38
+ const height = Math.abs(difference.y);
39
+ this.fSelection?.draw({ x, y, width, height });
40
+ this.selectedItems = [];
41
+ this.items.forEach((item) => {
42
+ item.element.deselect();
43
+ if (RectExtensions.intersectionWithRect(item.rect, RectExtensions.initialize(x, y, width, height))) {
44
+ item.element.select();
45
+ this.selectedItems.push(item.element);
46
+ }
47
+ });
48
+ }
49
+ complete() {
50
+ this.fSelection?.hide();
51
+ this.selectedItems.push(...this.selectedOnStart || []);
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLm9uLXBvaW50ZXItbW92ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvbGliL2RpcmVjdGl2ZXMvZi1kcmFnZ2FibGUvc2VsZWN0aW9uL3NlbGVjdGlvbi1vbi1wb2ludGVyLW1vdmUvc2VsZWN0aW9uLm9uLXBvaW50ZXItbW92ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLEtBQUssRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd4RCxPQUFPLEVBQWEsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRSxNQUFNLE9BQU8sc0JBQXNCO0lBUWpDLFlBQ1ksS0FBZ0IsRUFDaEIsVUFBMkMsRUFDM0MsZUFBOEIsRUFDOUIsd0JBQWdDLGVBQWUsQ0FBQyxVQUFVLEVBQUU7UUFINUQsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUNoQixlQUFVLEdBQVYsVUFBVSxDQUFpQztRQUMzQyxvQkFBZSxHQUFmLGVBQWUsQ0FBZTtRQUM5QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVDO1FBVnhELFNBQUksR0FBbUIsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUV6RCxrQkFBYSxHQUFrQixFQUFFLENBQUM7UUFFakMsVUFBSyxHQUE0QyxFQUFFLENBQUM7UUFRMUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsT0FBTztnQkFDTCxPQUFPLEVBQUUsQ0FBQztnQkFDVixJQUFJLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2FBQ3JGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkUsT0FBTztnQkFDTCxPQUFPLEVBQUUsQ0FBQztnQkFDVixJQUFJLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzthQUMzRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUUsR0FBRyxTQUFTLEVBQUUsR0FBRyxTQUFTLENBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2RCxPQUFPLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTSxJQUFJLENBQUMsVUFBa0I7UUFDNUIsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFakYsTUFBTSxDQUFDLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxNQUFNLENBQUMsR0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXpFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsSUFDSSxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQ2hHO2dCQUNBLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN2QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUG9pbnQsIElSZWN0LCBQb2ludCwgUG9pbnRFeHRlbnNpb25zLCBSZWN0RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBJRHJhZ2dhYmxlSXRlbSB9IGZyb20gJy4uLy4uL2ktZHJhZ2dhYmxlLWl0ZW0nO1xuaW1wb3J0IHsgRURyYWdnYWJsZVR5cGUgfSBmcm9tICcuLi8uLi9lLWRyYWdnYWJsZS10eXBlJztcbmltcG9ydCB7IEZTZWxlY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9mLXNlbGVjdGlvbic7XG5pbXBvcnQgeyBJU2VsZWN0YWJsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2ktc2VsZWN0YWJsZSc7XG5pbXBvcnQgeyBGRmxvd0Jhc2UsIGdldEVsZW1lbnRSZWN0SW5DYW52YXMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzJztcblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbk9uUG9pbnRlck1vdmUgaW1wbGVtZW50cyBJRHJhZ2dhYmxlSXRlbSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IEVEcmFnZ2FibGVUeXBlID0gRURyYWdnYWJsZVR5cGUuU0VMRUNUSU9OO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBJU2VsZWN0YWJsZVtdID0gW107XG5cbiAgcHJpdmF0ZSBpdGVtczogeyBlbGVtZW50OiBJU2VsZWN0YWJsZSwgcmVjdDogSVJlY3QgfVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGZGbG93OiBGRmxvd0Jhc2UsXG4gICAgICBwcml2YXRlIGZTZWxlY3Rpb246IEZTZWxlY3Rpb25EaXJlY3RpdmUgfCB1bmRlZmluZWQsXG4gICAgICBwcml2YXRlIHNlbGVjdGVkT25TdGFydDogSVNlbGVjdGFibGVbXSxcbiAgICAgIHByaXZhdGUgb25Qb2ludGVyRG93blBvc2l0aW9uOiBJUG9pbnQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpXG4gICkge1xuICAgIGNvbnN0IG5vZGVSZWN0cyA9IGZGbG93LmZOb2Rlc0NvbnRhaW5lci5mTm9kZXMubWFwKCh4KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbGVtZW50OiB4LFxuICAgICAgICByZWN0OiBnZXRFbGVtZW50UmVjdEluQ2FudmFzKHguaG9zdEVsZW1lbnQsIGZGbG93LnRyYW5zZm9ybSwgdGhpcy5mRmxvdy5ob3N0RWxlbWVudClcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBsaW5lUmVjdHMgPSBmRmxvdy5mQ29ubmVjdGlvbnNDb250YWluZXIuZkNvbm5lY3Rpb25zLm1hcCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudDogeCxcbiAgICAgICAgcmVjdDogZ2V0RWxlbWVudFJlY3RJbkNhbnZhcyh4LmZQYXRoLmhvc3RFbGVtZW50LCBmRmxvdy50cmFuc2Zvcm0sIHRoaXMuZkZsb3cuaG9zdEVsZW1lbnQpXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuaXRlbXMgPSBbIC4uLm5vZGVSZWN0cywgLi4ubGluZVJlY3RzIF0uZmlsdGVyKCh4KSA9PiB7XG4gICAgICByZXR1cm4gIXNlbGVjdGVkT25TdGFydC5pbmNsdWRlcyh4LmVsZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy5mU2VsZWN0aW9uPy5zaG93KCk7XG4gICAgdGhpcy5mU2VsZWN0aW9uPy5kcmF3KHsgLi4udGhpcy5vblBvaW50ZXJEb3duUG9zaXRpb24sIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSk7XG4gIH1cblxuICBwdWJsaWMgbW92ZShkaWZmZXJlbmNlOiBJUG9pbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UG9pbnQgPSBQb2ludC5mcm9tUG9pbnQoZGlmZmVyZW5jZSkuYWRkKHRoaXMub25Qb2ludGVyRG93blBvc2l0aW9uKTtcblxuICAgIGNvbnN0IHg6IG51bWJlciA9IE1hdGgubWluKHRoaXMub25Qb2ludGVyRG93blBvc2l0aW9uLngsIGN1cnJlbnRQb2ludC54KTtcbiAgICBjb25zdCB5OiBudW1iZXIgPSBNYXRoLm1pbih0aGlzLm9uUG9pbnRlckRvd25Qb3NpdGlvbi55LCBjdXJyZW50UG9pbnQueSk7XG5cbiAgICBjb25zdCB3aWR0aCA9IE1hdGguYWJzKGRpZmZlcmVuY2UueCk7XG4gICAgY29uc3QgaGVpZ2h0ID0gTWF0aC5hYnMoZGlmZmVyZW5jZS55KTtcblxuICAgIHRoaXMuZlNlbGVjdGlvbj8uZHJhdyh7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLmVsZW1lbnQuZGVzZWxlY3QoKTtcbiAgICAgIGlmIChcbiAgICAgICAgICBSZWN0RXh0ZW5zaW9ucy5pbnRlcnNlY3Rpb25XaXRoUmVjdChpdGVtLnJlY3QsIFJlY3RFeHRlbnNpb25zLmluaXRpYWxpemUoeCwgeSwgd2lkdGgsIGhlaWdodCkpXG4gICAgICApIHtcbiAgICAgICAgaXRlbS5lbGVtZW50LnNlbGVjdCgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtLmVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNvbXBsZXRlKCk6IHZvaWQge1xuICAgIHRoaXMuZlNlbGVjdGlvbj8uaGlkZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKC4uLnRoaXMuc2VsZWN0ZWRPblN0YXJ0IHx8IFtdKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './selection.on-pointer-up';
2
+ export * from './selection-on-pointer-up.request';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL3NlbGVjdGlvbi9zZWxlY3Rpb24tb24tcG9pbnRlci11cC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi5vbi1wb2ludGVyLXVwJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aW9uLW9uLXBvaW50ZXItdXAucmVxdWVzdCc7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export class SelectionOnPointerUpRequest {
2
+ constructor(event, dragHandler, selectedItems) {
3
+ this.event = event;
4
+ this.dragHandler = dragHandler;
5
+ this.selectedItems = selectedItems;
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW9uLXBvaW50ZXItdXAucmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvbGliL2RpcmVjdGl2ZXMvZi1kcmFnZ2FibGUvc2VsZWN0aW9uL3NlbGVjdGlvbi1vbi1wb2ludGVyLXVwL3NlbGVjdGlvbi1vbi1wb2ludGVyLXVwLnJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLDJCQUEyQjtJQUV0QyxZQUNTLEtBQW9CLEVBQ3BCLFdBQXlCLEVBQ3pCLGFBQTRCO1FBRjVCLFVBQUssR0FBTCxLQUFLLENBQWU7UUFDcEIsZ0JBQVcsR0FBWCxXQUFXLENBQWM7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFFckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBvaW50ZXJFdmVudCB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBJRHJhZ0hhbmRsZXIgfSBmcm9tICcuLi8uLi9pLWRyYWctaGFuZGxlcic7XG5pbXBvcnQgeyBJU2VsZWN0YWJsZSB9IGZyb20gJy4uLy4uLy4uLy4uL2ktc2VsZWN0YWJsZSc7XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25PblBvaW50ZXJVcFJlcXVlc3Qge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBldmVudDogSVBvaW50ZXJFdmVudCxcbiAgICBwdWJsaWMgZHJhZ0hhbmRsZXI6IElEcmFnSGFuZGxlcixcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtczogSVNlbGVjdGFibGVbXVxuICApIHtcbiAgfVxufVxuIl19
@@ -0,0 +1,22 @@
1
+ import { Point } from '@foblex/core';
2
+ import { EDraggableType } from '../../e-draggable-type';
3
+ export class SelectionOnPointerUp {
4
+ constructor(hostElement) {
5
+ this.hostElement = hostElement;
6
+ }
7
+ handle(payload) {
8
+ let result = payload.selectedItems;
9
+ const pointerPositionInCanvas = Point.fromPoint(payload.event.getPosition()).matrixTransform(this.hostElement);
10
+ let difference = pointerPositionInCanvas.div(payload.dragHandler.onPointerDownScale).sub(payload.dragHandler.onPointerDownPosition);
11
+ const isSelection = payload.dragHandler.draggableItems.some((x) => x.type === EDraggableType.SELECTION);
12
+ if (isSelection) {
13
+ payload.dragHandler.draggableItems.forEach((x) => {
14
+ x.move(difference);
15
+ x.complete();
16
+ });
17
+ result = payload.dragHandler.draggableItems[0].selectedItems;
18
+ }
19
+ return result;
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLm9uLXBvaW50ZXItdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZHJhZ2dhYmxlL3NlbGVjdGlvbi9zZWxlY3Rpb24tb24tcG9pbnRlci11cC9zZWxlY3Rpb24ub24tcG9pbnRlci11cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUl4RCxNQUFNLE9BQU8sb0JBQW9CO0lBRy9CLFlBQ1csV0FBMEI7UUFBMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7SUFFckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFvQztRQUNoRCxJQUFJLE1BQU0sR0FBa0IsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUNsRCxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0csSUFBSSxVQUFVLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXBJLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEcsSUFBSSxXQUFXLEVBQUU7WUFDZixPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLEdBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUUsQ0FBQyxDQUE2QixDQUFDLGFBQWEsQ0FBQztTQUM1RjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElIYW5kbGVyLCBQb2ludCB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25PblBvaW50ZXJVcFJlcXVlc3QgfSBmcm9tICcuL3NlbGVjdGlvbi1vbi1wb2ludGVyLXVwLnJlcXVlc3QnO1xuaW1wb3J0IHsgRURyYWdnYWJsZVR5cGUgfSBmcm9tICcuLi8uLi9lLWRyYWdnYWJsZS10eXBlJztcbmltcG9ydCB7IElTZWxlY3RhYmxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vaS1zZWxlY3RhYmxlJztcbmltcG9ydCB7IFNlbGVjdGlvbk9uUG9pbnRlck1vdmUgfSBmcm9tICcuLi9zZWxlY3Rpb24tb24tcG9pbnRlci1tb3ZlJztcblxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbk9uUG9pbnRlclVwXG4gICAgaW1wbGVtZW50cyBJSGFuZGxlcjxTZWxlY3Rpb25PblBvaW50ZXJVcFJlcXVlc3QsIElTZWxlY3RhYmxlW10+IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHB1YmxpYyBob3N0RWxlbWVudDogU1ZHU1ZHRWxlbWVudCxcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHBheWxvYWQ6IFNlbGVjdGlvbk9uUG9pbnRlclVwUmVxdWVzdCk6IElTZWxlY3RhYmxlW10ge1xuICAgIGxldCByZXN1bHQ6IElTZWxlY3RhYmxlW10gPSBwYXlsb2FkLnNlbGVjdGVkSXRlbXM7XG4gICAgY29uc3QgcG9pbnRlclBvc2l0aW9uSW5DYW52YXMgPSBQb2ludC5mcm9tUG9pbnQocGF5bG9hZC5ldmVudC5nZXRQb3NpdGlvbigpKS5tYXRyaXhUcmFuc2Zvcm0odGhpcy5ob3N0RWxlbWVudCk7XG4gICAgbGV0IGRpZmZlcmVuY2UgPSBwb2ludGVyUG9zaXRpb25JbkNhbnZhcy5kaXYocGF5bG9hZC5kcmFnSGFuZGxlci5vblBvaW50ZXJEb3duU2NhbGUpLnN1YihwYXlsb2FkLmRyYWdIYW5kbGVyLm9uUG9pbnRlckRvd25Qb3NpdGlvbik7XG5cbiAgICBjb25zdCBpc1NlbGVjdGlvbiA9IHBheWxvYWQuZHJhZ0hhbmRsZXIuZHJhZ2dhYmxlSXRlbXMuc29tZSgoeCkgPT4geC50eXBlID09PSBFRHJhZ2dhYmxlVHlwZS5TRUxFQ1RJT04pO1xuXG4gICAgaWYgKGlzU2VsZWN0aW9uKSB7XG4gICAgICBwYXlsb2FkLmRyYWdIYW5kbGVyLmRyYWdnYWJsZUl0ZW1zLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgeC5tb3ZlKGRpZmZlcmVuY2UpO1xuICAgICAgICB4LmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICAgIHJlc3VsdCA9IChwYXlsb2FkLmRyYWdIYW5kbGVyLmRyYWdnYWJsZUl0ZW1zWyAwIF0gYXMgU2VsZWN0aW9uT25Qb2ludGVyTW92ZSkuc2VsZWN0ZWRJdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -0,0 +1,11 @@
1
+ import { Directive, InjectionToken } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export const F_EXTERNAL_ITEM = new InjectionToken('F_EXTERNAL_ITEM');
4
+ export class FExternalItemBase {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: FExternalItemBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.4", type: FExternalItemBase, ngImport: i0 }); }
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: FExternalItemBase, decorators: [{
9
+ type: Directive
10
+ }] });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1leHRlcm5hbC1pdGVtLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2xpYi9kaXJlY3RpdmVzL2YtZXh0ZXJuYWwtaXRlbS9mLWV4dGVybmFsLWl0ZW0tYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFMUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFvQixpQkFBaUIsQ0FBQyxDQUFDO0FBR3hGLE1BQU0sT0FBZ0IsaUJBQWlCOzhHQUFqQixpQkFBaUI7a0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEdEMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElIYXNIb3N0RWxlbWVudCB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBGX0VYVEVSTkFMX0lURU0gPSBuZXcgSW5qZWN0aW9uVG9rZW48RkV4dGVybmFsSXRlbUJhc2U+KCdGX0VYVEVSTkFMX0lURU0nKTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRkV4dGVybmFsSXRlbUJhc2UgaW1wbGVtZW50cyBJSGFzSG9zdEVsZW1lbnQge1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBpZDogYW55O1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBob3N0RWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50O1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBkYXRhOiBhbnk7XG59XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { FExternalItemBase, F_EXTERNAL_ITEM } from './f-external-item-base';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./f-external-item.service";
5
+ let uniqueId = 0;
6
+ export class FExternalItemDirective extends FExternalItemBase {
7
+ get hostElement() {
8
+ return this.elementReference.nativeElement;
9
+ }
10
+ constructor(elementReference, fExternalItemService) {
11
+ super();
12
+ this.elementReference = elementReference;
13
+ this.fExternalItemService = fExternalItemService;
14
+ this.id = `f-external-item-${uniqueId++}`;
15
+ }
16
+ ngOnInit() {
17
+ this.fExternalItemService.registerItem(this);
18
+ }
19
+ ngOnDestroy() {
20
+ this.fExternalItemService.removeItem(this);
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: FExternalItemDirective, deps: [{ token: i0.ElementRef }, { token: i1.FExternalItemService }], target: i0.ɵɵFactoryTarget.Directive }); }
23
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.4", type: FExternalItemDirective, selector: "[fExternalItem]", inputs: { id: "id", data: "data" }, host: { properties: { "attr.id": "id" }, classAttribute: "f-component f-external-item" }, providers: [
24
+ { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }
25
+ ], usesInheritance: true, ngImport: i0 }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: FExternalItemDirective, decorators: [{
28
+ type: Directive,
29
+ args: [{
30
+ selector: "[fExternalItem]",
31
+ host: {
32
+ '[attr.id]': 'id',
33
+ class: "f-component f-external-item",
34
+ },
35
+ providers: [
36
+ { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }
37
+ ],
38
+ }]
39
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FExternalItemService }]; }, propDecorators: { id: [{
40
+ type: Input
41
+ }], data: [{
42
+ type: Input
43
+ }] } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1leHRlcm5hbC1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvbGliL2RpcmVjdGl2ZXMvZi1leHRlcm5hbC1pdGVtL2YtZXh0ZXJuYWwtaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRzVFLElBQUksUUFBUSxHQUFXLENBQUMsQ0FBQztBQVl6QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsaUJBQWlCO0lBSzNELElBQW9CLFdBQVc7UUFDN0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFLRCxZQUNVLGdCQUF5QyxFQUN6QyxvQkFBMEM7UUFFbEQsS0FBSyxFQUFFLENBQUM7UUFIQSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBQ3pDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFYcEMsT0FBRSxHQUFXLG1CQUFvQixRQUFRLEVBQUcsRUFBRSxDQUFDO0lBYy9ELENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7OEdBekJVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHdLQUp0QjtZQUNULEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7U0FDbEU7OzJGQUVVLHNCQUFzQjtrQkFWbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixJQUFJLEVBQUU7d0JBQ0osV0FBVyxFQUFFLElBQUk7d0JBQ2pCLEtBQUssRUFBRSw2QkFBNkI7cUJBQ3JDO29CQUNELFNBQVMsRUFBRTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTtxQkFDbEU7aUJBQ0Y7b0lBSWlCLEVBQUU7c0JBRGpCLEtBQUs7Z0JBUVUsSUFBSTtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGRXh0ZXJuYWxJdGVtQmFzZSwgRl9FWFRFUk5BTF9JVEVNIH0gZnJvbSAnLi9mLWV4dGVybmFsLWl0ZW0tYmFzZSc7XG5pbXBvcnQgeyBGRXh0ZXJuYWxJdGVtU2VydmljZSB9IGZyb20gJy4vZi1leHRlcm5hbC1pdGVtLnNlcnZpY2UnO1xuXG5sZXQgdW5pcXVlSWQ6IG51bWJlciA9IDA7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbZkV4dGVybmFsSXRlbV1cIixcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgIGNsYXNzOiBcImYtY29tcG9uZW50IGYtZXh0ZXJuYWwtaXRlbVwiLFxuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEZfRVhURVJOQUxfSVRFTSwgdXNlRXhpc3Rpbmc6IEZFeHRlcm5hbEl0ZW1EaXJlY3RpdmUgfVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGRXh0ZXJuYWxJdGVtRGlyZWN0aXZlIGV4dGVuZHMgRkV4dGVybmFsSXRlbUJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGlkOiBzdHJpbmcgPSBgZi1leHRlcm5hbC1pdGVtLSR7IHVuaXF1ZUlkKysgfWA7XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCBob3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvdmVycmlkZSBkYXRhOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmZXJlbmNlOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGZFeHRlcm5hbEl0ZW1TZXJ2aWNlOiBGRXh0ZXJuYWxJdGVtU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZFeHRlcm5hbEl0ZW1TZXJ2aWNlLnJlZ2lzdGVySXRlbSh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZFeHRlcm5hbEl0ZW1TZXJ2aWNlLnJlbW92ZUl0ZW0odGhpcyk7XG4gIH1cbn1cbiJdfQ==