@foblex/flow 17.8.9 → 17.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/README.md +1 -1
  2. package/domain/f-node/providers.d.ts +1 -1
  3. package/domain/providers.d.ts +1 -1
  4. package/drag-toolkit/drag-and-drop-base.d.ts +29 -30
  5. package/drag-toolkit/event.extensions.d.ts +4 -4
  6. package/drag-toolkit/index.d.ts +0 -1
  7. package/esm2022/drag-toolkit/drag-and-drop-base.mjs +94 -93
  8. package/esm2022/drag-toolkit/event.extensions.mjs +13 -14
  9. package/esm2022/drag-toolkit/index.mjs +1 -2
  10. package/esm2022/f-canvas/f-canvas.component.mjs +2 -2
  11. package/esm2022/f-connection/f-connection/f-connection.component.mjs +3 -3
  12. package/esm2022/f-draggable/f-canvas/f-canvas.drag-handler.mjs +3 -1
  13. package/esm2022/f-draggable/f-draggable-base.mjs +3 -4
  14. package/esm2022/f-draggable/f-draggable-data-context.mjs +1 -2
  15. package/esm2022/f-draggable/f-draggable.directive.mjs +6 -11
  16. package/esm2022/f-draggable/f-single-select/f-single-select.execution.mjs +5 -4
  17. package/esm2022/f-flow/f-flow.component.mjs +2 -2
  18. package/f-connection/providers.d.ts +1 -1
  19. package/f-draggable/f-draggable-base.d.ts +2 -2
  20. package/f-draggable/f-draggable-data-context.d.ts +0 -1
  21. package/f-draggable/f-draggable.directive.d.ts +0 -3
  22. package/f-draggable/providers.d.ts +1 -1
  23. package/f-external-item/domain/providers.d.ts +1 -1
  24. package/f-storage/providers.d.ts +1 -1
  25. package/fesm2022/foblex-flow.mjs +123 -130
  26. package/fesm2022/foblex-flow.mjs.map +1 -1
  27. package/package.json +1 -1
  28. package/drag-toolkit/i-can-run-outside-angular.d.ts +0 -3
  29. package/esm2022/drag-toolkit/i-can-run-outside-angular.mjs +0 -2
@@ -1,12 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Injectable, Directive, input, computed, signal, Injector, Renderer2, effect, untracked, DestroyRef, model, output, booleanAttribute, ElementRef, Input, viewChild, Component, ChangeDetectionStrategy, isDevMode, contentChildren, numberAttribute, ViewContainerRef, TemplateRef, EventEmitter, NgZone, Output, ContentChildren, contentChild, NgModule } from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, Directive, input, computed, signal, Injector, Renderer2, effect, untracked, DestroyRef, model, output, booleanAttribute, ElementRef, Input, viewChild, Component, ChangeDetectionStrategy, isDevMode, contentChildren, numberAttribute, ViewContainerRef, TemplateRef, NgZone, EventEmitter, Output, ContentChildren, contentChild, NgModule } from '@angular/core';
3
3
  import { RectExtensions, RoundedRect, TransformModelExtensions, PointExtensions, Point, LineExtensions, GetIntersections, SizeExtensions, findClosestAlignment, setRectToElement, adjustRectToMinSize, setRectToViewBox } from '@foblex/2d';
4
4
  import { __decorate } from 'tslib';
5
5
  import { FExecutionRegister, FMediator } from '@foblex/mediator';
6
6
  import { BrowserService, PlatformService, EOperationSystem } from '@foblex/platform';
7
7
  import { normalizeDomElementId, castToEnum, isClosestElementHasClass, flatMap, getOrCreateRootNodeForViewRef, deepCloneNode, disableDragInteractions, extendStyles, getDataAttrValueFromClosestElementWithClass } from '@foblex/utils';
8
8
  import { coerceNumberProperty } from '@angular/cdk/coercion';
9
- import { CommonModule } from '@angular/common';
9
+ import { DOCUMENT, CommonModule } from '@angular/common';
10
10
 
11
11
  const F_BACKGROUND_PATTERN = new InjectionToken('F_BACKGROUND_PATTERN');
12
12
 
@@ -3326,7 +3326,7 @@ class FConnectionComponent extends FConnectionBase {
3326
3326
  this._mediator.execute(new RemoveConnectionFromStoreRequest(this));
3327
3327
  }
3328
3328
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3329
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionComponent, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fText: { classPropertyName: "fText", publicName: "fText", isSignal: false, isRequired: false, transformFunction: null }, fTextStartOffset: { classPropertyName: "fTextStartOffset", publicName: "fTextStartOffset", isSignal: false, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal: true, isRequired: false, transformFunction: null }, fInputId: { classPropertyName: "fInputId", publicName: "fInputId", isSignal: true, isRequired: false, transformFunction: null }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fSelectionDisabled: { classPropertyName: "fSelectionDisabled", publicName: "fSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, fReassignableStart: { classPropertyName: "fReassignableStart", publicName: "fReassignableStart", isSignal: true, isRequired: false, transformFunction: null }, fDraggingDisabled: { classPropertyName: "fDraggingDisabled", publicName: "fReassignDisabled", isSignal: true, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "fId()", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"overflow: visible; display: block; vertical-align: middle;\"\n>\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3329
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionComponent, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fText: { classPropertyName: "fText", publicName: "fText", isSignal: false, isRequired: false, transformFunction: null }, fTextStartOffset: { classPropertyName: "fTextStartOffset", publicName: "fTextStartOffset", isSignal: false, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal: true, isRequired: false, transformFunction: null }, fInputId: { classPropertyName: "fInputId", publicName: "fInputId", isSignal: true, isRequired: false, transformFunction: null }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fSelectionDisabled: { classPropertyName: "fSelectionDisabled", publicName: "fSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, fReassignableStart: { classPropertyName: "fReassignableStart", publicName: "fReassignableStart", isSignal: true, isRequired: false, transformFunction: null }, fDraggingDisabled: { classPropertyName: "fDraggingDisabled", publicName: "fReassignDisabled", isSignal: true, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "fId()", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"display: block; vertical-align: middle;\"\n>\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none}:host svg{overflow:visible!important;position:absolute}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3330
3330
  }
3331
3331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, decorators: [{
3332
3332
  type: Component,
@@ -3335,7 +3335,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3335
3335
  class: 'f-component f-connection',
3336
3336
  '[class.f-connection-selection-disabled]': 'fSelectionDisabled()',
3337
3337
  '[class.f-connection-reassign-disabled]': 'fDraggingDisabled()',
3338
- }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"overflow: visible; display: block; vertical-align: middle;\"\n>\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"] }]
3338
+ }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"display: block; vertical-align: middle;\"\n>\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none}:host svg{overflow:visible!important;position:absolute}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"] }]
3339
3339
  }], propDecorators: { fText: [{
3340
3340
  type: Input
3341
3341
  }], fTextStartOffset: [{
@@ -4841,7 +4841,6 @@ class FCanvasMoveFinalizeRequest {
4841
4841
  }
4842
4842
 
4843
4843
  class FDraggableDataContext {
4844
- isDragging = false;
4845
4844
  selectedItems = [];
4846
4845
  isSelectedChanged = false;
4847
4846
  onPointerDownScale = 1;
@@ -4871,6 +4870,7 @@ class FCanvasDragHandler {
4871
4870
  _onPointerDownPosition = PointExtensions.initialize();
4872
4871
  constructor(_injector) {
4873
4872
  this._store = _injector.get(FComponentsStore);
4873
+ this._store.fCanvas?.hostElement.classList.add('canvas-dragging');
4874
4874
  }
4875
4875
  prepareDragSequence() {
4876
4876
  this._onPointerDownPosition = this._store.fCanvas.transform.position;
@@ -4881,6 +4881,7 @@ class FCanvasDragHandler {
4881
4881
  }
4882
4882
  onPointerUp() {
4883
4883
  this._store.fCanvas.emitCanvasChangeEvent();
4884
+ this._store.fCanvas?.hostElement.classList.remove('canvas-dragging');
4884
4885
  }
4885
4886
  }
4886
4887
 
@@ -8669,11 +8670,12 @@ let FSingleSelectExecution = class FSingleSelectExecution {
8669
8670
  return this._getNodeOrGroup(event.targetElement) || this._getConnection(event.targetElement);
8670
8671
  }
8671
8672
  _getNodeOrGroup(targetElement) {
8672
- return this._store.fNodes.find((x) => (x).isContains(targetElement));
8673
+ return this._store.fNodes.find((x) => x.isContains(targetElement));
8673
8674
  }
8674
8675
  _getConnection(element) {
8675
- return this._store.fConnections
8676
- .find(c => c.isContains(element) || c.fConnectionCenter()?.nativeElement?.contains(element));
8676
+ return this._store.fConnections.find((c) => c.isContains(element) ||
8677
+ c.fConnectionCenter()?.nativeElement?.contains(element) ||
8678
+ Array.from(c.fConnectionContents()?.values() ?? []).some((content) => content.hostElement?.contains(element)));
8677
8679
  }
8678
8680
  _updateItemAndChildrenLayers(fItem) {
8679
8681
  if (fItem) {
@@ -8853,34 +8855,33 @@ class ITouchMoveEvent extends IPointerEvent {
8853
8855
  }
8854
8856
 
8855
8857
  class EventExtensions {
8856
- static isSupported;
8857
- static isPassiveEventListenerSupported() {
8858
- if (EventExtensions.isSupported == null && typeof window !== 'undefined') {
8858
+ static _isSupported;
8859
+ static _isPassiveEventListenerSupported() {
8860
+ if (EventExtensions._isSupported == null && typeof window !== 'undefined') {
8859
8861
  try {
8860
8862
  window.addEventListener('test', EventExtensions.emptyListener, { passive: true });
8861
- EventExtensions.isSupported = true;
8863
+ EventExtensions._isSupported = true;
8862
8864
  }
8863
8865
  catch (e) {
8864
- EventExtensions.isSupported = false;
8866
+ EventExtensions._isSupported = false;
8865
8867
  }
8866
8868
  }
8867
- return EventExtensions.isSupported;
8869
+ return EventExtensions._isSupported;
8868
8870
  }
8869
- static passiveEventListener(options) {
8870
- return EventExtensions.isPassiveEventListenerSupported() ? options : !!options.capture;
8871
+ static _passiveEventListener(options) {
8872
+ return EventExtensions._isPassiveEventListenerSupported() ? options : !!options.capture;
8871
8873
  }
8872
8874
  static activeListener() {
8873
- return EventExtensions.passiveEventListener({ passive: false });
8875
+ return EventExtensions._passiveEventListener({ passive: false });
8874
8876
  }
8875
8877
  static passiveListener() {
8876
- return EventExtensions.passiveEventListener({ passive: true });
8878
+ return EventExtensions._passiveEventListener({ passive: true });
8877
8879
  }
8878
8880
  static activeCaptureListener() {
8879
- return EventExtensions.passiveEventListener({ passive: false, capture: true });
8881
+ return EventExtensions._passiveEventListener({ passive: false, capture: true });
8880
8882
  }
8881
8883
  static emptyListener() {
8882
- return () => {
8883
- };
8884
+ return () => { };
8884
8885
  }
8885
8886
  }
8886
8887
 
@@ -8891,57 +8892,53 @@ const MOUSE_EVENT_IGNORE_TIME = 800;
8891
8892
  * and provides abstract methods for derived classes to implement specific behaviors.
8892
8893
  */
8893
8894
  class DragAndDropBase {
8894
- ngZone;
8895
- document;
8896
- mouseListeners = EventExtensions.emptyListener();
8897
- touchListeners = EventExtensions.emptyListener();
8898
- startListeners = EventExtensions.emptyListener();
8899
- isSyntheticEvent(event) {
8900
- return !!this.lastTouchEventTime &&
8901
- (this.lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now());
8902
- }
8903
- lastTouchEventTime = 0;
8895
+ _document = inject(DOCUMENT);
8896
+ _ngZone = inject(NgZone, { optional: true });
8897
+ _mouseListeners = EventExtensions.emptyListener();
8898
+ _touchListeners = EventExtensions.emptyListener();
8899
+ _startListeners = EventExtensions.emptyListener();
8900
+ isSyntheticEvent(_event) {
8901
+ return (!!this._lastTouchEventTime && this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now());
8902
+ }
8903
+ _lastTouchEventTime = 0;
8904
8904
  isDragStarted = false;
8905
- dragStartThreshold = 3;
8906
- dragStartDelay = 0;
8907
- dragStartTime = 0;
8908
- dragStartPosition = { x: 0, y: 0 };
8909
- moveHandler = this.checkDragSequenceToStart;
8910
- pointerDownElement = null;
8911
- constructor(ngZone) {
8912
- this.ngZone = ngZone;
8913
- }
8905
+ _dragStartThreshold = 3;
8906
+ _dragStartDelay = 0;
8907
+ _dragStartTime = 0;
8908
+ _dragStartPosition = { x: 0, y: 0 };
8909
+ _moveHandler = this._checkDragSequenceToStart;
8910
+ _pointerDownElement = null;
8914
8911
  /**
8915
8912
  * Handles the mouse down event to initiate the drag sequence.
8916
8913
  * It checks if the event is synthetic or fake, and if the drag is already started.
8917
8914
  * If not, it sets up the drag start sequence by adding necessary event listeners.
8918
8915
  * @param event - The mouse event that triggered the drag.
8919
8916
  */
8920
- onMouseDown = (event) => {
8917
+ _onMouseDown = (event) => {
8921
8918
  const isSyntheticEvent = this.isSyntheticEvent(event);
8922
8919
  const isFakeEvent = isFakeMousedownFromScreenReader(event);
8923
8920
  const mouseEvent = new IMouseEvent(event);
8924
8921
  if (isSyntheticEvent || isFakeEvent || this.disabled || this.isDragStarted) {
8925
8922
  return;
8926
8923
  }
8927
- this.pointerDownElement = mouseEvent.targetElement;
8924
+ this._pointerDownElement = mouseEvent.targetElement;
8928
8925
  const result = this.onPointerDown(mouseEvent);
8929
8926
  if (result) {
8930
- this.dragStartTime = Date.now();
8931
- this.dragStartPosition = mouseEvent.getPosition();
8932
- this.ngZone?.runOutsideAngular(() => {
8933
- this.document?.addEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());
8934
- this.document?.addEventListener('mousemove', this.onMouseMove);
8935
- this.document?.addEventListener('pointerup', this.onPointerUpEvent);
8936
- this.document?.addEventListener('pointercancel', this.onPointerUpEvent, EventExtensions.activeCaptureListener());
8937
- this.document?.addEventListener('contextmenu', this.onContextMenuDuringDrag, EventExtensions.activeCaptureListener());
8927
+ this._dragStartTime = Date.now();
8928
+ this._dragStartPosition = mouseEvent.getPosition();
8929
+ this._ngZone?.runOutsideAngular(() => {
8930
+ this._listen('selectstart', this._onSelectStart, EventExtensions.activeListener());
8931
+ this._listen('mousemove', this._onMouseMove);
8932
+ this._listen('pointerup', this._onPointerUpEvent);
8933
+ this._listen('pointercancel', this._onPointerUpEvent, EventExtensions.activeCaptureListener());
8934
+ this._listen('contextmenu', this._preventDuringDrag, EventExtensions.activeCaptureListener());
8938
8935
  });
8939
- this.mouseListeners = () => {
8940
- this.document?.removeEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());
8941
- this.document?.removeEventListener('mousemove', this.onMouseMove);
8942
- this.document?.removeEventListener('pointerup', this.onPointerUpEvent);
8943
- this.document?.removeEventListener('pointercancel', this.onPointerUpEvent, EventExtensions.activeCaptureListener());
8944
- this.document?.removeEventListener('contextmenu', this.onContextMenuDuringDrag, EventExtensions.activeCaptureListener());
8936
+ this._mouseListeners = () => {
8937
+ this._unlisten('selectstart', this._onSelectStart, EventExtensions.activeListener());
8938
+ this._unlisten('mousemove', this._onMouseMove);
8939
+ this._unlisten('pointerup', this._onPointerUpEvent);
8940
+ this._unlisten('pointercancel', this._onPointerUpEvent, EventExtensions.activeCaptureListener());
8941
+ this._unlisten('contextmenu', this._preventDuringDrag, EventExtensions.activeCaptureListener());
8945
8942
  };
8946
8943
  }
8947
8944
  };
@@ -8951,30 +8948,30 @@ class DragAndDropBase {
8951
8948
  * If not, it sets up the drag start sequence by adding necessary event listeners.
8952
8949
  * @param event - The touch event that triggered the drag.
8953
8950
  */
8954
- onTouchDown = (event) => {
8951
+ _onTouchDown = (event) => {
8955
8952
  const isFakeEvent = isFakeTouchstartFromScreenReader(event);
8956
8953
  const touchEvent = new ITouchDownEvent(event);
8957
8954
  if (isFakeEvent || this.disabled || this.isDragStarted) {
8958
8955
  return;
8959
8956
  }
8960
- this.pointerDownElement = touchEvent.targetElement;
8957
+ this._pointerDownElement = touchEvent.targetElement;
8961
8958
  const result = this.onPointerDown(touchEvent);
8962
8959
  if (result) {
8963
- this.dragStartTime = Date.now();
8964
- this.dragStartPosition = touchEvent.getPosition();
8965
- this.ngZone?.runOutsideAngular(() => {
8966
- this.document?.addEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());
8967
- this.document?.addEventListener('touchmove', this.onTouchMove);
8968
- this.document?.addEventListener('pointerup', this.onPointerUpEvent);
8969
- this.document?.addEventListener('pointercancel', this.onPointerUpEvent, EventExtensions.activeCaptureListener());
8970
- this.document?.addEventListener('contextmenu', this.onContextMenuDuringDrag, EventExtensions.activeCaptureListener());
8960
+ this._dragStartTime = Date.now();
8961
+ this._dragStartPosition = touchEvent.getPosition();
8962
+ this._ngZone?.runOutsideAngular(() => {
8963
+ this._listen('selectstart', this._onSelectStart, EventExtensions.activeListener());
8964
+ this._listen('touchmove', this._onTouchMove);
8965
+ this._listen('pointerup', this._onPointerUpEvent);
8966
+ this._listen('pointercancel', this._onPointerUpEvent, EventExtensions.activeCaptureListener());
8967
+ this._listen('contextmenu', this._preventDuringDrag, EventExtensions.activeCaptureListener());
8971
8968
  });
8972
- this.touchListeners = () => {
8973
- this.document?.removeEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());
8974
- this.document?.removeEventListener('touchmove', this.onTouchMove);
8975
- this.document?.removeEventListener('pointerup', this.onPointerUpEvent);
8976
- this.document?.removeEventListener('pointercancel', this.onPointerUpEvent, EventExtensions.activeCaptureListener());
8977
- this.document?.removeEventListener('contextmenu', this.onContextMenuDuringDrag, EventExtensions.activeCaptureListener());
8969
+ this._touchListeners = () => {
8970
+ this._unlisten('selectstart', this._onSelectStart, EventExtensions.activeListener());
8971
+ this._unlisten('touchmove', this._onTouchMove);
8972
+ this._unlisten('pointerup', this._onPointerUpEvent);
8973
+ this._unlisten('pointercancel', this._onPointerUpEvent, EventExtensions.activeCaptureListener());
8974
+ this._unlisten('contextmenu', this._preventDuringDrag, EventExtensions.activeCaptureListener());
8978
8975
  };
8979
8976
  }
8980
8977
  };
@@ -8984,7 +8981,7 @@ class DragAndDropBase {
8984
8981
  * It prevents the default behavior and calls the onSelect method to handle the selection.
8985
8982
  * @param event - The event that triggered the select start.
8986
8983
  */
8987
- onSelectStart = (event) => {
8984
+ _onSelectStart = (event) => {
8988
8985
  this.onSelect(event);
8989
8986
  };
8990
8987
  /**
@@ -8992,16 +8989,16 @@ class DragAndDropBase {
8992
8989
  * It checks if the drag sequence should start and calls the move handler accordingly.
8993
8990
  * @param event - The mouse event that triggered the move.
8994
8991
  */
8995
- onMouseMove = (event) => {
8996
- this.moveHandler(new IMouseEvent(event));
8992
+ _onMouseMove = (event) => {
8993
+ this._moveHandler(new IMouseEvent(event));
8997
8994
  };
8998
8995
  /**
8999
8996
  * Handles the touch move event during the drag sequence.
9000
8997
  * It checks if the drag sequence should start and calls the move handler accordingly.
9001
8998
  * @param event - The touch event that triggered the move.
9002
8999
  */
9003
- onTouchMove = (event) => {
9004
- this.moveHandler(new ITouchMoveEvent(event));
9000
+ _onTouchMove = (event) => {
9001
+ this._moveHandler(new ITouchMoveEvent(event));
9005
9002
  };
9006
9003
  /**
9007
9004
  * Checks if the drag sequence should start based on the pointer position.
@@ -9011,25 +9008,25 @@ class DragAndDropBase {
9011
9008
  * it prepares the drag sequence and sets the move handler to onPointerMove.
9012
9009
  * @param event - The pointer event that triggered the check.
9013
9010
  */
9014
- checkDragSequenceToStart(event) {
9011
+ _checkDragSequenceToStart(event) {
9015
9012
  const pointerPosition = event.getPosition();
9016
- if (!this.isDragStarted && this.pointerDownElement) {
9017
- event.setTarget(this.pointerDownElement);
9018
- const distanceX = Math.abs(pointerPosition.x - this.dragStartPosition.x);
9019
- const distanceY = Math.abs(pointerPosition.y - this.dragStartPosition.y);
9020
- const isOverThreshold = distanceX + distanceY >= this.dragStartThreshold;
9013
+ if (!this.isDragStarted && this._pointerDownElement) {
9014
+ event.setTarget(this._pointerDownElement);
9015
+ const distanceX = Math.abs(pointerPosition.x - this._dragStartPosition.x);
9016
+ const distanceY = Math.abs(pointerPosition.y - this._dragStartPosition.y);
9017
+ const isOverThreshold = distanceX + distanceY >= this._dragStartThreshold;
9021
9018
  if (isOverThreshold) {
9022
- const isDelayElapsed = Date.now() >= this.dragStartTime + this.dragStartDelay;
9019
+ const isDelayElapsed = Date.now() >= this._dragStartTime + this._dragStartDelay;
9023
9020
  if (!isDelayElapsed) {
9024
- this.endDragSequence();
9021
+ this._endDragSequence();
9025
9022
  return;
9026
9023
  }
9027
9024
  event.preventDefault();
9028
9025
  this.prepareDragSequence(event);
9029
9026
  this.isDragStarted = true;
9030
- this.moveHandler = this.onPointerMove;
9027
+ this._moveHandler = this.onPointerMove;
9031
9028
  if (isTouchEvent(event.originalEvent)) {
9032
- this.lastTouchEventTime = Date.now();
9029
+ this._lastTouchEventTime = Date.now();
9033
9030
  }
9034
9031
  }
9035
9032
  }
@@ -9041,11 +9038,11 @@ class DragAndDropBase {
9041
9038
  * This method is called when the user releases the mouse button or lifts their finger from the touch screen.
9042
9039
  * @param event - The pointer event that triggered the up action.
9043
9040
  */
9044
- onPointerUpEvent = (event) => {
9041
+ _onPointerUpEvent = (event) => {
9045
9042
  if (this.isDragStarted) {
9046
9043
  this.onPointerUp(new IPointerUpEvent(event));
9047
9044
  }
9048
- this.endDragSequence();
9045
+ this._endDragSequence();
9049
9046
  };
9050
9047
  /**
9051
9048
  * Ends the drag sequence by resetting the state and removing event listeners.
@@ -9053,39 +9050,42 @@ class DragAndDropBase {
9053
9050
  * and resets the moveHandler to checkDragSequenceToStart.
9054
9051
  * It also removes all mouse and touch event listeners that were added during the drag sequence.
9055
9052
  */
9056
- endDragSequence() {
9053
+ _endDragSequence() {
9057
9054
  this.isDragStarted = false;
9058
- this.pointerDownElement = null;
9059
- this.moveHandler = this.checkDragSequenceToStart;
9060
- this.mouseListeners();
9061
- this.mouseListeners = EventExtensions.emptyListener();
9062
- this.touchListeners();
9063
- this.touchListeners = EventExtensions.emptyListener();
9055
+ this._pointerDownElement = null;
9056
+ this._moveHandler = this._checkDragSequenceToStart;
9057
+ this._mouseListeners();
9058
+ this._mouseListeners = EventExtensions.emptyListener();
9059
+ this._touchListeners();
9060
+ this._touchListeners = EventExtensions.emptyListener();
9064
9061
  this.finalizeDragSequence();
9065
9062
  }
9066
- subscribe(fDocument) {
9067
- if (this.document) {
9068
- this.unsubscribe();
9069
- }
9070
- this.document = fDocument;
9071
- this.ngZone?.runOutsideAngular(() => {
9072
- fDocument.addEventListener('mousedown', this.onMouseDown, EventExtensions.activeListener());
9073
- fDocument.addEventListener('touchstart', this.onTouchDown, EventExtensions.passiveListener());
9063
+ subscribe() {
9064
+ this.unsubscribe();
9065
+ this._ngZone?.runOutsideAngular(() => {
9066
+ this._listen('mousedown', this._onMouseDown, EventExtensions.activeListener());
9067
+ this._listen('touchstart', this._onTouchDown, EventExtensions.passiveListener());
9074
9068
  });
9075
- this.startListeners = () => {
9076
- fDocument.removeEventListener('mousedown', this.onMouseDown, EventExtensions.activeListener());
9077
- fDocument.removeEventListener('touchstart', this.onTouchDown, EventExtensions.passiveListener());
9069
+ this._startListeners = () => {
9070
+ this._unlisten('mousedown', this._onMouseDown, EventExtensions.activeListener());
9071
+ this._unlisten('touchstart', this._onTouchDown, EventExtensions.passiveListener());
9078
9072
  };
9079
9073
  }
9080
9074
  unsubscribe() {
9081
- this.startListeners();
9082
- this.startListeners = EventExtensions.emptyListener();
9083
- this.touchListeners();
9084
- this.touchListeners = EventExtensions.emptyListener();
9085
- this.mouseListeners();
9086
- this.mouseListeners = EventExtensions.emptyListener();
9087
- }
9088
- onContextMenuDuringDrag = (e) => {
9075
+ this._startListeners();
9076
+ this._startListeners = EventExtensions.emptyListener();
9077
+ this._touchListeners();
9078
+ this._touchListeners = EventExtensions.emptyListener();
9079
+ this._mouseListeners();
9080
+ this._mouseListeners = EventExtensions.emptyListener();
9081
+ }
9082
+ _listen(type, listener, options) {
9083
+ this._document.addEventListener(type, listener, options);
9084
+ }
9085
+ _unlisten(type, listener, options) {
9086
+ this._document.removeEventListener(type, listener, options);
9087
+ }
9088
+ _preventDuringDrag = (e) => {
9089
9089
  if (this.isDragStarted) {
9090
9090
  e.preventDefault();
9091
9091
  }
@@ -9106,9 +9106,7 @@ function isFakeTouchstartFromScreenReader(event) {
9106
9106
  }
9107
9107
 
9108
9108
  class FDraggableBase extends DragAndDropBase {
9109
- constructor(ngZone) {
9110
- super(ngZone || undefined);
9111
- }
9109
+ hostElement = inject(ElementRef).nativeElement;
9112
9110
  }
9113
9111
 
9114
9112
  const F_BEFORE_MAIN_PLUGIN = new InjectionToken('F_BEFORE_MAIN_PLUGIN');
@@ -9170,11 +9168,9 @@ function isDragBlocker(element) {
9170
9168
  // │ To Start │
9171
9169
  // └──────────────────────────────────────┘
9172
9170
  class FDraggableDirective extends FDraggableBase {
9173
- hostElement = inject(ElementRef).nativeElement;
9174
9171
  _result = inject(FDragHandlerResult);
9175
9172
  _mediator = inject(FMediator);
9176
9173
  _platform = inject(PlatformService);
9177
- _browser = inject(BrowserService);
9178
9174
  disabled = false;
9179
9175
  fMultiSelectTrigger = (event) => {
9180
9176
  return this._platform.getOS() === EOperationSystem.MAC_OS ? event.metaKey : event.ctrlKey;
@@ -9222,14 +9218,11 @@ class FDraggableDirective extends FDraggableBase {
9222
9218
  fDragEnded = new EventEmitter();
9223
9219
  _beforePlugins;
9224
9220
  _afterPlugins;
9225
- constructor() {
9226
- super(inject(NgZone, { optional: true }));
9227
- }
9228
9221
  ngOnInit() {
9229
9222
  this._mediator.execute(new AddDndToStoreRequest(this));
9230
9223
  }
9231
9224
  ngAfterViewInit() {
9232
- super.subscribe(this._browser.document);
9225
+ super.subscribe();
9233
9226
  }
9234
9227
  onPointerDown(event) {
9235
9228
  if (isDragBlocker(event.targetElement)) {
@@ -9287,7 +9280,7 @@ class FDraggableDirective extends FDraggableBase {
9287
9280
  this._mediator.execute(new RemoveDndFromStoreRequest());
9288
9281
  super.unsubscribe();
9289
9282
  }
9290
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
9283
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDraggableDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
9291
9284
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FDraggableDirective, selector: "f-flow[fDraggable]", inputs: { disabled: { classPropertyName: "disabled", publicName: "fDraggableDisabled", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, fMultiSelectTrigger: { classPropertyName: "fMultiSelectTrigger", publicName: "fMultiSelectTrigger", isSignal: false, isRequired: false, transformFunction: null }, fReassignConnectionTrigger: { classPropertyName: "fReassignConnectionTrigger", publicName: "fReassignConnectionTrigger", isSignal: false, isRequired: false, transformFunction: null }, fCreateConnectionTrigger: { classPropertyName: "fCreateConnectionTrigger", publicName: "fCreateConnectionTrigger", isSignal: false, isRequired: false, transformFunction: null }, fNodeResizeTrigger: { classPropertyName: "fNodeResizeTrigger", publicName: "fNodeResizeTrigger", isSignal: false, isRequired: false, transformFunction: null }, fNodeRotateTrigger: { classPropertyName: "fNodeRotateTrigger", publicName: "fNodeRotateTrigger", isSignal: false, isRequired: false, transformFunction: null }, fNodeMoveTrigger: { classPropertyName: "fNodeMoveTrigger", publicName: "fNodeMoveTrigger", isSignal: false, isRequired: false, transformFunction: null }, fCanvasMoveTrigger: { classPropertyName: "fCanvasMoveTrigger", publicName: "fCanvasMoveTrigger", isSignal: false, isRequired: false, transformFunction: null }, fExternalItemTrigger: { classPropertyName: "fExternalItemTrigger", publicName: "fExternalItemTrigger", isSignal: false, isRequired: false, transformFunction: null }, fEmitOnNodeIntersect: { classPropertyName: "fEmitOnNodeIntersect", publicName: "fEmitOnNodeIntersect", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, vCellSize: { classPropertyName: "vCellSize", publicName: "vCellSize", isSignal: true, isRequired: false, transformFunction: null }, hCellSize: { classPropertyName: "hCellSize", publicName: "hCellSize", isSignal: true, isRequired: false, transformFunction: null }, fCellSizeWhileDragging: { classPropertyName: "fCellSizeWhileDragging", publicName: "fCellSizeWhileDragging", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fSelectionChange: "fSelectionChange", fNodeIntersectedWithConnections: "fNodeIntersectedWithConnections", fCreateNode: "fCreateNode", fMoveNodes: "fMoveNodes", fReassignConnection: "fReassignConnection", fCreateConnection: "fCreateConnection", fDropToGroup: "fDropToGroup", fDragStarted: "fDragStarted", fDragEnded: "fDragEnded" }, providers: [FDragHandlerResult], queries: [{ propertyName: "_beforePlugins", predicate: F_BEFORE_MAIN_PLUGIN, descendants: true }, { propertyName: "_afterPlugins", predicate: F_AFTER_MAIN_PLUGIN, descendants: true }], exportAs: ["fDraggable"], usesInheritance: true, ngImport: i0 });
9292
9285
  }
9293
9286
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDraggableDirective, decorators: [{
@@ -9297,7 +9290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
9297
9290
  exportAs: 'fDraggable',
9298
9291
  providers: [FDragHandlerResult],
9299
9292
  }]
9300
- }], ctorParameters: () => [], propDecorators: { disabled: [{
9293
+ }], propDecorators: { disabled: [{
9301
9294
  type: Input,
9302
9295
  args: [{ transform: booleanAttribute, alias: 'fDraggableDisabled' }]
9303
9296
  }], fMultiSelectTrigger: [{
@@ -12536,7 +12529,7 @@ class FCanvasComponent extends FCanvasBase {
12536
12529
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCanvasComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
12537
12530
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: FCanvasComponent, isStandalone: true, selector: "f-canvas", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fCanvasChange: "fCanvasChange" }, host: { classAttribute: "f-component f-canvas" }, providers: [
12538
12531
  { provide: F_CANVAS, useExisting: FCanvasComponent },
12539
- ], viewQueries: [{ propertyName: "fGroupsContainer", first: true, predicate: ["fGroupsContainer"], descendants: true, isSignal: true }, { propertyName: "fNodesContainer", first: true, predicate: ["fNodesContainer"], descendants: true, isSignal: true }, { propertyName: "fConnectionsContainer", first: true, predicate: ["fConnectionsContainer"], descendants: true, isSignal: true }], 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}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12532
+ ], viewQueries: [{ propertyName: "fGroupsContainer", first: true, predicate: ["fGroupsContainer"], descendants: true, isSignal: true }, { propertyName: "fNodesContainer", first: true, predicate: ["fNodesContainer"], descendants: true, isSignal: true }, { propertyName: "fConnectionsContainer", first: true, predicate: ["fConnectionsContainer"], descendants: true, isSignal: true }], 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.canvas-dragging{will-change:transform;transform:translateZ(0)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12540
12533
  }
12541
12534
  __decorate([
12542
12535
  Deprecated('setScale')
@@ -12550,7 +12543,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
12550
12543
  'class': 'f-component f-canvas',
12551
12544
  }, providers: [
12552
12545
  { provide: F_CANVAS, useExisting: FCanvasComponent },
12553
- ], changeDetection: ChangeDetectionStrategy.OnPush, 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}\n"] }]
12546
+ ], changeDetection: ChangeDetectionStrategy.OnPush, 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.canvas-dragging{will-change:transform;transform:translateZ(0)}\n"] }]
12554
12547
  }], propDecorators: { setZoom: [], resetZoom: [] } });
12555
12548
 
12556
12549
  const F_CANVAS_PROVIDERS = [
@@ -12787,7 +12780,7 @@ class FFlowComponent extends FFlowBase {
12787
12780
  ...COMMON_PROVIDERS,
12788
12781
  ...F_DRAGGABLE_PROVIDERS,
12789
12782
  { provide: F_FLOW, useExisting: FFlowComponent },
12790
- ], 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></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}::ng-deep .f-connection-content{position:fixed;left:0;top:0;pointer-events:all;transform-origin:50% 50%;will-change:transform}::ng-deep .f-node,::ng-deep .f-group{position:absolute!important;transform-origin:center;-webkit-user-select:none;user-select:none;pointer-events:all;left:0!important;top:0!important}::ng-deep .f-dragging .f-canvas{will-change:transform;transform:translateZ(0)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12783
+ ], 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></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}::ng-deep .f-connection-content{position:absolute;left:0;top:0;pointer-events:all;transform-origin:50% 50%;will-change:transform}::ng-deep .f-node,::ng-deep .f-group{position:absolute!important;transform-origin:center;-webkit-user-select:none;user-select:none;pointer-events:all;left:0!important;top:0!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12791
12784
  }
12792
12785
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FFlowComponent, decorators: [{
12793
12786
  type: Component,
@@ -12802,7 +12795,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
12802
12795
  ...COMMON_PROVIDERS,
12803
12796
  ...F_DRAGGABLE_PROVIDERS,
12804
12797
  { provide: F_FLOW, useExisting: FFlowComponent },
12805
- ], changeDetection: ChangeDetectionStrategy.OnPush, 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></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}::ng-deep .f-connection-content{position:fixed;left:0;top:0;pointer-events:all;transform-origin:50% 50%;will-change:transform}::ng-deep .f-node,::ng-deep .f-group{position:absolute!important;transform-origin:center;-webkit-user-select:none;user-select:none;pointer-events:all;left:0!important;top:0!important}::ng-deep .f-dragging .f-canvas{will-change:transform;transform:translateZ(0)}\n"] }]
12798
+ ], changeDetection: ChangeDetectionStrategy.OnPush, 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></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}::ng-deep .f-connection-content{position:absolute;left:0;top:0;pointer-events:all;transform-origin:50% 50%;will-change:transform}::ng-deep .f-node,::ng-deep .f-group{position:absolute!important;transform-origin:center;-webkit-user-select:none;user-select:none;pointer-events:all;left:0!important;top:0!important}\n"] }]
12806
12799
  }] });
12807
12800
 
12808
12801
  const F_FLOW_PROVIDERS = [