@foblex/flow 12.6.6 → 12.6.8

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 (195) hide show
  1. package/README.md +1 -1
  2. package/bundles/foblex-flow.umd.js +2130 -2147
  3. package/bundles/foblex-flow.umd.js.map +1 -1
  4. package/{f-backgroud/domain → domain/f-background}/add-pattern-to-background/add-pattern-to-background.request.d.ts +1 -1
  5. package/domain/f-background/index.d.ts +2 -0
  6. package/domain/f-canvas/index.d.ts +8 -0
  7. package/{f-draggable/connections/common → domain/f-connection}/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.d.ts +1 -1
  8. package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/get-connector-with-rect-request.d.ts +1 -1
  9. package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/i-connector-with-rect.d.ts +1 -1
  10. package/{f-draggable/connections/common → domain/f-connection}/index.d.ts +0 -1
  11. package/domain/f-connection/providers.d.ts +4 -0
  12. package/domain/get-flow-state/providers.d.ts +1 -1
  13. package/domain/index.d.ts +3 -0
  14. package/domain/providers.d.ts +1 -1
  15. package/esm2015/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.js +48 -0
  16. package/esm2015/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.js +6 -0
  17. package/esm2015/domain/f-background/add-pattern-to-background/index.js +3 -0
  18. package/esm2015/domain/f-background/index.js +3 -0
  19. package/esm2015/domain/f-background/providers.js +5 -0
  20. package/esm2015/{f-canvas/domain → domain/f-canvas}/center-group-or-node/center-group-or-node-request.js +1 -1
  21. package/esm2015/domain/f-canvas/center-group-or-node/center-group-or-node.execution.js +49 -0
  22. package/esm2015/{f-canvas/domain → domain/f-canvas}/center-group-or-node/index.js +1 -1
  23. package/esm2015/{f-canvas/domain → domain/f-canvas}/fit-to-flow/fit-to-flow-request.js +1 -1
  24. package/esm2015/domain/f-canvas/fit-to-flow/fit-to-flow.execution.js +56 -0
  25. package/esm2015/{f-canvas/domain → domain/f-canvas}/fit-to-flow/index.js +1 -1
  26. package/esm2015/domain/f-canvas/index.js +9 -0
  27. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-position/index.js +1 -1
  28. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position-request.js +1 -1
  29. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position.execution.js +1 -1
  30. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/index.js +1 -1
  31. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale-request.js +1 -1
  32. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale.execution.js +1 -1
  33. package/esm2015/{f-canvas/domain → domain/f-canvas}/providers.js +1 -1
  34. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale/index.js +1 -1
  35. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale-request.js +1 -1
  36. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale.execution.js +1 -1
  37. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/index.js +1 -1
  38. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/reset-scale-and-center-request.js +1 -1
  39. package/esm2015/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.js +51 -0
  40. package/esm2015/{f-canvas/domain → domain/f-canvas}/update-scale/index.js +1 -1
  41. package/esm2015/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale-request.js +1 -1
  42. package/esm2015/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale.execution.js +1 -1
  43. package/esm2015/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.js +39 -0
  44. package/esm2015/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.js +8 -0
  45. package/esm2015/domain/f-connection/find-closest-input-using-snap-threshold/index.js +3 -0
  46. package/esm2015/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.js +55 -0
  47. package/esm2015/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.js +6 -0
  48. package/esm2015/domain/f-connection/get-all-can-be-connected-input-positions/index.js +3 -0
  49. package/esm2015/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.js +6 -0
  50. package/esm2015/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.js +28 -0
  51. package/esm2015/domain/f-connection/get-connector-with-rect/i-connector-with-rect.js +2 -0
  52. package/esm2015/domain/f-connection/get-connector-with-rect/index.js +4 -0
  53. package/esm2015/domain/f-connection/index.js +5 -0
  54. package/esm2015/domain/f-connection/providers.js +9 -0
  55. package/esm2015/domain/index.js +4 -1
  56. package/esm2015/domain/providers.js +6 -4
  57. package/esm2015/f-backgroud/domain/index.js +1 -3
  58. package/esm2015/f-backgroud/f-background.component.js +3 -3
  59. package/esm2015/f-canvas/domain/index.js +1 -9
  60. package/esm2015/f-canvas/f-canvas.component.js +2 -3
  61. package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.js +2 -2
  62. package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/index.js +1 -2
  63. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.js +1 -2
  64. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.js +1 -2
  65. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.js +1 -2
  66. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/index.js +1 -2
  67. package/esm2015/f-draggable/connections/create-connection/create-connection.drag-handler.js +8 -4
  68. package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.js +1 -2
  69. package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.js +85 -0
  70. package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.js +7 -0
  71. package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.js +35 -0
  72. package/esm2015/f-draggable/connections/get-input-under-pointer/index.js +4 -0
  73. package/esm2015/f-draggable/connections/index.js +2 -2
  74. package/esm2015/f-draggable/connections/providers.js +20 -12
  75. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.js +1 -2
  76. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.js +2 -2
  77. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.js +1 -2
  78. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.js +12 -5
  79. package/esm2015/f-draggable/node/connection-base-drag-handler.js +2 -2
  80. package/esm2015/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.js +1 -1
  81. package/esm2015/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.js +1 -1
  82. package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.js +9 -3
  83. package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.js +1 -1
  84. package/esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.js +3 -6
  85. package/esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.js +3 -3
  86. package/esm2015/f-draggable/node-resize/node-resize.drag-handler.js +5 -4
  87. package/esm2015/f-draggable/providers.js +5 -5
  88. package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.execution.js +3 -3
  89. package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.validator.js +3 -3
  90. package/esm2015/f-external-item/domain/external-item.drag-handler.js +1 -1
  91. package/esm2015/f-flow/f-flow.component.js +5 -6
  92. package/f-backgroud/domain/index.d.ts +0 -2
  93. package/f-canvas/domain/index.d.ts +0 -8
  94. package/f-draggable/connections/create-connection/create-connection-finalize/index.d.ts +0 -1
  95. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.d.ts +0 -1
  96. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.d.ts +0 -1
  97. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.d.ts +0 -1
  98. package/f-draggable/connections/create-connection/create-connection-preparation/index.d.ts +0 -1
  99. package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +1 -1
  100. package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.d.ts +0 -1
  101. package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/get-input-under-pointer.execution.d.ts +3 -3
  102. package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/get-input-under-pointer.request.d.ts +2 -2
  103. package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/get-input-under-pointer.validator.d.ts +1 -1
  104. package/f-draggable/connections/index.d.ts +1 -1
  105. package/f-draggable/connections/providers.d.ts +4 -1
  106. package/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.d.ts +0 -1
  107. package/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.d.ts +0 -1
  108. package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +1 -1
  109. package/f-draggable/node/connection-base-drag-handler.d.ts +1 -1
  110. package/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.d.ts +1 -0
  111. package/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.d.ts +2 -1
  112. package/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.d.ts +0 -1
  113. package/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.d.ts +2 -3
  114. package/f-draggable/providers.d.ts +1 -1
  115. package/f-external-item/domain/external-item-preparation/external-item-preparation.execution.d.ts +1 -1
  116. package/f-external-item/domain/external-item-preparation/external-item-preparation.validator.d.ts +1 -1
  117. package/f-external-item/domain/external-item.drag-handler.d.ts +1 -1
  118. package/f-minimap/domain/providers.d.ts +1 -1
  119. package/f-node/providers.d.ts +1 -1
  120. package/fesm2015/foblex-flow.js +947 -965
  121. package/fesm2015/foblex-flow.js.map +1 -1
  122. package/package.json +1 -1
  123. package/esm2015/f-backgroud/domain/add-pattern-to-background/add-pattern-to-background.execution.js +0 -48
  124. package/esm2015/f-backgroud/domain/add-pattern-to-background/add-pattern-to-background.request.js +0 -6
  125. package/esm2015/f-backgroud/domain/add-pattern-to-background/index.js +0 -3
  126. package/esm2015/f-backgroud/domain/providers.js +0 -5
  127. package/esm2015/f-canvas/domain/center-group-or-node/center-group-or-node.execution.js +0 -49
  128. package/esm2015/f-canvas/domain/fit-to-flow/fit-to-flow.execution.js +0 -56
  129. package/esm2015/f-canvas/domain/reset-scale-and-center/reset-scale-and-center.execution.js +0 -51
  130. package/esm2015/f-draggable/connections/common/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.js +0 -39
  131. package/esm2015/f-draggable/connections/common/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.js +0 -8
  132. package/esm2015/f-draggable/connections/common/find-closest-input-using-snap-threshold/index.js +0 -3
  133. package/esm2015/f-draggable/connections/common/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.js +0 -55
  134. package/esm2015/f-draggable/connections/common/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.js +0 -6
  135. package/esm2015/f-draggable/connections/common/get-all-can-be-connected-input-positions/index.js +0 -3
  136. package/esm2015/f-draggable/connections/common/get-connector-with-rect/get-connector-with-rect-request.js +0 -6
  137. package/esm2015/f-draggable/connections/common/get-connector-with-rect/get-connector-with-rect.execution.js +0 -28
  138. package/esm2015/f-draggable/connections/common/get-connector-with-rect/i-connector-with-rect.js +0 -2
  139. package/esm2015/f-draggable/connections/common/get-connector-with-rect/index.js +0 -4
  140. package/esm2015/f-draggable/connections/common/get-input-under-pointer/get-input-under-pointer.execution.js +0 -85
  141. package/esm2015/f-draggable/connections/common/get-input-under-pointer/get-input-under-pointer.request.js +0 -7
  142. package/esm2015/f-draggable/connections/common/get-input-under-pointer/get-input-under-pointer.validator.js +0 -35
  143. package/esm2015/f-draggable/connections/common/get-input-under-pointer/index.js +0 -4
  144. package/esm2015/f-draggable/connections/common/index.js +0 -6
  145. package/esm2015/f-draggable/connections/common/providers.js +0 -12
  146. package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/providers.js +0 -7
  147. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.js +0 -5
  148. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.js +0 -5
  149. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.js +0 -7
  150. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/providers.js +0 -13
  151. package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.js +0 -7
  152. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.js +0 -7
  153. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.js +0 -7
  154. package/f-draggable/connections/common/providers.d.ts +0 -5
  155. package/f-draggable/connections/create-connection/create-connection-finalize/providers.d.ts +0 -3
  156. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.d.ts +0 -2
  157. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.d.ts +0 -2
  158. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.d.ts +0 -3
  159. package/f-draggable/connections/create-connection/create-connection-preparation/providers.d.ts +0 -3
  160. package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.d.ts +0 -3
  161. package/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.d.ts +0 -3
  162. package/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.d.ts +0 -3
  163. /package/{f-backgroud/domain → domain/f-background}/add-pattern-to-background/add-pattern-to-background.execution.d.ts +0 -0
  164. /package/{f-backgroud/domain → domain/f-background}/add-pattern-to-background/index.d.ts +0 -0
  165. /package/{f-backgroud/domain → domain/f-background}/providers.d.ts +0 -0
  166. /package/{f-canvas/domain → domain/f-canvas}/center-group-or-node/center-group-or-node-request.d.ts +0 -0
  167. /package/{f-canvas/domain → domain/f-canvas}/center-group-or-node/center-group-or-node.execution.d.ts +0 -0
  168. /package/{f-canvas/domain → domain/f-canvas}/center-group-or-node/index.d.ts +0 -0
  169. /package/{f-canvas/domain → domain/f-canvas}/fit-to-flow/fit-to-flow-request.d.ts +0 -0
  170. /package/{f-canvas/domain → domain/f-canvas}/fit-to-flow/fit-to-flow.execution.d.ts +0 -0
  171. /package/{f-canvas/domain → domain/f-canvas}/fit-to-flow/index.d.ts +0 -0
  172. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-position/index.d.ts +0 -0
  173. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position-request.d.ts +0 -0
  174. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position.execution.d.ts +0 -0
  175. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/index.d.ts +0 -0
  176. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale-request.d.ts +0 -0
  177. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale.execution.d.ts +0 -0
  178. /package/{f-canvas/domain → domain/f-canvas}/providers.d.ts +0 -0
  179. /package/{f-canvas/domain → domain/f-canvas}/reset-scale/index.d.ts +0 -0
  180. /package/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale-request.d.ts +0 -0
  181. /package/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale.execution.d.ts +0 -0
  182. /package/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/index.d.ts +0 -0
  183. /package/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/reset-scale-and-center-request.d.ts +0 -0
  184. /package/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/reset-scale-and-center.execution.d.ts +0 -0
  185. /package/{f-canvas/domain → domain/f-canvas}/update-scale/index.d.ts +0 -0
  186. /package/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale-request.d.ts +0 -0
  187. /package/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale.execution.d.ts +0 -0
  188. /package/{f-draggable/connections/common → domain/f-connection}/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.d.ts +0 -0
  189. /package/{f-draggable/connections/common → domain/f-connection}/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.d.ts +0 -0
  190. /package/{f-draggable/connections/common → domain/f-connection}/find-closest-input-using-snap-threshold/index.d.ts +0 -0
  191. /package/{f-draggable/connections/common → domain/f-connection}/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.d.ts +0 -0
  192. /package/{f-draggable/connections/common → domain/f-connection}/get-all-can-be-connected-input-positions/index.d.ts +0 -0
  193. /package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/get-connector-with-rect.execution.d.ts +0 -0
  194. /package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/index.d.ts +0 -0
  195. /package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/index.d.ts +0 -0
@@ -1,23 +1,19 @@
1
- import { __decorate } from 'tslib';
2
- import { RoundedRect, RectExtensions, Point, PointExtensions, LineExtensions, SizeExtensions, GetIntersections, Line, TransformModelExtensions } from '@foblex/2d';
3
1
  import * as i0 from '@angular/core';
4
- import { Injectable, InjectionToken, Directive, Input, HostBinding, EventEmitter, Output, Inject, Component, ChangeDetectionStrategy, ViewChild, Optional, ContentChildren, NgZone, ContentChild, NgModule } from '@angular/core';
2
+ import { InjectionToken, Injectable, Directive, Input, HostBinding, EventEmitter, Output, Inject, Component, ChangeDetectionStrategy, ViewChild, Optional, ContentChildren, NgZone, ContentChild, NgModule } from '@angular/core';
3
+ import { RoundedRect, RectExtensions, TransformModelExtensions, PointExtensions, Point, SizeExtensions, LineExtensions, GetIntersections, Line } from '@foblex/2d';
4
+ import { Subject, Observable, Subscription, merge } from 'rxjs';
5
+ import { debounceTime, startWith } from 'rxjs/operators';
6
+ import { __decorate } from 'tslib';
5
7
  import * as i2 from '@foblex/mediator';
6
8
  import { FExecutionRegister, FValidatorRegister, FMediator } from '@foblex/mediator';
7
9
  import { normalizeDomElementId, castToEnum, castToBoolean, flatMap, isClosestElementHasClass, getDataAttrValueFromClosestElementWithClass, deepCloneNode } from '@foblex/utils';
8
10
  import * as i1 from '@foblex/platform';
9
11
  import { EOperationSystem } from '@foblex/platform';
10
- import { Subject, Observable, Subscription, merge } from 'rxjs';
11
- import { debounceTime, startWith } from 'rxjs/operators';
12
12
  import * as i8 from '@angular/common';
13
13
  import { CommonModule } from '@angular/common';
14
14
  import { DragAndDropBase, EventExtensions } from '@foblex/drag-toolkit';
15
15
 
16
- class AddPatternToBackgroundRequest {
17
- constructor(fPattern) {
18
- this.fPattern = fPattern;
19
- }
20
- }
16
+ const F_BACKGROUND_PATTERN = new InjectionToken('F_BACKGROUND_PATTERN');
21
17
 
22
18
  class CreateConnectionMarkersRequest {
23
19
  constructor(fConnection) {
@@ -194,170 +190,328 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
194
190
  type: Injectable
195
191
  }], ctorParameters: function () { return [{ type: FTransformStore }]; } });
196
192
 
197
- class ClearSelectionRequest {
198
- }
199
-
200
- class CanvasMoveFinalizeRequest {
201
- constructor(event) {
202
- this.event = event;
193
+ class AddPatternToBackgroundRequest {
194
+ constructor(fPattern) {
195
+ this.fPattern = fPattern;
203
196
  }
204
197
  }
205
198
 
206
- class FDraggableDataContext {
207
- constructor() {
208
- this.selectedItems = [];
209
- this.isSelectedChanged = false;
210
- this.onPointerDownScale = 1;
211
- this.onPointerDownPosition = new Point(0, 0);
212
- this.draggableItems = [];
213
- }
214
- reset() {
215
- this.draggableItems = [];
216
- this.onPointerDownScale = 1;
217
- this.onPointerDownPosition = new Point(0, 0);
218
- }
219
- markSelectionAsChanged() {
220
- this.isSelectedChanged = true;
199
+ let uniqueId$c = 0;
200
+ let AddPatternToBackgroundExecution = class AddPatternToBackgroundExecution {
201
+ constructor(fComponentsStore, fBrowser) {
202
+ this.fComponentsStore = fComponentsStore;
203
+ this.fBrowser = fBrowser;
221
204
  }
222
- }
223
- FDraggableDataContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FDraggableDataContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
224
- FDraggableDataContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FDraggableDataContext });
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FDraggableDataContext, decorators: [{
226
- type: Injectable
227
- }] });
228
-
229
- let CanvasMoveFinalizeExecution = class CanvasMoveFinalizeExecution {
230
- constructor(fDraggableDataContext) {
231
- this.fDraggableDataContext = fDraggableDataContext;
205
+ get fBackground() {
206
+ return this.fComponentsStore.fBackground;
232
207
  }
233
208
  handle(request) {
234
- this.fDraggableDataContext.draggableItems.forEach((x) => { var _a; return (_a = x.complete) === null || _a === void 0 ? void 0 : _a.call(x); });
209
+ var _a, _b, _c, _d, _e, _f, _g;
210
+ const children = ((_a = request.fPattern) === null || _a === void 0 ? void 0 : _a.hostElement.getElementsByTagName('pattern')) || [];
211
+ const pattern = children.length ? children[0] : undefined;
212
+ if (pattern) {
213
+ const defs = createSVGElement('defs', this.fBrowser);
214
+ pattern.id = 'f-background-pattern-' + uniqueId$c++;
215
+ (_b = request.fPattern) === null || _b === void 0 ? void 0 : _b.hostElement.remove();
216
+ defs.appendChild(pattern);
217
+ (_d = (_c = this.fBackground.hostElement) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.appendChild(defs);
218
+ const rect = createSVGElement('rect', this.fBrowser);
219
+ rect.setAttribute('fill', 'url(#' + pattern.id + ')');
220
+ rect.setAttribute('width', '100%');
221
+ rect.setAttribute('height', '100%');
222
+ (_e = this.fBackground.hostElement.firstChild) === null || _e === void 0 ? void 0 : _e.appendChild(rect);
223
+ const transform = ((_f = this.fComponentsStore.fCanvas) === null || _f === void 0 ? void 0 : _f.transform) || TransformModelExtensions.default();
224
+ (_g = request.fPattern) === null || _g === void 0 ? void 0 : _g.setTransform(transform);
225
+ }
235
226
  }
236
227
  };
237
- CanvasMoveFinalizeExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeExecution, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
238
- CanvasMoveFinalizeExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeExecution });
239
- CanvasMoveFinalizeExecution = __decorate([
240
- FExecutionRegister(CanvasMoveFinalizeRequest)
241
- ], CanvasMoveFinalizeExecution);
242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeExecution, decorators: [{
228
+ AddPatternToBackgroundExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AddPatternToBackgroundExecution, deps: [{ token: FComponentsStore }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
229
+ AddPatternToBackgroundExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AddPatternToBackgroundExecution });
230
+ AddPatternToBackgroundExecution = __decorate([
231
+ FExecutionRegister(AddPatternToBackgroundRequest)
232
+ ], AddPatternToBackgroundExecution);
233
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AddPatternToBackgroundExecution, decorators: [{
243
234
  type: Injectable
244
- }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
235
+ }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i1.BrowserService }]; } });
245
236
 
246
- class CanvasDragHandler {
237
+ const F_BACKGROUND_FEATURES = [
238
+ AddPatternToBackgroundExecution
239
+ ];
240
+
241
+ class CenterGroupOrNodeRequest {
242
+ constructor(id, animated) {
243
+ this.id = id;
244
+ this.animated = animated;
245
+ }
246
+ }
247
+
248
+ let CenterGroupOrNodeExecution = class CenterGroupOrNodeExecution {
247
249
  constructor(fComponentsStore) {
248
250
  this.fComponentsStore = fComponentsStore;
249
- this.onPointerDownPosition = PointExtensions.initialize();
250
- }
251
- initialize() {
252
- this.onPointerDownPosition = this.fComponentsStore.fCanvas.transform.position;
253
251
  }
254
- move(difference) {
255
- this.fComponentsStore.fCanvas.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));
256
- this.fComponentsStore.fCanvas.redraw();
252
+ get transform() {
253
+ return this.fComponentsStore.fCanvas.transform;
257
254
  }
258
- complete() {
255
+ handle(request) {
256
+ const fNode = this.getNode(request.id);
257
+ if (!fNode) {
258
+ return;
259
+ }
260
+ this.toCenter(this.getNodeRect(fNode), this.getFlowRect(), fNode.position);
261
+ request.animated ? this.fComponentsStore.fCanvas.redrawWithAnimation() : this.fComponentsStore.fCanvas.redraw();
259
262
  this.fComponentsStore.fCanvas.emitCanvasChangeEvent();
263
+ setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);
260
264
  }
261
- }
262
-
263
- let CanvasMoveFinalizeValidator = class CanvasMoveFinalizeValidator {
264
- constructor(fDraggableDataContext) {
265
- this.fDraggableDataContext = fDraggableDataContext;
265
+ toCenter(fNodeRect, fFlowRect, position) {
266
+ this.transform.scaledPosition = PointExtensions.initialize();
267
+ this.transform.position = PointExtensions.initialize((fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale, (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale);
266
268
  }
267
- handle(request) {
268
- return this.fDraggableDataContext.draggableItems.some((x) => x instanceof CanvasDragHandler);
269
+ getNode(id) {
270
+ return this.fComponentsStore.fNodes.find((x) => x.fId === id);
271
+ }
272
+ getNodeRect(fNode) {
273
+ return RectExtensions.fromElement(fNode.hostElement);
274
+ }
275
+ getFlowRect() {
276
+ return RectExtensions.fromElement(this.fComponentsStore.fFlow.hostElement);
269
277
  }
270
278
  };
271
- CanvasMoveFinalizeValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeValidator, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
272
- CanvasMoveFinalizeValidator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeValidator });
273
- CanvasMoveFinalizeValidator = __decorate([
274
- FValidatorRegister(CanvasMoveFinalizeRequest)
275
- ], CanvasMoveFinalizeValidator);
276
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeValidator, decorators: [{
279
+ CenterGroupOrNodeExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CenterGroupOrNodeExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
280
+ CenterGroupOrNodeExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CenterGroupOrNodeExecution });
281
+ CenterGroupOrNodeExecution = __decorate([
282
+ FExecutionRegister(CenterGroupOrNodeRequest)
283
+ ], CenterGroupOrNodeExecution);
284
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CenterGroupOrNodeExecution, decorators: [{
277
285
  type: Injectable
278
- }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
279
-
280
- const CANVAS_MOVE_FINALIZE_PROVIDERS = [
281
- CanvasMoveFinalizeExecution,
282
- CanvasMoveFinalizeValidator,
283
- ];
286
+ }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
284
287
 
285
- class CanvasMovePreparationRequest {
286
- constructor(event) {
287
- this.event = event;
288
+ class FitToFlowRequest {
289
+ constructor(toCenter, animated) {
290
+ this.toCenter = toCenter;
291
+ this.animated = animated;
288
292
  }
289
293
  }
290
294
 
291
- let CanvasMovePreparationExecution = class CanvasMovePreparationExecution {
292
- constructor(fComponentsStore, fDraggableDataContext) {
295
+ let FitToFlowExecution = class FitToFlowExecution {
296
+ constructor(fComponentsStore, fMediator) {
293
297
  this.fComponentsStore = fComponentsStore;
294
- this.fDraggableDataContext = fDraggableDataContext;
298
+ this.fMediator = fMediator;
295
299
  }
296
- get flowHost() {
297
- return this.fComponentsStore.fFlow.hostElement;
300
+ get transform() {
301
+ return this.fComponentsStore.fCanvas.transform;
298
302
  }
299
303
  handle(request) {
300
- this.fDraggableDataContext.onPointerDownScale = 1;
301
- this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
302
- .elementTransform(this.flowHost);
303
- this.fDraggableDataContext.draggableItems = [
304
- new CanvasDragHandler(this.fComponentsStore)
305
- ];
304
+ const fNodesRect = this.fMediator.send(new GetNodesRectRequest()) || RectExtensions.initialize();
305
+ if (fNodesRect.width === 0 || fNodesRect.height === 0) {
306
+ return;
307
+ }
308
+ this.fitToParent(fNodesRect, RectExtensions.fromElement(this.fComponentsStore.fFlow.hostElement), this.fComponentsStore.fNodes.map((x) => x.position), request.toCenter);
309
+ request.animated ? this.fComponentsStore.fCanvas.redrawWithAnimation() : this.fComponentsStore.fCanvas.redraw();
310
+ this.fComponentsStore.fCanvas.emitCanvasChangeEvent();
311
+ setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);
312
+ }
313
+ fitToParent(rect, parentRect, points, toCenter) {
314
+ this.transform.scaledPosition = PointExtensions.initialize();
315
+ this.transform.position = this.getZeroPositionWithoutScale(points);
316
+ const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x;
317
+ const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y;
318
+ if ((itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||
319
+ itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height) {
320
+ this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);
321
+ }
322
+ const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;
323
+ const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;
324
+ this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale);
325
+ }
326
+ getZeroPositionWithoutScale(points) {
327
+ const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;
328
+ const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;
329
+ return PointExtensions.initialize(xPoint, yPoint);
306
330
  }
307
331
  };
308
- CanvasMovePreparationExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
309
- CanvasMovePreparationExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationExecution });
310
- CanvasMovePreparationExecution = __decorate([
311
- FExecutionRegister(CanvasMovePreparationRequest)
312
- ], CanvasMovePreparationExecution);
313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationExecution, decorators: [{
332
+ FitToFlowExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FitToFlowExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
333
+ FitToFlowExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FitToFlowExecution });
334
+ FitToFlowExecution = __decorate([
335
+ FExecutionRegister(FitToFlowRequest)
336
+ ], FitToFlowExecution);
337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FitToFlowExecution, decorators: [{
314
338
  type: Injectable
315
- }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }]; } });
339
+ }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i2.FMediator }]; } });
316
340
 
317
- let CanvasMovePreparationValidator = class CanvasMovePreparationValidator {
318
- constructor(fComponentsStore, fDraggableDataContext) {
319
- this.fComponentsStore = fComponentsStore;
320
- this.fDraggableDataContext = fDraggableDataContext;
341
+ class InputCanvasPositionRequest {
342
+ constructor(transform, position) {
343
+ this.transform = transform;
344
+ this.position = position;
321
345
  }
322
- get flowHost() {
323
- return this.fComponentsStore.fFlow.hostElement;
346
+ }
347
+
348
+ let InputCanvasPositionExecution = class InputCanvasPositionExecution {
349
+ constructor(fComponentsStore) {
350
+ this.fComponentsStore = fComponentsStore;
324
351
  }
325
352
  handle(request) {
326
- return !this.fDraggableDataContext.draggableItems.length &&
327
- (this.isBackgroundElement(request.event.targetElement) || this.isDragOnHost(request.event.targetElement));
328
- }
329
- isBackgroundElement(targetElement) {
330
353
  var _a;
331
- return (_a = this.fComponentsStore.fBackground) === null || _a === void 0 ? void 0 : _a.isBackgroundElement(targetElement);
332
- }
333
- isDragOnHost(targetElement) {
334
- return this.flowHost.contains(targetElement) && !this.getNode(targetElement);
335
- }
336
- getNode(targetElement) {
337
- let result = this.fComponentsStore.findNode(targetElement);
338
- if (result && result.fDraggingDisabled) {
339
- result = undefined;
354
+ if (!request.position) {
355
+ return;
356
+ }
357
+ const position = PointExtensions.sum(request.transform.position, request.transform.scaledPosition);
358
+ if (!PointExtensions.isEqual(position, request.position)) {
359
+ request.transform.position = request.position;
360
+ request.transform.scaledPosition = PointExtensions.initialize();
361
+ (_a = this.fComponentsStore.fCanvas) === null || _a === void 0 ? void 0 : _a.redraw();
340
362
  }
341
- return result;
342
363
  }
343
364
  };
344
- CanvasMovePreparationValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationValidator, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
345
- CanvasMovePreparationValidator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationValidator });
346
- CanvasMovePreparationValidator = __decorate([
347
- FValidatorRegister(CanvasMovePreparationRequest)
348
- ], CanvasMovePreparationValidator);
349
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationValidator, decorators: [{
365
+ InputCanvasPositionExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasPositionExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
366
+ InputCanvasPositionExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasPositionExecution });
367
+ InputCanvasPositionExecution = __decorate([
368
+ FExecutionRegister(InputCanvasPositionRequest)
369
+ ], InputCanvasPositionExecution);
370
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasPositionExecution, decorators: [{
350
371
  type: Injectable
351
- }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }]; } });
372
+ }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
352
373
 
353
- const CANVAS_MOVE_PREPARATION_PROVIDERS = [
354
- CanvasMovePreparationExecution,
355
- CanvasMovePreparationValidator,
356
- ];
374
+ class InputCanvasScaleRequest {
375
+ constructor(transform, scale) {
376
+ this.transform = transform;
377
+ this.scale = scale;
378
+ }
379
+ }
357
380
 
358
- const CANVAS_PROVIDERS = [
359
- ...CANVAS_MOVE_FINALIZE_PROVIDERS,
360
- ...CANVAS_MOVE_PREPARATION_PROVIDERS,
381
+ let InputCanvasScaleExecution = class InputCanvasScaleExecution {
382
+ constructor(fComponentsStore) {
383
+ this.fComponentsStore = fComponentsStore;
384
+ }
385
+ handle(request) {
386
+ var _a;
387
+ if (!request.scale) {
388
+ return;
389
+ }
390
+ request.transform.scale = request.scale;
391
+ (_a = this.fComponentsStore.fCanvas) === null || _a === void 0 ? void 0 : _a.redraw();
392
+ }
393
+ };
394
+ InputCanvasScaleExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasScaleExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
395
+ InputCanvasScaleExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasScaleExecution });
396
+ InputCanvasScaleExecution = __decorate([
397
+ FExecutionRegister(InputCanvasScaleRequest)
398
+ ], InputCanvasScaleExecution);
399
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasScaleExecution, decorators: [{
400
+ type: Injectable
401
+ }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
402
+
403
+ class ResetScaleRequest {
404
+ }
405
+
406
+ let ResetScaleExecution = class ResetScaleExecution {
407
+ constructor(fComponentsStore) {
408
+ this.fComponentsStore = fComponentsStore;
409
+ }
410
+ get transform() {
411
+ return this.fComponentsStore.fCanvas.transform;
412
+ }
413
+ handle(request) {
414
+ this.transform.scale = 1;
415
+ this.transform.scaledPosition = PointExtensions.initialize();
416
+ }
417
+ };
418
+ ResetScaleExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
419
+ ResetScaleExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleExecution });
420
+ ResetScaleExecution = __decorate([
421
+ FExecutionRegister(ResetScaleRequest)
422
+ ], ResetScaleExecution);
423
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleExecution, decorators: [{
424
+ type: Injectable
425
+ }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
426
+
427
+ class ResetScaleAndCenterRequest {
428
+ constructor(animated) {
429
+ this.animated = animated;
430
+ }
431
+ }
432
+
433
+ let ResetScaleAndCenterExecution = class ResetScaleAndCenterExecution {
434
+ constructor(fComponentsStore, fMediator) {
435
+ this.fComponentsStore = fComponentsStore;
436
+ this.fMediator = fMediator;
437
+ }
438
+ get transform() {
439
+ return this.fComponentsStore.fCanvas.transform;
440
+ }
441
+ handle(request) {
442
+ const fNodesRect = this.fMediator.send(new GetNodesRectRequest()) || RectExtensions.initialize();
443
+ if (fNodesRect.width === 0 || fNodesRect.height === 0) {
444
+ return;
445
+ }
446
+ this.oneToOneCentering(fNodesRect, RectExtensions.fromElement(this.fComponentsStore.fFlow.hostElement), this.fComponentsStore.fNodes.map((x) => x.position));
447
+ request.animated ? this.fComponentsStore.fCanvas.redrawWithAnimation() : this.fComponentsStore.fCanvas.redraw();
448
+ this.fComponentsStore.fCanvas.emitCanvasChangeEvent();
449
+ setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);
450
+ }
451
+ oneToOneCentering(rect, parentRect, points) {
452
+ this.transform.scaledPosition = PointExtensions.initialize();
453
+ this.transform.position = this.getZeroPositionWithoutScale(points);
454
+ const newX = (parentRect.width - rect.width / this.transform.scale) / 2 - this.transform.position.x;
455
+ const newY = (parentRect.height - rect.height / this.transform.scale) / 2 - this.transform.position.y;
456
+ this.transform.scale = 1;
457
+ this.transform.position = PointExtensions.initialize(newX, newY);
458
+ }
459
+ getZeroPositionWithoutScale(points) {
460
+ const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;
461
+ const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;
462
+ return PointExtensions.initialize(xPoint, yPoint);
463
+ }
464
+ };
465
+ ResetScaleAndCenterExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleAndCenterExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
466
+ ResetScaleAndCenterExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleAndCenterExecution });
467
+ ResetScaleAndCenterExecution = __decorate([
468
+ FExecutionRegister(ResetScaleAndCenterRequest)
469
+ ], ResetScaleAndCenterExecution);
470
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleAndCenterExecution, decorators: [{
471
+ type: Injectable
472
+ }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i2.FMediator }]; } });
473
+
474
+ class UpdateScaleRequest {
475
+ constructor(scale, toPosition) {
476
+ this.scale = scale;
477
+ this.toPosition = toPosition;
478
+ }
479
+ }
480
+
481
+ let UpdateScaleExecution = class UpdateScaleExecution {
482
+ constructor(fComponentsStore) {
483
+ this.fComponentsStore = fComponentsStore;
484
+ }
485
+ get transform() {
486
+ return this.fComponentsStore.fCanvas.transform;
487
+ }
488
+ handle(request) {
489
+ if (request.scale !== this.transform.scale) {
490
+ const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);
491
+ const newX = request.toPosition.x - (request.toPosition.x - summaryPosition.x) * request.scale / this.transform.scale;
492
+ const newY = request.toPosition.y - (request.toPosition.y - summaryPosition.y) * request.scale / this.transform.scale;
493
+ this.transform.scale = request.scale;
494
+ this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);
495
+ }
496
+ }
497
+ };
498
+ UpdateScaleExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UpdateScaleExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
499
+ UpdateScaleExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UpdateScaleExecution });
500
+ UpdateScaleExecution = __decorate([
501
+ FExecutionRegister(UpdateScaleRequest)
502
+ ], UpdateScaleExecution);
503
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UpdateScaleExecution, decorators: [{
504
+ type: Injectable
505
+ }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
506
+
507
+ const F_CANVAS_FEATURES = [
508
+ CenterGroupOrNodeExecution,
509
+ FitToFlowExecution,
510
+ InputCanvasPositionExecution,
511
+ InputCanvasScaleExecution,
512
+ ResetScaleExecution,
513
+ ResetScaleAndCenterExecution,
514
+ UpdateScaleExecution
361
515
  ];
362
516
 
363
517
  class FindClosestInputUsingSnapThresholdRequest {
@@ -413,6 +567,45 @@ class GetConnectorWithRectRequest {
413
567
  }
414
568
  }
415
569
 
570
+ class GetElementRectInFlowRequest {
571
+ constructor(element) {
572
+ this.element = element;
573
+ }
574
+ }
575
+
576
+ let GetElementRectInFlowExecution = class GetElementRectInFlowExecution {
577
+ constructor(fComponentsStore, fMediator) {
578
+ this.fComponentsStore = fComponentsStore;
579
+ this.fMediator = fMediator;
580
+ }
581
+ get transform() {
582
+ return this.fComponentsStore.transform;
583
+ }
584
+ get flowHost() {
585
+ return this.fComponentsStore.flowHost;
586
+ }
587
+ handle(request) {
588
+ const systemRect = this.fMediator.send(new CreateRoundedRectFromElementRequest(request.element));
589
+ const position = this.transformElementPositionInFlow(systemRect);
590
+ const size = this.transformElementSizeInFlow(systemRect);
591
+ return new RoundedRect(position.x, position.y, size.width, size.height, systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4);
592
+ }
593
+ transformElementPositionInFlow(rect) {
594
+ return Point.fromPoint(rect).elementTransform(this.flowHost).sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);
595
+ }
596
+ transformElementSizeInFlow(rect) {
597
+ return SizeExtensions.initialize(rect.width / this.transform.scale, rect.height / this.transform.scale);
598
+ }
599
+ };
600
+ GetElementRectInFlowExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetElementRectInFlowExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
601
+ GetElementRectInFlowExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetElementRectInFlowExecution });
602
+ GetElementRectInFlowExecution = __decorate([
603
+ FExecutionRegister(GetElementRectInFlowRequest)
604
+ ], GetElementRectInFlowExecution);
605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetElementRectInFlowExecution, decorators: [{
606
+ type: Injectable
607
+ }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i2.FMediator }]; } });
608
+
416
609
  let GetConnectorWithRectExecution = class GetConnectorWithRectExecution {
417
610
  constructor(fMediator) {
418
611
  this.fMediator = fMediator;
@@ -479,153 +672,176 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
479
672
  type: Injectable
480
673
  }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i2.FMediator }]; } });
481
674
 
482
- class GetInputUnderPointerRequest {
483
- constructor(event, dragHandler) {
675
+ const F_CONNECTION_FEATURES = [
676
+ FindClosestInputUsingSnapThresholdExecution,
677
+ GetAllCanBeConnectedInputPositionsExecution,
678
+ GetConnectorWithRectExecution,
679
+ ];
680
+
681
+ class ClearSelectionRequest {
682
+ }
683
+
684
+ class CanvasMoveFinalizeRequest {
685
+ constructor(event) {
484
686
  this.event = event;
485
- this.dragHandler = dragHandler;
486
687
  }
487
688
  }
488
689
 
489
- let GetInputUnderPointerExecution = class GetInputUnderPointerExecution {
490
- constructor(fComponentsStore, fDraggableDataContext, fBrowser) {
491
- this.fComponentsStore = fComponentsStore;
492
- this.fDraggableDataContext = fDraggableDataContext;
493
- this.fBrowser = fBrowser;
494
- }
495
- get fNodes() {
496
- return this.fComponentsStore.fNodes;
690
+ class FDraggableDataContext {
691
+ constructor() {
692
+ this.selectedItems = [];
693
+ this.isSelectedChanged = false;
694
+ this.onPointerDownScale = 1;
695
+ this.onPointerDownPosition = new Point(0, 0);
696
+ this.draggableItems = [];
497
697
  }
498
- get fInputs() {
499
- return this.fComponentsStore.fInputs;
698
+ reset() {
699
+ this.draggableItems = [];
700
+ this.onPointerDownScale = 1;
701
+ this.onPointerDownPosition = new Point(0, 0);
500
702
  }
501
- handle(payload) {
502
- const output = (this.getOutput(payload.dragHandler) || this.getOutlet(payload.dragHandler));
503
- const inputsUnderPointer = this.getInputsUnderPointer(payload.event.getPosition(), payload.dragHandler);
504
- const connectors = output.isSelfConnectable ?
505
- inputsUnderPointer :
506
- this.filterSelfConnectable(inputsUnderPointer, output);
507
- return connectors.length > 0 ? connectors[0] : undefined;
703
+ markSelectionAsChanged() {
704
+ this.isSelectedChanged = true;
508
705
  }
509
- getOutput(dragHandler) {
510
- return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);
706
+ }
707
+ FDraggableDataContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FDraggableDataContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
708
+ FDraggableDataContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FDraggableDataContext });
709
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FDraggableDataContext, decorators: [{
710
+ type: Injectable
711
+ }] });
712
+
713
+ let CanvasMoveFinalizeExecution = class CanvasMoveFinalizeExecution {
714
+ constructor(fDraggableDataContext) {
715
+ this.fDraggableDataContext = fDraggableDataContext;
511
716
  }
512
- getOutlet(dragHandler) {
513
- return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);
717
+ handle(request) {
718
+ this.fDraggableDataContext.draggableItems.forEach((x) => { var _a; return (_a = x.complete) === null || _a === void 0 ? void 0 : _a.call(x); });
514
719
  }
515
- getInputsUnderPointer(position, dragHandler) {
516
- const result = this.getInputsInPosition(position);
517
- const closestInput = dragHandler.getClosetInput(this.getDifference(position));
518
- if (closestInput) {
519
- result.push(closestInput.fConnector);
520
- }
521
- const input = this.getFirstConnectableInputOfNodeInPosition(position);
522
- if (input) {
523
- result.push(input);
524
- }
525
- return result;
526
- }
527
- getDifference(position) {
528
- return Point.fromPoint(position).elementTransform(this.fComponentsStore.flowHost)
529
- .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);
720
+ };
721
+ CanvasMoveFinalizeExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeExecution, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
722
+ CanvasMoveFinalizeExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeExecution });
723
+ CanvasMoveFinalizeExecution = __decorate([
724
+ FExecutionRegister(CanvasMoveFinalizeRequest)
725
+ ], CanvasMoveFinalizeExecution);
726
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeExecution, decorators: [{
727
+ type: Injectable
728
+ }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
729
+
730
+ class CanvasDragHandler {
731
+ constructor(fComponentsStore) {
732
+ this.fComponentsStore = fComponentsStore;
733
+ this.onPointerDownPosition = PointExtensions.initialize();
530
734
  }
531
- getInputsInPosition(position) {
532
- return this.getElementsFromPoint(position).map((element) => this.fInputs.find(x => x.isContains(element) && x.canBeConnected)).filter((x) => !!x);
735
+ initialize() {
736
+ this.onPointerDownPosition = this.fComponentsStore.fCanvas.transform.position;
533
737
  }
534
- getElementsFromPoint(position) {
535
- return this.fBrowser.document.elementsFromPoint(position.x, position.y);
738
+ move(difference) {
739
+ this.fComponentsStore.fCanvas.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));
740
+ this.fComponentsStore.fCanvas.redraw();
536
741
  }
537
- getFirstConnectableInputOfNodeInPosition(position) {
538
- return this.getNodesInPosition(position).map((x) => {
539
- return this.fInputs.find((i) => x.isContains(i.hostElement) && i.canBeConnected);
540
- }).find((x) => !!x);
742
+ complete() {
743
+ this.fComponentsStore.fCanvas.emitCanvasChangeEvent();
541
744
  }
542
- getNodesInPosition(position) {
543
- return this.getElementsFromPoint(position).map((element) => {
544
- return this.fNodes.find((x) => x.isContains(element) && x.fConnectOnNode);
545
- }).filter((x) => !!x);
745
+ }
746
+
747
+ let CanvasMoveFinalizeValidator = class CanvasMoveFinalizeValidator {
748
+ constructor(fDraggableDataContext) {
749
+ this.fDraggableDataContext = fDraggableDataContext;
546
750
  }
547
- filterSelfConnectable(inputs, connector) {
548
- return inputs.filter((x) => {
549
- const targetNode = this.fNodes.find((k) => k.isContains(x.hostElement));
550
- const sourceNode = this.fNodes.find((k) => k.isContains(connector.hostElement));
551
- return (sourceNode === null || sourceNode === void 0 ? void 0 : sourceNode.hostElement) !== (targetNode === null || targetNode === void 0 ? void 0 : targetNode.hostElement);
552
- });
751
+ handle(request) {
752
+ return this.fDraggableDataContext.draggableItems.some((x) => x instanceof CanvasDragHandler);
553
753
  }
554
754
  };
555
- GetInputUnderPointerExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
556
- GetInputUnderPointerExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerExecution });
557
- GetInputUnderPointerExecution = __decorate([
558
- FExecutionRegister(GetInputUnderPointerRequest)
559
- ], GetInputUnderPointerExecution);
560
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerExecution, decorators: [{
755
+ CanvasMoveFinalizeValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeValidator, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
756
+ CanvasMoveFinalizeValidator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeValidator });
757
+ CanvasMoveFinalizeValidator = __decorate([
758
+ FValidatorRegister(CanvasMoveFinalizeRequest)
759
+ ], CanvasMoveFinalizeValidator);
760
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMoveFinalizeValidator, decorators: [{
561
761
  type: Injectable
562
- }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i1.BrowserService }]; } });
563
-
564
- function createErrorClass(impl) {
565
- const _super = (instance) => {
566
- Error.call(instance);
567
- };
568
- const constructor = impl(_super);
569
- constructor.prototype = Object.create(Error.prototype);
570
- constructor.prototype.constructor = constructor;
571
- return constructor;
572
- }
573
-
574
- const NotFoundError = createErrorClass((_super) => function error(message) {
575
- _super(this);
576
- this.message = message || 'The requested resource was not found.';
577
- this.code = 404;
578
- });
762
+ }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
579
763
 
580
- const ConflictError = createErrorClass((_super) => function error(message) {
581
- _super(this);
582
- this.message = message || 'Conflict error occurred.';
583
- this.code = 409;
584
- });
764
+ const CANVAS_MOVE_FINALIZE_PROVIDERS = [
765
+ CanvasMoveFinalizeExecution,
766
+ CanvasMoveFinalizeValidator,
767
+ ];
585
768
 
586
- function OutputNotFound(id) {
587
- return new NotFoundError(`Output with fOutputId ${id} not found. Make sure there is no f-connection to a non-existent fOutput.`);
588
- }
589
- function InputNotFound(id) {
590
- return new NotFoundError(`Input with fInputId ${id} not found. Make sure there is no f-connection to a non-existent fInput.`);
591
- }
592
- function RequiredOutput() {
593
- return new ConflictError(`The fNode must contain at least one fOutput if there is an fOutlet`);
769
+ class CanvasMovePreparationRequest {
770
+ constructor(event) {
771
+ this.event = event;
772
+ }
594
773
  }
595
774
 
596
- let GetInputUnderPointerValidator = class GetInputUnderPointerValidator {
597
- constructor(fComponentsStore) {
775
+ let CanvasMovePreparationExecution = class CanvasMovePreparationExecution {
776
+ constructor(fComponentsStore, fDraggableDataContext) {
598
777
  this.fComponentsStore = fComponentsStore;
778
+ this.fDraggableDataContext = fDraggableDataContext;
779
+ }
780
+ get flowHost() {
781
+ return this.fComponentsStore.fFlow.hostElement;
599
782
  }
600
783
  handle(request) {
601
- let output = this.getOutput(request.dragHandler) || this.getOutlet(request.dragHandler);
602
- if (!output) {
603
- throw OutputNotFound(request.dragHandler.fConnection.fOutputId);
604
- }
605
- return true;
784
+ this.fDraggableDataContext.onPointerDownScale = 1;
785
+ this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
786
+ .elementTransform(this.flowHost);
787
+ this.fDraggableDataContext.draggableItems = [
788
+ new CanvasDragHandler(this.fComponentsStore)
789
+ ];
606
790
  }
607
- getOutput(dragHandler) {
608
- return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);
791
+ };
792
+ CanvasMovePreparationExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
793
+ CanvasMovePreparationExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationExecution });
794
+ CanvasMovePreparationExecution = __decorate([
795
+ FExecutionRegister(CanvasMovePreparationRequest)
796
+ ], CanvasMovePreparationExecution);
797
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationExecution, decorators: [{
798
+ type: Injectable
799
+ }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }]; } });
800
+
801
+ let CanvasMovePreparationValidator = class CanvasMovePreparationValidator {
802
+ constructor(fComponentsStore, fDraggableDataContext) {
803
+ this.fComponentsStore = fComponentsStore;
804
+ this.fDraggableDataContext = fDraggableDataContext;
609
805
  }
610
- getOutlet(dragHandler) {
611
- return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);
806
+ get flowHost() {
807
+ return this.fComponentsStore.fFlow.hostElement;
808
+ }
809
+ handle(request) {
810
+ return !this.fDraggableDataContext.draggableItems.length &&
811
+ (this.isBackgroundElement(request.event.targetElement) || this.isDragOnHost(request.event.targetElement));
812
+ }
813
+ isBackgroundElement(targetElement) {
814
+ var _a;
815
+ return (_a = this.fComponentsStore.fBackground) === null || _a === void 0 ? void 0 : _a.isBackgroundElement(targetElement);
816
+ }
817
+ isDragOnHost(targetElement) {
818
+ return this.flowHost.contains(targetElement) && !this.getNode(targetElement);
819
+ }
820
+ getNode(targetElement) {
821
+ let result = this.fComponentsStore.findNode(targetElement);
822
+ if (result && result.fDraggingDisabled) {
823
+ result = undefined;
824
+ }
825
+ return result;
612
826
  }
613
827
  };
614
- GetInputUnderPointerValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerValidator, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
615
- GetInputUnderPointerValidator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerValidator });
616
- GetInputUnderPointerValidator = __decorate([
617
- FValidatorRegister(GetInputUnderPointerRequest)
618
- ], GetInputUnderPointerValidator);
619
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerValidator, decorators: [{
828
+ CanvasMovePreparationValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationValidator, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
829
+ CanvasMovePreparationValidator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationValidator });
830
+ CanvasMovePreparationValidator = __decorate([
831
+ FValidatorRegister(CanvasMovePreparationRequest)
832
+ ], CanvasMovePreparationValidator);
833
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CanvasMovePreparationValidator, decorators: [{
620
834
  type: Injectable
621
- }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
835
+ }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }]; } });
622
836
 
623
- const CONNECTION_DRAG_COMMON_PROVIDERS = [
624
- FindClosestInputUsingSnapThresholdExecution,
625
- GetAllCanBeConnectedInputPositionsExecution,
626
- GetConnectorWithRectExecution,
627
- GetInputUnderPointerExecution,
628
- GetInputUnderPointerValidator
837
+ const CANVAS_MOVE_PREPARATION_PROVIDERS = [
838
+ CanvasMovePreparationExecution,
839
+ CanvasMovePreparationValidator,
840
+ ];
841
+
842
+ const CANVAS_PROVIDERS = [
843
+ ...CANVAS_MOVE_FINALIZE_PROVIDERS,
844
+ ...CANVAS_MOVE_PREPARATION_PROVIDERS,
629
845
  ];
630
846
 
631
847
  var EFConnectableSide;
@@ -905,7 +1121,7 @@ class FResizeObserver extends Observable {
905
1121
  }
906
1122
  }
907
1123
 
908
- let uniqueId$d = 0;
1124
+ let uniqueId$b = 0;
909
1125
  class FGroupDirective extends FNodeBase {
910
1126
  constructor(elementReference, renderer, fComponentsStore, fMediator, fBrowser) {
911
1127
  super(elementReference.nativeElement);
@@ -914,7 +1130,7 @@ class FGroupDirective extends FNodeBase {
914
1130
  this.fMediator = fMediator;
915
1131
  this.fBrowser = fBrowser;
916
1132
  this.subscriptions$ = new Subscription();
917
- this.fId = `f-group-${uniqueId$d++}`;
1133
+ this.fId = `f-group-${uniqueId$b++}`;
918
1134
  this.fParentId = null;
919
1135
  this.positionChange = new EventEmitter();
920
1136
  this.sizeChange = new EventEmitter();
@@ -1038,7 +1254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1038
1254
  type: Input
1039
1255
  }] } });
1040
1256
 
1041
- let uniqueId$c = 0;
1257
+ let uniqueId$a = 0;
1042
1258
  class FNodeDirective extends FNodeBase {
1043
1259
  constructor(elementReference, renderer, fComponentsStore, fMediator, fBrowser) {
1044
1260
  super(elementReference.nativeElement);
@@ -1047,7 +1263,7 @@ class FNodeDirective extends FNodeBase {
1047
1263
  this.fMediator = fMediator;
1048
1264
  this.fBrowser = fBrowser;
1049
1265
  this.subscriptions$ = new Subscription();
1050
- this.fId = `f-node-${uniqueId$c++}`;
1266
+ this.fId = `f-node-${uniqueId$a++}`;
1051
1267
  this.fParentId = null;
1052
1268
  this.positionChange = new EventEmitter();
1053
1269
  this.sizeChange = new EventEmitter();
@@ -1179,14 +1395,14 @@ const F_NODE_PROVIDERS = [
1179
1395
  FResizeHandleDirective,
1180
1396
  ];
1181
1397
 
1182
- let uniqueId$b = 0;
1398
+ let uniqueId$9 = 0;
1183
1399
  class FNodeInputDirective extends FNodeInputBase {
1184
1400
  constructor(elementReference, fNode, fComponentsStore) {
1185
1401
  super();
1186
1402
  this.elementReference = elementReference;
1187
1403
  this.fNode = fNode;
1188
1404
  this.fComponentsStore = fComponentsStore;
1189
- this.id = `f-node-input-${uniqueId$b++}`;
1405
+ this.id = `f-node-input-${uniqueId$9++}`;
1190
1406
  this.multiple = true;
1191
1407
  this.isDisabled = false;
1192
1408
  this._fConnectableSide = EFConnectableSide.AUTO;
@@ -1282,14 +1498,14 @@ function isNodeOutlet(element) {
1282
1498
  return !!element.closest('[fNodeOutlet]');
1283
1499
  }
1284
1500
 
1285
- let uniqueId$a = 0;
1501
+ let uniqueId$8 = 0;
1286
1502
  class FNodeOutletDirective extends FNodeOutletBase {
1287
1503
  constructor(elementReference, fNode, fComponentsStore) {
1288
1504
  super();
1289
1505
  this.elementReference = elementReference;
1290
1506
  this.fNode = fNode;
1291
1507
  this.fComponentsStore = fComponentsStore;
1292
- this.id = `f-node-outlet-${uniqueId$a++}`;
1508
+ this.id = `f-node-outlet-${uniqueId$8++}`;
1293
1509
  this.isDisabled = false;
1294
1510
  this.fConnectableSide = EFConnectableSide.AUTO;
1295
1511
  this._fConnectableSide = EFConnectableSide.AUTO;
@@ -1365,14 +1581,14 @@ function isNodeOutput(element) {
1365
1581
  return !!element.closest('[fNodeOutput]');
1366
1582
  }
1367
1583
 
1368
- let uniqueId$9 = 0;
1584
+ let uniqueId$7 = 0;
1369
1585
  class FNodeOutputDirective extends FNodeOutputBase {
1370
1586
  constructor(elementReference, fNode, fComponentsStore) {
1371
1587
  super();
1372
1588
  this.elementReference = elementReference;
1373
1589
  this.fNode = fNode;
1374
1590
  this.fComponentsStore = fComponentsStore;
1375
- this.id = `f-node-output-${uniqueId$9++}`;
1591
+ this.id = `f-node-output-${uniqueId$7++}`;
1376
1592
  this.multiple = false;
1377
1593
  this.isDisabled = false;
1378
1594
  this._fConnectableSide = EFConnectableSide.AUTO;
@@ -1463,6 +1679,38 @@ class CreateConnectionFinalizeRequest {
1463
1679
  }
1464
1680
  }
1465
1681
 
1682
+ function createErrorClass(impl) {
1683
+ const _super = (instance) => {
1684
+ Error.call(instance);
1685
+ };
1686
+ const constructor = impl(_super);
1687
+ constructor.prototype = Object.create(Error.prototype);
1688
+ constructor.prototype.constructor = constructor;
1689
+ return constructor;
1690
+ }
1691
+
1692
+ const NotFoundError = createErrorClass((_super) => function error(message) {
1693
+ _super(this);
1694
+ this.message = message || 'The requested resource was not found.';
1695
+ this.code = 404;
1696
+ });
1697
+
1698
+ const ConflictError = createErrorClass((_super) => function error(message) {
1699
+ _super(this);
1700
+ this.message = message || 'Conflict error occurred.';
1701
+ this.code = 409;
1702
+ });
1703
+
1704
+ function OutputNotFound(id) {
1705
+ return new NotFoundError(`Output with fOutputId ${id} not found. Make sure there is no f-connection to a non-existent fOutput.`);
1706
+ }
1707
+ function InputNotFound(id) {
1708
+ return new NotFoundError(`Input with fInputId ${id} not found. Make sure there is no f-connection to a non-existent fInput.`);
1709
+ }
1710
+ function RequiredOutput() {
1711
+ return new ConflictError(`The fNode must contain at least one fOutput if there is an fOutlet`);
1712
+ }
1713
+
1466
1714
  class GetCanBeConnectedOutputByOutletRequest {
1467
1715
  constructor(outlet) {
1468
1716
  this.outlet = outlet;
@@ -1524,11 +1772,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1524
1772
  type: Injectable
1525
1773
  }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
1526
1774
 
1527
- const GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS = [
1528
- GetCanBeConnectedOutputByOutletExecution,
1529
- GetCanBeConnectedOutputByOutletValidator,
1530
- ];
1531
-
1532
1775
  class FCreateConnectionEvent {
1533
1776
  constructor(fOutputId, fInputId, fDropPosition) {
1534
1777
  this.fOutputId = fOutputId;
@@ -1537,14 +1780,123 @@ class FCreateConnectionEvent {
1537
1780
  }
1538
1781
  }
1539
1782
 
1540
- let CreateConnectionFinalizeExecution = class CreateConnectionFinalizeExecution {
1541
- constructor(fComponentsStore, fDraggableDataContext, fMediator) {
1783
+ class GetInputUnderPointerRequest {
1784
+ constructor(event, dragHandler) {
1785
+ this.event = event;
1786
+ this.dragHandler = dragHandler;
1787
+ }
1788
+ }
1789
+
1790
+ let GetInputUnderPointerExecution = class GetInputUnderPointerExecution {
1791
+ constructor(fComponentsStore, fDraggableDataContext, fBrowser) {
1542
1792
  this.fComponentsStore = fComponentsStore;
1543
1793
  this.fDraggableDataContext = fDraggableDataContext;
1544
- this.fMediator = fMediator;
1794
+ this.fBrowser = fBrowser;
1545
1795
  }
1546
- get dragHandler() {
1547
- return this.fDraggableDataContext.draggableItems[0];
1796
+ get fNodes() {
1797
+ return this.fComponentsStore.fNodes;
1798
+ }
1799
+ get fInputs() {
1800
+ return this.fComponentsStore.fInputs;
1801
+ }
1802
+ handle(payload) {
1803
+ const output = (this.getOutput(payload.dragHandler) || this.getOutlet(payload.dragHandler));
1804
+ const inputsUnderPointer = this.getInputsUnderPointer(payload.event.getPosition(), payload.dragHandler);
1805
+ const connectors = output.isSelfConnectable ?
1806
+ inputsUnderPointer :
1807
+ this.filterSelfConnectable(inputsUnderPointer, output);
1808
+ return connectors.length > 0 ? connectors[0] : undefined;
1809
+ }
1810
+ getOutput(dragHandler) {
1811
+ return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);
1812
+ }
1813
+ getOutlet(dragHandler) {
1814
+ return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);
1815
+ }
1816
+ getInputsUnderPointer(position, dragHandler) {
1817
+ const result = this.getInputsInPosition(position);
1818
+ const closestInput = dragHandler.getClosetInput(this.getDifference(position));
1819
+ if (closestInput) {
1820
+ result.push(closestInput.fConnector);
1821
+ }
1822
+ const input = this.getFirstConnectableInputOfNodeInPosition(position);
1823
+ if (input) {
1824
+ result.push(input);
1825
+ }
1826
+ return result;
1827
+ }
1828
+ getDifference(position) {
1829
+ return Point.fromPoint(position).elementTransform(this.fComponentsStore.flowHost)
1830
+ .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);
1831
+ }
1832
+ getInputsInPosition(position) {
1833
+ return this.getElementsFromPoint(position).map((element) => this.fInputs.find(x => x.isContains(element) && x.canBeConnected)).filter((x) => !!x);
1834
+ }
1835
+ getElementsFromPoint(position) {
1836
+ return this.fBrowser.document.elementsFromPoint(position.x, position.y);
1837
+ }
1838
+ getFirstConnectableInputOfNodeInPosition(position) {
1839
+ return this.getNodesInPosition(position).map((x) => {
1840
+ return this.fInputs.find((i) => x.isContains(i.hostElement) && i.canBeConnected);
1841
+ }).find((x) => !!x);
1842
+ }
1843
+ getNodesInPosition(position) {
1844
+ return this.getElementsFromPoint(position).map((element) => {
1845
+ return this.fNodes.find((x) => x.isContains(element) && x.fConnectOnNode);
1846
+ }).filter((x) => !!x);
1847
+ }
1848
+ filterSelfConnectable(inputs, connector) {
1849
+ return inputs.filter((x) => {
1850
+ const targetNode = this.fNodes.find((k) => k.isContains(x.hostElement));
1851
+ const sourceNode = this.fNodes.find((k) => k.isContains(connector.hostElement));
1852
+ return (sourceNode === null || sourceNode === void 0 ? void 0 : sourceNode.hostElement) !== (targetNode === null || targetNode === void 0 ? void 0 : targetNode.hostElement);
1853
+ });
1854
+ }
1855
+ };
1856
+ GetInputUnderPointerExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerExecution, deps: [{ token: FComponentsStore }, { token: FDraggableDataContext }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
1857
+ GetInputUnderPointerExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerExecution });
1858
+ GetInputUnderPointerExecution = __decorate([
1859
+ FExecutionRegister(GetInputUnderPointerRequest)
1860
+ ], GetInputUnderPointerExecution);
1861
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerExecution, decorators: [{
1862
+ type: Injectable
1863
+ }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i1.BrowserService }]; } });
1864
+
1865
+ let GetInputUnderPointerValidator = class GetInputUnderPointerValidator {
1866
+ constructor(fComponentsStore) {
1867
+ this.fComponentsStore = fComponentsStore;
1868
+ }
1869
+ handle(request) {
1870
+ let output = this.getOutput(request.dragHandler) || this.getOutlet(request.dragHandler);
1871
+ if (!output) {
1872
+ throw OutputNotFound(request.dragHandler.fConnection.fOutputId);
1873
+ }
1874
+ return true;
1875
+ }
1876
+ getOutput(dragHandler) {
1877
+ return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);
1878
+ }
1879
+ getOutlet(dragHandler) {
1880
+ return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);
1881
+ }
1882
+ };
1883
+ GetInputUnderPointerValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerValidator, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
1884
+ GetInputUnderPointerValidator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerValidator });
1885
+ GetInputUnderPointerValidator = __decorate([
1886
+ FValidatorRegister(GetInputUnderPointerRequest)
1887
+ ], GetInputUnderPointerValidator);
1888
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetInputUnderPointerValidator, decorators: [{
1889
+ type: Injectable
1890
+ }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
1891
+
1892
+ let CreateConnectionFinalizeExecution = class CreateConnectionFinalizeExecution {
1893
+ constructor(fComponentsStore, fDraggableDataContext, fMediator) {
1894
+ this.fComponentsStore = fComponentsStore;
1895
+ this.fDraggableDataContext = fDraggableDataContext;
1896
+ this.fMediator = fMediator;
1897
+ }
1898
+ get dragHandler() {
1899
+ return this.fDraggableDataContext.draggableItems[0];
1548
1900
  }
1549
1901
  handle(request) {
1550
1902
  this.emitEvent(request.event);
@@ -1609,7 +1961,9 @@ class CreateConnectionDragHandler {
1609
1961
  }
1610
1962
  move(difference) {
1611
1963
  this.drawTempConnection(this.toConnectorRect.addPoint(difference));
1612
- this.drawSnapConnection(this.getClosetInput(difference));
1964
+ if (this.fSnapConnection) {
1965
+ this.drawSnapConnection(this.getClosetInput(difference));
1966
+ }
1613
1967
  }
1614
1968
  drawTempConnection(fInputRect) {
1615
1969
  const line = this.fMediator.send(new GetConnectionLineRequest(this.fOutputWithRect.fRect, fInputRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, EFConnectableSide.TOP));
@@ -1629,6 +1983,9 @@ class CreateConnectionDragHandler {
1629
1983
  }
1630
1984
  }
1631
1985
  getClosetInput(difference) {
1986
+ if (!this.fSnapConnection) {
1987
+ return undefined;
1988
+ }
1632
1989
  return this.fMediator.send(new FindClosestInputUsingSnapThresholdRequest(Point.fromPoint(this.toConnectorRect).add(difference), this.canBeConnectedInputs, this.fSnapConnection.fSnapThreshold));
1633
1990
  }
1634
1991
  complete() {
@@ -1656,11 +2013,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1656
2013
  type: Injectable
1657
2014
  }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
1658
2015
 
1659
- const CREATE_CONNECTION_FINALIZE_PROVIDERS = [
1660
- CreateConnectionFinalizeExecution,
1661
- CreateConnectionFinalizeValidator,
1662
- ];
1663
-
1664
2016
  class CreateConnectionDragHandlerRequest {
1665
2017
  constructor(onPointerDownPosition, connector) {
1666
2018
  this.onPointerDownPosition = onPointerDownPosition;
@@ -1701,10 +2053,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1701
2053
  type: Injectable
1702
2054
  }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }]; } });
1703
2055
 
1704
- const CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS = [
1705
- CreateConnectionDragHandlerExecution,
1706
- ];
1707
-
1708
2056
  class CreateConnectionFromOutletPreparationRequest {
1709
2057
  constructor(event) {
1710
2058
  this.event = event;
@@ -1753,10 +2101,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1753
2101
  type: Injectable
1754
2102
  }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i2.FMediator }]; } });
1755
2103
 
1756
- const CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS = [
1757
- CreateConnectionFromOutletPreparationExecution,
1758
- ];
1759
-
1760
2104
  class CreateConnectionFromOutputPreparationRequest {
1761
2105
  constructor(event) {
1762
2106
  this.event = event;
@@ -1819,11 +2163,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1819
2163
  type: Injectable
1820
2164
  }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
1821
2165
 
1822
- const CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS = [
1823
- CreateConnectionFromOutputPreparationExecution,
1824
- CreateConnectionFromOutputPreparationValidator,
1825
- ];
1826
-
1827
2166
  class CreateConnectionPreparationRequest {
1828
2167
  constructor(event) {
1829
2168
  this.event = event;
@@ -1886,14 +2225,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1886
2225
  type: Injectable
1887
2226
  }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }]; } });
1888
2227
 
1889
- const CREATE_CONNECTION_PREPARATION_PROVIDERS = [
1890
- ...CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS,
1891
- ...CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS,
1892
- ...CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS,
1893
- CreateConnectionPreparationExecution,
1894
- CreateConnectionPreparationValidator,
1895
- ];
1896
-
1897
2228
  class ReassignConnectionFinalizeRequest {
1898
2229
  constructor(event) {
1899
2230
  this.event = event;
@@ -1976,8 +2307,13 @@ class ReassignConnectionDragHandler {
1976
2307
  return this.fComponentsStore.fInputs.find((x) => x.id === this.fConnection.fInputId);
1977
2308
  }
1978
2309
  move(difference) {
1979
- this.drawConnection({ fRect: this.toConnectorRect.addPoint(difference), fConnector: this.fInputWithRect.fConnector });
1980
- this.drawSnapConnection(this.getClosetInput(difference));
2310
+ this.drawConnection({
2311
+ fRect: this.toConnectorRect.addPoint(difference),
2312
+ fConnector: this.fInputWithRect.fConnector
2313
+ });
2314
+ if (this.fSnapConnection) {
2315
+ this.drawSnapConnection(this.getClosetInput(difference));
2316
+ }
1981
2317
  }
1982
2318
  drawConnection(fInputWithRect) {
1983
2319
  const line = this.fMediator.send(new GetConnectionLineRequest(this.fOutputWithRect.fRect, fInputWithRect.fRect, this.fConnection.fBehavior, this.fOutputWithRect.fConnector.fConnectableSide, fInputWithRect.fConnector.fConnectableSide));
@@ -1997,6 +2333,9 @@ class ReassignConnectionDragHandler {
1997
2333
  }
1998
2334
  }
1999
2335
  getClosetInput(difference) {
2336
+ if (!this.fSnapConnection) {
2337
+ return undefined;
2338
+ }
2000
2339
  return this.fMediator.send(new FindClosestInputUsingSnapThresholdRequest(Point.fromPoint(this.toConnectorRect).add(difference), this.canBeConnectedInputs, this.fSnapConnection.fSnapThreshold));
2001
2340
  }
2002
2341
  complete() {
@@ -2023,11 +2362,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2023
2362
  type: Injectable
2024
2363
  }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
2025
2364
 
2026
- const REASSIGN_CONNECTION_FINALIZE_PROVIDERS = [
2027
- ReassignConnectionFinalizeExecution,
2028
- ReassignConnectionFinalizeValidator,
2029
- ];
2030
-
2031
2365
  class ReassignConnectionPreparationRequest {
2032
2366
  constructor(event) {
2033
2367
  this.event = event;
@@ -2750,12 +3084,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2750
3084
  }]
2751
3085
  }] });
2752
3086
 
2753
- let uniqueId$8 = 0;
3087
+ let uniqueId$6 = 0;
2754
3088
  class FConnectionForCreateComponent extends FConnectionBase {
2755
3089
  constructor(elementReference, fConnectionFactory, fComponentsStore) {
2756
3090
  super(elementReference, fConnectionFactory);
2757
3091
  this.fComponentsStore = fComponentsStore;
2758
- this.fId = `f-connection-for-create-${uniqueId$8++}`;
3092
+ this.fId = `f-connection-for-create-${uniqueId$6++}`;
2759
3093
  this.fText = '';
2760
3094
  this._fStartColor = 'black';
2761
3095
  this._fEndColor = 'black';
@@ -2873,12 +3207,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2873
3207
  args: [FConnectionCenterDirective, { descendants: true }]
2874
3208
  }] } });
2875
3209
 
2876
- let uniqueId$7 = 0;
3210
+ let uniqueId$5 = 0;
2877
3211
  class FConnectionComponent extends FConnectionBase {
2878
3212
  constructor(elementReference, fConnectionFactory, fComponentsStore) {
2879
3213
  super(elementReference, fConnectionFactory);
2880
3214
  this.fComponentsStore = fComponentsStore;
2881
- this.fId = `f-connection-${uniqueId$7++}`;
3215
+ this.fId = `f-connection-${uniqueId$5++}`;
2882
3216
  this._fText = '';
2883
3217
  this._fStartColor = 'black';
2884
3218
  this._fEndColor = 'black';
@@ -3102,12 +3436,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
3102
3436
  type: Input
3103
3437
  }] } });
3104
3438
 
3105
- let uniqueId$6 = 0;
3439
+ let uniqueId$4 = 0;
3106
3440
  class FSnapConnectionComponent extends FConnectionBase {
3107
3441
  constructor(elementReference, fConnectionFactory, fComponentsStore) {
3108
3442
  super(elementReference, fConnectionFactory);
3109
3443
  this.fComponentsStore = fComponentsStore;
3110
- this.fId = `f-snap-connection-${uniqueId$6++}`;
3444
+ this.fId = `f-snap-connection-${uniqueId$4++}`;
3111
3445
  this.fText = '';
3112
3446
  this._fStartColor = 'black';
3113
3447
  this._fEndColor = 'black';
@@ -3326,20 +3660,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
3326
3660
  type: Injectable
3327
3661
  }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i1.BrowserService }]; } });
3328
3662
 
3329
- const REASSIGN_CONNECTION_PREPARATION_PROVIDERS = [
3663
+ const CONNECTIONS_PROVIDERS = [
3664
+ GetInputUnderPointerExecution,
3665
+ GetInputUnderPointerValidator,
3666
+ CreateConnectionFinalizeExecution,
3667
+ CreateConnectionFinalizeValidator,
3668
+ CreateConnectionDragHandlerExecution,
3669
+ CreateConnectionFromOutletPreparationExecution,
3670
+ GetCanBeConnectedOutputByOutletExecution,
3671
+ GetCanBeConnectedOutputByOutletValidator,
3672
+ CreateConnectionFromOutputPreparationExecution,
3673
+ CreateConnectionFromOutputPreparationValidator,
3674
+ CreateConnectionPreparationExecution,
3675
+ CreateConnectionPreparationValidator,
3676
+ ReassignConnectionFinalizeExecution,
3677
+ ReassignConnectionFinalizeValidator,
3330
3678
  ReassignConnectionPreparationExecution,
3331
3679
  ReassignConnectionPreparationValidator,
3332
3680
  ];
3333
3681
 
3334
- const CONNECTIONS_PROVIDERS = [
3335
- ...CONNECTION_DRAG_COMMON_PROVIDERS,
3336
- ...CREATE_CONNECTION_FINALIZE_PROVIDERS,
3337
- ...CREATE_CONNECTION_PREPARATION_PROVIDERS,
3338
- ...GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS,
3339
- ...REASSIGN_CONNECTION_FINALIZE_PROVIDERS,
3340
- ...REASSIGN_CONNECTION_PREPARATION_PROVIDERS,
3341
- ];
3342
-
3343
3682
  class GetNodePaddingRequest {
3344
3683
  constructor(fNode, rect) {
3345
3684
  this.fNode = fNode;
@@ -4237,9 +4576,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
4237
4576
  }] });
4238
4577
 
4239
4578
  class GetNormalizedChildrenNodesRectRequest {
4240
- constructor(fNode, rect) {
4579
+ constructor(fNode, paddings) {
4241
4580
  this.fNode = fNode;
4242
- this.rect = rect;
4581
+ this.paddings = paddings;
4243
4582
  }
4244
4583
  }
4245
4584
 
@@ -4250,7 +4589,7 @@ let GetNormalizedChildrenNodesRectExecution = class GetNormalizedChildrenNodesRe
4250
4589
  handle(request) {
4251
4590
  const childNodeRect = RectExtensions.union(this.getChildrenNodes(request.fNode.fId).map((x) => this.normalizeRect(x)));
4252
4591
  return childNodeRect ?
4253
- this.concatRectWithParentPadding(childNodeRect, this.getNodePadding(request.fNode, request.rect)) : null;
4592
+ this.concatRectWithParentPadding(childNodeRect, request.paddings) : null;
4254
4593
  }
4255
4594
  getChildrenNodes(fId) {
4256
4595
  return this.fMediator.send(new GetDeepChildrenNodesAndGroupsRequest(fId));
@@ -4258,9 +4597,6 @@ let GetNormalizedChildrenNodesRectExecution = class GetNormalizedChildrenNodesRe
4258
4597
  normalizeRect(node) {
4259
4598
  return this.fMediator.send(new GetNormalizedNodeRectRequest(node));
4260
4599
  }
4261
- getNodePadding(node, rect) {
4262
- return this.fMediator.send(new GetNodePaddingRequest(node, rect));
4263
- }
4264
4600
  concatRectWithParentPadding(rect, padding) {
4265
4601
  return RectExtensions.initialize(rect.x - padding[0], rect.y - padding[1], rect.width + padding[0] + padding[2], rect.height + +padding[1] + padding[3]);
4266
4602
  }
@@ -4286,13 +4622,18 @@ let GetNodeResizeRestrictionsExecution = class GetNodeResizeRestrictionsExecutio
4286
4622
  this.fMediator = fMediator;
4287
4623
  }
4288
4624
  handle(request) {
4289
- const childRect = this.fMediator.send(new GetNormalizedChildrenNodesRectRequest(request.fNode, request.rect));
4625
+ const fNodePaddings = this.getNodePaddings(request.fNode, request.rect);
4626
+ const childRect = this.fMediator.send(new GetNormalizedChildrenNodesRectRequest(request.fNode, fNodePaddings));
4290
4627
  const parentRect = this.fMediator.send(new GetNormalizedParentNodeRectRequest(request.fNode));
4291
4628
  return {
4292
4629
  parentRect,
4293
4630
  childRect,
4631
+ minSize: SizeExtensions.initialize(fNodePaddings[0] + fNodePaddings[2], fNodePaddings[1] + fNodePaddings[3])
4294
4632
  };
4295
4633
  }
4634
+ getNodePaddings(node, rect) {
4635
+ return this.fMediator.send(new GetNodePaddingRequest(node, rect));
4636
+ }
4296
4637
  };
4297
4638
  GetNodeResizeRestrictionsExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetNodeResizeRestrictionsExecution, deps: [{ token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
4298
4639
  GetNodeResizeRestrictionsExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetNodeResizeRestrictionsExecution });
@@ -4334,7 +4675,8 @@ class NodeResizeDragHandler {
4334
4675
  this.fMediator = fMediator;
4335
4676
  this.fNode = fNode;
4336
4677
  this.fResizeHandleType = fResizeHandleType;
4337
- this.childRestrictions = () => { };
4678
+ this.childRestrictions = () => {
4679
+ };
4338
4680
  }
4339
4681
  initialize() {
4340
4682
  this.originalRect = this.fMediator.send(new GetNormalizedNodeRectRequest(this.fNode));
@@ -4346,14 +4688,14 @@ class NodeResizeDragHandler {
4346
4688
  }
4347
4689
  }
4348
4690
  move(difference) {
4349
- const changedRect = this.changePosition(difference, this.changeSize(difference));
4691
+ const changedRect = this.changePosition(difference, this.changeSize(difference, this.restrictions.minSize));
4350
4692
  this.childRestrictions(changedRect, this.restrictions.childRect);
4351
4693
  this.applyParentRestrictions(changedRect, this.restrictions.parentRect);
4352
4694
  this.fNode.updatePosition(changedRect);
4353
4695
  this.fNode.updateSize(changedRect);
4354
4696
  this.fNode.redraw();
4355
4697
  }
4356
- changeSize(difference) {
4698
+ changeSize(difference, minSize) {
4357
4699
  return this.fMediator.send(new CalculateChangedSizeRequest(this.originalRect, difference, this.fResizeHandleType));
4358
4700
  }
4359
4701
  changePosition(difference, changedRect) {
@@ -4826,13 +5168,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
4826
5168
  }]
4827
5169
  }] });
4828
5170
 
4829
- let uniqueId$5 = 0;
5171
+ let uniqueId$3 = 0;
4830
5172
  class FExternalItemDirective extends FExternalItemBase {
4831
5173
  constructor(elementReference, fExternalItemService) {
4832
5174
  super();
4833
5175
  this.elementReference = elementReference;
4834
5176
  this.fExternalItemService = fExternalItemService;
4835
- this.fExternalItemId = `f-external-item-${uniqueId$5++}`;
5177
+ this.fExternalItemId = `f-external-item-${uniqueId$3++}`;
4836
5178
  this.fDisabled = false;
4837
5179
  }
4838
5180
  get hostElement() {
@@ -5038,13 +5380,6 @@ class FSelectionChangeEvent {
5038
5380
  }
5039
5381
  }
5040
5382
 
5041
- class MinimapDragPreparationRequest {
5042
- constructor(event, minimap) {
5043
- this.event = event;
5044
- this.minimap = minimap;
5045
- }
5046
- }
5047
-
5048
5383
  class CalculateFlowPointFromMinimapPointRequest {
5049
5384
  constructor(flowRect, canvasPosition, eventPoint, minimap) {
5050
5385
  this.flowRect = flowRect;
@@ -5088,6 +5423,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
5088
5423
  type: Injectable
5089
5424
  }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
5090
5425
 
5426
+ class MinimapDragFinalizeRequest {
5427
+ constructor(event) {
5428
+ this.event = event;
5429
+ }
5430
+ }
5431
+
5432
+ let MinimapDragFinalizeExecution = class MinimapDragFinalizeExecution {
5433
+ constructor(fDraggableDataContext) {
5434
+ this.fDraggableDataContext = fDraggableDataContext;
5435
+ }
5436
+ handle(request) {
5437
+ this.fDraggableDataContext.draggableItems.forEach((x) => {
5438
+ var _a;
5439
+ (_a = x.complete) === null || _a === void 0 ? void 0 : _a.call(x);
5440
+ });
5441
+ }
5442
+ };
5443
+ MinimapDragFinalizeExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeExecution, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
5444
+ MinimapDragFinalizeExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeExecution });
5445
+ MinimapDragFinalizeExecution = __decorate([
5446
+ FExecutionRegister(MinimapDragFinalizeRequest)
5447
+ ], MinimapDragFinalizeExecution);
5448
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeExecution, decorators: [{
5449
+ type: Injectable
5450
+ }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
5451
+
5091
5452
  class FMinimapDragHandler {
5092
5453
  constructor(fComponentsStore, fMediator, flowRect, canvasPosition, eventPoint, minimap) {
5093
5454
  this.fComponentsStore = fComponentsStore;
@@ -5123,6 +5484,35 @@ class FMinimapDragHandler {
5123
5484
  }
5124
5485
  }
5125
5486
 
5487
+ let MinimapDragFinalizeValidator = class MinimapDragFinalizeValidator {
5488
+ constructor(fDraggableDataContext) {
5489
+ this.fDraggableDataContext = fDraggableDataContext;
5490
+ }
5491
+ handle(request) {
5492
+ return this.fDraggableDataContext.draggableItems.some((x) => x instanceof FMinimapDragHandler);
5493
+ }
5494
+ };
5495
+ MinimapDragFinalizeValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeValidator, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
5496
+ MinimapDragFinalizeValidator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeValidator });
5497
+ MinimapDragFinalizeValidator = __decorate([
5498
+ FValidatorRegister(MinimapDragFinalizeRequest)
5499
+ ], MinimapDragFinalizeValidator);
5500
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeValidator, decorators: [{
5501
+ type: Injectable
5502
+ }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
5503
+
5504
+ const MINIMAP_DRAG_FINALIZE_PROVIDERS = [
5505
+ MinimapDragFinalizeExecution,
5506
+ MinimapDragFinalizeValidator,
5507
+ ];
5508
+
5509
+ class MinimapDragPreparationRequest {
5510
+ constructor(event, minimap) {
5511
+ this.event = event;
5512
+ this.minimap = minimap;
5513
+ }
5514
+ }
5515
+
5126
5516
  let MinimapDragPreparationExecution = class MinimapDragPreparationExecution {
5127
5517
  constructor(fComponentsStore, fMediator, fDraggableDataContext) {
5128
5518
  this.fComponentsStore = fComponentsStore;
@@ -5185,67 +5575,34 @@ const MINIMAP_DRAG_PREPARATION_PROVIDERS = [
5185
5575
  MinimapDragPreparationValidator,
5186
5576
  ];
5187
5577
 
5188
- class MinimapDragFinalizeRequest {
5578
+ function checkRectIsFinite(rect) {
5579
+ if (!Number.isFinite(rect.width) || !Number.isFinite(rect.height) || !Number.isFinite(rect.x) || !Number.isFinite(rect.y)) {
5580
+ return RectExtensions.initialize(0, 0, 0, 0);
5581
+ }
5582
+ return rect;
5583
+ }
5584
+
5585
+ class FMinimapData {
5586
+ constructor(element, scale = 1, viewBox = RectExtensions.initialize(0, 0, 0, 0)) {
5587
+ this.element = element;
5588
+ this.scale = scale;
5589
+ this.viewBox = viewBox;
5590
+ }
5591
+ }
5592
+
5593
+ const F_MINIMAP_DRAG_AND_DROP_PROVIDERS = [
5594
+ CalculateFlowPointFromMinimapPointExecution,
5595
+ ...MINIMAP_DRAG_FINALIZE_PROVIDERS,
5596
+ ...MINIMAP_DRAG_PREPARATION_PROVIDERS,
5597
+ ];
5598
+
5599
+ class SelectionAreaFinalizeRequest {
5189
5600
  constructor(event) {
5190
5601
  this.event = event;
5191
5602
  }
5192
5603
  }
5193
5604
 
5194
- let MinimapDragFinalizeExecution = class MinimapDragFinalizeExecution {
5195
- constructor(fDraggableDataContext) {
5196
- this.fDraggableDataContext = fDraggableDataContext;
5197
- }
5198
- handle(request) {
5199
- this.fDraggableDataContext.draggableItems.forEach((x) => {
5200
- var _a;
5201
- (_a = x.complete) === null || _a === void 0 ? void 0 : _a.call(x);
5202
- });
5203
- }
5204
- };
5205
- MinimapDragFinalizeExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeExecution, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
5206
- MinimapDragFinalizeExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeExecution });
5207
- MinimapDragFinalizeExecution = __decorate([
5208
- FExecutionRegister(MinimapDragFinalizeRequest)
5209
- ], MinimapDragFinalizeExecution);
5210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeExecution, decorators: [{
5211
- type: Injectable
5212
- }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
5213
-
5214
- let MinimapDragFinalizeValidator = class MinimapDragFinalizeValidator {
5215
- constructor(fDraggableDataContext) {
5216
- this.fDraggableDataContext = fDraggableDataContext;
5217
- }
5218
- handle(request) {
5219
- return this.fDraggableDataContext.draggableItems.some((x) => x instanceof FMinimapDragHandler);
5220
- }
5221
- };
5222
- MinimapDragFinalizeValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeValidator, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
5223
- MinimapDragFinalizeValidator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeValidator });
5224
- MinimapDragFinalizeValidator = __decorate([
5225
- FValidatorRegister(MinimapDragFinalizeRequest)
5226
- ], MinimapDragFinalizeValidator);
5227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeValidator, decorators: [{
5228
- type: Injectable
5229
- }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
5230
-
5231
- const MINIMAP_DRAG_FINALIZE_PROVIDERS = [
5232
- MinimapDragFinalizeExecution,
5233
- MinimapDragFinalizeValidator,
5234
- ];
5235
-
5236
- const F_MINIMAP_DRAG_AND_DROP_PROVIDERS = [
5237
- CalculateFlowPointFromMinimapPointExecution,
5238
- ...MINIMAP_DRAG_FINALIZE_PROVIDERS,
5239
- ...MINIMAP_DRAG_PREPARATION_PROVIDERS,
5240
- ];
5241
-
5242
- class SelectionAreaFinalizeRequest {
5243
- constructor(event) {
5244
- this.event = event;
5245
- }
5246
- }
5247
-
5248
- let SelectionAreaFinalizeExecution = class SelectionAreaFinalizeExecution {
5605
+ let SelectionAreaFinalizeExecution = class SelectionAreaFinalizeExecution {
5249
5606
  constructor(fDraggableDataContext) {
5250
5607
  this.fDraggableDataContext = fDraggableDataContext;
5251
5608
  }
@@ -5403,6 +5760,69 @@ const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [
5403
5760
  ...SELECTION_AREA_PREPARATION_PROVIDERS
5404
5761
  ];
5405
5762
 
5763
+ class FSelectionAreaBase {
5764
+ }
5765
+ FSelectionAreaBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5766
+ FSelectionAreaBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: FSelectionAreaBase, ngImport: i0 });
5767
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaBase, decorators: [{
5768
+ type: Directive
5769
+ }] });
5770
+
5771
+ class FSelectionAreaComponent extends FSelectionAreaBase {
5772
+ constructor(elementReference, fMediator) {
5773
+ super();
5774
+ this.elementReference = elementReference;
5775
+ this.fMediator = fMediator;
5776
+ }
5777
+ get hostElement() {
5778
+ return this.elementReference.nativeElement;
5779
+ }
5780
+ ngOnInit() {
5781
+ this.hostElement.style.display = 'none';
5782
+ }
5783
+ hide() {
5784
+ this.hostElement.style.display = 'none';
5785
+ }
5786
+ show() {
5787
+ this.hostElement.style.display = 'block';
5788
+ }
5789
+ draw(object) {
5790
+ const style = this.hostElement.style;
5791
+ style.left = object.x + 'px';
5792
+ style.top = object.y + 'px';
5793
+ style.width = object.width + 'px';
5794
+ style.height = object.height + 'px';
5795
+ }
5796
+ onPointerDown(event) {
5797
+ this.fMediator.send(new SelectionAreaPreparationRequest(event, this));
5798
+ }
5799
+ onPointerUp(event) {
5800
+ this.fMediator.send(new SelectionAreaFinalizeRequest(event));
5801
+ }
5802
+ }
5803
+ FSelectionAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaComponent, deps: [{ token: i0.ElementRef }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Component });
5804
+ FSelectionAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FSelectionAreaComponent, selector: "f-selection-area", host: { classAttribute: "f-selection-area f-component" }, providers: [
5805
+ { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },
5806
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true, styles: [":host{position:absolute}\n"] });
5807
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaComponent, decorators: [{
5808
+ type: Component,
5809
+ args: [{
5810
+ selector: "f-selection-area",
5811
+ template: ``,
5812
+ styleUrls: ['./f-selection-area.component.scss'],
5813
+ host: {
5814
+ 'class': 'f-selection-area f-component'
5815
+ },
5816
+ providers: [
5817
+ { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },
5818
+ ],
5819
+ }]
5820
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.FMediator }]; } });
5821
+
5822
+ const F_SELECTION_AREA_PROVIDERS = [
5823
+ FSelectionAreaComponent
5824
+ ];
5825
+
5406
5826
  const F_DRAGGABLE_PROVIDERS = [
5407
5827
  ...CANVAS_PROVIDERS,
5408
5828
  ...CONNECTIONS_PROVIDERS,
@@ -5739,45 +6159,6 @@ const F_SELECTION_FEATURES = [
5739
6159
  SelectAndUpdateNodeLayerExecution
5740
6160
  ];
5741
6161
 
5742
- class GetElementRectInFlowRequest {
5743
- constructor(element) {
5744
- this.element = element;
5745
- }
5746
- }
5747
-
5748
- let GetElementRectInFlowExecution = class GetElementRectInFlowExecution {
5749
- constructor(fComponentsStore, fMediator) {
5750
- this.fComponentsStore = fComponentsStore;
5751
- this.fMediator = fMediator;
5752
- }
5753
- get transform() {
5754
- return this.fComponentsStore.transform;
5755
- }
5756
- get flowHost() {
5757
- return this.fComponentsStore.flowHost;
5758
- }
5759
- handle(request) {
5760
- const systemRect = this.fMediator.send(new CreateRoundedRectFromElementRequest(request.element));
5761
- const position = this.transformElementPositionInFlow(systemRect);
5762
- const size = this.transformElementSizeInFlow(systemRect);
5763
- return new RoundedRect(position.x, position.y, size.width, size.height, systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4);
5764
- }
5765
- transformElementPositionInFlow(rect) {
5766
- return Point.fromPoint(rect).elementTransform(this.flowHost).sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);
5767
- }
5768
- transformElementSizeInFlow(rect) {
5769
- return SizeExtensions.initialize(rect.width / this.transform.scale, rect.height / this.transform.scale);
5770
- }
5771
- };
5772
- GetElementRectInFlowExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetElementRectInFlowExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
5773
- GetElementRectInFlowExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetElementRectInFlowExecution });
5774
- GetElementRectInFlowExecution = __decorate([
5775
- FExecutionRegister(GetElementRectInFlowRequest)
5776
- ], GetElementRectInFlowExecution);
5777
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GetElementRectInFlowExecution, decorators: [{
5778
- type: Injectable
5779
- }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i2.FMediator }]; } });
5780
-
5781
6162
  let GetCanBeSelectedItemsExecution = class GetCanBeSelectedItemsExecution {
5782
6163
  constructor(fComponentsStore, fDraggableDataContext, fMediator) {
5783
6164
  this.fComponentsStore = fComponentsStore;
@@ -6383,415 +6764,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
6383
6764
  type: Injectable
6384
6765
  }], ctorParameters: function () { return [{ type: FTransformStore }, { type: FComponentsStore }]; } });
6385
6766
 
6386
- const F_CANVAS_ANIMATION_DURATION = 150;
6387
-
6388
- function createSVGElement(tag, fBrowser) {
6389
- return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);
6390
- }
6391
-
6392
- class CenterGroupOrNodeRequest {
6393
- constructor(id, animated) {
6394
- this.id = id;
6395
- this.animated = animated;
6396
- }
6397
- }
6398
-
6399
- let CenterGroupOrNodeExecution = class CenterGroupOrNodeExecution {
6400
- constructor(fComponentsStore) {
6401
- this.fComponentsStore = fComponentsStore;
6402
- }
6403
- get transform() {
6404
- return this.fComponentsStore.fCanvas.transform;
6405
- }
6406
- handle(request) {
6407
- const fNode = this.getNode(request.id);
6408
- if (!fNode) {
6409
- return;
6410
- }
6411
- this.toCenter(this.getNodeRect(fNode), this.getFlowRect(), fNode.position);
6412
- request.animated ? this.fComponentsStore.fCanvas.redrawWithAnimation() : this.fComponentsStore.fCanvas.redraw();
6413
- this.fComponentsStore.fCanvas.emitCanvasChangeEvent();
6414
- setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);
6415
- }
6416
- toCenter(fNodeRect, fFlowRect, position) {
6417
- this.transform.scaledPosition = PointExtensions.initialize();
6418
- this.transform.position = PointExtensions.initialize((fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale, (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale);
6419
- }
6420
- getNode(id) {
6421
- return this.fComponentsStore.fNodes.find((x) => x.fId === id);
6422
- }
6423
- getNodeRect(fNode) {
6424
- return RectExtensions.fromElement(fNode.hostElement);
6425
- }
6426
- getFlowRect() {
6427
- return RectExtensions.fromElement(this.fComponentsStore.fFlow.hostElement);
6428
- }
6429
- };
6430
- CenterGroupOrNodeExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CenterGroupOrNodeExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
6431
- CenterGroupOrNodeExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CenterGroupOrNodeExecution });
6432
- CenterGroupOrNodeExecution = __decorate([
6433
- FExecutionRegister(CenterGroupOrNodeRequest)
6434
- ], CenterGroupOrNodeExecution);
6435
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CenterGroupOrNodeExecution, decorators: [{
6436
- type: Injectable
6437
- }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
6438
-
6439
- class FitToFlowRequest {
6440
- constructor(toCenter, animated) {
6441
- this.toCenter = toCenter;
6442
- this.animated = animated;
6443
- }
6444
- }
6445
-
6446
- let FitToFlowExecution = class FitToFlowExecution {
6447
- constructor(fComponentsStore, fMediator) {
6448
- this.fComponentsStore = fComponentsStore;
6449
- this.fMediator = fMediator;
6450
- }
6451
- get transform() {
6452
- return this.fComponentsStore.fCanvas.transform;
6453
- }
6454
- handle(request) {
6455
- const fNodesRect = this.fMediator.send(new GetNodesRectRequest()) || RectExtensions.initialize();
6456
- if (fNodesRect.width === 0 || fNodesRect.height === 0) {
6457
- return;
6458
- }
6459
- this.fitToParent(fNodesRect, RectExtensions.fromElement(this.fComponentsStore.fFlow.hostElement), this.fComponentsStore.fNodes.map((x) => x.position), request.toCenter);
6460
- request.animated ? this.fComponentsStore.fCanvas.redrawWithAnimation() : this.fComponentsStore.fCanvas.redraw();
6461
- this.fComponentsStore.fCanvas.emitCanvasChangeEvent();
6462
- setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);
6463
- }
6464
- fitToParent(rect, parentRect, points, toCenter) {
6465
- this.transform.scaledPosition = PointExtensions.initialize();
6466
- this.transform.position = this.getZeroPositionWithoutScale(points);
6467
- const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x;
6468
- const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y;
6469
- if ((itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||
6470
- itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height) {
6471
- this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);
6472
- }
6473
- const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;
6474
- const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;
6475
- this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale);
6476
- }
6477
- getZeroPositionWithoutScale(points) {
6478
- const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;
6479
- const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;
6480
- return PointExtensions.initialize(xPoint, yPoint);
6481
- }
6482
- };
6483
- FitToFlowExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FitToFlowExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
6484
- FitToFlowExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FitToFlowExecution });
6485
- FitToFlowExecution = __decorate([
6486
- FExecutionRegister(FitToFlowRequest)
6487
- ], FitToFlowExecution);
6488
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FitToFlowExecution, decorators: [{
6489
- type: Injectable
6490
- }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i2.FMediator }]; } });
6491
-
6492
- class InputCanvasPositionRequest {
6493
- constructor(transform, position) {
6494
- this.transform = transform;
6495
- this.position = position;
6496
- }
6497
- }
6498
-
6499
- let InputCanvasPositionExecution = class InputCanvasPositionExecution {
6500
- constructor(fComponentsStore) {
6501
- this.fComponentsStore = fComponentsStore;
6502
- }
6503
- handle(request) {
6504
- var _a;
6505
- if (!request.position) {
6506
- return;
6507
- }
6508
- const position = PointExtensions.sum(request.transform.position, request.transform.scaledPosition);
6509
- if (!PointExtensions.isEqual(position, request.position)) {
6510
- request.transform.position = request.position;
6511
- request.transform.scaledPosition = PointExtensions.initialize();
6512
- (_a = this.fComponentsStore.fCanvas) === null || _a === void 0 ? void 0 : _a.redraw();
6513
- }
6514
- }
6515
- };
6516
- InputCanvasPositionExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasPositionExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
6517
- InputCanvasPositionExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasPositionExecution });
6518
- InputCanvasPositionExecution = __decorate([
6519
- FExecutionRegister(InputCanvasPositionRequest)
6520
- ], InputCanvasPositionExecution);
6521
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasPositionExecution, decorators: [{
6522
- type: Injectable
6523
- }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
6524
-
6525
- class InputCanvasScaleRequest {
6526
- constructor(transform, scale) {
6527
- this.transform = transform;
6528
- this.scale = scale;
6529
- }
6530
- }
6531
-
6532
- let InputCanvasScaleExecution = class InputCanvasScaleExecution {
6533
- constructor(fComponentsStore) {
6534
- this.fComponentsStore = fComponentsStore;
6535
- }
6536
- handle(request) {
6537
- var _a;
6538
- if (!request.scale) {
6539
- return;
6540
- }
6541
- request.transform.scale = request.scale;
6542
- (_a = this.fComponentsStore.fCanvas) === null || _a === void 0 ? void 0 : _a.redraw();
6543
- }
6544
- };
6545
- InputCanvasScaleExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasScaleExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
6546
- InputCanvasScaleExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasScaleExecution });
6547
- InputCanvasScaleExecution = __decorate([
6548
- FExecutionRegister(InputCanvasScaleRequest)
6549
- ], InputCanvasScaleExecution);
6550
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InputCanvasScaleExecution, decorators: [{
6551
- type: Injectable
6552
- }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
6553
-
6554
- class ResetScaleRequest {
6555
- }
6556
-
6557
- let ResetScaleExecution = class ResetScaleExecution {
6558
- constructor(fComponentsStore) {
6559
- this.fComponentsStore = fComponentsStore;
6560
- }
6561
- get transform() {
6562
- return this.fComponentsStore.fCanvas.transform;
6563
- }
6564
- handle(request) {
6565
- this.transform.scale = 1;
6566
- this.transform.scaledPosition = PointExtensions.initialize();
6567
- }
6568
- };
6569
- ResetScaleExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
6570
- ResetScaleExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleExecution });
6571
- ResetScaleExecution = __decorate([
6572
- FExecutionRegister(ResetScaleRequest)
6573
- ], ResetScaleExecution);
6574
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleExecution, decorators: [{
6575
- type: Injectable
6576
- }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
6577
-
6578
- class ResetScaleAndCenterRequest {
6579
- constructor(animated) {
6580
- this.animated = animated;
6581
- }
6582
- }
6583
-
6584
- let ResetScaleAndCenterExecution = class ResetScaleAndCenterExecution {
6585
- constructor(fComponentsStore, fMediator) {
6586
- this.fComponentsStore = fComponentsStore;
6587
- this.fMediator = fMediator;
6588
- }
6589
- get transform() {
6590
- return this.fComponentsStore.fCanvas.transform;
6591
- }
6592
- handle(request) {
6593
- const fNodesRect = this.fMediator.send(new GetNodesRectRequest()) || RectExtensions.initialize();
6594
- if (fNodesRect.width === 0 || fNodesRect.height === 0) {
6595
- return;
6596
- }
6597
- this.oneToOneCentering(fNodesRect, RectExtensions.fromElement(this.fComponentsStore.fFlow.hostElement), this.fComponentsStore.fNodes.map((x) => x.position));
6598
- request.animated ? this.fComponentsStore.fCanvas.redrawWithAnimation() : this.fComponentsStore.fCanvas.redraw();
6599
- this.fComponentsStore.fCanvas.emitCanvasChangeEvent();
6600
- setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);
6601
- }
6602
- oneToOneCentering(rect, parentRect, points) {
6603
- this.transform.scaledPosition = PointExtensions.initialize();
6604
- this.transform.position = this.getZeroPositionWithoutScale(points);
6605
- const newX = (parentRect.width - rect.width / this.transform.scale) / 2 - this.transform.position.x;
6606
- const newY = (parentRect.height - rect.height / this.transform.scale) / 2 - this.transform.position.y;
6607
- this.transform.scale = 1;
6608
- this.transform.position = PointExtensions.initialize(newX, newY);
6609
- }
6610
- getZeroPositionWithoutScale(points) {
6611
- const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;
6612
- const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;
6613
- return PointExtensions.initialize(xPoint, yPoint);
6614
- }
6615
- };
6616
- ResetScaleAndCenterExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleAndCenterExecution, deps: [{ token: FComponentsStore }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Injectable });
6617
- ResetScaleAndCenterExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleAndCenterExecution });
6618
- ResetScaleAndCenterExecution = __decorate([
6619
- FExecutionRegister(ResetScaleAndCenterRequest)
6620
- ], ResetScaleAndCenterExecution);
6621
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ResetScaleAndCenterExecution, decorators: [{
6622
- type: Injectable
6623
- }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i2.FMediator }]; } });
6624
-
6625
- class UpdateScaleRequest {
6626
- constructor(scale, toPosition) {
6627
- this.scale = scale;
6628
- this.toPosition = toPosition;
6629
- }
6630
- }
6631
-
6632
- let UpdateScaleExecution = class UpdateScaleExecution {
6633
- constructor(fComponentsStore) {
6634
- this.fComponentsStore = fComponentsStore;
6635
- }
6636
- get transform() {
6637
- return this.fComponentsStore.fCanvas.transform;
6638
- }
6639
- handle(request) {
6640
- if (request.scale !== this.transform.scale) {
6641
- const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);
6642
- const newX = request.toPosition.x - (request.toPosition.x - summaryPosition.x) * request.scale / this.transform.scale;
6643
- const newY = request.toPosition.y - (request.toPosition.y - summaryPosition.y) * request.scale / this.transform.scale;
6644
- this.transform.scale = request.scale;
6645
- this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);
6646
- }
6647
- }
6648
- };
6649
- UpdateScaleExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UpdateScaleExecution, deps: [{ token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Injectable });
6650
- UpdateScaleExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UpdateScaleExecution });
6651
- UpdateScaleExecution = __decorate([
6652
- FExecutionRegister(UpdateScaleRequest)
6653
- ], UpdateScaleExecution);
6654
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UpdateScaleExecution, decorators: [{
6655
- type: Injectable
6656
- }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
6657
-
6658
- class FCanvasChangeEvent {
6659
- constructor(position, scale) {
6660
- this.position = position;
6661
- this.scale = scale;
6662
- }
6663
- }
6664
-
6665
- const F_CANVAS_FEATURES = [
6666
- CenterGroupOrNodeExecution,
6667
- FitToFlowExecution,
6668
- InputCanvasPositionExecution,
6669
- InputCanvasScaleExecution,
6670
- ResetScaleExecution,
6671
- ResetScaleAndCenterExecution,
6672
- UpdateScaleExecution
6673
- ];
6674
-
6675
- const F_CANVAS = new InjectionToken('F_CANVAS');
6676
- class FCanvasBase {
6677
- constructor() {
6678
- this.transform = TransformModelExtensions.default();
6679
- }
6680
- getPosition() {
6681
- return this.transform.position;
6682
- }
6683
- setPosition(position) {
6684
- this.transform.position = position;
6685
- }
6686
- emitCanvasChangeEvent() {
6687
- this.fCanvasChange.emit(new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale));
6688
- }
6689
- }
6690
- FCanvasBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6691
- FCanvasBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: FCanvasBase, ngImport: i0 });
6692
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasBase, decorators: [{
6693
- type: Directive
6694
- }] });
6695
-
6696
- class FCanvasComponent extends FCanvasBase {
6697
- constructor(elementReference, fMediator, fComponentsStore) {
6698
- super();
6699
- this.elementReference = elementReference;
6700
- this.fMediator = fMediator;
6701
- this.fComponentsStore = fComponentsStore;
6702
- this.fCanvasChange = new EventEmitter();
6703
- }
6704
- set position(value) {
6705
- this.fMediator.send(new InputCanvasPositionRequest(this.transform, value));
6706
- }
6707
- set scale(value) {
6708
- this.fMediator.send(new InputCanvasScaleRequest(this.transform, value));
6709
- }
6710
- get fNodes() {
6711
- return this.fComponentsStore.fNodes;
6712
- }
6713
- get hostElement() {
6714
- return this.elementReference.nativeElement;
6715
- }
6716
- ngOnInit() {
6717
- this.fComponentsStore.fCanvas = this;
6718
- }
6719
- redraw() {
6720
- var _a;
6721
- (_a = this.fComponentsStore.fBackground) === null || _a === void 0 ? void 0 : _a.setTransform(this.transform);
6722
- this.hostElement.setAttribute("style", `transform: ${TransformModelExtensions.toString(this.transform)}`);
6723
- this.fMediator.send(new EmitTransformChangesRequest());
6724
- }
6725
- redrawWithAnimation() {
6726
- var _a;
6727
- (_a = this.fComponentsStore.fBackground) === null || _a === void 0 ? void 0 : _a.setTransform(this.transform);
6728
- this.hostElement.setAttribute("style", `transition: transform ${F_CANVAS_ANIMATION_DURATION}ms ease-in-out; transform: ${TransformModelExtensions.toString(this.transform)}`);
6729
- setTimeout(() => {
6730
- this.redraw();
6731
- }, F_CANVAS_ANIMATION_DURATION);
6732
- }
6733
- centerGroupOrNode(id, animated = true) {
6734
- this.fMediator.send(new CenterGroupOrNodeRequest(id, animated));
6735
- }
6736
- fitToScreen(toCenter = PointExtensions.initialize(), animated = true) {
6737
- this.fMediator.send(new FitToFlowRequest(toCenter, animated));
6738
- }
6739
- resetScaleAndCenter(animated = true) {
6740
- this.fMediator.send(new ResetScaleAndCenterRequest(animated));
6741
- }
6742
- setZoom(scale, toPosition = PointExtensions.initialize()) {
6743
- this.fMediator.send(new UpdateScaleRequest(scale, toPosition));
6744
- }
6745
- resetZoom() {
6746
- this.fMediator.send(new ResetScaleRequest());
6747
- }
6748
- }
6749
- FCanvasComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasComponent, deps: [{ token: i0.ElementRef }, { token: i2.FMediator }, { token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Component });
6750
- FCanvasComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FCanvasComponent, selector: "f-canvas", inputs: { position: "position", scale: "scale" }, outputs: { fCanvasChange: "fCanvasChange" }, host: { classAttribute: "f-component f-canvas" }, providers: [
6751
- { provide: F_CANVAS, useExisting: FCanvasComponent }
6752
- ], viewQueries: [{ propertyName: "fGroupsContainer", first: true, predicate: ["fGroupsContainer"], descendants: true, static: true }, { propertyName: "fNodesContainer", first: true, predicate: ["fNodesContainer"], descendants: true, static: true }, { propertyName: "fConnectionsContainer", first: true, predicate: ["fConnectionsContainer"], descendants: true, static: true }], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0, template: "<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup]\"></ng-content>\n </div>\n <div #fConnectionsContainer>\n <ng-content select=\"f-snap-connection\"></ng-content>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode]\"></ng-content>\n </div>\n</ng-container>\n", styles: [":host{position:absolute;overflow:visible;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host.f-scaled-animate{transition:transform .09s}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6753
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasComponent, decorators: [{
6754
- type: Component,
6755
- args: [{
6756
- selector: 'f-canvas',
6757
- templateUrl: './f-canvas.component.html',
6758
- styleUrls: ['./f-canvas.component.scss'],
6759
- exportAs: 'fComponent',
6760
- host: {
6761
- 'class': 'f-component f-canvas',
6762
- },
6763
- providers: [
6764
- { provide: F_CANVAS, useExisting: FCanvasComponent }
6765
- ],
6766
- changeDetection: ChangeDetectionStrategy.OnPush,
6767
- }]
6768
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.FMediator }, { type: FComponentsStore }]; }, propDecorators: { fCanvasChange: [{
6769
- type: Output
6770
- }], position: [{
6771
- type: Input
6772
- }], scale: [{
6773
- type: Input
6774
- }], fGroupsContainer: [{
6775
- type: ViewChild,
6776
- args: ['fGroupsContainer', { static: true }]
6777
- }], fNodesContainer: [{
6778
- type: ViewChild,
6779
- args: ['fNodesContainer', { static: true }]
6780
- }], fConnectionsContainer: [{
6781
- type: ViewChild,
6782
- args: ['fConnectionsContainer', { static: true }]
6783
- }] } });
6784
-
6785
- const F_CANVAS_PROVIDERS = [
6786
- FCanvasComponent,
6787
- ];
6767
+ const F_CANVAS_ANIMATION_DURATION = 150;
6788
6768
 
6789
- const F_BACKGROUND_FEATURES = [
6790
- AddPatternToBackgroundExecution
6791
- ];
6769
+ function createSVGElement(tag, fBrowser) {
6770
+ return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);
6771
+ }
6792
6772
 
6793
6773
  const COMMON_PROVIDERS = [
6794
6774
  ...F_CANVAS_FEATURES,
6775
+ ...F_CONNECTION_FEATURES,
6795
6776
  ...F_BACKGROUND_FEATURES,
6796
6777
  CreateConnectionMarkersExecution,
6797
6778
  CreateRoundedRectFromElementExecution,
@@ -6816,54 +6797,14 @@ const COMMON_PROVIDERS = [
6816
6797
  MoveFrontElementsBeforeTargetElementExecution,
6817
6798
  ];
6818
6799
 
6819
- let uniqueId$4 = 0;
6820
- let AddPatternToBackgroundExecution = class AddPatternToBackgroundExecution {
6821
- constructor(fComponentsStore, fBrowser) {
6822
- this.fComponentsStore = fComponentsStore;
6823
- this.fBrowser = fBrowser;
6824
- }
6825
- get fBackground() {
6826
- return this.fComponentsStore.fBackground;
6827
- }
6828
- handle(request) {
6829
- var _a, _b, _c, _d, _e, _f, _g;
6830
- const children = ((_a = request.fPattern) === null || _a === void 0 ? void 0 : _a.hostElement.getElementsByTagName('pattern')) || [];
6831
- const pattern = children.length ? children[0] : undefined;
6832
- if (pattern) {
6833
- const defs = createSVGElement('defs', this.fBrowser);
6834
- pattern.id = 'f-background-pattern-' + uniqueId$4++;
6835
- (_b = request.fPattern) === null || _b === void 0 ? void 0 : _b.hostElement.remove();
6836
- defs.appendChild(pattern);
6837
- (_d = (_c = this.fBackground.hostElement) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.appendChild(defs);
6838
- const rect = createSVGElement('rect', this.fBrowser);
6839
- rect.setAttribute('fill', 'url(#' + pattern.id + ')');
6840
- rect.setAttribute('width', '100%');
6841
- rect.setAttribute('height', '100%');
6842
- (_e = this.fBackground.hostElement.firstChild) === null || _e === void 0 ? void 0 : _e.appendChild(rect);
6843
- const transform = ((_f = this.fComponentsStore.fCanvas) === null || _f === void 0 ? void 0 : _f.transform) || TransformModelExtensions.default();
6844
- (_g = request.fPattern) === null || _g === void 0 ? void 0 : _g.setTransform(transform);
6845
- }
6846
- }
6847
- };
6848
- AddPatternToBackgroundExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AddPatternToBackgroundExecution, deps: [{ token: FComponentsStore }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Injectable });
6849
- AddPatternToBackgroundExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AddPatternToBackgroundExecution });
6850
- AddPatternToBackgroundExecution = __decorate([
6851
- FExecutionRegister(AddPatternToBackgroundRequest)
6852
- ], AddPatternToBackgroundExecution);
6853
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AddPatternToBackgroundExecution, decorators: [{
6854
- type: Injectable
6855
- }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i1.BrowserService }]; } });
6856
-
6857
- const F_BACKGROUND_PATTERN = new InjectionToken('F_BACKGROUND_PATTERN');
6858
-
6859
- let uniqueId$3 = 0;
6800
+ let uniqueId$2 = 0;
6860
6801
  class FRectPatternComponent {
6861
6802
  constructor(elementReference, fBrowser) {
6862
6803
  this.elementReference = elementReference;
6863
6804
  this.fBrowser = fBrowser;
6864
6805
  this._subscription$ = new Subscription();
6865
6806
  this._stateChanges = new Subject();
6866
- this.id = `f-pattern-${uniqueId$3++}`;
6807
+ this.id = `f-pattern-${uniqueId$2++}`;
6867
6808
  this._vColor = 'rgba(0,0,0,0.1)';
6868
6809
  this._hColor = 'rgba(0,0,0,0.1)';
6869
6810
  this._vSize = 20;
@@ -6970,14 +6911,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
6970
6911
  type: Input
6971
6912
  }] } });
6972
6913
 
6973
- let uniqueId$2 = 0;
6914
+ let uniqueId$1 = 0;
6974
6915
  class FCirclePatternComponent {
6975
6916
  constructor(elementReference, fBrowser) {
6976
6917
  this.elementReference = elementReference;
6977
6918
  this.fBrowser = fBrowser;
6978
6919
  this._subscription$ = new Subscription();
6979
6920
  this._stateChanges = new Subject();
6980
- this.id = `f-pattern-${uniqueId$2++}`;
6921
+ this.id = `f-pattern-${uniqueId$1++}`;
6981
6922
  this._color = 'rgba(0,0,0,0.1)';
6982
6923
  this._radius = 20;
6983
6924
  this._scaledRadius = 20;
@@ -7075,7 +7016,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
7075
7016
  type: Directive
7076
7017
  }] });
7077
7018
 
7078
- let uniqueId$1 = 0;
7079
7019
  class FBackgroundComponent extends FBackgroundBase {
7080
7020
  constructor(elementReference, fComponentsStore, fMediator) {
7081
7021
  super();
@@ -7128,6 +7068,127 @@ const F_BACKGROUND_PROVIDERS = [
7128
7068
  FCirclePatternComponent
7129
7069
  ];
7130
7070
 
7071
+ class FCanvasChangeEvent {
7072
+ constructor(position, scale) {
7073
+ this.position = position;
7074
+ this.scale = scale;
7075
+ }
7076
+ }
7077
+
7078
+ const F_CANVAS = new InjectionToken('F_CANVAS');
7079
+ class FCanvasBase {
7080
+ constructor() {
7081
+ this.transform = TransformModelExtensions.default();
7082
+ }
7083
+ getPosition() {
7084
+ return this.transform.position;
7085
+ }
7086
+ setPosition(position) {
7087
+ this.transform.position = position;
7088
+ }
7089
+ emitCanvasChangeEvent() {
7090
+ this.fCanvasChange.emit(new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale));
7091
+ }
7092
+ }
7093
+ FCanvasBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7094
+ FCanvasBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: FCanvasBase, ngImport: i0 });
7095
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasBase, decorators: [{
7096
+ type: Directive
7097
+ }] });
7098
+
7099
+ class FCanvasComponent extends FCanvasBase {
7100
+ constructor(elementReference, fMediator, fComponentsStore) {
7101
+ super();
7102
+ this.elementReference = elementReference;
7103
+ this.fMediator = fMediator;
7104
+ this.fComponentsStore = fComponentsStore;
7105
+ this.fCanvasChange = new EventEmitter();
7106
+ }
7107
+ set position(value) {
7108
+ this.fMediator.send(new InputCanvasPositionRequest(this.transform, value));
7109
+ }
7110
+ set scale(value) {
7111
+ this.fMediator.send(new InputCanvasScaleRequest(this.transform, value));
7112
+ }
7113
+ get fNodes() {
7114
+ return this.fComponentsStore.fNodes;
7115
+ }
7116
+ get hostElement() {
7117
+ return this.elementReference.nativeElement;
7118
+ }
7119
+ ngOnInit() {
7120
+ this.fComponentsStore.fCanvas = this;
7121
+ }
7122
+ redraw() {
7123
+ var _a;
7124
+ (_a = this.fComponentsStore.fBackground) === null || _a === void 0 ? void 0 : _a.setTransform(this.transform);
7125
+ this.hostElement.setAttribute("style", `transform: ${TransformModelExtensions.toString(this.transform)}`);
7126
+ this.fMediator.send(new EmitTransformChangesRequest());
7127
+ }
7128
+ redrawWithAnimation() {
7129
+ var _a;
7130
+ (_a = this.fComponentsStore.fBackground) === null || _a === void 0 ? void 0 : _a.setTransform(this.transform);
7131
+ this.hostElement.setAttribute("style", `transition: transform ${F_CANVAS_ANIMATION_DURATION}ms ease-in-out; transform: ${TransformModelExtensions.toString(this.transform)}`);
7132
+ setTimeout(() => {
7133
+ this.redraw();
7134
+ }, F_CANVAS_ANIMATION_DURATION);
7135
+ }
7136
+ centerGroupOrNode(id, animated = true) {
7137
+ this.fMediator.send(new CenterGroupOrNodeRequest(id, animated));
7138
+ }
7139
+ fitToScreen(toCenter = PointExtensions.initialize(), animated = true) {
7140
+ this.fMediator.send(new FitToFlowRequest(toCenter, animated));
7141
+ }
7142
+ resetScaleAndCenter(animated = true) {
7143
+ this.fMediator.send(new ResetScaleAndCenterRequest(animated));
7144
+ }
7145
+ setZoom(scale, toPosition = PointExtensions.initialize()) {
7146
+ this.fMediator.send(new UpdateScaleRequest(scale, toPosition));
7147
+ }
7148
+ resetZoom() {
7149
+ this.fMediator.send(new ResetScaleRequest());
7150
+ }
7151
+ }
7152
+ FCanvasComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasComponent, deps: [{ token: i0.ElementRef }, { token: i2.FMediator }, { token: FComponentsStore }], target: i0.ɵɵFactoryTarget.Component });
7153
+ FCanvasComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FCanvasComponent, selector: "f-canvas", inputs: { position: "position", scale: "scale" }, outputs: { fCanvasChange: "fCanvasChange" }, host: { classAttribute: "f-component f-canvas" }, providers: [
7154
+ { provide: F_CANVAS, useExisting: FCanvasComponent }
7155
+ ], viewQueries: [{ propertyName: "fGroupsContainer", first: true, predicate: ["fGroupsContainer"], descendants: true, static: true }, { propertyName: "fNodesContainer", first: true, predicate: ["fNodesContainer"], descendants: true, static: true }, { propertyName: "fConnectionsContainer", first: true, predicate: ["fConnectionsContainer"], descendants: true, static: true }], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0, template: "<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup]\"></ng-content>\n </div>\n <div #fConnectionsContainer>\n <ng-content select=\"f-snap-connection\"></ng-content>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode]\"></ng-content>\n </div>\n</ng-container>\n", styles: [":host{position:absolute;overflow:visible;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host.f-scaled-animate{transition:transform .09s}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasComponent, decorators: [{
7157
+ type: Component,
7158
+ args: [{
7159
+ selector: 'f-canvas',
7160
+ templateUrl: './f-canvas.component.html',
7161
+ styleUrls: ['./f-canvas.component.scss'],
7162
+ exportAs: 'fComponent',
7163
+ host: {
7164
+ 'class': 'f-component f-canvas',
7165
+ },
7166
+ providers: [
7167
+ { provide: F_CANVAS, useExisting: FCanvasComponent }
7168
+ ],
7169
+ changeDetection: ChangeDetectionStrategy.OnPush,
7170
+ }]
7171
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.FMediator }, { type: FComponentsStore }]; }, propDecorators: { fCanvasChange: [{
7172
+ type: Output
7173
+ }], position: [{
7174
+ type: Input
7175
+ }], scale: [{
7176
+ type: Input
7177
+ }], fGroupsContainer: [{
7178
+ type: ViewChild,
7179
+ args: ['fGroupsContainer', { static: true }]
7180
+ }], fNodesContainer: [{
7181
+ type: ViewChild,
7182
+ args: ['fNodesContainer', { static: true }]
7183
+ }], fConnectionsContainer: [{
7184
+ type: ViewChild,
7185
+ args: ['fConnectionsContainer', { static: true }]
7186
+ }] } });
7187
+
7188
+ const F_CANVAS_PROVIDERS = [
7189
+ FCanvasComponent,
7190
+ ];
7191
+
7131
7192
  class LineElement {
7132
7193
  constructor(fBrowser, hostElement) {
7133
7194
  this.hostElement = hostElement;
@@ -7387,21 +7448,6 @@ const F_LINE_ALIGNMENT_PROVIDERS = [
7387
7448
  FLineAlignmentComponent
7388
7449
  ];
7389
7450
 
7390
- function checkRectIsFinite(rect) {
7391
- if (!Number.isFinite(rect.width) || !Number.isFinite(rect.height) || !Number.isFinite(rect.x) || !Number.isFinite(rect.y)) {
7392
- return RectExtensions.initialize(0, 0, 0, 0);
7393
- }
7394
- return rect;
7395
- }
7396
-
7397
- class FMinimapData {
7398
- constructor(element, scale = 1, viewBox = RectExtensions.initialize(0, 0, 0, 0)) {
7399
- this.element = element;
7400
- this.scale = scale;
7401
- this.viewBox = viewBox;
7402
- }
7403
- }
7404
-
7405
7451
  class FMinimapFlowDirective {
7406
7452
  constructor(elementReference, fMediator, fComponentsStore) {
7407
7453
  this.elementReference = elementReference;
@@ -7633,69 +7679,6 @@ const F_MINIMAP_PROVIDERS = [
7633
7679
  FMinimapFlowDirective,
7634
7680
  ];
7635
7681
 
7636
- class FSelectionAreaBase {
7637
- }
7638
- FSelectionAreaBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7639
- FSelectionAreaBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: FSelectionAreaBase, ngImport: i0 });
7640
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaBase, decorators: [{
7641
- type: Directive
7642
- }] });
7643
-
7644
- class FSelectionAreaComponent extends FSelectionAreaBase {
7645
- constructor(elementReference, fMediator) {
7646
- super();
7647
- this.elementReference = elementReference;
7648
- this.fMediator = fMediator;
7649
- }
7650
- get hostElement() {
7651
- return this.elementReference.nativeElement;
7652
- }
7653
- ngOnInit() {
7654
- this.hostElement.style.display = 'none';
7655
- }
7656
- hide() {
7657
- this.hostElement.style.display = 'none';
7658
- }
7659
- show() {
7660
- this.hostElement.style.display = 'block';
7661
- }
7662
- draw(object) {
7663
- const style = this.hostElement.style;
7664
- style.left = object.x + 'px';
7665
- style.top = object.y + 'px';
7666
- style.width = object.width + 'px';
7667
- style.height = object.height + 'px';
7668
- }
7669
- onPointerDown(event) {
7670
- this.fMediator.send(new SelectionAreaPreparationRequest(event, this));
7671
- }
7672
- onPointerUp(event) {
7673
- this.fMediator.send(new SelectionAreaFinalizeRequest(event));
7674
- }
7675
- }
7676
- FSelectionAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaComponent, deps: [{ token: i0.ElementRef }, { token: i2.FMediator }], target: i0.ɵɵFactoryTarget.Component });
7677
- FSelectionAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FSelectionAreaComponent, selector: "f-selection-area", host: { classAttribute: "f-selection-area f-component" }, providers: [
7678
- { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },
7679
- ], usesInheritance: true, ngImport: i0, template: ``, isInline: true, styles: [":host{position:absolute}\n"] });
7680
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaComponent, decorators: [{
7681
- type: Component,
7682
- args: [{
7683
- selector: "f-selection-area",
7684
- template: ``,
7685
- styleUrls: ['./f-selection-area.component.scss'],
7686
- host: {
7687
- 'class': 'f-selection-area f-component'
7688
- },
7689
- providers: [
7690
- { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },
7691
- ],
7692
- }]
7693
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.FMediator }]; } });
7694
-
7695
- const F_SELECTION_AREA_PROVIDERS = [
7696
- FSelectionAreaComponent
7697
- ];
7698
-
7699
7682
  const F_FLOW = new InjectionToken('F_FLOW');
7700
7683
  class FFlowBase {
7701
7684
  }
@@ -7735,7 +7718,6 @@ class FFlowComponent extends FFlowBase {
7735
7718
  return this.fComponentsStore.componentsData$.pipe(startWith(null), debounceTime(1)).subscribe(() => {
7736
7719
  this.fMediator.send(new RedrawConnectionsRequest());
7737
7720
  if (!this.isLoaded) {
7738
- // this.fMediator.send(new ShowConnectionsAfterCalculationsRequest());
7739
7721
  this.isLoaded = true;
7740
7722
  this.fLoaded.emit();
7741
7723
  }
@@ -7779,8 +7761,8 @@ FFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
7779
7761
  FTransformStore,
7780
7762
  FDraggableDataContext,
7781
7763
  FConnectionFactory,
7782
- ...F_DRAGGABLE_PROVIDERS,
7783
7764
  ...COMMON_PROVIDERS,
7765
+ ...F_DRAGGABLE_PROVIDERS,
7784
7766
  { provide: F_FLOW, useExisting: FFlowComponent },
7785
7767
  ], usesInheritance: true, ngImport: i0, template: "<ng-container>\n <ng-content select=\"[fDefinitions]\"></ng-content>\n\n <ng-content select=\"f-background\"></ng-content>\n\n <ng-content select=\"f-line-alignment\"></ng-content>\n\n <ng-content select=\"f-canvas\"></ng-content>\n\n <ng-content select=\"f-selection-area\"></ng-content>\n\n <ng-content select=\"f-minimap\"></ng-content>\n</ng-container>\n", styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden;pointer-events:all;-webkit-user-select:none;user-select:none;touch-action:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7786
7768
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FFlowComponent, decorators: [{
@@ -7799,8 +7781,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
7799
7781
  FTransformStore,
7800
7782
  FDraggableDataContext,
7801
7783
  FConnectionFactory,
7802
- ...F_DRAGGABLE_PROVIDERS,
7803
7784
  ...COMMON_PROVIDERS,
7785
+ ...F_DRAGGABLE_PROVIDERS,
7804
7786
  { provide: F_FLOW, useExisting: FFlowComponent },
7805
7787
  ],
7806
7788
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -8016,5 +7998,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
8016
7998
  * Generated bundle index. Do not edit.
8017
7999
  */
8018
8000
 
8019
- export { AddPatternToBackgroundExecution, AddPatternToBackgroundRequest, ApplyChildResizeRestrictionsExecution, ApplyChildResizeRestrictionsRequest, ApplyParentResizeRestrictionsExecution, ApplyParentResizeRestrictionsRequest, CANVAS_MOVE_FINALIZE_PROVIDERS, CANVAS_MOVE_PREPARATION_PROVIDERS, CANVAS_PROVIDERS, COMMON_PROVIDERS, CONNECTIONS_PROVIDERS, CONNECTION_DRAG_COMMON_PROVIDERS, CONNECTION_GRADIENT, CONNECTION_PATH, CONNECTION_TEXT, CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS, CREATE_CONNECTION_FINALIZE_PROVIDERS, CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS, CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS, CREATE_CONNECTION_PREPARATION_PROVIDERS, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest, CalculateChangedPositionExecution, CalculateChangedPositionRequest, CalculateChangedSizeExecution, CalculateChangedSizeRequest, CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, CalculateConnectorConnectableSideHandler, CalculateConnectorConnectableSideRequest, CalculateFlowPointFromMinimapPointExecution, CalculateFlowPointFromMinimapPointRequest, CanvasDragHandler, CanvasMoveFinalizeExecution, CanvasMoveFinalizeRequest, CanvasMoveFinalizeValidator, CanvasMovePreparationExecution, CanvasMovePreparationRequest, CanvasMovePreparationValidator, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, ConnectionBaseDragHandler, ConnectionDragHandler, ConnectionSourceDragHandler, ConnectionTargetDragHandler, CreateConnectionDragHandler, CreateConnectionDragHandlerExecution, CreateConnectionDragHandlerRequest, CreateConnectionFinalizeExecution, CreateConnectionFinalizeRequest, CreateConnectionFinalizeValidator, CreateConnectionFromOutletPreparationExecution, CreateConnectionFromOutletPreparationRequest, CreateConnectionFromOutputPreparationExecution, CreateConnectionFromOutputPreparationRequest, CreateConnectionFromOutputPreparationValidator, CreateConnectionMarkersExecution, CreateConnectionMarkersRequest, CreateConnectionPreparationExecution, CreateConnectionPreparationRequest, CreateConnectionPreparationValidator, CreateMoveNodesDragModelFromSelectionExecution, CreateMoveNodesDragModelFromSelectionRequest, CreateRoundedRectFromElementExecution, CreateRoundedRectFromElementRequest, DRAG_AND_DROP_COMMON_PROVIDERS, EFConnectableSide, EFConnectionBehavior, EFConnectionType, EFMarkerType, EFResizeHandleType, EXTERNAL_ITEM_FINALIZE_PROVIDERS, EXTERNAL_ITEM_PREPARATION_PROVIDERS, EmitTransformChangesExecution, EmitTransformChangesRequest, ExternalItemDragHandler, ExternalItemFinalizeExecution, ExternalItemFinalizeRequest, ExternalItemFinalizeValidator, ExternalItemPreparationExecution, ExternalItemPreparationRequest, ExternalItemPreparationValidator, FBackgroundBase, FBackgroundComponent, FBezierPathBuilder, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FCirclePatternComponent, FComponentsStore, FConnectionBase, FConnectionCenterDirective, FConnectionComponent, FConnectionDragHandleComponent, FConnectionFactory, FConnectionForCreateComponent, FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, FConnectionTextPathDirective, FConnectorBase, FCreateConnectionEvent, FCreateNodeEvent, FDragHandleDirective, FDraggableBase, FDraggableDataContext, FDraggableDirective, FExternalItemBase, FExternalItemDirective, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FGroupDirective, FLineAlignmentBase, FLineAlignmentComponent, FMarkerBase, FMarkerDirective, FMinimapCanvasDirective, FMinimapComponent, FMinimapData, FMinimapDragHandler, FMinimapFlowDirective, FMinimapViewDirective, FNodeBase, FNodeDirective, FNodeInputBase, FNodeInputDirective, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FReassignConnectionEvent, FRectPatternComponent, FResizeHandleDirective, FResizeObserver, FRotateHandleDirective, FSegmentPathBuilder, FSelectionAreaBase, FSelectionAreaComponent, FSelectionChangeEvent, FSnapConnectionComponent, FStraightPathBuilder, FTransformStore, FZoomBase, FZoomDirective, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_CANVAS, F_CANVAS_ANIMATION_DURATION, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_DRAG_HANDLE_CLASS, F_CONNECTION_IDENTIFIERS, F_CONNECTION_PROVIDERS, F_CONNECTORS_PROVIDERS, F_DRAGGABLE_PROVIDERS, F_DRAG_AND_DROP_PLUGIN, F_DRAG_HANDLE, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_PROVIDERS, F_LINE_ALIGNMENT, F_LINE_ALIGNMENT_PROVIDERS, F_MARKER, F_MINIMAP_DRAG_AND_DROP_PROVIDERS, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_RESIZE_HANDLE, F_SELECTED_CLASS, F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_ZOOM, F_ZOOM_PROVIDERS, FindClosestInputUsingSnapThresholdExecution, FindClosestInputUsingSnapThresholdRequest, FitToFlowExecution, FitToFlowRequest, GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS, GET_FLOW_STATE_PROVIDERS, GetAllCanBeConnectedInputPositionsExecution, GetAllCanBeConnectedInputPositionsRequest, GetCanBeConnectedOutputByOutletExecution, GetCanBeConnectedOutputByOutletRequest, GetCanBeConnectedOutputByOutletValidator, GetCanBeSelectedItemsExecution, GetConnectionLineExecution, GetConnectionLineRequest, GetConnectorWithRectExecution, GetConnectorWithRectRequest, GetDeepChildrenNodesAndGroupsExecution, GetDeepChildrenNodesAndGroupsRequest, GetElementRectInFlowExecution, GetElementRectInFlowRequest, GetFlowStateConnectionsExecution, GetFlowStateConnectionsRequest, GetFlowStateExecution, GetFlowStateNodesExecution, GetFlowStateNodesRequest, GetFlowStateRequest, GetInputUnderPointerExecution, GetInputUnderPointerRequest, GetInputUnderPointerValidator, GetNodeMoveRestrictionsExecution, GetNodeMoveRestrictionsRequest, GetNodePaddingExecution, GetNodePaddingRequest, GetNodeResizeRestrictionsExecution, GetNodeResizeRestrictionsRequest, GetNodesRectExecution, GetNodesRectRequest, GetNormalizedChildrenNodesRectExecution, GetNormalizedChildrenNodesRectRequest, GetNormalizedNodeRectExecution, GetNormalizedNodeRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetParentNodesExecution, GetParentNodesRequest, GetPositionInFlowExecution, GetPositionInFlowRequest, GetScaledNodeRectsWithFlowPositionExecution, GetScaledNodeRectsWithFlowPositionRequest, GetSelectionExecution, GetSelectionRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, LineElement, LineService, MINIMAP_DRAG_FINALIZE_PROVIDERS, MINIMAP_DRAG_PREPARATION_PROVIDERS, MinimapDragFinalizeExecution, MinimapDragFinalizeRequest, MinimapDragFinalizeValidator, MinimapDragPreparationExecution, MinimapDragPreparationRequest, MinimapDragPreparationValidator, MoveFrontElementsBeforeTargetElementExecution, MoveFrontElementsBeforeTargetElementRequest, NODE_MOVE_FINALIZE_PROVIDERS, NODE_MOVE_PREPARATION_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_FINALIZE_PROVIDERS, NODE_RESIZE_PREPARATION_PROVIDERS, NODE_RESIZE_PROVIDERS, NearestCoordinateFinder, NodeDragHandler, NodeMoveFinalizeExecution, NodeMoveFinalizeRequest, NodeMoveFinalizeValidator, NodeMovePreparationExecution, NodeMovePreparationRequest, NodeMovePreparationValidator, NodeResizeByChildDragHandler, NodeResizeDragHandler, NodeResizeFinalizeExecution, NodeResizeFinalizeRequest, NodeResizeFinalizeValidator, NodeResizePreparationExecution, NodeResizePreparationRequest, NodeResizePreparationValidator, PutInputConnectionHandlersToArrayExecution, PutInputConnectionHandlersToArrayRequest, PutOutputConnectionHandlersToArrayExecution, PutOutputConnectionHandlersToArrayRequest, REASSIGN_CONNECTION_FINALIZE_PROVIDERS, REASSIGN_CONNECTION_PREPARATION_PROVIDERS, RESIZE_DIRECTIONS, ReassignConnectionDragHandler, ReassignConnectionFinalizeExecution, ReassignConnectionFinalizeRequest, ReassignConnectionFinalizeValidator, ReassignConnectionPreparationExecution, ReassignConnectionPreparationRequest, ReassignConnectionPreparationValidator, RedrawConnectionsExecution, RedrawConnectionsRequest, ResetScaleAndCenterExecution, ResetScaleAndCenterRequest, ResetScaleExecution, ResetScaleRequest, SELECTION_AREA_FINALIZE_PROVIDERS, SELECTION_AREA_PREPARATION_PROVIDERS, SINGLE_SELECT_PROVIDERS, SelectAllExecution, SelectAllRequest, SelectAndUpdateNodeLayerExecution, SelectAndUpdateNodeLayerRequest, SelectExecution, SelectRequest, SelectionAreaDragHandle, SelectionAreaFinalizeExecution, SelectionAreaFinalizeRequest, SelectionAreaFinalizeValidator, SelectionAreaPreparationExecution, SelectionAreaPreparationRequest, SelectionAreaPreparationValidator, ShowConnectionsAfterCalculationsExecution, ShowConnectionsAfterCalculationsRequest, SingleSelectExecution, SingleSelectRequest, SingleSelectValidator, SortItemLayersExecution, SortItemLayersRequest, SortItemsByParentExecution, SortItemsByParentRequest, SortNodeLayersExecution, SortNodeLayersRequest, SubscribeOnTransformChangesExecution, SubscribeOnTransformChangesRequest, UpdateItemAndChildrenLayersExecution, UpdateItemAndChildrenLayersRequest, UpdateScaleExecution, UpdateScaleRequest, checkRectIsFinite, createSVGElement, getExternalItem, getMarkerEndId, getMarkerSelectedEndId, getMarkerSelectedStartId, getMarkerStartId, isExternalItem, isGroup, isNode, isNodeOutlet, isNodeOutput, mixinChangeSelection, mixinChangeVisibility };
8001
+ export { AddPatternToBackgroundExecution, AddPatternToBackgroundRequest, ApplyChildResizeRestrictionsExecution, ApplyChildResizeRestrictionsRequest, ApplyParentResizeRestrictionsExecution, ApplyParentResizeRestrictionsRequest, CANVAS_MOVE_FINALIZE_PROVIDERS, CANVAS_MOVE_PREPARATION_PROVIDERS, CANVAS_PROVIDERS, COMMON_PROVIDERS, CONNECTIONS_PROVIDERS, CONNECTION_GRADIENT, CONNECTION_PATH, CONNECTION_TEXT, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest, CalculateChangedPositionExecution, CalculateChangedPositionRequest, CalculateChangedSizeExecution, CalculateChangedSizeRequest, CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, CalculateConnectorConnectableSideHandler, CalculateConnectorConnectableSideRequest, CalculateFlowPointFromMinimapPointExecution, CalculateFlowPointFromMinimapPointRequest, CanvasDragHandler, CanvasMoveFinalizeExecution, CanvasMoveFinalizeRequest, CanvasMoveFinalizeValidator, CanvasMovePreparationExecution, CanvasMovePreparationRequest, CanvasMovePreparationValidator, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, ConnectionBaseDragHandler, ConnectionDragHandler, ConnectionSourceDragHandler, ConnectionTargetDragHandler, CreateConnectionDragHandler, CreateConnectionDragHandlerExecution, CreateConnectionDragHandlerRequest, CreateConnectionFinalizeExecution, CreateConnectionFinalizeRequest, CreateConnectionFinalizeValidator, CreateConnectionFromOutletPreparationExecution, CreateConnectionFromOutletPreparationRequest, CreateConnectionFromOutputPreparationExecution, CreateConnectionFromOutputPreparationRequest, CreateConnectionFromOutputPreparationValidator, CreateConnectionMarkersExecution, CreateConnectionMarkersRequest, CreateConnectionPreparationExecution, CreateConnectionPreparationRequest, CreateConnectionPreparationValidator, CreateMoveNodesDragModelFromSelectionExecution, CreateMoveNodesDragModelFromSelectionRequest, CreateRoundedRectFromElementExecution, CreateRoundedRectFromElementRequest, DRAG_AND_DROP_COMMON_PROVIDERS, EFConnectableSide, EFConnectionBehavior, EFConnectionType, EFMarkerType, EFResizeHandleType, EXTERNAL_ITEM_FINALIZE_PROVIDERS, EXTERNAL_ITEM_PREPARATION_PROVIDERS, EmitTransformChangesExecution, EmitTransformChangesRequest, ExternalItemDragHandler, ExternalItemFinalizeExecution, ExternalItemFinalizeRequest, ExternalItemFinalizeValidator, ExternalItemPreparationExecution, ExternalItemPreparationRequest, ExternalItemPreparationValidator, FBackgroundBase, FBackgroundComponent, FBezierPathBuilder, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FCirclePatternComponent, FComponentsStore, FConnectionBase, FConnectionCenterDirective, FConnectionComponent, FConnectionDragHandleComponent, FConnectionFactory, FConnectionForCreateComponent, FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, FConnectionTextPathDirective, FConnectorBase, FCreateConnectionEvent, FCreateNodeEvent, FDragHandleDirective, FDraggableBase, FDraggableDataContext, FDraggableDirective, FExternalItemBase, FExternalItemDirective, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FGroupDirective, FLineAlignmentBase, FLineAlignmentComponent, FMarkerBase, FMarkerDirective, FMinimapCanvasDirective, FMinimapComponent, FMinimapData, FMinimapDragHandler, FMinimapFlowDirective, FMinimapViewDirective, FNodeBase, FNodeDirective, FNodeInputBase, FNodeInputDirective, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FReassignConnectionEvent, FRectPatternComponent, FResizeHandleDirective, FResizeObserver, FRotateHandleDirective, FSegmentPathBuilder, FSelectionAreaBase, FSelectionAreaComponent, FSelectionChangeEvent, FSnapConnectionComponent, FStraightPathBuilder, FTransformStore, FZoomBase, FZoomDirective, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_CANVAS, F_CANVAS_ANIMATION_DURATION, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_DRAG_HANDLE_CLASS, F_CONNECTION_FEATURES, F_CONNECTION_IDENTIFIERS, F_CONNECTION_PROVIDERS, F_CONNECTORS_PROVIDERS, F_DRAGGABLE_PROVIDERS, F_DRAG_AND_DROP_PLUGIN, F_DRAG_HANDLE, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_PROVIDERS, F_LINE_ALIGNMENT, F_LINE_ALIGNMENT_PROVIDERS, F_MARKER, F_MINIMAP_DRAG_AND_DROP_PROVIDERS, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_RESIZE_HANDLE, F_SELECTED_CLASS, F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_ZOOM, F_ZOOM_PROVIDERS, FindClosestInputUsingSnapThresholdExecution, FindClosestInputUsingSnapThresholdRequest, FitToFlowExecution, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetAllCanBeConnectedInputPositionsExecution, GetAllCanBeConnectedInputPositionsRequest, GetCanBeConnectedOutputByOutletExecution, GetCanBeConnectedOutputByOutletRequest, GetCanBeConnectedOutputByOutletValidator, GetCanBeSelectedItemsExecution, GetConnectionLineExecution, GetConnectionLineRequest, GetConnectorWithRectExecution, GetConnectorWithRectRequest, GetDeepChildrenNodesAndGroupsExecution, GetDeepChildrenNodesAndGroupsRequest, GetElementRectInFlowExecution, GetElementRectInFlowRequest, GetFlowStateConnectionsExecution, GetFlowStateConnectionsRequest, GetFlowStateExecution, GetFlowStateNodesExecution, GetFlowStateNodesRequest, GetFlowStateRequest, GetInputUnderPointerExecution, GetInputUnderPointerRequest, GetInputUnderPointerValidator, GetNodeMoveRestrictionsExecution, GetNodeMoveRestrictionsRequest, GetNodePaddingExecution, GetNodePaddingRequest, GetNodeResizeRestrictionsExecution, GetNodeResizeRestrictionsRequest, GetNodesRectExecution, GetNodesRectRequest, GetNormalizedChildrenNodesRectExecution, GetNormalizedChildrenNodesRectRequest, GetNormalizedNodeRectExecution, GetNormalizedNodeRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetParentNodesExecution, GetParentNodesRequest, GetPositionInFlowExecution, GetPositionInFlowRequest, GetScaledNodeRectsWithFlowPositionExecution, GetScaledNodeRectsWithFlowPositionRequest, GetSelectionExecution, GetSelectionRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, LineElement, LineService, MINIMAP_DRAG_FINALIZE_PROVIDERS, MINIMAP_DRAG_PREPARATION_PROVIDERS, MinimapDragFinalizeExecution, MinimapDragFinalizeRequest, MinimapDragFinalizeValidator, MinimapDragPreparationExecution, MinimapDragPreparationRequest, MinimapDragPreparationValidator, MoveFrontElementsBeforeTargetElementExecution, MoveFrontElementsBeforeTargetElementRequest, NODE_MOVE_FINALIZE_PROVIDERS, NODE_MOVE_PREPARATION_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_FINALIZE_PROVIDERS, NODE_RESIZE_PREPARATION_PROVIDERS, NODE_RESIZE_PROVIDERS, NearestCoordinateFinder, NodeDragHandler, NodeMoveFinalizeExecution, NodeMoveFinalizeRequest, NodeMoveFinalizeValidator, NodeMovePreparationExecution, NodeMovePreparationRequest, NodeMovePreparationValidator, NodeResizeByChildDragHandler, NodeResizeDragHandler, NodeResizeFinalizeExecution, NodeResizeFinalizeRequest, NodeResizeFinalizeValidator, NodeResizePreparationExecution, NodeResizePreparationRequest, NodeResizePreparationValidator, PutInputConnectionHandlersToArrayExecution, PutInputConnectionHandlersToArrayRequest, PutOutputConnectionHandlersToArrayExecution, PutOutputConnectionHandlersToArrayRequest, RESIZE_DIRECTIONS, ReassignConnectionDragHandler, ReassignConnectionFinalizeExecution, ReassignConnectionFinalizeRequest, ReassignConnectionFinalizeValidator, ReassignConnectionPreparationExecution, ReassignConnectionPreparationRequest, ReassignConnectionPreparationValidator, RedrawConnectionsExecution, RedrawConnectionsRequest, ResetScaleAndCenterExecution, ResetScaleAndCenterRequest, ResetScaleExecution, ResetScaleRequest, SELECTION_AREA_FINALIZE_PROVIDERS, SELECTION_AREA_PREPARATION_PROVIDERS, SINGLE_SELECT_PROVIDERS, SelectAllExecution, SelectAllRequest, SelectAndUpdateNodeLayerExecution, SelectAndUpdateNodeLayerRequest, SelectExecution, SelectRequest, SelectionAreaDragHandle, SelectionAreaFinalizeExecution, SelectionAreaFinalizeRequest, SelectionAreaFinalizeValidator, SelectionAreaPreparationExecution, SelectionAreaPreparationRequest, SelectionAreaPreparationValidator, ShowConnectionsAfterCalculationsExecution, ShowConnectionsAfterCalculationsRequest, SingleSelectExecution, SingleSelectRequest, SingleSelectValidator, SortItemLayersExecution, SortItemLayersRequest, SortItemsByParentExecution, SortItemsByParentRequest, SortNodeLayersExecution, SortNodeLayersRequest, SubscribeOnTransformChangesExecution, SubscribeOnTransformChangesRequest, UpdateItemAndChildrenLayersExecution, UpdateItemAndChildrenLayersRequest, UpdateScaleExecution, UpdateScaleRequest, checkRectIsFinite, createSVGElement, getExternalItem, getMarkerEndId, getMarkerSelectedEndId, getMarkerSelectedStartId, getMarkerStartId, isExternalItem, isGroup, isNode, isNodeOutlet, isNodeOutput, mixinChangeSelection, mixinChangeVisibility };
8020
8002
  //# sourceMappingURL=foblex-flow.js.map