@foblex/flow 17.1.0 → 17.1.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 (231) hide show
  1. package/domain/css-cls.d.ts +13 -0
  2. package/domain/f-background/providers.d.ts +1 -1
  3. package/domain/f-canvas/providers.d.ts +1 -1
  4. package/domain/f-connection/index.d.ts +0 -3
  5. package/domain/f-connection/providers.d.ts +1 -4
  6. package/domain/f-connection/redraw-connections/redraw-connections.execution.d.ts +2 -2
  7. package/domain/f-connectors/calculate-closest-input/calculate-closest-input.execution.d.ts +11 -0
  8. package/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.d.ts +7 -0
  9. package/domain/f-connectors/calculate-closest-input/index.d.ts +2 -0
  10. package/domain/f-connectors/find-input-at-position/find-input-at-position.execution.d.ts +24 -0
  11. package/domain/f-connectors/find-input-at-position/find-input-at-position.request.d.ts +8 -0
  12. package/domain/f-connectors/find-input-at-position/index.d.ts +2 -0
  13. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.d.ts +14 -0
  14. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.d.ts +5 -0
  15. package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/index.d.ts +2 -0
  16. package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.d.ts +5 -0
  17. package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.d.ts +11 -0
  18. package/domain/f-connectors/get-connector-and-rect/index.d.ts +2 -0
  19. package/domain/{f-connection/find-closest-input → f-connectors}/i-closest-input.d.ts +1 -1
  20. package/domain/{f-connection/get-connector-with-rect/i-connector-with-rect.d.ts → f-connectors/i-connector-and-rect.d.ts} +2 -2
  21. package/domain/f-connectors/index.d.ts +8 -0
  22. package/domain/f-connectors/mark-all-can-be-connected-inputs/index.d.ts +2 -0
  23. package/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.execution.d.ts +10 -0
  24. package/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.d.ts +5 -0
  25. package/domain/f-connectors/providers.d.ts +7 -1
  26. package/domain/f-connectors/unmark-all-can-be-connected-inputs/index.d.ts +2 -0
  27. package/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.execution.d.ts +10 -0
  28. package/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.d.ts +5 -0
  29. package/domain/f-flow/get-flow-state/providers.d.ts +1 -1
  30. package/domain/f-flow/providers.d.ts +1 -1
  31. package/domain/f-node/providers.d.ts +1 -1
  32. package/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.execution.d.ts +2 -0
  33. package/domain/f-selection/select/select.execution.d.ts +2 -5
  34. package/domain/f-selection/select-all/select-all.execution.d.ts +2 -5
  35. package/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.d.ts +5 -0
  36. package/domain/f-zoom/add-zoom-to-store/add-zoom-to-store.execution.d.ts +9 -0
  37. package/domain/f-zoom/add-zoom-to-store/index.d.ts +2 -0
  38. package/domain/f-zoom/f-zoom-tag.d.ts +1 -0
  39. package/domain/f-zoom/index.d.ts +6 -0
  40. package/domain/f-zoom/providers.d.ts +5 -0
  41. package/domain/f-zoom/remove-zoom-from-store/index.d.ts +2 -0
  42. package/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.d.ts +2 -0
  43. package/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.d.ts +9 -0
  44. package/domain/f-zoom/reset-zoom/index.d.ts +2 -0
  45. package/domain/f-zoom/reset-zoom/reset-zoom-request.d.ts +2 -0
  46. package/domain/f-zoom/reset-zoom/reset-zoom.execution.d.ts +10 -0
  47. package/domain/f-zoom/set-zoom/index.d.ts +2 -0
  48. package/domain/f-zoom/set-zoom/set-zoom-request.d.ts +8 -0
  49. package/domain/f-zoom/set-zoom/set-zoom.execution.d.ts +16 -0
  50. package/domain/i-f-action-trigger.d.ts +14 -0
  51. package/domain/index.d.ts +4 -0
  52. package/domain/log-deprecated.d.ts +1 -0
  53. package/domain/providers.d.ts +1 -1
  54. package/esm2022/domain/css-cls.mjs +14 -0
  55. package/esm2022/domain/f-connection/index.mjs +1 -4
  56. package/esm2022/domain/f-connection/providers.mjs +1 -7
  57. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +9 -9
  58. package/esm2022/domain/f-connectors/calculate-closest-input/calculate-closest-input.execution.mjs +42 -0
  59. package/esm2022/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.mjs +9 -0
  60. package/esm2022/domain/f-connectors/calculate-closest-input/index.mjs +3 -0
  61. package/esm2022/domain/f-connectors/find-input-at-position/find-input-at-position.execution.mjs +89 -0
  62. package/esm2022/domain/f-connectors/find-input-at-position/find-input-at-position.request.mjs +11 -0
  63. package/esm2022/domain/f-connectors/find-input-at-position/index.mjs +3 -0
  64. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.mjs +45 -0
  65. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.mjs +7 -0
  66. package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/index.mjs +3 -0
  67. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.mjs +7 -0
  68. package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.mjs +28 -0
  69. package/esm2022/domain/f-connectors/get-connector-and-rect/index.mjs +3 -0
  70. package/esm2022/domain/f-connectors/i-closest-input.mjs +2 -0
  71. package/esm2022/domain/f-connectors/i-connector-and-rect.mjs +2 -0
  72. package/esm2022/domain/f-connectors/index.mjs +9 -1
  73. package/esm2022/domain/f-connectors/mark-all-can-be-connected-inputs/index.mjs +3 -0
  74. package/esm2022/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.execution.mjs +27 -0
  75. package/esm2022/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.mjs +7 -0
  76. package/esm2022/domain/f-connectors/providers.mjs +14 -2
  77. package/esm2022/domain/f-connectors/unmark-all-can-be-connected-inputs/index.mjs +3 -0
  78. package/esm2022/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.execution.mjs +27 -0
  79. package/esm2022/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.mjs +7 -0
  80. package/esm2022/domain/f-draggable/end-drag-sequence/end-drag-sequence.execution.mjs +3 -2
  81. package/esm2022/domain/f-draggable/start-drag-sequence/start-drag-sequence.execution.mjs +3 -2
  82. package/esm2022/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.execution.mjs +39 -5
  83. package/esm2022/domain/f-selection/select/select.execution.mjs +15 -19
  84. package/esm2022/domain/f-selection/select-all/select-all.execution.mjs +15 -19
  85. package/esm2022/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.mjs +7 -0
  86. package/esm2022/domain/f-zoom/add-zoom-to-store/add-zoom-to-store.execution.mjs +25 -0
  87. package/esm2022/domain/f-zoom/add-zoom-to-store/index.mjs +3 -0
  88. package/esm2022/domain/f-zoom/f-zoom-tag.mjs +2 -0
  89. package/esm2022/domain/f-zoom/index.mjs +7 -0
  90. package/esm2022/domain/f-zoom/providers.mjs +11 -0
  91. package/esm2022/domain/f-zoom/remove-zoom-from-store/index.mjs +3 -0
  92. package/esm2022/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.mjs +3 -0
  93. package/esm2022/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.mjs +25 -0
  94. package/esm2022/domain/f-zoom/reset-zoom/index.mjs +3 -0
  95. package/esm2022/domain/f-zoom/reset-zoom/reset-zoom-request.mjs +3 -0
  96. package/esm2022/domain/f-zoom/reset-zoom/reset-zoom.execution.mjs +27 -0
  97. package/esm2022/domain/f-zoom/set-zoom/index.mjs +3 -0
  98. package/esm2022/domain/f-zoom/set-zoom/set-zoom-request.mjs +13 -0
  99. package/esm2022/domain/f-zoom/set-zoom/set-zoom.execution.mjs +50 -0
  100. package/esm2022/domain/i-f-action-trigger.mjs +11 -0
  101. package/esm2022/domain/index.mjs +5 -1
  102. package/esm2022/domain/log-deprecated.mjs +11 -0
  103. package/esm2022/domain/providers.mjs +3 -1
  104. package/esm2022/f-canvas/domain/f-canvas-change.event.mjs +1 -1
  105. package/esm2022/f-canvas/f-canvas-base.mjs +1 -1
  106. package/esm2022/f-canvas/f-canvas.component.mjs +25 -2
  107. package/esm2022/f-connection/f-connection/f-connection.component.mjs +7 -5
  108. package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +7 -5
  109. package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +9 -6
  110. package/esm2022/f-connectors/f-connector-base.mjs +9 -5
  111. package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +23 -23
  112. package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +16 -17
  113. package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +28 -24
  114. package/esm2022/f-connectors/index.mjs +1 -2
  115. package/esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.mjs +8 -11
  116. package/esm2022/f-draggable/canvas/canvas-move-finalize/index.mjs +1 -2
  117. package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.mjs +36 -19
  118. package/esm2022/f-draggable/canvas/canvas-move-preparation/index.mjs +1 -3
  119. package/esm2022/f-draggable/canvas/canvas.drag-handler.mjs +8 -8
  120. package/esm2022/f-draggable/canvas/providers.mjs +5 -5
  121. package/esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.mjs +13 -10
  122. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.mjs +2 -2
  123. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.mjs +4 -4
  124. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.mjs +3 -3
  125. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.mjs +7 -7
  126. package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.mjs +5 -5
  127. package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +54 -50
  128. package/esm2022/f-draggable/connections/i-create-reassign-connection-drag-data.mjs +2 -0
  129. package/esm2022/f-draggable/connections/index.mjs +2 -2
  130. package/esm2022/f-draggable/connections/providers.mjs +1 -4
  131. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.mjs +9 -5
  132. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +70 -53
  133. package/esm2022/f-draggable/i-draggable-item.mjs +1 -1
  134. package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +4 -4
  135. package/esm2022/f-node/f-group.directive.mjs +9 -7
  136. package/esm2022/f-node/f-node.directive.mjs +10 -8
  137. package/esm2022/f-storage/f-components-store.mjs +2 -1
  138. package/esm2022/f-zoom/e-f-zoom-action.mjs +6 -0
  139. package/esm2022/f-zoom/e-f-zoom-direction.mjs +6 -0
  140. package/esm2022/f-zoom/f-zoom-base.mjs +2 -98
  141. package/esm2022/f-zoom/f-zoom.directive.mjs +139 -21
  142. package/esm2022/f-zoom/index.mjs +3 -1
  143. package/f-backgroud/providers.d.ts +1 -1
  144. package/f-canvas/f-canvas-base.d.ts +2 -2
  145. package/f-canvas/f-canvas.component.d.ts +9 -0
  146. package/f-connection/f-connection/f-connection.component.d.ts +2 -0
  147. package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +2 -0
  148. package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +3 -0
  149. package/f-connection/providers.d.ts +1 -1
  150. package/f-connectors/f-connector-base.d.ts +4 -2
  151. package/f-connectors/f-node-input/f-node-input.directive.d.ts +6 -6
  152. package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +6 -6
  153. package/f-connectors/f-node-output/f-node-output.directive.d.ts +8 -7
  154. package/f-connectors/index.d.ts +0 -1
  155. package/f-connectors/providers.d.ts +1 -1
  156. package/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.d.ts +1 -3
  157. package/f-draggable/canvas/canvas-move-finalize/index.d.ts +0 -1
  158. package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.d.ts +7 -6
  159. package/f-draggable/canvas/canvas-move-preparation/index.d.ts +0 -2
  160. package/f-draggable/canvas/canvas.drag-handler.d.ts +2 -2
  161. package/f-draggable/canvas/providers.d.ts +3 -1
  162. package/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.d.ts +3 -2
  163. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.d.ts +3 -3
  164. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.d.ts +2 -2
  165. package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +14 -15
  166. package/f-draggable/connections/i-create-reassign-connection-drag-data.d.ts +7 -0
  167. package/f-draggable/connections/index.d.ts +1 -1
  168. package/f-draggable/connections/providers.d.ts +1 -2
  169. package/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.d.ts +1 -0
  170. package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +17 -15
  171. package/f-draggable/i-draggable-item.d.ts +2 -1
  172. package/f-draggable/node/connection-base-drag-handler.d.ts +3 -3
  173. package/f-draggable/node-resize/node-resize-preparation/providers.d.ts +1 -1
  174. package/f-draggable/node-resize/providers.d.ts +1 -1
  175. package/f-draggable/providers.d.ts +1 -1
  176. package/f-minimap/providers.d.ts +1 -1
  177. package/f-node/f-group.directive.d.ts +4 -0
  178. package/f-node/f-node.directive.d.ts +4 -0
  179. package/f-node/providers.d.ts +1 -1
  180. package/f-storage/f-components-store.d.ts +2 -0
  181. package/f-storage/providers.d.ts +1 -1
  182. package/f-zoom/e-f-zoom-action.d.ts +4 -0
  183. package/f-zoom/e-f-zoom-direction.d.ts +4 -0
  184. package/f-zoom/f-zoom-base.d.ts +0 -17
  185. package/f-zoom/f-zoom.directive.d.ts +40 -5
  186. package/f-zoom/index.d.ts +2 -0
  187. package/fesm2022/foblex-flow.mjs +1152 -915
  188. package/fesm2022/foblex-flow.mjs.map +1 -1
  189. package/package.json +1 -1
  190. package/domain/f-connection/find-closest-input/find-closest-input.execution.d.ts +0 -11
  191. package/domain/f-connection/find-closest-input/find-closest-input.request.d.ts +0 -7
  192. package/domain/f-connection/find-closest-input/index.d.ts +0 -3
  193. package/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.d.ts +0 -21
  194. package/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.d.ts +0 -4
  195. package/domain/f-connection/get-all-can-be-connected-input-positions/index.d.ts +0 -2
  196. package/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.d.ts +0 -5
  197. package/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.d.ts +0 -10
  198. package/domain/f-connection/get-connector-with-rect/index.d.ts +0 -3
  199. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.execution.mjs +0 -42
  200. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.request.mjs +0 -9
  201. package/esm2022/domain/f-connection/find-closest-input/i-closest-input.mjs +0 -2
  202. package/esm2022/domain/f-connection/find-closest-input/index.mjs +0 -4
  203. package/esm2022/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.mjs +0 -57
  204. package/esm2022/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.mjs +0 -7
  205. package/esm2022/domain/f-connection/get-all-can-be-connected-input-positions/index.mjs +0 -3
  206. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.mjs +0 -7
  207. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.mjs +0 -25
  208. package/esm2022/domain/f-connection/get-connector-with-rect/i-connector-with-rect.mjs +0 -2
  209. package/esm2022/domain/f-connection/get-connector-with-rect/index.mjs +0 -4
  210. package/esm2022/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.mjs +0 -9
  211. package/esm2022/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.mjs +0 -38
  212. package/esm2022/f-connectors/domain/calculate-connector-connectable-side/index.mjs +0 -3
  213. package/esm2022/f-connectors/domain/index.mjs +0 -2
  214. package/esm2022/f-draggable/canvas/canvas-move-finalize/providers.mjs +0 -5
  215. package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.mjs +0 -46
  216. package/esm2022/f-draggable/canvas/canvas-move-preparation/providers.mjs +0 -7
  217. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.mjs +0 -88
  218. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.mjs +0 -9
  219. package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.mjs +0 -36
  220. package/esm2022/f-draggable/connections/get-input-under-pointer/index.mjs +0 -4
  221. package/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.d.ts +0 -6
  222. package/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.d.ts +0 -7
  223. package/f-connectors/domain/calculate-connector-connectable-side/index.d.ts +0 -2
  224. package/f-connectors/domain/index.d.ts +0 -1
  225. package/f-draggable/canvas/canvas-move-finalize/providers.d.ts +0 -2
  226. package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.d.ts +0 -17
  227. package/f-draggable/canvas/canvas-move-preparation/providers.d.ts +0 -3
  228. package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.d.ts +0 -27
  229. package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.d.ts +0 -8
  230. package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.d.ts +0 -13
  231. package/f-draggable/connections/get-input-under-pointer/index.d.ts +0 -3
@@ -1,101 +1,5 @@
1
- import { EventExtensions } from '@foblex/drag-toolkit';
2
- import { Point, RectExtensions } from '@foblex/2d';
3
- import { inject, InjectionToken } from '@angular/core';
4
- import { isNode } from '../f-node';
5
- import { FMediator } from '@foblex/mediator';
6
- import { GetCanvasRequest, GetFlowHostElementRequest } from '../domain';
7
- import { IsDragStartedRequest } from '../domain';
1
+ import { InjectionToken } from '@angular/core';
8
2
  export const F_ZOOM = new InjectionToken('F_ZOOM');
9
3
  export class FZoomBase {
10
- isEnabled = false;
11
- _listeners = EventExtensions.emptyListener();
12
- _fMediator = inject(FMediator);
13
- get _fFlowHostElement() {
14
- return this._fMediator.send(new GetFlowHostElementRequest());
15
- }
16
- get _fCanvas() {
17
- return this._fMediator.send(new GetCanvasRequest());
18
- }
19
- get _isDragStarted() {
20
- return this._fMediator.send(new IsDragStartedRequest());
21
- }
22
- toggleZoom() {
23
- if (this.isEnabled) {
24
- this._subscribe();
25
- }
26
- else {
27
- this.dispose();
28
- }
29
- }
30
- _subscribe() {
31
- this._listeners();
32
- if (!this._fFlowHostElement) {
33
- return;
34
- }
35
- this._fFlowHostElement.addEventListener('wheel', this._onWheel);
36
- this._fFlowHostElement.addEventListener('dblclick', this._onDoubleClick);
37
- this._listeners = () => {
38
- this._fFlowHostElement.removeEventListener('wheel', this._onWheel);
39
- this._fFlowHostElement.removeEventListener('dblclick', this._onDoubleClick);
40
- };
41
- }
42
- getScale() {
43
- return this._fCanvas.transform.scale || 1;
44
- }
45
- _onWheel = (event) => {
46
- event.preventDefault();
47
- const targetElement = event.target;
48
- if (this._isDragStarted || targetElement?.closest('[fLockedContext]')) {
49
- return;
50
- }
51
- let result = this.getScale();
52
- const direction = event.deltaY > 0 ? -1 : 1;
53
- const step = this.step;
54
- result = result + step * direction;
55
- result = Math.max(this.minimum, Math.min(result, this.maximum));
56
- const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this._fFlowHostElement);
57
- this._fCanvas.setZoom(result, pointerPositionInFlow);
58
- this._fCanvas.redraw();
59
- this._fCanvas.emitCanvasChangeEvent();
60
- };
61
- _onDoubleClick = (event) => {
62
- event.preventDefault();
63
- const targetElement = event.target;
64
- if (this._isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {
65
- return;
66
- }
67
- let result = this.getScale();
68
- const direction = 1;
69
- const step = this.dblClickStep;
70
- result = result + step * direction;
71
- result = Math.max(this.minimum, Math.min(result, this.maximum));
72
- const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this._fFlowHostElement);
73
- this._fCanvas.setZoom(result, pointerPositionInFlow);
74
- this._fCanvas.redrawWithAnimation();
75
- this._fCanvas.emitCanvasChangeEvent();
76
- };
77
- _onZoomToCenter(deltaY, position) {
78
- const preventDefault = () => {
79
- };
80
- const rect = RectExtensions.fromElement(this._fFlowHostElement);
81
- this._onWheel({
82
- deltaY, preventDefault, clientX: position?.x || rect.gravityCenter.x, clientY: position?.y || rect.gravityCenter.y
83
- });
84
- }
85
- zoomIn(position) {
86
- this._onZoomToCenter(-1, position);
87
- }
88
- zoomOut(position) {
89
- this._onZoomToCenter(1, position);
90
- }
91
- reset() {
92
- this._fCanvas.resetZoom();
93
- this._fCanvas.redraw();
94
- this._fCanvas.emitCanvasChangeEvent();
95
- }
96
- dispose() {
97
- this._listeners();
98
- this._listeners = EventExtensions.emptyListener();
99
- }
100
4
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi16b29tLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2Ytem9vbS9mLXpvb20tYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFVLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQVksUUFBUSxDQUFDLENBQUM7QUFFOUQsTUFBTSxPQUFnQixTQUFTO0lBRW5CLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFRN0IsVUFBVSxHQUFhLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUV2RCxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXZDLElBQVksaUJBQWlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSx5QkFBeUIsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQVksUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFZLGNBQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElB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LENBQUM7SUFFTSxNQUFNLENBQUMsUUFBaUI7UUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sT0FBTyxDQUFDLFFBQWlCO1FBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRVMsT0FBTztRQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4L2RyYWctdG9vbGtpdCc7XG5pbXBvcnQgeyBJUG9pbnQsIFBvaW50LCBSZWN0RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRkNhbnZhc0Jhc2UgfSBmcm9tICcuLi9mLWNhbnZhcyc7XG5pbXBvcnQgeyBpc05vZGUgfSBmcm9tICcuLi9mLW5vZGUnO1xuaW1wb3J0IHsgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBHZXRDYW52YXNSZXF1ZXN0LCBHZXRGbG93SG9zdEVsZW1lbnRSZXF1ZXN0IH0gZnJvbSAnLi4vZG9tYWluJztcbmltcG9ydCB7IElzRHJhZ1N0YXJ0ZWRSZXF1ZXN0IH0gZnJvbSAnLi4vZG9tYWluJztcblxuZXhwb3J0IGNvbnN0IEZfWk9PTSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGWm9vbUJhc2U+KCdGX1pPT00nKTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZab29tQmFzZSB7XG5cbiAgcHJvdGVjdGVkIGlzRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBtaW5pbXVtOiBudW1iZXI7XG4gIHB1YmxpYyBhYnN0cmFjdCBtYXhpbXVtOiBudW1iZXI7XG5cbiAgcHVibGljIGFic3RyYWN0IHN0ZXA6IG51bWJlcjtcbiAgcHVibGljIGFic3RyYWN0IGRibENsaWNrU3RlcDogbnVtYmVyO1xuXG4gIHByaXZhdGUgX2xpc3RlbmVyczogRnVuY3Rpb24gPSBFdmVudEV4dGVuc2lvbnMuZW1wdHlMaXN0ZW5lcigpO1xuXG4gIHByaXZhdGUgX2ZNZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuXG4gIHByaXZhdGUgZ2V0IF9mRmxvd0hvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZk1lZGlhdG9yLnNlbmQobmV3IEdldEZsb3dIb3N0RWxlbWVudFJlcXVlc3QoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfZkNhbnZhcygpOiBGQ2FudmFzQmFzZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZNZWRpYXRvci5zZW5kKG5ldyBHZXRDYW52YXNSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2lzRHJhZ1N0YXJ0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZNZWRpYXRvci5zZW5kPGJvb2xlYW4+KG5ldyBJc0RyYWdTdGFydGVkUmVxdWVzdCgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVab29tKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRW5hYmxlZCkge1xuICAgICAgdGhpcy5fc3Vic2NyaWJlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMoKTtcbiAgICBpZiAoIXRoaXMuX2ZGbG93SG9zdEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9mRmxvd0hvc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5fb25XaGVlbCk7XG4gICAgdGhpcy5fZkZsb3dIb3N0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsIHRoaXMuX29uRG91YmxlQ2xpY2spO1xuICAgIHRoaXMuX2xpc3RlbmVycyA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2ZGbG93SG9zdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLl9vbldoZWVsKTtcbiAgICAgIHRoaXMuX2ZGbG93SG9zdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCB0aGlzLl9vbkRvdWJsZUNsaWNrKTtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldFNjYWxlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDYW52YXMudHJhbnNmb3JtLnNjYWxlIHx8IDE7XG4gIH1cblxuICBwcml2YXRlIF9vbldoZWVsID0gKGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2lzRHJhZ1N0YXJ0ZWQgfHwgdGFyZ2V0RWxlbWVudD8uY2xvc2VzdCgnW2ZMb2NrZWRDb250ZXh0XScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gdGhpcy5nZXRTY2FsZSgpO1xuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gZXZlbnQuZGVsdGFZID4gMCA/IC0xIDogMTtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5zdGVwO1xuICAgIHJlc3VsdCA9IHJlc3VsdCArIHN0ZXAgKiBkaXJlY3Rpb247XG5cbiAgICByZXN1bHQgPSBNYXRoLm1heCh0aGlzLm1pbmltdW0sIE1hdGgubWluKHJlc3VsdCwgdGhpcy5tYXhpbXVtKSk7XG5cbiAgICBjb25zdCBwb2ludGVyUG9zaXRpb25JbkZsb3cgPSBuZXcgUG9pbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSkuZWxlbWVudFRyYW5zZm9ybSh0aGlzLl9mRmxvd0hvc3RFbGVtZW50KTtcblxuICAgIHRoaXMuX2ZDYW52YXMuc2V0Wm9vbShyZXN1bHQsIHBvaW50ZXJQb3NpdGlvbkluRmxvdyk7XG4gICAgdGhpcy5fZkNhbnZhcy5yZWRyYXcoKTtcbiAgICB0aGlzLl9mQ2FudmFzLmVtaXRDYW52YXNDaGFuZ2VFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25Eb3VibGVDbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICh0aGlzLl9pc0RyYWdTdGFydGVkIHx8IGlzTm9kZSh0YXJnZXRFbGVtZW50KSB8fCB0YXJnZXRFbGVtZW50Py5jbG9zZXN0KCdbZkxvY2tlZENvbnRleHRdJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0OiBudW1iZXIgPSB0aGlzLmdldFNjYWxlKCk7XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSAxO1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmRibENsaWNrU3RlcDtcbiAgICByZXN1bHQgPSByZXN1bHQgKyBzdGVwICogZGlyZWN0aW9uO1xuXG4gICAgcmVzdWx0ID0gTWF0aC5tYXgodGhpcy5taW5pbXVtLCBNYXRoLm1pbihyZXN1bHQsIHRoaXMubWF4aW11bSkpO1xuXG4gICAgY29uc3QgcG9pbnRlclBvc2l0aW9uSW5GbG93ID0gbmV3IFBvaW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpLmVsZW1lbnRUcmFuc2Zvcm0odGhpcy5fZkZsb3dIb3N0RWxlbWVudCk7XG4gICAgdGhpcy5fZkNhbnZhcy5zZXRab29tKHJlc3VsdCwgcG9pbnRlclBvc2l0aW9uSW5GbG93KTtcbiAgICB0aGlzLl9mQ2FudmFzLnJlZHJhd1dpdGhBbmltYXRpb24oKTtcbiAgICB0aGlzLl9mQ2FudmFzLmVtaXRDYW52YXNDaGFuZ2VFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25ab29tVG9DZW50ZXIoZGVsdGFZOiBudW1iZXIsIHBvc2l0aW9uPzogSVBvaW50KTogdm9pZCB7XG4gICAgY29uc3QgcHJldmVudERlZmF1bHQgPSAoKSA9PiB7XG4gICAgfTtcbiAgICBjb25zdCByZWN0ID0gUmVjdEV4dGVuc2lvbnMuZnJvbUVsZW1lbnQodGhpcy5fZkZsb3dIb3N0RWxlbWVudCk7XG5cbiAgICB0aGlzLl9vbldoZWVsKHtcbiAgICAgIGRlbHRhWSwgcHJldmVudERlZmF1bHQsIGNsaWVudFg6IHBvc2l0aW9uPy54IHx8IHJlY3QuZ3Jhdml0eUNlbnRlci54LCBjbGllbnRZOiBwb3NpdGlvbj8ueSB8fCByZWN0LmdyYXZpdHlDZW50ZXIueVxuICAgIH0gYXMgV2hlZWxFdmVudCk7XG4gIH1cblxuICBwdWJsaWMgem9vbUluKHBvc2l0aW9uPzogSVBvaW50KTogdm9pZCB7XG4gICAgdGhpcy5fb25ab29tVG9DZW50ZXIoLTEsIHBvc2l0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyB6b29tT3V0KHBvc2l0aW9uPzogSVBvaW50KTogdm9pZCB7XG4gICAgdGhpcy5fb25ab29tVG9DZW50ZXIoMSwgcG9zaXRpb24pO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2ZDYW52YXMucmVzZXRab29tKCk7XG4gICAgdGhpcy5fZkNhbnZhcy5yZWRyYXcoKTtcbiAgICB0aGlzLl9mQ2FudmFzLmVtaXRDYW52YXNDaGFuZ2VFdmVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdGVuZXJzKCk7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gRXZlbnRFeHRlbnNpb25zLmVtcHR5TGlzdGVuZXIoKTtcbiAgfVxufVxuIl19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi16b29tLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2Ytem9vbS9mLXpvb20tYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBWSxRQUFRLENBQUMsQ0FBQztBQUU5RCxNQUFNLE9BQWdCLFNBQVM7Q0FTOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgRl9aT09NID0gbmV3IEluamVjdGlvblRva2VuPEZab29tQmFzZT4oJ0ZfWk9PTScpO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRlpvb21CYXNlIHtcblxuICBwdWJsaWMgYWJzdHJhY3QgbWluaW11bTogbnVtYmVyO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBtYXhpbXVtOiBudW1iZXI7XG5cbiAgcHVibGljIGFic3RyYWN0IHN0ZXA6IG51bWJlcjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZGJsQ2xpY2tTdGVwOiBudW1iZXI7XG59XG4iXX0=
@@ -1,31 +1,147 @@
1
- import { Directive, Input } from "@angular/core";
1
+ import { __decorate } from "tslib";
2
+ import { booleanAttribute, Directive, inject, Input, numberAttribute, Renderer2 } from "@angular/core";
2
3
  import { F_ZOOM, FZoomBase } from './f-zoom-base';
3
- import { castToBoolean } from '@foblex/utils';
4
+ import { FMediator } from '@foblex/mediator';
5
+ import { AddZoomToStoreRequest, Deprecated, EFTriggerEvent, GetCanvasRequest, GetFlowHostElementRequest, RemoveZoomFromStoreRequest, ResetZoomRequest, SetZoomRequest } from '../domain';
6
+ import { PointExtensions, RectExtensions } from '@foblex/2d';
7
+ import { isNode } from '../f-node';
8
+ import { EFZoomDirection } from './e-f-zoom-direction';
9
+ import { EFZoomAction } from './e-f-zoom-action';
4
10
  import * as i0 from "@angular/core";
5
11
  export class FZoomDirective extends FZoomBase {
6
- get fFlowZoom() {
7
- return this.isEnabled;
8
- }
9
- set fFlowZoom(isEnabled) {
10
- const value = castToBoolean(isEnabled);
11
- if (value !== this.isEnabled) {
12
- this.isEnabled = value;
13
- this.toggleZoom();
12
+ _fMediator = inject(FMediator);
13
+ _rendered = inject(Renderer2);
14
+ _triggersListener = [];
15
+ _isEnabled = false;
16
+ set fZoom(isEnabled) {
17
+ if (isEnabled !== this._isEnabled) {
18
+ this._isEnabled = isEnabled;
19
+ this._listenTriggers();
14
20
  }
15
21
  }
22
+ fZoomTriggers = [
23
+ { event: EFTriggerEvent.WHEEL, action: EFZoomAction.WHEEL },
24
+ { event: EFTriggerEvent.DOUBLE_CLICK, action: EFZoomAction.DOUBLE_CLICK }
25
+ ];
16
26
  minimum = 0.1;
17
27
  maximum = 4;
18
28
  step = 0.1;
19
29
  dblClickStep = 0.5;
30
+ get _fHost() {
31
+ return this._fMediator.execute(new GetFlowHostElementRequest());
32
+ }
33
+ get _fCanvas() {
34
+ return this._fMediator.execute(new GetCanvasRequest());
35
+ }
36
+ ngOnInit() {
37
+ this._fMediator.execute(new AddZoomToStoreRequest(this));
38
+ }
20
39
  ngAfterViewInit() {
21
- super.toggleZoom();
40
+ this._listenTriggers();
41
+ }
42
+ ngOnChanges(changes) {
43
+ if (changes['fZoomTriggers']) {
44
+ this._listenTriggers();
45
+ }
46
+ }
47
+ _listenTriggers() {
48
+ if (!this._fHost) {
49
+ return;
50
+ }
51
+ this._disposeListeners();
52
+ this._validateTriggers();
53
+ this.fZoomTriggers.forEach((x) => {
54
+ this._triggersListener.push(this._rendered.listen(this._fHost, x.event, this._getAction(x)));
55
+ });
56
+ }
57
+ _validateTriggers() {
58
+ const SUPPORTED_EVENTS = Object.values(EFTriggerEvent);
59
+ const SUPPORTED_ACTIONS = Object.values(EFZoomAction);
60
+ this.fZoomTriggers.forEach((trigger) => {
61
+ if (!SUPPORTED_EVENTS.includes(trigger.event)) {
62
+ throw new Error(`Unsupported event: ${trigger.event}`);
63
+ }
64
+ if (!SUPPORTED_ACTIONS.includes(trigger.action)) {
65
+ throw new Error(`Unsupported action: ${trigger.action}`);
66
+ }
67
+ });
68
+ }
69
+ _getAction(trigger) {
70
+ switch (trigger.action) {
71
+ case EFZoomAction.WHEEL:
72
+ return (event) => this._onWheel(event, trigger);
73
+ case EFZoomAction.DOUBLE_CLICK:
74
+ return (event) => this._onDoubleClick(event, trigger);
75
+ default:
76
+ throw new Error(`Unknown action: ${trigger.action}`);
77
+ }
78
+ }
79
+ _onWheel = (event, trigger) => {
80
+ if (trigger.validator && !trigger.validator(event)) {
81
+ return;
82
+ }
83
+ event.preventDefault();
84
+ const targetElement = event.target;
85
+ if (targetElement?.closest('[fLockedContext]')) {
86
+ return;
87
+ }
88
+ this.setZoom(PointExtensions.initialize(event.clientX, event.clientY), this.step, this._calculateDirection(event.deltaY), false);
89
+ };
90
+ _calculateDirection(deltaY) {
91
+ return deltaY > 0 ? EFZoomDirection.ZOOM_OUT : EFZoomDirection.ZOOM_IN;
92
+ }
93
+ _onDoubleClick = (event, trigger) => {
94
+ if (trigger.validator && !trigger.validator(event)) {
95
+ return;
96
+ }
97
+ event.preventDefault();
98
+ const targetElement = event.target;
99
+ if (isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {
100
+ return;
101
+ }
102
+ this.setZoom(PointExtensions.initialize(event.clientX, event.clientY), this.dblClickStep, EFZoomDirection.ZOOM_IN, true);
103
+ };
104
+ _getToCenterPosition(position, rect) {
105
+ return PointExtensions.initialize(position?.x || rect.gravityCenter.x, position?.y || rect.gravityCenter.y);
106
+ }
107
+ zoomIn(position) {
108
+ this._onZoomToCenter(EFZoomDirection.ZOOM_IN, position);
109
+ }
110
+ zoomOut(position) {
111
+ this._onZoomToCenter(EFZoomDirection.ZOOM_OUT, position);
112
+ }
113
+ _onZoomToCenter(direction, position) {
114
+ this.setZoom(this._getToCenterPosition(position, RectExtensions.fromElement(this._fHost)), this.step, direction, false);
115
+ }
116
+ setZoom(position, step, direction, animated) {
117
+ this._fMediator.execute(new SetZoomRequest(position, step, direction, animated));
118
+ }
119
+ /**
120
+ * @deprecated Method "getScale" is deprecated. Use "getZoomValue" instead. This method will be removed in version 18.0.0.`,
121
+ */
122
+ getScale() {
123
+ return this.getZoomValue();
124
+ }
125
+ getZoomValue() {
126
+ return this._fCanvas.transform.scale || 1;
127
+ }
128
+ reset() {
129
+ this._fMediator.execute(new ResetZoomRequest());
130
+ }
131
+ _disposeListeners() {
132
+ this._triggersListener.forEach((listener) => listener());
133
+ this._triggersListener = [];
22
134
  }
23
135
  ngOnDestroy() {
24
- super.dispose();
136
+ this._disposeListeners();
137
+ this._fMediator.execute(new RemoveZoomFromStoreRequest());
25
138
  }
26
139
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FZoomDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
27
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FZoomDirective, selector: "f-canvas[fZoom]", inputs: { fFlowZoom: ["fZoom", "fFlowZoom"], minimum: ["fZoomMinimum", "minimum"], maximum: ["fZoomMaximum", "maximum"], step: ["fZoomStep", "step"], dblClickStep: ["fZoomDblClickStep", "dblClickStep"] }, host: { classAttribute: "f-zoom f-component" }, providers: [{ provide: F_ZOOM, useExisting: FZoomDirective }], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0 });
140
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.4", type: FZoomDirective, selector: "f-canvas[fZoom]", inputs: { fZoom: ["fZoom", "fZoom", booleanAttribute], fZoomTriggers: "fZoomTriggers", minimum: ["fZoomMinimum", "minimum", numberAttribute], maximum: ["fZoomMaximum", "maximum", numberAttribute], step: ["fZoomStep", "step", numberAttribute], dblClickStep: ["fZoomDblClickStep", "dblClickStep", numberAttribute] }, host: { classAttribute: "f-zoom f-component" }, providers: [{ provide: F_ZOOM, useExisting: FZoomDirective }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
28
141
  }
142
+ __decorate([
143
+ Deprecated('getZoomValue')
144
+ ], FZoomDirective.prototype, "getScale", null);
29
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FZoomDirective, decorators: [{
30
146
  type: Directive,
31
147
  args: [{
@@ -36,20 +152,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
36
152
  },
37
153
  providers: [{ provide: F_ZOOM, useExisting: FZoomDirective }],
38
154
  }]
39
- }], propDecorators: { fFlowZoom: [{
155
+ }], propDecorators: { fZoom: [{
40
156
  type: Input,
41
- args: ['fZoom']
157
+ args: [{ alias: 'fZoom', transform: booleanAttribute }]
158
+ }], fZoomTriggers: [{
159
+ type: Input
42
160
  }], minimum: [{
43
161
  type: Input,
44
- args: ['fZoomMinimum']
162
+ args: [{ alias: 'fZoomMinimum', transform: numberAttribute }]
45
163
  }], maximum: [{
46
164
  type: Input,
47
- args: ['fZoomMaximum']
165
+ args: [{ alias: 'fZoomMaximum', transform: numberAttribute }]
48
166
  }], step: [{
49
167
  type: Input,
50
- args: ['fZoomStep']
168
+ args: [{ alias: 'fZoomStep', transform: numberAttribute }]
51
169
  }], dblClickStep: [{
52
170
  type: Input,
53
- args: ['fZoomDblClickStep']
54
- }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi16b29tLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi16b29tL2Ytem9vbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFBRSxLQUFLLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVTlDLE1BQU0sT0FBTyxjQUFlLFNBQVEsU0FBUztJQUUzQyxJQUNXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLFNBQVMsQ0FBQyxTQUF1QztRQUMxRCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUdlLE9BQU8sR0FBVyxHQUFHLENBQUM7SUFHdEIsT0FBTyxHQUFXLENBQUMsQ0FBQztJQUdwQixJQUFJLEdBQVcsR0FBRyxDQUFDO0lBR25CLFlBQVksR0FBVyxHQUFHLENBQUM7SUFFcEMsZUFBZTtRQUNwQixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUM7dUdBakNVLGNBQWM7MkZBQWQsY0FBYyx1U0FGZCxDQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUU7OzJGQUVwRCxjQUFjO2tCQVIxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixJQUFJLEVBQUU7d0JBQ0osT0FBTyxFQUFFLG9CQUFvQjtxQkFDOUI7b0JBQ0QsU0FBUyxFQUFFLENBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsZ0JBQWdCLEVBQUUsQ0FBRTtpQkFDaEU7OEJBSVksU0FBUztzQkFEbkIsS0FBSzt1QkFBQyxPQUFPO2dCQWNFLE9BQU87c0JBRHRCLEtBQUs7dUJBQUMsY0FBYztnQkFJTCxPQUFPO3NCQUR0QixLQUFLO3VCQUFDLGNBQWM7Z0JBSUwsSUFBSTtzQkFEbkIsS0FBSzt1QkFBQyxXQUFXO2dCQUlGLFlBQVk7c0JBRDNCLEtBQUs7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95XG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGX1pPT00sIEZab29tQmFzZSB9IGZyb20gJy4vZi16b29tLWJhc2UnO1xuaW1wb3J0IHsgY2FzdFRvQm9vbGVhbiB9IGZyb20gJ0Bmb2JsZXgvdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiZi1jYW52YXNbZlpvb21dXCIsXG4gIGV4cG9ydEFzOiAnZkNvbXBvbmVudCcsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnZi16b29tIGYtY29tcG9uZW50J1xuICB9LFxuICBwcm92aWRlcnM6IFsgeyBwcm92aWRlOiBGX1pPT00sIHVzZUV4aXN0aW5nOiBGWm9vbURpcmVjdGl2ZSB9IF0sXG59KVxuZXhwb3J0IGNsYXNzIEZab29tRGlyZWN0aXZlIGV4dGVuZHMgRlpvb21CYXNlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoJ2Zab29tJylcbiAgcHVibGljIGdldCBmRmxvd1pvb20oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFbmFibGVkO1xuICB9XG5cbiAgcHVibGljIHNldCBmRmxvd1pvb20oaXNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgc3RyaW5nKSB7XG4gICAgY29uc3QgdmFsdWUgPSBjYXN0VG9Cb29sZWFuKGlzRW5hYmxlZCk7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLmlzRW5hYmxlZCkge1xuICAgICAgdGhpcy5pc0VuYWJsZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMudG9nZ2xlWm9vbSgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnZlpvb21NaW5pbXVtJylcbiAgcHVibGljIG92ZXJyaWRlIG1pbmltdW06IG51bWJlciA9IDAuMTtcblxuICBASW5wdXQoJ2Zab29tTWF4aW11bScpXG4gIHB1YmxpYyBvdmVycmlkZSBtYXhpbXVtOiBudW1iZXIgPSA0O1xuXG4gIEBJbnB1dCgnZlpvb21TdGVwJylcbiAgcHVibGljIG92ZXJyaWRlIHN0ZXA6IG51bWJlciA9IDAuMTtcblxuICBASW5wdXQoJ2Zab29tRGJsQ2xpY2tTdGVwJylcbiAgcHVibGljIG92ZXJyaWRlIGRibENsaWNrU3RlcDogbnVtYmVyID0gMC41O1xuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc3VwZXIudG9nZ2xlWm9vbSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc3Bvc2UoKTtcbiAgfVxufVxuIl19
171
+ args: [{ alias: 'fZoomDblClickStep', transform: numberAttribute }]
172
+ }], getScale: [] } });
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi16b29tLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi16b29tL2Ytem9vbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsZUFBZSxFQUlmLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixVQUFVLEVBQ1YsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix5QkFBeUIsRUFFekIsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2YsTUFBTSxXQUFXLENBQUM7QUFFbkIsT0FBTyxFQUFpQixlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFVakQsTUFBTSxPQUFPLGNBQWUsU0FBUSxTQUFTO0lBRW5DLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU5QixpQkFBaUIsR0FBZSxFQUFFLENBQUM7SUFFbkMsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUVwQyxJQUNjLEtBQUssQ0FBQyxTQUFrQjtRQUNwQyxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEMsSUFBSSxD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VSxDQUFDLGNBQWMsQ0FBQzs4Q0FHMUI7MkZBeEtVLGNBQWM7a0JBUjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLElBQUksRUFBRTt3QkFDSixPQUFPLEVBQUUsb0JBQW9CO3FCQUM5QjtvQkFDRCxTQUFTLEVBQUUsQ0FBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxnQkFBZ0IsRUFBRSxDQUFFO2lCQUNoRTs4QkFXZSxLQUFLO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUy9DLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT1UsT0FBTztzQkFEdEIsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFJNUMsT0FBTztzQkFEdEIsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFJNUMsSUFBSTtzQkFEbkIsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFJekMsWUFBWTtzQkFEM0IsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQXNJMUQsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIERpcmVjdGl2ZSxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgbnVtYmVyQXR0cmlidXRlLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZfWk9PTSwgRlpvb21CYXNlIH0gZnJvbSAnLi9mLXpvb20tYmFzZSc7XG5pbXBvcnQgeyBGTWVkaWF0b3IgfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcbmltcG9ydCB7XG4gIEFkZFpvb21Ub1N0b3JlUmVxdWVzdCxcbiAgRGVwcmVjYXRlZCxcbiAgRUZUcmlnZ2VyRXZlbnQsXG4gIEdldENhbnZhc1JlcXVlc3QsXG4gIEdldEZsb3dIb3N0RWxlbWVudFJlcXVlc3QsXG4gIElGQWN0aW9uVHJpZ2dlcixcbiAgUmVtb3ZlWm9vbUZyb21TdG9yZVJlcXVlc3QsXG4gIFJlc2V0Wm9vbVJlcXVlc3QsXG4gIFNldFpvb21SZXF1ZXN0XG59IGZyb20gJy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGQ2FudmFzQmFzZSB9IGZyb20gJy4uL2YtY2FudmFzJztcbmltcG9ydCB7IElQb2ludCwgSVJlY3QsIFBvaW50RXh0ZW5zaW9ucywgUmVjdEV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IGlzTm9kZSB9IGZyb20gJy4uL2Ytbm9kZSc7XG5pbXBvcnQgeyBFRlpvb21EaXJlY3Rpb24gfSBmcm9tICcuL2UtZi16b29tLWRpcmVjdGlvbic7XG5pbXBvcnQgeyBFRlpvb21BY3Rpb24gfSBmcm9tICcuL2UtZi16b29tLWFjdGlvbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJmLWNhbnZhc1tmWm9vbV1cIixcbiAgZXhwb3J0QXM6ICdmQ29tcG9uZW50JyxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdmLXpvb20gZi1jb21wb25lbnQnXG4gIH0sXG4gIHByb3ZpZGVyczogWyB7IHByb3ZpZGU6IEZfWk9PTSwgdXNlRXhpc3Rpbmc6IEZab29tRGlyZWN0aXZlIH0gXSxcbn0pXG5leHBvcnQgY2xhc3MgRlpvb21EaXJlY3RpdmUgZXh0ZW5kcyBGWm9vbUJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9mTWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcbiAgcHJpdmF0ZSBfcmVuZGVyZWQgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICBwcml2YXRlIF90cmlnZ2Vyc0xpc3RlbmVyOiBGdW5jdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBfaXNFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KHsgYWxpYXM6ICdmWm9vbScsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwcm90ZWN0ZWQgc2V0IGZab29tKGlzRW5hYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChpc0VuYWJsZWQgIT09IHRoaXMuX2lzRW5hYmxlZCkge1xuICAgICAgdGhpcy5faXNFbmFibGVkID0gaXNFbmFibGVkO1xuICAgICAgdGhpcy5fbGlzdGVuVHJpZ2dlcnMoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZlpvb21UcmlnZ2VyczogSUZBY3Rpb25UcmlnZ2VyPEVGWm9vbUFjdGlvbj5bXSA9IFtcbiAgICB7IGV2ZW50OiBFRlRyaWdnZXJFdmVudC5XSEVFTCwgYWN0aW9uOiBFRlpvb21BY3Rpb24uV0hFRUwgfSxcbiAgICB7IGV2ZW50OiBFRlRyaWdnZXJFdmVudC5ET1VCTEVfQ0xJQ0ssIGFjdGlvbjogRUZab29tQWN0aW9uLkRPVUJMRV9DTElDSyB9XG4gIF07XG5cbiAgQElucHV0KHsgYWxpYXM6ICdmWm9vbU1pbmltdW0nLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgbWluaW11bTogbnVtYmVyID0gMC4xO1xuXG4gIEBJbnB1dCh7IGFsaWFzOiAnZlpvb21NYXhpbXVtJywgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgcHVibGljIG92ZXJyaWRlIG1heGltdW06IG51bWJlciA9IDQ7XG5cbiAgQElucHV0KHsgYWxpYXM6ICdmWm9vbVN0ZXAnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgc3RlcDogbnVtYmVyID0gMC4xO1xuXG4gIEBJbnB1dCh7IGFsaWFzOiAnZlpvb21EYmxDbGlja1N0ZXAnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZGJsQ2xpY2tTdGVwOiBudW1iZXIgPSAwLjU7XG5cbiAgcHJpdmF0ZSBnZXQgX2ZIb3N0KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGUobmV3IEdldEZsb3dIb3N0RWxlbWVudFJlcXVlc3QoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfZkNhbnZhcygpOiBGQ2FudmFzQmFzZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlKG5ldyBHZXRDYW52YXNSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlKG5ldyBBZGRab29tVG9TdG9yZVJlcXVlc3QodGhpcykpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0ZW5UcmlnZ2VycygpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sgJ2Zab29tVHJpZ2dlcnMnIF0pIHtcbiAgICAgIHRoaXMuX2xpc3RlblRyaWdnZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuVHJpZ2dlcnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9mSG9zdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLl92YWxpZGF0ZVRyaWdnZXJzKCk7XG5cbiAgICB0aGlzLmZab29tVHJpZ2dlcnMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgdGhpcy5fdHJpZ2dlcnNMaXN0ZW5lci5wdXNoKFxuICAgICAgICB0aGlzLl9yZW5kZXJlZC5saXN0ZW4odGhpcy5fZkhvc3QsIHguZXZlbnQsIHRoaXMuX2dldEFjdGlvbih4KSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF92YWxpZGF0ZVRyaWdnZXJzKCk6IHZvaWQge1xuXG4gICAgY29uc3QgU1VQUE9SVEVEX0VWRU5UUyA9IE9iamVjdC52YWx1ZXMoRUZUcmlnZ2VyRXZlbnQpO1xuICAgIGNvbnN0IFNVUFBPUlRFRF9BQ1RJT05TID0gT2JqZWN0LnZhbHVlcyhFRlpvb21BY3Rpb24pO1xuXG4gICAgdGhpcy5mWm9vbVRyaWdnZXJzLmZvckVhY2goKHRyaWdnZXIpID0+IHtcbiAgICAgIGlmICghU1VQUE9SVEVEX0VWRU5UUy5pbmNsdWRlcyh0cmlnZ2VyLmV2ZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50OiAkeyB0cmlnZ2VyLmV2ZW50IH1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFTVVBQT1JURURfQUNUSU9OUy5pbmNsdWRlcyh0cmlnZ2VyLmFjdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBhY3Rpb246ICR7IHRyaWdnZXIuYWN0aW9uIH1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEFjdGlvbih0cmlnZ2VyOiBJRkFjdGlvblRyaWdnZXIpOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkIHtcbiAgICBzd2l0Y2ggKHRyaWdnZXIuYWN0aW9uKSB7XG4gICAgICBjYXNlIEVGWm9vbUFjdGlvbi5XSEVFTDpcbiAgICAgICAgcmV0dXJuIChldmVudDogRXZlbnQpID0+IHRoaXMuX29uV2hlZWwoZXZlbnQgYXMgV2hlZWxFdmVudCwgdHJpZ2dlcik7XG4gICAgICBjYXNlIEVGWm9vbUFjdGlvbi5ET1VCTEVfQ0xJQ0s6XG4gICAgICAgIHJldHVybiAoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLl9vbkRvdWJsZUNsaWNrKGV2ZW50IGFzIE1vdXNlRXZlbnQsIHRyaWdnZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFjdGlvbjogJHsgdHJpZ2dlci5hY3Rpb24gfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uV2hlZWwgPSAoZXZlbnQ6IFdoZWVsRXZlbnQsIHRyaWdnZXI6IElGQWN0aW9uVHJpZ2dlcikgPT4ge1xuICAgIGlmICh0cmlnZ2VyLnZhbGlkYXRvciAmJiAhdHJpZ2dlci52YWxpZGF0b3IoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICh0YXJnZXRFbGVtZW50Py5jbG9zZXN0KCdbZkxvY2tlZENvbnRleHRdJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFpvb20oXG4gICAgICBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKSxcbiAgICAgIHRoaXMuc3RlcCwgdGhpcy5fY2FsY3VsYXRlRGlyZWN0aW9uKGV2ZW50LmRlbHRhWSksIGZhbHNlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZURpcmVjdGlvbihkZWx0YVk6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGRlbHRhWSA+IDAgPyBFRlpvb21EaXJlY3Rpb24uWk9PTV9PVVQgOiBFRlpvb21EaXJlY3Rpb24uWk9PTV9JTjtcbiAgfVxuXG4gIHByaXZhdGUgX29uRG91YmxlQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIHRyaWdnZXI6IElGQWN0aW9uVHJpZ2dlcikgPT4ge1xuICAgIGlmICh0cmlnZ2VyLnZhbGlkYXRvciAmJiAhdHJpZ2dlci52YWxpZGF0b3IoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmIChpc05vZGUodGFyZ2V0RWxlbWVudCkgfHwgdGFyZ2V0RWxlbWVudD8uY2xvc2VzdCgnW2ZMb2NrZWRDb250ZXh0XScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRab29tKFxuICAgICAgUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSksXG4gICAgICB0aGlzLmRibENsaWNrU3RlcCwgRUZab29tRGlyZWN0aW9uLlpPT01fSU4sIHRydWVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VG9DZW50ZXJQb3NpdGlvbihwb3NpdGlvbjogSVBvaW50IHwgdW5kZWZpbmVkLCByZWN0OiBJUmVjdCk6IElQb2ludCB7XG4gICAgcmV0dXJuIFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKHBvc2l0aW9uPy54IHx8IHJlY3QuZ3Jhdml0eUNlbnRlci54LCBwb3NpdGlvbj8ueSB8fCByZWN0LmdyYXZpdHlDZW50ZXIueSk7XG4gIH1cblxuICBwdWJsaWMgem9vbUluKHBvc2l0aW9uPzogSVBvaW50KTogdm9pZCB7XG4gICAgdGhpcy5fb25ab29tVG9DZW50ZXIoRUZab29tRGlyZWN0aW9uLlpPT01fSU4sIHBvc2l0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyB6b29tT3V0KHBvc2l0aW9uPzogSVBvaW50KTogdm9pZCB7XG4gICAgdGhpcy5fb25ab29tVG9DZW50ZXIoRUZab29tRGlyZWN0aW9uLlpPT01fT1VULCBwb3NpdGlvbik7XG4gIH1cblxuICBwcml2YXRlIF9vblpvb21Ub0NlbnRlcihkaXJlY3Rpb246IEVGWm9vbURpcmVjdGlvbiwgcG9zaXRpb24/OiBJUG9pbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNldFpvb20oXG4gICAgICB0aGlzLl9nZXRUb0NlbnRlclBvc2l0aW9uKHBvc2l0aW9uLCBSZWN0RXh0ZW5zaW9ucy5mcm9tRWxlbWVudCh0aGlzLl9mSG9zdCkpLFxuICAgICAgdGhpcy5zdGVwLCBkaXJlY3Rpb24sIGZhbHNlXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRab29tKHBvc2l0aW9uOiBJUG9pbnQsIHN0ZXA6IG51bWJlciwgZGlyZWN0aW9uOiBFRlpvb21EaXJlY3Rpb24sIGFuaW1hdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGUoXG4gICAgICBuZXcgU2V0Wm9vbVJlcXVlc3QocG9zaXRpb24sIHN0ZXAsIGRpcmVjdGlvbiwgYW5pbWF0ZWQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGRlcHJlY2F0ZWQgTWV0aG9kIFwiZ2V0U2NhbGVcIiBpcyBkZXByZWNhdGVkLiBVc2UgXCJnZXRab29tVmFsdWVcIiBpbnN0ZWFkLiBUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiAxOC4wLjAuYCxcbiAgICovXG4gIEBEZXByZWNhdGVkKCdnZXRab29tVmFsdWUnKVxuICBwdWJsaWMgZ2V0U2NhbGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRab29tVmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRab29tVmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZkNhbnZhcy50cmFuc2Zvcm0uc2NhbGUgfHwgMTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mTWVkaWF0b3IuZXhlY3V0ZShuZXcgUmVzZXRab29tUmVxdWVzdCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc3Bvc2VMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5fdHJpZ2dlcnNMaXN0ZW5lci5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoKSk7XG4gICAgdGhpcy5fdHJpZ2dlcnNMaXN0ZW5lciA9IFtdO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLl9mTWVkaWF0b3IuZXhlY3V0ZShuZXcgUmVtb3ZlWm9vbUZyb21TdG9yZVJlcXVlc3QoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,4 +1,6 @@
1
+ export * from './e-f-zoom-action';
2
+ export * from './e-f-zoom-direction';
1
3
  export * from './f-zoom-base';
2
4
  export * from './f-zoom.directive';
3
5
  export * from './providers';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2Ytem9vbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUU5QixjQUFjLG9CQUFvQixDQUFDO0FBRW5DLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mLXpvb20tYmFzZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZi16b29tLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZXJzJztcbiJdfQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2Ytem9vbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBRWxDLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsY0FBYyxlQUFlLENBQUM7QUFFOUIsY0FBYyxvQkFBb0IsQ0FBQztBQUVuQyxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZS1mLXpvb20tYWN0aW9uJztcblxuZXhwb3J0ICogZnJvbSAnLi9lLWYtem9vbS1kaXJlY3Rpb24nO1xuXG5leHBvcnQgKiBmcm9tICcuL2Ytem9vbS1iYXNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9mLXpvb20uZGlyZWN0aXZlJztcblxuZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlcnMnO1xuIl19
@@ -1,4 +1,4 @@
1
1
  import { FBackgroundComponent } from './f-background.component';
2
2
  import { FRectPatternComponent } from './f-rect-pattern';
3
3
  import { FCirclePatternComponent } from './f-circle-pattern';
4
- export declare const F_BACKGROUND_PROVIDERS: (typeof FBackgroundComponent | typeof FCirclePatternComponent | typeof FRectPatternComponent)[];
4
+ export declare const F_BACKGROUND_PROVIDERS: (typeof FBackgroundComponent | typeof FRectPatternComponent | typeof FCirclePatternComponent)[];
@@ -15,8 +15,8 @@ export declare abstract class FCanvasBase implements IHasHostElement {
15
15
  abstract redrawWithAnimation(): void;
16
16
  getPosition(): IPoint;
17
17
  setPosition(position: IPoint): void;
18
- abstract setZoom(scale: number, toPosition: IPoint): void;
19
- abstract resetZoom(): void;
18
+ abstract setScale(scale: number, toPosition: IPoint): void;
19
+ abstract resetScale(): void;
20
20
  emitCanvasChangeEvent(): void;
21
21
  static ɵfac: i0.ɵɵFactoryDeclaration<FCanvasBase, never>;
22
22
  static ɵdir: i0.ɵɵDirectiveDeclaration<FCanvasBase, never, never, {}, {}, never, never, false, never>;
@@ -19,8 +19,17 @@ export declare class FCanvasComponent extends FCanvasBase implements OnInit, OnD
19
19
  centerGroupOrNode(id: string, animated?: boolean): void;
20
20
  fitToScreen(toCenter?: IPoint, animated?: boolean): void;
21
21
  resetScaleAndCenter(animated?: boolean): void;
22
+ getScale(): number;
23
+ /**
24
+ * @deprecated Method "setZoom" is deprecated. Use "setScale" instead. This method will be removed in version 18.0.0.`,
25
+ */
22
26
  setZoom(scale: number, toPosition?: IPoint): void;
27
+ setScale(scale: number, toPosition?: IPoint): void;
28
+ /**
29
+ * @deprecated Method "resetZoom" is deprecated. Use "resetScale" instead. This method will be removed in version 18.0.0.`,
30
+ */
23
31
  resetZoom(): void;
32
+ resetScale(): void;
24
33
  ngOnDestroy(): void;
25
34
  static ɵfac: i0.ɵɵFactoryDeclaration<FCanvasComponent, never>;
26
35
  static ɵcmp: i0.ɵɵComponentDeclaration<FCanvasComponent, "f-canvas", ["fComponent"], { "position": { "alias": "position"; "required": false; }; "scale": { "alias": "scale"; "required": false; }; }, { "fCanvasChange": "fCanvasChange"; }, never, ["[fGroup]", "f-snap-connection", "f-connection", "f-connection-for-create", "[fNode]"], false, never>;
@@ -36,6 +36,8 @@ export declare class FConnectionComponent extends FConnectionBase implements OnI
36
36
  ngOnDestroy(): void;
37
37
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionComponent, never>;
38
38
  static ɵcmp: i0.ɵɵComponentDeclaration<FConnectionComponent, "f-connection", ["fComponent"], { "fId": { "alias": "fConnectionId"; "required": false; }; "fText": { "alias": "fText"; "required": false; }; "fTextStartOffset": { "alias": "fTextStartOffset"; "required": false; }; "fStartColor": { "alias": "fStartColor"; "required": false; }; "fEndColor": { "alias": "fEndColor"; "required": false; }; "fOutputId": { "alias": "fOutputId"; "required": false; }; "fInputId": { "alias": "fInputId"; "required": false; }; "fRadius": { "alias": "fRadius"; "required": false; }; "fOffset": { "alias": "fOffset"; "required": false; }; "fBehavior": { "alias": "fBehavior"; "required": false; }; "fType": { "alias": "fType"; "required": false; }; "fDraggingDisabled": { "alias": "fReassignDisabled"; "required": false; }; "fSelectionDisabled": { "alias": "fSelectionDisabled"; "required": false; }; }, {}, ["fConnectionCenters"], ["*", "[fConnectionCenter]"], false, never>;
39
+ static ngAcceptInputType_fRadius: unknown;
40
+ static ngAcceptInputType_fOffset: unknown;
39
41
  static ngAcceptInputType_fBehavior: unknown;
40
42
  static ngAcceptInputType_fDraggingDisabled: unknown;
41
43
  static ngAcceptInputType_fSelectionDisabled: unknown;
@@ -37,5 +37,7 @@ export declare class FConnectionForCreateComponent extends FConnectionBase imple
37
37
  ngOnDestroy(): void;
38
38
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionForCreateComponent, never>;
39
39
  static ɵcmp: i0.ɵɵComponentDeclaration<FConnectionForCreateComponent, "f-connection-for-create", never, { "fStartColor": { "alias": "fStartColor"; "required": false; }; "fEndColor": { "alias": "fEndColor"; "required": false; }; "fRadius": { "alias": "fRadius"; "required": false; }; "fOffset": { "alias": "fOffset"; "required": false; }; "fBehavior": { "alias": "fBehavior"; "required": false; }; "fType": { "alias": "fType"; "required": false; }; }, {}, ["fConnectionCenters"], ["*", "[fConnectionCenter]"], false, never>;
40
+ static ngAcceptInputType_fRadius: unknown;
41
+ static ngAcceptInputType_fOffset: unknown;
40
42
  static ngAcceptInputType_fBehavior: unknown;
41
43
  }
@@ -38,5 +38,8 @@ export declare class FSnapConnectionComponent extends FConnectionBase implements
38
38
  ngOnDestroy(): void;
39
39
  static ɵfac: i0.ɵɵFactoryDeclaration<FSnapConnectionComponent, never>;
40
40
  static ɵcmp: i0.ɵɵComponentDeclaration<FSnapConnectionComponent, "f-snap-connection", never, { "fStartColor": { "alias": "fStartColor"; "required": false; }; "fEndColor": { "alias": "fEndColor"; "required": false; }; "fSnapThreshold": { "alias": "fSnapThreshold"; "required": false; }; "fRadius": { "alias": "fRadius"; "required": false; }; "fOffset": { "alias": "fOffset"; "required": false; }; "fBehavior": { "alias": "fBehavior"; "required": false; }; "fType": { "alias": "fType"; "required": false; }; }, {}, ["fConnectionCenters"], ["*", "[fConnectionCenter]"], false, never>;
41
+ static ngAcceptInputType_fSnapThreshold: unknown;
42
+ static ngAcceptInputType_fRadius: unknown;
43
+ static ngAcceptInputType_fOffset: unknown;
41
44
  static ngAcceptInputType_fBehavior: unknown;
42
45
  }
@@ -4,4 +4,4 @@ import { FConnectionCenterDirective } from './f-connection-center';
4
4
  import { FConnectionForCreateComponent } from './f-connection-for-create';
5
5
  import { FMarkerDirective } from './f-marker';
6
6
  import { FSnapConnectionComponent } from './f-snap-connection';
7
- export declare const F_CONNECTION_PROVIDERS: (typeof FSnapConnectionComponent | typeof FConnectionDragHandleComponent | typeof FConnectionSelectionComponent | typeof FConnectionCenterDirective | typeof FMarkerDirective | typeof FConnectionComponent | typeof FConnectionForCreateComponent | typeof FConnectionTextPathDirective | typeof FConnectionTextComponent | typeof FConnectionGradientComponent | typeof FConnectionPathComponent)[];
7
+ export declare const F_CONNECTION_PROVIDERS: (typeof FConnectionTextComponent | typeof FConnectionTextPathDirective | typeof FConnectionDragHandleComponent | typeof FConnectionGradientComponent | typeof FConnectionPathComponent | typeof FConnectionSelectionComponent | typeof FConnectionComponent | typeof FConnectionCenterDirective | typeof FConnectionForCreateComponent | typeof FMarkerDirective | typeof FSnapConnectionComponent)[];
@@ -2,15 +2,17 @@ import { EFConnectableSide } from './e-f-connectable-side';
2
2
  import { IHasHostElement } from '../i-has-host-element';
3
3
  export declare abstract class FConnectorBase implements IHasHostElement {
4
4
  abstract fId: string;
5
+ abstract fNodeId: string;
5
6
  abstract disabled: boolean;
6
7
  abstract hostElement: HTMLElement | SVGElement;
7
8
  abstract canBeConnected: boolean;
8
9
  private _isConnected;
9
10
  get isConnected(): boolean;
10
- toConnector: FConnectorBase | undefined;
11
+ toConnector: FConnectorBase[];
11
12
  isSelfConnectable: boolean;
12
13
  fConnectableSide: EFConnectableSide;
13
14
  userFConnectableSide: EFConnectableSide;
14
15
  isContains(element: HTMLElement | SVGElement): boolean;
15
- setConnected(isConnected: boolean, toConnector?: FConnectorBase): void;
16
+ setConnected(toConnector: FConnectorBase): void;
17
+ resetConnected(): void;
16
18
  }
@@ -1,22 +1,22 @@
1
1
  import { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { FNodeInputBase } from './f-node-input-base';
3
3
  import { EFConnectableSide } from '../e-f-connectable-side';
4
- import { FNodeBase } from '../../f-node';
5
4
  import { FConnectorBase } from '../f-connector-base';
6
5
  import * as i0 from "@angular/core";
7
6
  export declare class FNodeInputDirective extends FNodeInputBase implements OnInit, OnChanges, OnDestroy {
8
- private fNode;
7
+ private _elementReference;
8
+ private _fMediator;
9
+ private _fNode;
9
10
  fId: any;
10
11
  multiple: boolean;
11
12
  disabled: boolean;
12
13
  userFConnectableSide: EFConnectableSide;
14
+ get fNodeId(): string;
13
15
  get hostElement(): HTMLElement | SVGElement;
14
- private _elementReference;
15
- private _fMediator;
16
- constructor(fNode: FNodeBase);
17
16
  ngOnInit(): void;
18
17
  ngOnChanges(changes: SimpleChanges): void;
19
- setConnected(isConnected: boolean, toConnector?: FConnectorBase): void;
18
+ setConnected(toConnector: FConnectorBase): void;
19
+ resetConnected(): void;
20
20
  ngOnDestroy(): void;
21
21
  static ɵfac: i0.ɵɵFactoryDeclaration<FNodeInputDirective, never>;
22
22
  static ɵdir: i0.ɵɵDirectiveDeclaration<FNodeInputDirective, "[fNodeInput]", ["fNodeInput"], { "fId": { "alias": "fInputId"; "required": false; }; "multiple": { "alias": "fInputMultiple"; "required": false; }; "disabled": { "alias": "fInputDisabled"; "required": false; }; "userFConnectableSide": { "alias": "fInputConnectableSide"; "required": false; }; }, {}, never, never, false, never>;
@@ -1,22 +1,22 @@
1
1
  import { OnDestroy, OnInit } from '@angular/core';
2
2
  import { FNodeOutletBase } from './f-node-outlet-base';
3
- import { FNodeBase } from '../../f-node';
4
3
  import { EFConnectableSide } from '../e-f-connectable-side';
5
4
  import * as i0 from "@angular/core";
6
5
  export declare class FNodeOutletDirective extends FNodeOutletBase implements OnInit, OnDestroy {
7
- private fNode;
6
+ private _elementReference;
7
+ private _fMediator;
8
+ private _fNode;
8
9
  fId: string;
9
10
  disabled: boolean;
10
11
  fConnectableSide: EFConnectableSide;
11
12
  userFConnectableSide: EFConnectableSide;
12
13
  isConnectionFromOutlet: boolean;
14
+ canBeConnectedInputs: string[];
15
+ get fNodeId(): string;
13
16
  get hostElement(): HTMLElement | SVGElement;
14
- private _elementReference;
15
- private _fMediator;
16
- constructor(fNode: FNodeBase);
17
17
  ngOnInit(): void;
18
18
  ngOnDestroy(): void;
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<FNodeOutletDirective, never>;
20
- static ɵdir: i0.ɵɵDirectiveDeclaration<FNodeOutletDirective, "[fNodeOutlet]", ["fNodeOutlet"], { "fId": { "alias": "fOutletId"; "required": false; }; "disabled": { "alias": "fOutletDisabled"; "required": false; }; "isConnectionFromOutlet": { "alias": "isConnectionFromOutlet"; "required": false; }; }, {}, never, never, false, never>;
20
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FNodeOutletDirective, "[fNodeOutlet]", ["fNodeOutlet"], { "fId": { "alias": "fOutletId"; "required": false; }; "disabled": { "alias": "fOutletDisabled"; "required": false; }; "isConnectionFromOutlet": { "alias": "isConnectionFromOutlet"; "required": false; }; "canBeConnectedInputs": { "alias": "fCanBeConnectedInputs"; "required": false; }; }, {}, never, never, false, never>;
21
21
  static ngAcceptInputType_disabled: unknown;
22
22
  }
@@ -1,26 +1,27 @@
1
1
  import { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { FNodeOutputBase } from './f-node-output-base';
3
3
  import { EFConnectableSide } from '../e-f-connectable-side';
4
- import { FNodeBase } from '../../f-node';
5
4
  import { FConnectorBase } from '../f-connector-base';
6
5
  import * as i0 from "@angular/core";
7
6
  export declare class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnChanges, OnDestroy {
8
- private fNode;
7
+ private _elementReference;
8
+ private _fMediator;
9
+ private _fNode;
9
10
  fId: string;
10
11
  multiple: boolean;
11
12
  disabled: boolean;
12
13
  userFConnectableSide: EFConnectableSide;
13
14
  isSelfConnectable: boolean;
15
+ canBeConnectedInputs: string[];
16
+ get fNodeId(): string;
14
17
  get hostElement(): HTMLElement | SVGElement;
15
- private _elementReference;
16
- private _fMediator;
17
- constructor(fNode: FNodeBase);
18
18
  ngOnInit(): void;
19
19
  ngOnChanges(changes: SimpleChanges): void;
20
- setConnected(isConnected: boolean, toConnector?: FConnectorBase): void;
20
+ setConnected(toConnector: FConnectorBase): void;
21
+ resetConnected(): void;
21
22
  ngOnDestroy(): void;
22
23
  static ɵfac: i0.ɵɵFactoryDeclaration<FNodeOutputDirective, never>;
23
- static ɵdir: i0.ɵɵDirectiveDeclaration<FNodeOutputDirective, "[fNodeOutput]", ["fNodeOutput"], { "fId": { "alias": "fOutputId"; "required": false; }; "multiple": { "alias": "fOutputMultiple"; "required": false; }; "disabled": { "alias": "fOutputDisabled"; "required": false; }; "userFConnectableSide": { "alias": "fOutputConnectableSide"; "required": false; }; "isSelfConnectable": { "alias": "isSelfConnectable"; "required": false; }; }, {}, never, never, false, never>;
24
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FNodeOutputDirective, "[fNodeOutput]", ["fNodeOutput"], { "fId": { "alias": "fOutputId"; "required": false; }; "multiple": { "alias": "fOutputMultiple"; "required": false; }; "disabled": { "alias": "fOutputDisabled"; "required": false; }; "userFConnectableSide": { "alias": "fOutputConnectableSide"; "required": false; }; "isSelfConnectable": { "alias": "isSelfConnectable"; "required": false; }; "canBeConnectedInputs": { "alias": "fCanBeConnectedInputs"; "required": false; }; }, {}, never, never, false, never>;
24
25
  static ngAcceptInputType_disabled: unknown;
25
26
  static ngAcceptInputType_userFConnectableSide: unknown;
26
27
  }
@@ -1,4 +1,3 @@
1
- export * from './domain';
2
1
  export * from './f-node-input';
3
2
  export * from './f-node-outlet';
4
3
  export * from './f-node-output';
@@ -1,4 +1,4 @@
1
1
  import { FNodeInputDirective } from './f-node-input';
2
2
  import { FNodeOutletDirective } from './f-node-outlet';
3
3
  import { FNodeOutputDirective } from './f-node-output';
4
- export declare const F_CONNECTORS_PROVIDERS: (typeof FNodeOutputDirective | typeof FNodeOutletDirective | typeof FNodeInputDirective)[];
4
+ export declare const F_CONNECTORS_PROVIDERS: (typeof FNodeInputDirective | typeof FNodeOutletDirective | typeof FNodeOutputDirective)[];
@@ -1,10 +1,8 @@
1
1
  import { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';
2
2
  import { IExecution } from '@foblex/mediator';
3
- import { FDraggableDataContext } from '../../f-draggable-data-context';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare class CanvasMoveFinalizeExecution implements IExecution<CanvasMoveFinalizeRequest, void> {
6
- private fDraggableDataContext;
7
- constructor(fDraggableDataContext: FDraggableDataContext);
5
+ private _fDraggableDataContext;
8
6
  handle(request: CanvasMoveFinalizeRequest): void;
9
7
  private _isValid;
10
8
  static ɵfac: i0.ɵɵFactoryDeclaration<CanvasMoveFinalizeExecution, never>;
@@ -1,3 +1,2 @@
1
- export * from './providers';
2
1
  export * from './canvas-move-finalize.execution';
3
2
  export * from './canvas-move-finalize.request';
@@ -1,14 +1,15 @@
1
1
  import { CanvasMovePreparationRequest } from './canvas-move-preparation.request';
2
2
  import { IExecution } from '@foblex/mediator';
3
- import { FComponentsStore } from '../../../f-storage';
4
- import { FDraggableDataContext } from '../../f-draggable-data-context';
5
3
  import * as i0 from "@angular/core";
6
4
  export declare class CanvasMovePreparationExecution implements IExecution<CanvasMovePreparationRequest, void> {
7
- private fComponentsStore;
8
- private fDraggableDataContext;
9
- private get flowHost();
10
- constructor(fComponentsStore: FComponentsStore, fDraggableDataContext: FDraggableDataContext);
5
+ private _fComponentsStore;
6
+ private _fDraggableDataContext;
7
+ private get _fHost();
11
8
  handle(request: CanvasMovePreparationRequest): void;
9
+ private _isValid;
10
+ private _isBackgroundElement;
11
+ private _isDragOnHost;
12
+ private _getNode;
12
13
  static ɵfac: i0.ɵɵFactoryDeclaration<CanvasMovePreparationExecution, never>;
13
14
  static ɵprov: i0.ɵɵInjectableDeclaration<CanvasMovePreparationExecution>;
14
15
  }