@foblex/flow 12.6.6 → 12.6.7

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 (174) hide show
  1. package/bundles/foblex-flow.umd.js +2107 -2140
  2. package/bundles/foblex-flow.umd.js.map +1 -1
  3. package/{f-backgroud/domain → domain/f-background}/add-pattern-to-background/add-pattern-to-background.request.d.ts +1 -1
  4. package/domain/f-background/index.d.ts +2 -0
  5. package/domain/f-canvas/index.d.ts +8 -0
  6. 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
  7. package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/get-connector-with-rect-request.d.ts +1 -1
  8. package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/i-connector-with-rect.d.ts +1 -1
  9. package/{f-draggable/connections/common → domain/f-connection}/index.d.ts +0 -1
  10. package/domain/f-connection/providers.d.ts +4 -0
  11. package/domain/get-flow-state/providers.d.ts +1 -1
  12. package/domain/index.d.ts +3 -0
  13. package/domain/providers.d.ts +1 -1
  14. package/esm2015/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.js +48 -0
  15. package/esm2015/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.js +6 -0
  16. package/esm2015/domain/f-background/add-pattern-to-background/index.js +3 -0
  17. package/esm2015/domain/f-background/index.js +3 -0
  18. package/esm2015/domain/f-background/providers.js +5 -0
  19. package/esm2015/{f-canvas/domain → domain/f-canvas}/center-group-or-node/center-group-or-node-request.js +1 -1
  20. package/esm2015/{f-canvas/domain → domain/f-canvas}/center-group-or-node/center-group-or-node.execution.js +1 -1
  21. package/esm2015/{f-canvas/domain → domain/f-canvas}/center-group-or-node/index.js +1 -1
  22. package/esm2015/{f-canvas/domain → domain/f-canvas}/fit-to-flow/fit-to-flow-request.js +1 -1
  23. package/esm2015/{f-canvas/domain → domain/f-canvas}/fit-to-flow/fit-to-flow.execution.js +1 -1
  24. package/esm2015/{f-canvas/domain → domain/f-canvas}/fit-to-flow/index.js +1 -1
  25. package/esm2015/domain/f-canvas/index.js +9 -0
  26. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-position/index.js +1 -1
  27. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position-request.js +1 -1
  28. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position.execution.js +1 -1
  29. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/index.js +1 -1
  30. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale-request.js +1 -1
  31. package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale.execution.js +1 -1
  32. package/esm2015/{f-canvas/domain → domain/f-canvas}/providers.js +1 -1
  33. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale/index.js +1 -1
  34. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale-request.js +1 -1
  35. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale.execution.js +1 -1
  36. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/index.js +1 -1
  37. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/reset-scale-and-center-request.js +1 -1
  38. package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/reset-scale-and-center.execution.js +1 -1
  39. package/esm2015/{f-canvas/domain → domain/f-canvas}/update-scale/index.js +1 -1
  40. package/esm2015/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale-request.js +1 -1
  41. package/esm2015/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale.execution.js +1 -1
  42. package/esm2015/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.js +39 -0
  43. package/esm2015/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.js +8 -0
  44. package/esm2015/domain/f-connection/find-closest-input-using-snap-threshold/index.js +3 -0
  45. package/esm2015/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.js +55 -0
  46. package/esm2015/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.js +6 -0
  47. package/esm2015/domain/f-connection/get-all-can-be-connected-input-positions/index.js +3 -0
  48. package/esm2015/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.js +6 -0
  49. package/esm2015/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.js +28 -0
  50. package/esm2015/domain/f-connection/get-connector-with-rect/i-connector-with-rect.js +2 -0
  51. package/esm2015/domain/f-connection/get-connector-with-rect/index.js +4 -0
  52. package/esm2015/domain/f-connection/index.js +5 -0
  53. package/esm2015/domain/f-connection/providers.js +9 -0
  54. package/esm2015/domain/index.js +4 -1
  55. package/esm2015/domain/providers.js +6 -4
  56. package/esm2015/f-backgroud/domain/index.js +1 -3
  57. package/esm2015/f-backgroud/f-background.component.js +3 -3
  58. package/esm2015/f-canvas/domain/index.js +1 -9
  59. package/esm2015/f-canvas/f-canvas.component.js +2 -3
  60. package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.js +2 -2
  61. package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/index.js +1 -2
  62. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.js +1 -2
  63. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.js +1 -2
  64. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.js +1 -2
  65. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/index.js +1 -2
  66. package/esm2015/f-draggable/connections/create-connection/create-connection.drag-handler.js +2 -3
  67. package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.js +1 -2
  68. package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.js +85 -0
  69. package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.js +7 -0
  70. package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.js +35 -0
  71. package/esm2015/f-draggable/connections/get-input-under-pointer/index.js +4 -0
  72. package/esm2015/f-draggable/connections/index.js +2 -2
  73. package/esm2015/f-draggable/connections/providers.js +20 -12
  74. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.js +1 -2
  75. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.js +2 -2
  76. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.js +1 -2
  77. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.js +2 -3
  78. package/esm2015/f-draggable/node/connection-base-drag-handler.js +2 -2
  79. package/esm2015/f-draggable/providers.js +5 -5
  80. package/esm2015/f-flow/f-flow.component.js +5 -6
  81. package/f-backgroud/domain/index.d.ts +0 -2
  82. package/f-canvas/domain/index.d.ts +0 -8
  83. package/f-draggable/connections/create-connection/create-connection-finalize/index.d.ts +0 -1
  84. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.d.ts +0 -1
  85. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.d.ts +0 -1
  86. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.d.ts +0 -1
  87. package/f-draggable/connections/create-connection/create-connection-preparation/index.d.ts +0 -1
  88. package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +1 -1
  89. package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.d.ts +0 -1
  90. package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/get-input-under-pointer.execution.d.ts +3 -3
  91. package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/get-input-under-pointer.request.d.ts +2 -2
  92. package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/get-input-under-pointer.validator.d.ts +1 -1
  93. package/f-draggable/connections/index.d.ts +1 -1
  94. package/f-draggable/connections/providers.d.ts +4 -1
  95. package/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.d.ts +0 -1
  96. package/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.d.ts +0 -1
  97. package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +1 -1
  98. package/f-draggable/node/connection-base-drag-handler.d.ts +1 -1
  99. package/f-draggable/providers.d.ts +1 -1
  100. package/f-minimap/domain/providers.d.ts +1 -1
  101. package/f-node/providers.d.ts +1 -1
  102. package/fesm2015/foblex-flow.js +924 -958
  103. package/fesm2015/foblex-flow.js.map +1 -1
  104. package/package.json +1 -1
  105. package/esm2015/f-backgroud/domain/add-pattern-to-background/add-pattern-to-background.execution.js +0 -48
  106. package/esm2015/f-backgroud/domain/add-pattern-to-background/add-pattern-to-background.request.js +0 -6
  107. package/esm2015/f-backgroud/domain/add-pattern-to-background/index.js +0 -3
  108. package/esm2015/f-backgroud/domain/providers.js +0 -5
  109. package/esm2015/f-draggable/connections/common/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.js +0 -39
  110. package/esm2015/f-draggable/connections/common/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.js +0 -8
  111. package/esm2015/f-draggable/connections/common/find-closest-input-using-snap-threshold/index.js +0 -3
  112. package/esm2015/f-draggable/connections/common/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.js +0 -55
  113. package/esm2015/f-draggable/connections/common/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.js +0 -6
  114. package/esm2015/f-draggable/connections/common/get-all-can-be-connected-input-positions/index.js +0 -3
  115. package/esm2015/f-draggable/connections/common/get-connector-with-rect/get-connector-with-rect-request.js +0 -6
  116. package/esm2015/f-draggable/connections/common/get-connector-with-rect/get-connector-with-rect.execution.js +0 -28
  117. package/esm2015/f-draggable/connections/common/get-connector-with-rect/i-connector-with-rect.js +0 -2
  118. package/esm2015/f-draggable/connections/common/get-connector-with-rect/index.js +0 -4
  119. package/esm2015/f-draggable/connections/common/get-input-under-pointer/get-input-under-pointer.execution.js +0 -85
  120. package/esm2015/f-draggable/connections/common/get-input-under-pointer/get-input-under-pointer.request.js +0 -7
  121. package/esm2015/f-draggable/connections/common/get-input-under-pointer/get-input-under-pointer.validator.js +0 -35
  122. package/esm2015/f-draggable/connections/common/get-input-under-pointer/index.js +0 -4
  123. package/esm2015/f-draggable/connections/common/index.js +0 -6
  124. package/esm2015/f-draggable/connections/common/providers.js +0 -12
  125. package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/providers.js +0 -7
  126. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.js +0 -5
  127. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.js +0 -5
  128. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.js +0 -7
  129. package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/providers.js +0 -13
  130. package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.js +0 -7
  131. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.js +0 -7
  132. package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.js +0 -7
  133. package/f-draggable/connections/common/providers.d.ts +0 -5
  134. package/f-draggable/connections/create-connection/create-connection-finalize/providers.d.ts +0 -3
  135. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.d.ts +0 -2
  136. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.d.ts +0 -2
  137. package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.d.ts +0 -3
  138. package/f-draggable/connections/create-connection/create-connection-preparation/providers.d.ts +0 -3
  139. package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.d.ts +0 -3
  140. package/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.d.ts +0 -3
  141. package/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.d.ts +0 -3
  142. /package/{f-backgroud/domain → domain/f-background}/add-pattern-to-background/add-pattern-to-background.execution.d.ts +0 -0
  143. /package/{f-backgroud/domain → domain/f-background}/add-pattern-to-background/index.d.ts +0 -0
  144. /package/{f-backgroud/domain → domain/f-background}/providers.d.ts +0 -0
  145. /package/{f-canvas/domain → domain/f-canvas}/center-group-or-node/center-group-or-node-request.d.ts +0 -0
  146. /package/{f-canvas/domain → domain/f-canvas}/center-group-or-node/center-group-or-node.execution.d.ts +0 -0
  147. /package/{f-canvas/domain → domain/f-canvas}/center-group-or-node/index.d.ts +0 -0
  148. /package/{f-canvas/domain → domain/f-canvas}/fit-to-flow/fit-to-flow-request.d.ts +0 -0
  149. /package/{f-canvas/domain → domain/f-canvas}/fit-to-flow/fit-to-flow.execution.d.ts +0 -0
  150. /package/{f-canvas/domain → domain/f-canvas}/fit-to-flow/index.d.ts +0 -0
  151. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-position/index.d.ts +0 -0
  152. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position-request.d.ts +0 -0
  153. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position.execution.d.ts +0 -0
  154. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/index.d.ts +0 -0
  155. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale-request.d.ts +0 -0
  156. /package/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale.execution.d.ts +0 -0
  157. /package/{f-canvas/domain → domain/f-canvas}/providers.d.ts +0 -0
  158. /package/{f-canvas/domain → domain/f-canvas}/reset-scale/index.d.ts +0 -0
  159. /package/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale-request.d.ts +0 -0
  160. /package/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale.execution.d.ts +0 -0
  161. /package/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/index.d.ts +0 -0
  162. /package/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/reset-scale-and-center-request.d.ts +0 -0
  163. /package/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/reset-scale-and-center.execution.d.ts +0 -0
  164. /package/{f-canvas/domain → domain/f-canvas}/update-scale/index.d.ts +0 -0
  165. /package/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale-request.d.ts +0 -0
  166. /package/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale.execution.d.ts +0 -0
  167. /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
  168. /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
  169. /package/{f-draggable/connections/common → domain/f-connection}/find-closest-input-using-snap-threshold/index.d.ts +0 -0
  170. /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
  171. /package/{f-draggable/connections/common → domain/f-connection}/get-all-can-be-connected-input-positions/index.d.ts +0 -0
  172. /package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/get-connector-with-rect.execution.d.ts +0 -0
  173. /package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/index.d.ts +0 -0
  174. /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);
@@ -1656,11 +2008,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1656
2008
  type: Injectable
1657
2009
  }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
1658
2010
 
1659
- const CREATE_CONNECTION_FINALIZE_PROVIDERS = [
1660
- CreateConnectionFinalizeExecution,
1661
- CreateConnectionFinalizeValidator,
1662
- ];
1663
-
1664
2011
  class CreateConnectionDragHandlerRequest {
1665
2012
  constructor(onPointerDownPosition, connector) {
1666
2013
  this.onPointerDownPosition = onPointerDownPosition;
@@ -1701,10 +2048,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1701
2048
  type: Injectable
1702
2049
  }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i2.FMediator }]; } });
1703
2050
 
1704
- const CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS = [
1705
- CreateConnectionDragHandlerExecution,
1706
- ];
1707
-
1708
2051
  class CreateConnectionFromOutletPreparationRequest {
1709
2052
  constructor(event) {
1710
2053
  this.event = event;
@@ -1753,10 +2096,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1753
2096
  type: Injectable
1754
2097
  }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: i2.FMediator }]; } });
1755
2098
 
1756
- const CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS = [
1757
- CreateConnectionFromOutletPreparationExecution,
1758
- ];
1759
-
1760
2099
  class CreateConnectionFromOutputPreparationRequest {
1761
2100
  constructor(event) {
1762
2101
  this.event = event;
@@ -1819,11 +2158,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1819
2158
  type: Injectable
1820
2159
  }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
1821
2160
 
1822
- const CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS = [
1823
- CreateConnectionFromOutputPreparationExecution,
1824
- CreateConnectionFromOutputPreparationValidator,
1825
- ];
1826
-
1827
2161
  class CreateConnectionPreparationRequest {
1828
2162
  constructor(event) {
1829
2163
  this.event = event;
@@ -1886,14 +2220,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1886
2220
  type: Injectable
1887
2221
  }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }]; } });
1888
2222
 
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
2223
  class ReassignConnectionFinalizeRequest {
1898
2224
  constructor(event) {
1899
2225
  this.event = event;
@@ -2023,11 +2349,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2023
2349
  type: Injectable
2024
2350
  }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
2025
2351
 
2026
- const REASSIGN_CONNECTION_FINALIZE_PROVIDERS = [
2027
- ReassignConnectionFinalizeExecution,
2028
- ReassignConnectionFinalizeValidator,
2029
- ];
2030
-
2031
2352
  class ReassignConnectionPreparationRequest {
2032
2353
  constructor(event) {
2033
2354
  this.event = event;
@@ -2750,12 +3071,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2750
3071
  }]
2751
3072
  }] });
2752
3073
 
2753
- let uniqueId$8 = 0;
3074
+ let uniqueId$6 = 0;
2754
3075
  class FConnectionForCreateComponent extends FConnectionBase {
2755
3076
  constructor(elementReference, fConnectionFactory, fComponentsStore) {
2756
3077
  super(elementReference, fConnectionFactory);
2757
3078
  this.fComponentsStore = fComponentsStore;
2758
- this.fId = `f-connection-for-create-${uniqueId$8++}`;
3079
+ this.fId = `f-connection-for-create-${uniqueId$6++}`;
2759
3080
  this.fText = '';
2760
3081
  this._fStartColor = 'black';
2761
3082
  this._fEndColor = 'black';
@@ -2873,12 +3194,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2873
3194
  args: [FConnectionCenterDirective, { descendants: true }]
2874
3195
  }] } });
2875
3196
 
2876
- let uniqueId$7 = 0;
3197
+ let uniqueId$5 = 0;
2877
3198
  class FConnectionComponent extends FConnectionBase {
2878
3199
  constructor(elementReference, fConnectionFactory, fComponentsStore) {
2879
3200
  super(elementReference, fConnectionFactory);
2880
3201
  this.fComponentsStore = fComponentsStore;
2881
- this.fId = `f-connection-${uniqueId$7++}`;
3202
+ this.fId = `f-connection-${uniqueId$5++}`;
2882
3203
  this._fText = '';
2883
3204
  this._fStartColor = 'black';
2884
3205
  this._fEndColor = 'black';
@@ -3102,12 +3423,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
3102
3423
  type: Input
3103
3424
  }] } });
3104
3425
 
3105
- let uniqueId$6 = 0;
3426
+ let uniqueId$4 = 0;
3106
3427
  class FSnapConnectionComponent extends FConnectionBase {
3107
3428
  constructor(elementReference, fConnectionFactory, fComponentsStore) {
3108
3429
  super(elementReference, fConnectionFactory);
3109
3430
  this.fComponentsStore = fComponentsStore;
3110
- this.fId = `f-snap-connection-${uniqueId$6++}`;
3431
+ this.fId = `f-snap-connection-${uniqueId$4++}`;
3111
3432
  this.fText = '';
3112
3433
  this._fStartColor = 'black';
3113
3434
  this._fEndColor = 'black';
@@ -3326,20 +3647,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
3326
3647
  type: Injectable
3327
3648
  }], ctorParameters: function () { return [{ type: FComponentsStore }, { type: FDraggableDataContext }, { type: i1.BrowserService }]; } });
3328
3649
 
3329
- const REASSIGN_CONNECTION_PREPARATION_PROVIDERS = [
3650
+ const CONNECTIONS_PROVIDERS = [
3651
+ GetInputUnderPointerExecution,
3652
+ GetInputUnderPointerValidator,
3653
+ CreateConnectionFinalizeExecution,
3654
+ CreateConnectionFinalizeValidator,
3655
+ CreateConnectionDragHandlerExecution,
3656
+ CreateConnectionFromOutletPreparationExecution,
3657
+ GetCanBeConnectedOutputByOutletExecution,
3658
+ GetCanBeConnectedOutputByOutletValidator,
3659
+ CreateConnectionFromOutputPreparationExecution,
3660
+ CreateConnectionFromOutputPreparationValidator,
3661
+ CreateConnectionPreparationExecution,
3662
+ CreateConnectionPreparationValidator,
3663
+ ReassignConnectionFinalizeExecution,
3664
+ ReassignConnectionFinalizeValidator,
3330
3665
  ReassignConnectionPreparationExecution,
3331
3666
  ReassignConnectionPreparationValidator,
3332
3667
  ];
3333
3668
 
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
3669
  class GetNodePaddingRequest {
3344
3670
  constructor(fNode, rect) {
3345
3671
  this.fNode = fNode;
@@ -4826,13 +5152,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
4826
5152
  }]
4827
5153
  }] });
4828
5154
 
4829
- let uniqueId$5 = 0;
5155
+ let uniqueId$3 = 0;
4830
5156
  class FExternalItemDirective extends FExternalItemBase {
4831
5157
  constructor(elementReference, fExternalItemService) {
4832
5158
  super();
4833
5159
  this.elementReference = elementReference;
4834
5160
  this.fExternalItemService = fExternalItemService;
4835
- this.fExternalItemId = `f-external-item-${uniqueId$5++}`;
5161
+ this.fExternalItemId = `f-external-item-${uniqueId$3++}`;
4836
5162
  this.fDisabled = false;
4837
5163
  }
4838
5164
  get hostElement() {
@@ -5038,13 +5364,6 @@ class FSelectionChangeEvent {
5038
5364
  }
5039
5365
  }
5040
5366
 
5041
- class MinimapDragPreparationRequest {
5042
- constructor(event, minimap) {
5043
- this.event = event;
5044
- this.minimap = minimap;
5045
- }
5046
- }
5047
-
5048
5367
  class CalculateFlowPointFromMinimapPointRequest {
5049
5368
  constructor(flowRect, canvasPosition, eventPoint, minimap) {
5050
5369
  this.flowRect = flowRect;
@@ -5088,6 +5407,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
5088
5407
  type: Injectable
5089
5408
  }], ctorParameters: function () { return [{ type: FComponentsStore }]; } });
5090
5409
 
5410
+ class MinimapDragFinalizeRequest {
5411
+ constructor(event) {
5412
+ this.event = event;
5413
+ }
5414
+ }
5415
+
5416
+ let MinimapDragFinalizeExecution = class MinimapDragFinalizeExecution {
5417
+ constructor(fDraggableDataContext) {
5418
+ this.fDraggableDataContext = fDraggableDataContext;
5419
+ }
5420
+ handle(request) {
5421
+ this.fDraggableDataContext.draggableItems.forEach((x) => {
5422
+ var _a;
5423
+ (_a = x.complete) === null || _a === void 0 ? void 0 : _a.call(x);
5424
+ });
5425
+ }
5426
+ };
5427
+ MinimapDragFinalizeExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeExecution, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
5428
+ MinimapDragFinalizeExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeExecution });
5429
+ MinimapDragFinalizeExecution = __decorate([
5430
+ FExecutionRegister(MinimapDragFinalizeRequest)
5431
+ ], MinimapDragFinalizeExecution);
5432
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeExecution, decorators: [{
5433
+ type: Injectable
5434
+ }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
5435
+
5091
5436
  class FMinimapDragHandler {
5092
5437
  constructor(fComponentsStore, fMediator, flowRect, canvasPosition, eventPoint, minimap) {
5093
5438
  this.fComponentsStore = fComponentsStore;
@@ -5123,6 +5468,35 @@ class FMinimapDragHandler {
5123
5468
  }
5124
5469
  }
5125
5470
 
5471
+ let MinimapDragFinalizeValidator = class MinimapDragFinalizeValidator {
5472
+ constructor(fDraggableDataContext) {
5473
+ this.fDraggableDataContext = fDraggableDataContext;
5474
+ }
5475
+ handle(request) {
5476
+ return this.fDraggableDataContext.draggableItems.some((x) => x instanceof FMinimapDragHandler);
5477
+ }
5478
+ };
5479
+ MinimapDragFinalizeValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeValidator, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
5480
+ MinimapDragFinalizeValidator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeValidator });
5481
+ MinimapDragFinalizeValidator = __decorate([
5482
+ FValidatorRegister(MinimapDragFinalizeRequest)
5483
+ ], MinimapDragFinalizeValidator);
5484
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MinimapDragFinalizeValidator, decorators: [{
5485
+ type: Injectable
5486
+ }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
5487
+
5488
+ const MINIMAP_DRAG_FINALIZE_PROVIDERS = [
5489
+ MinimapDragFinalizeExecution,
5490
+ MinimapDragFinalizeValidator,
5491
+ ];
5492
+
5493
+ class MinimapDragPreparationRequest {
5494
+ constructor(event, minimap) {
5495
+ this.event = event;
5496
+ this.minimap = minimap;
5497
+ }
5498
+ }
5499
+
5126
5500
  let MinimapDragPreparationExecution = class MinimapDragPreparationExecution {
5127
5501
  constructor(fComponentsStore, fMediator, fDraggableDataContext) {
5128
5502
  this.fComponentsStore = fComponentsStore;
@@ -5185,13 +5559,34 @@ const MINIMAP_DRAG_PREPARATION_PROVIDERS = [
5185
5559
  MinimapDragPreparationValidator,
5186
5560
  ];
5187
5561
 
5188
- class MinimapDragFinalizeRequest {
5562
+ function checkRectIsFinite(rect) {
5563
+ if (!Number.isFinite(rect.width) || !Number.isFinite(rect.height) || !Number.isFinite(rect.x) || !Number.isFinite(rect.y)) {
5564
+ return RectExtensions.initialize(0, 0, 0, 0);
5565
+ }
5566
+ return rect;
5567
+ }
5568
+
5569
+ class FMinimapData {
5570
+ constructor(element, scale = 1, viewBox = RectExtensions.initialize(0, 0, 0, 0)) {
5571
+ this.element = element;
5572
+ this.scale = scale;
5573
+ this.viewBox = viewBox;
5574
+ }
5575
+ }
5576
+
5577
+ const F_MINIMAP_DRAG_AND_DROP_PROVIDERS = [
5578
+ CalculateFlowPointFromMinimapPointExecution,
5579
+ ...MINIMAP_DRAG_FINALIZE_PROVIDERS,
5580
+ ...MINIMAP_DRAG_PREPARATION_PROVIDERS,
5581
+ ];
5582
+
5583
+ class SelectionAreaFinalizeRequest {
5189
5584
  constructor(event) {
5190
5585
  this.event = event;
5191
5586
  }
5192
5587
  }
5193
5588
 
5194
- let MinimapDragFinalizeExecution = class MinimapDragFinalizeExecution {
5589
+ let SelectionAreaFinalizeExecution = class SelectionAreaFinalizeExecution {
5195
5590
  constructor(fDraggableDataContext) {
5196
5591
  this.fDraggableDataContext = fDraggableDataContext;
5197
5592
  }
@@ -5202,66 +5597,12 @@ let MinimapDragFinalizeExecution = class MinimapDragFinalizeExecution {
5202
5597
  });
5203
5598
  }
5204
5599
  };
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 {
5249
- constructor(fDraggableDataContext) {
5250
- this.fDraggableDataContext = fDraggableDataContext;
5251
- }
5252
- handle(request) {
5253
- this.fDraggableDataContext.draggableItems.forEach((x) => {
5254
- var _a;
5255
- (_a = x.complete) === null || _a === void 0 ? void 0 : _a.call(x);
5256
- });
5257
- }
5258
- };
5259
- SelectionAreaFinalizeExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectionAreaFinalizeExecution, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
5260
- SelectionAreaFinalizeExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectionAreaFinalizeExecution });
5261
- SelectionAreaFinalizeExecution = __decorate([
5262
- FExecutionRegister(SelectionAreaFinalizeRequest)
5263
- ], SelectionAreaFinalizeExecution);
5264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectionAreaFinalizeExecution, decorators: [{
5600
+ SelectionAreaFinalizeExecution.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectionAreaFinalizeExecution, deps: [{ token: FDraggableDataContext }], target: i0.ɵɵFactoryTarget.Injectable });
5601
+ SelectionAreaFinalizeExecution.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectionAreaFinalizeExecution });
5602
+ SelectionAreaFinalizeExecution = __decorate([
5603
+ FExecutionRegister(SelectionAreaFinalizeRequest)
5604
+ ], SelectionAreaFinalizeExecution);
5605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectionAreaFinalizeExecution, decorators: [{
5265
5606
  type: Injectable
5266
5607
  }], ctorParameters: function () { return [{ type: FDraggableDataContext }]; } });
5267
5608
 
@@ -5403,6 +5744,69 @@ const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [
5403
5744
  ...SELECTION_AREA_PREPARATION_PROVIDERS
5404
5745
  ];
5405
5746
 
5747
+ class FSelectionAreaBase {
5748
+ }
5749
+ FSelectionAreaBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5750
+ FSelectionAreaBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: FSelectionAreaBase, ngImport: i0 });
5751
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaBase, decorators: [{
5752
+ type: Directive
5753
+ }] });
5754
+
5755
+ class FSelectionAreaComponent extends FSelectionAreaBase {
5756
+ constructor(elementReference, fMediator) {
5757
+ super();
5758
+ this.elementReference = elementReference;
5759
+ this.fMediator = fMediator;
5760
+ }
5761
+ get hostElement() {
5762
+ return this.elementReference.nativeElement;
5763
+ }
5764
+ ngOnInit() {
5765
+ this.hostElement.style.display = 'none';
5766
+ }
5767
+ hide() {
5768
+ this.hostElement.style.display = 'none';
5769
+ }
5770
+ show() {
5771
+ this.hostElement.style.display = 'block';
5772
+ }
5773
+ draw(object) {
5774
+ const style = this.hostElement.style;
5775
+ style.left = object.x + 'px';
5776
+ style.top = object.y + 'px';
5777
+ style.width = object.width + 'px';
5778
+ style.height = object.height + 'px';
5779
+ }
5780
+ onPointerDown(event) {
5781
+ this.fMediator.send(new SelectionAreaPreparationRequest(event, this));
5782
+ }
5783
+ onPointerUp(event) {
5784
+ this.fMediator.send(new SelectionAreaFinalizeRequest(event));
5785
+ }
5786
+ }
5787
+ 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 });
5788
+ 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: [
5789
+ { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },
5790
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true, styles: [":host{position:absolute}\n"] });
5791
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FSelectionAreaComponent, decorators: [{
5792
+ type: Component,
5793
+ args: [{
5794
+ selector: "f-selection-area",
5795
+ template: ``,
5796
+ styleUrls: ['./f-selection-area.component.scss'],
5797
+ host: {
5798
+ 'class': 'f-selection-area f-component'
5799
+ },
5800
+ providers: [
5801
+ { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },
5802
+ ],
5803
+ }]
5804
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.FMediator }]; } });
5805
+
5806
+ const F_SELECTION_AREA_PROVIDERS = [
5807
+ FSelectionAreaComponent
5808
+ ];
5809
+
5406
5810
  const F_DRAGGABLE_PROVIDERS = [
5407
5811
  ...CANVAS_PROVIDERS,
5408
5812
  ...CONNECTIONS_PROVIDERS,
@@ -5739,45 +6143,6 @@ const F_SELECTION_FEATURES = [
5739
6143
  SelectAndUpdateNodeLayerExecution
5740
6144
  ];
5741
6145
 
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
6146
  let GetCanBeSelectedItemsExecution = class GetCanBeSelectedItemsExecution {
5782
6147
  constructor(fComponentsStore, fDraggableDataContext, fMediator) {
5783
6148
  this.fComponentsStore = fComponentsStore;
@@ -6383,415 +6748,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
6383
6748
  type: Injectable
6384
6749
  }], ctorParameters: function () { return [{ type: FTransformStore }, { type: FComponentsStore }]; } });
6385
6750
 
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
- ];
6751
+ const F_CANVAS_ANIMATION_DURATION = 150;
6788
6752
 
6789
- const F_BACKGROUND_FEATURES = [
6790
- AddPatternToBackgroundExecution
6791
- ];
6753
+ function createSVGElement(tag, fBrowser) {
6754
+ return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);
6755
+ }
6792
6756
 
6793
6757
  const COMMON_PROVIDERS = [
6794
6758
  ...F_CANVAS_FEATURES,
6759
+ ...F_CONNECTION_FEATURES,
6795
6760
  ...F_BACKGROUND_FEATURES,
6796
6761
  CreateConnectionMarkersExecution,
6797
6762
  CreateRoundedRectFromElementExecution,
@@ -6816,54 +6781,14 @@ const COMMON_PROVIDERS = [
6816
6781
  MoveFrontElementsBeforeTargetElementExecution,
6817
6782
  ];
6818
6783
 
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;
6784
+ let uniqueId$2 = 0;
6860
6785
  class FRectPatternComponent {
6861
6786
  constructor(elementReference, fBrowser) {
6862
6787
  this.elementReference = elementReference;
6863
6788
  this.fBrowser = fBrowser;
6864
6789
  this._subscription$ = new Subscription();
6865
6790
  this._stateChanges = new Subject();
6866
- this.id = `f-pattern-${uniqueId$3++}`;
6791
+ this.id = `f-pattern-${uniqueId$2++}`;
6867
6792
  this._vColor = 'rgba(0,0,0,0.1)';
6868
6793
  this._hColor = 'rgba(0,0,0,0.1)';
6869
6794
  this._vSize = 20;
@@ -6970,14 +6895,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
6970
6895
  type: Input
6971
6896
  }] } });
6972
6897
 
6973
- let uniqueId$2 = 0;
6898
+ let uniqueId$1 = 0;
6974
6899
  class FCirclePatternComponent {
6975
6900
  constructor(elementReference, fBrowser) {
6976
6901
  this.elementReference = elementReference;
6977
6902
  this.fBrowser = fBrowser;
6978
6903
  this._subscription$ = new Subscription();
6979
6904
  this._stateChanges = new Subject();
6980
- this.id = `f-pattern-${uniqueId$2++}`;
6905
+ this.id = `f-pattern-${uniqueId$1++}`;
6981
6906
  this._color = 'rgba(0,0,0,0.1)';
6982
6907
  this._radius = 20;
6983
6908
  this._scaledRadius = 20;
@@ -7075,7 +7000,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
7075
7000
  type: Directive
7076
7001
  }] });
7077
7002
 
7078
- let uniqueId$1 = 0;
7079
7003
  class FBackgroundComponent extends FBackgroundBase {
7080
7004
  constructor(elementReference, fComponentsStore, fMediator) {
7081
7005
  super();
@@ -7128,6 +7052,127 @@ const F_BACKGROUND_PROVIDERS = [
7128
7052
  FCirclePatternComponent
7129
7053
  ];
7130
7054
 
7055
+ class FCanvasChangeEvent {
7056
+ constructor(position, scale) {
7057
+ this.position = position;
7058
+ this.scale = scale;
7059
+ }
7060
+ }
7061
+
7062
+ const F_CANVAS = new InjectionToken('F_CANVAS');
7063
+ class FCanvasBase {
7064
+ constructor() {
7065
+ this.transform = TransformModelExtensions.default();
7066
+ }
7067
+ getPosition() {
7068
+ return this.transform.position;
7069
+ }
7070
+ setPosition(position) {
7071
+ this.transform.position = position;
7072
+ }
7073
+ emitCanvasChangeEvent() {
7074
+ this.fCanvasChange.emit(new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale));
7075
+ }
7076
+ }
7077
+ FCanvasBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7078
+ FCanvasBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: FCanvasBase, ngImport: i0 });
7079
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasBase, decorators: [{
7080
+ type: Directive
7081
+ }] });
7082
+
7083
+ class FCanvasComponent extends FCanvasBase {
7084
+ constructor(elementReference, fMediator, fComponentsStore) {
7085
+ super();
7086
+ this.elementReference = elementReference;
7087
+ this.fMediator = fMediator;
7088
+ this.fComponentsStore = fComponentsStore;
7089
+ this.fCanvasChange = new EventEmitter();
7090
+ }
7091
+ set position(value) {
7092
+ this.fMediator.send(new InputCanvasPositionRequest(this.transform, value));
7093
+ }
7094
+ set scale(value) {
7095
+ this.fMediator.send(new InputCanvasScaleRequest(this.transform, value));
7096
+ }
7097
+ get fNodes() {
7098
+ return this.fComponentsStore.fNodes;
7099
+ }
7100
+ get hostElement() {
7101
+ return this.elementReference.nativeElement;
7102
+ }
7103
+ ngOnInit() {
7104
+ this.fComponentsStore.fCanvas = this;
7105
+ }
7106
+ redraw() {
7107
+ var _a;
7108
+ (_a = this.fComponentsStore.fBackground) === null || _a === void 0 ? void 0 : _a.setTransform(this.transform);
7109
+ this.hostElement.setAttribute("style", `transform: ${TransformModelExtensions.toString(this.transform)}`);
7110
+ this.fMediator.send(new EmitTransformChangesRequest());
7111
+ }
7112
+ redrawWithAnimation() {
7113
+ var _a;
7114
+ (_a = this.fComponentsStore.fBackground) === null || _a === void 0 ? void 0 : _a.setTransform(this.transform);
7115
+ this.hostElement.setAttribute("style", `transition: transform ${F_CANVAS_ANIMATION_DURATION}ms ease-in-out; transform: ${TransformModelExtensions.toString(this.transform)}`);
7116
+ setTimeout(() => {
7117
+ this.redraw();
7118
+ }, F_CANVAS_ANIMATION_DURATION);
7119
+ }
7120
+ centerGroupOrNode(id, animated = true) {
7121
+ this.fMediator.send(new CenterGroupOrNodeRequest(id, animated));
7122
+ }
7123
+ fitToScreen(toCenter = PointExtensions.initialize(), animated = true) {
7124
+ this.fMediator.send(new FitToFlowRequest(toCenter, animated));
7125
+ }
7126
+ resetScaleAndCenter(animated = true) {
7127
+ this.fMediator.send(new ResetScaleAndCenterRequest(animated));
7128
+ }
7129
+ setZoom(scale, toPosition = PointExtensions.initialize()) {
7130
+ this.fMediator.send(new UpdateScaleRequest(scale, toPosition));
7131
+ }
7132
+ resetZoom() {
7133
+ this.fMediator.send(new ResetScaleRequest());
7134
+ }
7135
+ }
7136
+ 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 });
7137
+ 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: [
7138
+ { provide: F_CANVAS, useExisting: FCanvasComponent }
7139
+ ], 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 });
7140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FCanvasComponent, decorators: [{
7141
+ type: Component,
7142
+ args: [{
7143
+ selector: 'f-canvas',
7144
+ templateUrl: './f-canvas.component.html',
7145
+ styleUrls: ['./f-canvas.component.scss'],
7146
+ exportAs: 'fComponent',
7147
+ host: {
7148
+ 'class': 'f-component f-canvas',
7149
+ },
7150
+ providers: [
7151
+ { provide: F_CANVAS, useExisting: FCanvasComponent }
7152
+ ],
7153
+ changeDetection: ChangeDetectionStrategy.OnPush,
7154
+ }]
7155
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.FMediator }, { type: FComponentsStore }]; }, propDecorators: { fCanvasChange: [{
7156
+ type: Output
7157
+ }], position: [{
7158
+ type: Input
7159
+ }], scale: [{
7160
+ type: Input
7161
+ }], fGroupsContainer: [{
7162
+ type: ViewChild,
7163
+ args: ['fGroupsContainer', { static: true }]
7164
+ }], fNodesContainer: [{
7165
+ type: ViewChild,
7166
+ args: ['fNodesContainer', { static: true }]
7167
+ }], fConnectionsContainer: [{
7168
+ type: ViewChild,
7169
+ args: ['fConnectionsContainer', { static: true }]
7170
+ }] } });
7171
+
7172
+ const F_CANVAS_PROVIDERS = [
7173
+ FCanvasComponent,
7174
+ ];
7175
+
7131
7176
  class LineElement {
7132
7177
  constructor(fBrowser, hostElement) {
7133
7178
  this.hostElement = hostElement;
@@ -7387,21 +7432,6 @@ const F_LINE_ALIGNMENT_PROVIDERS = [
7387
7432
  FLineAlignmentComponent
7388
7433
  ];
7389
7434
 
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
7435
  class FMinimapFlowDirective {
7406
7436
  constructor(elementReference, fMediator, fComponentsStore) {
7407
7437
  this.elementReference = elementReference;
@@ -7633,69 +7663,6 @@ const F_MINIMAP_PROVIDERS = [
7633
7663
  FMinimapFlowDirective,
7634
7664
  ];
7635
7665
 
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
7666
  const F_FLOW = new InjectionToken('F_FLOW');
7700
7667
  class FFlowBase {
7701
7668
  }
@@ -7735,7 +7702,6 @@ class FFlowComponent extends FFlowBase {
7735
7702
  return this.fComponentsStore.componentsData$.pipe(startWith(null), debounceTime(1)).subscribe(() => {
7736
7703
  this.fMediator.send(new RedrawConnectionsRequest());
7737
7704
  if (!this.isLoaded) {
7738
- // this.fMediator.send(new ShowConnectionsAfterCalculationsRequest());
7739
7705
  this.isLoaded = true;
7740
7706
  this.fLoaded.emit();
7741
7707
  }
@@ -7779,8 +7745,8 @@ FFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
7779
7745
  FTransformStore,
7780
7746
  FDraggableDataContext,
7781
7747
  FConnectionFactory,
7782
- ...F_DRAGGABLE_PROVIDERS,
7783
7748
  ...COMMON_PROVIDERS,
7749
+ ...F_DRAGGABLE_PROVIDERS,
7784
7750
  { provide: F_FLOW, useExisting: FFlowComponent },
7785
7751
  ], 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
7752
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FFlowComponent, decorators: [{
@@ -7799,8 +7765,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
7799
7765
  FTransformStore,
7800
7766
  FDraggableDataContext,
7801
7767
  FConnectionFactory,
7802
- ...F_DRAGGABLE_PROVIDERS,
7803
7768
  ...COMMON_PROVIDERS,
7769
+ ...F_DRAGGABLE_PROVIDERS,
7804
7770
  { provide: F_FLOW, useExisting: FFlowComponent },
7805
7771
  ],
7806
7772
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -8016,5 +7982,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
8016
7982
  * Generated bundle index. Do not edit.
8017
7983
  */
8018
7984
 
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 };
7985
+ 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
7986
  //# sourceMappingURL=foblex-flow.js.map