@foblex/flow 17.8.2 → 17.8.3

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 (49) hide show
  1. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions-request.d.ts +6 -0
  2. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions.d.ts +45 -0
  3. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/index.d.ts +2 -0
  4. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position-request.d.ts +6 -0
  5. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position.d.ts +20 -0
  6. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-internal-position/index.d.ts +2 -0
  7. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-node-connectors-connectable-sides-request.d.ts +6 -0
  8. package/domain/f-node/calculate-node-connectors-connectable-sides/calculate-node-connectors-connectable-sides.d.ts +59 -0
  9. package/domain/f-node/calculate-node-connectors-connectable-sides/index.d.ts +4 -0
  10. package/domain/f-node/index.d.ts +1 -0
  11. package/domain/f-node/providers.d.ts +4 -3
  12. package/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed-request.d.ts +2 -2
  13. package/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.d.ts +0 -23
  14. package/domain/providers.d.ts +1 -1
  15. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions-request.mjs +8 -0
  16. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/calculate-connectable-side-by-connected-positions.mjs +92 -0
  17. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-connected-positions/index.mjs +3 -0
  18. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position-request.mjs +8 -0
  19. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-internal-position/calculate-connectable-side-by-internal-position.mjs +55 -0
  20. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-connectable-side-by-internal-position/index.mjs +3 -0
  21. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-node-connectors-connectable-sides-request.mjs +8 -0
  22. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/calculate-node-connectors-connectable-sides.mjs +99 -0
  23. package/esm2022/domain/f-node/calculate-node-connectors-connectable-sides/index.mjs +5 -0
  24. package/esm2022/domain/f-node/index.mjs +2 -1
  25. package/esm2022/domain/f-node/providers.mjs +8 -4
  26. package/esm2022/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed-request.mjs +1 -1
  27. package/esm2022/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.mjs +10 -67
  28. package/esm2022/f-connectors/e-f-connectable-side.mjs +2 -1
  29. package/esm2022/f-connectors/f-connector-base.mjs +1 -1
  30. package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +4 -1
  31. package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +4 -1
  32. package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +4 -1
  33. package/esm2022/f-node/f-group.directive.mjs +20 -12
  34. package/esm2022/f-node/f-node-base.mjs +2 -2
  35. package/esm2022/f-node/f-node.directive.mjs +15 -3
  36. package/f-connection/providers.d.ts +1 -1
  37. package/f-connectors/e-f-connectable-side.d.ts +1 -0
  38. package/f-connectors/f-connector-base.d.ts +1 -0
  39. package/f-connectors/f-node-input/f-node-input.directive.d.ts +1 -0
  40. package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +1 -0
  41. package/f-connectors/f-node-output/f-node-output.directive.d.ts +1 -0
  42. package/f-connectors/providers.d.ts +1 -1
  43. package/f-node/f-group.directive.d.ts +4 -1
  44. package/f-node/f-node-base.d.ts +1 -1
  45. package/f-node/f-node.directive.d.ts +3 -0
  46. package/f-node/providers.d.ts +2 -2
  47. package/fesm2022/foblex-flow.mjs +292 -71
  48. package/fesm2022/foblex-flow.mjs.map +1 -1
  49. package/package.json +1 -1
@@ -1,13 +1,15 @@
1
1
  import { booleanAttribute, DestroyRef, Directive, inject, input, model, output, } from '@angular/core';
2
2
  import { PointExtensions } from '@foblex/2d';
3
3
  import { NotifyTransformChangedRequest } from '../f-storage';
4
- import { FMediator } from '@foblex/mediator';
5
4
  import { F_NODE, FNodeBase } from './f-node-base';
6
- import { AddNodeToStoreRequest, UpdateNodeWhenStateOrSizeChangedRequest, RemoveNodeFromStoreRequest, } from '../domain';
5
+ import { AddNodeToStoreRequest, UpdateNodeWhenStateOrSizeChangedRequest, RemoveNodeFromStoreRequest, CalculateNodeConnectorsConnectableSidesRequest, } from '../domain';
7
6
  import { stringAttribute } from '../utils';
7
+ import { FMediator } from '@foblex/mediator';
8
8
  import * as i0 from "@angular/core";
9
9
  let uniqueId = 0;
10
+ const _DEBOUNCE_TIME = 3;
10
11
  export class FNodeDirective extends FNodeBase {
12
+ _debounceTimer = null;
11
13
  _destroyRef = inject(DestroyRef);
12
14
  _mediator = inject(FMediator);
13
15
  fId = input(`f-node-${uniqueId++}`, {
@@ -76,6 +78,16 @@ export class FNodeDirective extends FNodeBase {
76
78
  redraw() {
77
79
  super.redraw();
78
80
  this._mediator.execute(new NotifyTransformChangedRequest());
81
+ this._updateConnectorsSides();
82
+ }
83
+ _updateConnectorsSides() {
84
+ if (this._debounceTimer) {
85
+ clearTimeout(this._debounceTimer);
86
+ }
87
+ this._debounceTimer = setTimeout(() => this._calculateNodeConnectorsConnectableSides(), _DEBOUNCE_TIME);
88
+ }
89
+ _calculateNodeConnectorsConnectableSides() {
90
+ this._mediator.execute(new CalculateNodeConnectorsConnectableSidesRequest(this));
79
91
  }
80
92
  ngAfterViewInit() {
81
93
  if (!this.browser.isBrowser()) {
@@ -109,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
109
121
  providers: [{ provide: F_NODE, useExisting: FNodeDirective }],
110
122
  }]
111
123
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1ub2RlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1ub2RlL2Ytbm9kZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsdUNBQXVDLEVBQ3ZDLDBCQUEwQixHQUMzQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUUzQyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFhakIsTUFBTSxPQUFPLGNBQ1gsU0FBUSxTQUFTO0lBR0EsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXRCLEdBQUcsR0FBRyxLQUFLLENBQWtCLFVBQVUsUUFBUSxFQUFFLEVBQUUsRUFBRTtRQUM1RSxLQUFLLEVBQUUsU0FBUztRQUNoQixTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLFFBQVEsRUFBRSxFQUFFO0tBQ3ZFLENBQUMsQ0FBQztJQUVzQixTQUFTLEdBQUcsS0FBSyxDQUE0QixJQUFJLEVB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QUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksNkJBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUNwQixJQUFJLHVDQUF1QyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ3BFLENBQUM7SUFDSixDQUFDO0lBRWUsT0FBTztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFPLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO3dHQWpIVSxjQUFjOzRGQUFkLGNBQWMseWpFQUZkLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQzs7NEZBRWxELGNBQWM7a0JBWDFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFFBQVEsRUFBRSxZQUFZO29CQUN0QixJQUFJLEVBQUU7d0JBQ0osdUJBQXVCLEVBQUUsT0FBTzt3QkFDaEMsS0FBSyxFQUFFLG9CQUFvQjt3QkFDM0Isa0NBQWtDLEVBQUUscUJBQXFCO3dCQUN6RCxtQ0FBbUMsRUFBRSxzQkFBc0I7cUJBQzVEO29CQUNELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLGdCQUFnQixFQUFFLENBQUM7aUJBQzlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgRGVzdHJveVJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIG91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUmVjdCwgSVNpemUsIFBvaW50RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgTm90aWZ5VHJhbnNmb3JtQ2hhbmdlZFJlcXVlc3QgfSBmcm9tICcuLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGX05PREUsIEZOb2RlQmFzZSB9IGZyb20gJy4vZi1ub2RlLWJhc2UnO1xuaW1wb3J0IHsgSUhhc0hvc3RFbGVtZW50IH0gZnJvbSAnLi4vaS1oYXMtaG9zdC1lbGVtZW50JztcbmltcG9ydCB7XG4gIEFkZE5vZGVUb1N0b3JlUmVxdWVzdCxcbiAgVXBkYXRlTm9kZVdoZW5TdGF0ZU9yU2l6ZUNoYW5nZWRSZXF1ZXN0LFxuICBSZW1vdmVOb2RlRnJvbVN0b3JlUmVxdWVzdCxcbn0gZnJvbSAnLi4vZG9tYWluJztcbmltcG9ydCB7IHN0cmluZ0F0dHJpYnV0ZSB9IGZyb20gJy4uL3V0aWxzJztcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZOb2RlXScsXG4gIGV4cG9ydEFzOiAnZkNvbXBvbmVudCcsXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuZGF0YS1mLW5vZGUtaWRdJzogJ2ZJZCgpJyxcbiAgICBjbGFzczogJ2Ytbm9kZSBmLWNvbXBvbmVudCcsXG4gICAgJ1tjbGFzcy5mLW5vZGUtZHJhZ2dpbmctZGlzYWJsZWRdJzogJ2ZEcmFnZ2luZ0Rpc2FibGVkKCknLFxuICAgICdbY2xhc3MuZi1ub2RlLXNlbGVjdGlvbi1kaXNhYmxlZF0nOiAnZlNlbGVjdGlvbkRpc2FibGVkKCknLFxuICB9LFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEZfTk9ERSwgdXNlRXhpc3Rpbmc6IEZOb2RlRGlyZWN0aXZlIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBGTm9kZURpcmVjdGl2ZVxuICBleHRlbmRzIEZOb2RlQmFzZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgSUhhc0hvc3RFbGVtZW50LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgZklkID0gaW5wdXQ8c3RyaW5nLCB1bmtub3duPihgZi1ub2RlLSR7dW5pcXVlSWQrK31gLCB7XG4gICAgYWxpYXM6ICdmTm9kZUlkJyxcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gc3RyaW5nQXR0cmlidXRlKHZhbHVlKSB8fCBgZi1ub2RlLSR7dW5pcXVlSWQrK31gLFxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgZlBhcmVudElkID0gaW5wdXQ8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4obnVsbCwge1xuICAgIGFsaWFzOiAnZk5vZGVQYXJlbnRJZCcsXG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBwb3NpdGlvbiA9IG1vZGVsKFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCksIHtcbiAgICBhbGlhczogJ2ZOb2RlUG9zaXRpb24nLFxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgc2l6ZSA9IGlucHV0PElTaXplIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHtcbiAgICBhbGlhczogJ2ZOb2RlU2l6ZScsXG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBzaXplQ2hhbmdlID0gb3V0cHV0PElSZWN0Pih7IGFsaWFzOiAnZk5vZGVTaXplQ2hhbmdlJyB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm90YXRlID0gbW9kZWwoMCwge1xuICAgIGFsaWFzOiAnZk5vZGVSb3RhdGUnLFxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgZkNvbm5lY3RPbk5vZGUgPSBpbnB1dCh0cnVlLCB7XG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgZk1pbmltYXBDbGFzcyA9IGlucHV0PHN0cmluZ1tdIHwgc3RyaW5nPihbXSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGZEcmFnZ2luZ0Rpc2FibGVkID0gaW5wdXQoZmFsc2UsIHtcbiAgICBhbGlhczogJ2ZOb2RlRHJhZ2dpbmdEaXNhYmxlZCcsXG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgZlNlbGVjdGlvbkRpc2FibGVkID0gaW5wdXQoZmFsc2UsIHtcbiAgICBhbGlhczogJ2ZOb2RlU2VsZWN0aW9uRGlzYWJsZWQnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGZJbmNsdWRlUGFkZGluZyA9IGlucHV0KHRydWUsIHtcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBmQXV0b0V4cGFuZE9uQ2hpbGRIaXQgPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGZBdXRvU2l6ZVRvRml0Q2hpbGRyZW4gPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9wcmVmZXItaW5qZWN0XG4gICAgZWxlbWVudFJlZmVyZW5jZTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudCk7XG4gICAgc3VwZXIucG9zaXRpb25DaGFuZ2VzKCk7XG4gICAgc3VwZXIuc2l6ZUNoYW5nZXMoKTtcbiAgICBzdXBlci5yb3RhdGVDaGFuZ2VzKCk7XG4gICAgc3VwZXIucGFyZW50Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3R5bGUoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG4gICAgdGhpcy5zZXRTdHlsZSgndHJhbnNmb3JtLW9yaWdpbicsICdjZW50ZXInKTtcbiAgICB0aGlzLnNldFN0eWxlKCd1c2VyLXNlbGVjdCcsICdub25lJyk7XG4gICAgdGhpcy5zZXRTdHlsZSgncG9pbnRlci1ldmVudHMnLCAnYWxsJyk7XG4gICAgdGhpcy5zZXRTdHlsZSgnbGVmdCcsICcwJyk7XG4gICAgdGhpcy5zZXRTdHlsZSgndG9wJywgJzAnKTtcbiAgICBzdXBlci5yZWRyYXcoKTtcblxuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGU8dm9pZD4obmV3IEFkZE5vZGVUb1N0b3JlUmVxdWVzdCh0aGlzKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2V0U3R5bGUoc3R5bGVOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQsIHN0eWxlTmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbW92ZVN0eWxlKHN0eWxlTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmhvc3RFbGVtZW50LCBzdHlsZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlZHJhdygpOiB2b2lkIHtcbiAgICBzdXBlci5yZWRyYXcoKTtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBOb3RpZnlUcmFuc2Zvcm1DaGFuZ2VkUmVxdWVzdCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJyb3dzZXIuaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fbGlzdGVuU3RhdGVTaXplQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuU3RhdGVTaXplQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlPHZvaWQ+KFxuICAgICAgbmV3IFVwZGF0ZU5vZGVXaGVuU3RhdGVPclNpemVDaGFuZ2VkUmVxdWVzdCh0aGlzLCB0aGlzLl9kZXN0cm95UmVmKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubm90aWZ5KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTx2b2lkPihuZXcgUmVtb3ZlTm9kZUZyb21TdG9yZVJlcXVlc3QodGhpcykpO1xuICB9XG59XG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1ub2RlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1ub2RlL2Ytbm9kZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUNMLHFCQUFxQixFQUNyQix1Q0FBdUMsRUFDdkMsMEJBQTBCLEVBQzFCLDhDQUE4QyxHQUMvQyxNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFN0MsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQWF6QixNQUFNLE9BQU8sY0FDWCxTQUFRLFNBQVM7SUFHVCxjQUFjLEdBQXlDLElBQUksQ0FBQztJQUVuRCxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdEIsR0FBRyxHQUFHLEtBQUssQ0FBa0IsVUFBVSxRQUFRLEVBQUUsRUFBRSxFQUFFO1FBQzVFLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJ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RmQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDOzs0RkFFbEQsY0FBYztrQkFYMUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsU0FBUztvQkFDbkIsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLElBQUksRUFBRTt3QkFDSix1QkFBdUIsRUFBRSxPQUFPO3dCQUNoQyxLQUFLLEVBQUUsb0JBQW9CO3dCQUMzQixrQ0FBa0MsRUFBRSxxQkFBcUI7d0JBQ3pELG1DQUFtQyxFQUFFLHNCQUFzQjtxQkFDNUQ7b0JBQ0QsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsZ0JBQWdCLEVBQUUsQ0FBQztpQkFDOUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBib29sZWFuQXR0cmlidXRlLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgb3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElSZWN0LCBJU2l6ZSwgUG9pbnRFeHRlbnNpb25zIH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBOb3RpZnlUcmFuc2Zvcm1DaGFuZ2VkUmVxdWVzdCB9IGZyb20gJy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGX05PREUsIEZOb2RlQmFzZSB9IGZyb20gJy4vZi1ub2RlLWJhc2UnO1xuaW1wb3J0IHsgSUhhc0hvc3RFbGVtZW50IH0gZnJvbSAnLi4vaS1oYXMtaG9zdC1lbGVtZW50JztcbmltcG9ydCB7XG4gIEFkZE5vZGVUb1N0b3JlUmVxdWVzdCxcbiAgVXBkYXRlTm9kZVdoZW5TdGF0ZU9yU2l6ZUNoYW5nZWRSZXF1ZXN0LFxuICBSZW1vdmVOb2RlRnJvbVN0b3JlUmVxdWVzdCxcbiAgQ2FsY3VsYXRlTm9kZUNvbm5lY3RvcnNDb25uZWN0YWJsZVNpZGVzUmVxdWVzdCxcbn0gZnJvbSAnLi4vZG9tYWluJztcbmltcG9ydCB7IHN0cmluZ0F0dHJpYnV0ZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEZNZWRpYXRvciB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuXG5sZXQgdW5pcXVlSWQgPSAwO1xuY29uc3QgX0RFQk9VTkNFX1RJTUUgPSAzO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZk5vZGVdJyxcbiAgZXhwb3J0QXM6ICdmQ29tcG9uZW50JyxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5kYXRhLWYtbm9kZS1pZF0nOiAnZklkKCknLFxuICAgIGNsYXNzOiAnZi1ub2RlIGYtY29tcG9uZW50JyxcbiAgICAnW2NsYXNzLmYtbm9kZS1kcmFnZ2luZy1kaXNhYmxlZF0nOiAnZkRyYWdnaW5nRGlzYWJsZWQoKScsXG4gICAgJ1tjbGFzcy5mLW5vZGUtc2VsZWN0aW9uLWRpc2FibGVkXSc6ICdmU2VsZWN0aW9uRGlzYWJsZWQoKScsXG4gIH0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRl9OT0RFLCB1c2VFeGlzdGluZzogRk5vZGVEaXJlY3RpdmUgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZOb2RlRGlyZWN0aXZlXG4gIGV4dGVuZHMgRk5vZGVCYXNlXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBJSGFzSG9zdEVsZW1lbnQsIE9uRGVzdHJveVxue1xuICBwcml2YXRlIF9kZWJvdW5jZVRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGZJZCA9IGlucHV0PHN0cmluZywgdW5rbm93bj4oYGYtbm9kZS0ke3VuaXF1ZUlkKyt9YCwge1xuICAgIGFsaWFzOiAnZk5vZGVJZCcsXG4gICAgdHJhbnNmb3JtOiAodmFsdWUpID0+IHN0cmluZ0F0dHJpYnV0ZSh2YWx1ZSkgfHwgYGYtbm9kZS0ke3VuaXF1ZUlkKyt9YCxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGZQYXJlbnRJZCA9IGlucHV0PHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KG51bGwsIHtcbiAgICBhbGlhczogJ2ZOb2RlUGFyZW50SWQnLFxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgcG9zaXRpb24gPSBtb2RlbChQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpLCB7XG4gICAgYWxpYXM6ICdmTm9kZVBvc2l0aW9uJyxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IHNpemUgPSBpbnB1dDxJU2l6ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7XG4gICAgYWxpYXM6ICdmTm9kZVNpemUnLFxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgc2l6ZUNoYW5nZSA9IG91dHB1dDxJUmVjdD4oeyBhbGlhczogJ2ZOb2RlU2l6ZUNoYW5nZScgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvdGF0ZSA9IG1vZGVsKDAsIHtcbiAgICBhbGlhczogJ2ZOb2RlUm90YXRlJyxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGZDb25uZWN0T25Ob2RlID0gaW5wdXQodHJ1ZSwge1xuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGZNaW5pbWFwQ2xhc3MgPSBpbnB1dDxzdHJpbmdbXSB8IHN0cmluZz4oW10pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBmRHJhZ2dpbmdEaXNhYmxlZCA9IGlucHV0KGZhbHNlLCB7XG4gICAgYWxpYXM6ICdmTm9kZURyYWdnaW5nRGlzYWJsZWQnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGZTZWxlY3Rpb25EaXNhYmxlZCA9IGlucHV0KGZhbHNlLCB7XG4gICAgYWxpYXM6ICdmTm9kZVNlbGVjdGlvbkRpc2FibGVkJyxcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBmSW5jbHVkZVBhZGRpbmcgPSBpbnB1dCh0cnVlLCB7XG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgZkF1dG9FeHBhbmRPbkNoaWxkSGl0ID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBmQXV0b1NpemVUb0ZpdENoaWxkcmVuID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvcHJlZmVyLWluamVjdFxuICAgIGVsZW1lbnRSZWZlcmVuY2U6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHN1cGVyLnBvc2l0aW9uQ2hhbmdlcygpO1xuICAgIHN1cGVyLnNpemVDaGFuZ2VzKCk7XG4gICAgc3VwZXIucm90YXRlQ2hhbmdlcygpO1xuICAgIHN1cGVyLnBhcmVudENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0eWxlKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuICAgIHRoaXMuc2V0U3R5bGUoJ3RyYW5zZm9ybS1vcmlnaW4nLCAnY2VudGVyJyk7XG4gICAgdGhpcy5zZXRTdHlsZSgndXNlci1zZWxlY3QnLCAnbm9uZScpO1xuICAgIHRoaXMuc2V0U3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ2FsbCcpO1xuICAgIHRoaXMuc2V0U3R5bGUoJ2xlZnQnLCAnMCcpO1xuICAgIHRoaXMuc2V0U3R5bGUoJ3RvcCcsICcwJyk7XG4gICAgc3VwZXIucmVkcmF3KCk7XG5cbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlPHZvaWQ+KG5ldyBBZGROb2RlVG9TdG9yZVJlcXVlc3QodGhpcykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNldFN0eWxlKHN0eWxlTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50LCBzdHlsZU5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW1vdmVTdHlsZShzdHlsZU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5ob3N0RWxlbWVudCwgc3R5bGVOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZWRyYXcoKTogdm9pZCB7XG4gICAgc3VwZXIucmVkcmF3KCk7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgTm90aWZ5VHJhbnNmb3JtQ2hhbmdlZFJlcXVlc3QoKSk7XG4gICAgdGhpcy5fdXBkYXRlQ29ubmVjdG9yc1NpZGVzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3VwZGF0ZUNvbm5lY3RvcnNTaWRlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGVib3VuY2VUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2RlYm91bmNlVGltZXIpO1xuICAgIH1cbiAgICB0aGlzLl9kZWJvdW5jZVRpbWVyID0gc2V0VGltZW91dChcbiAgICAgICgpID0+IHRoaXMuX2NhbGN1bGF0ZU5vZGVDb25uZWN0b3JzQ29ubmVjdGFibGVTaWRlcygpLFxuICAgICAgX0RFQk9VTkNFX1RJTUUsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZU5vZGVDb25uZWN0b3JzQ29ubmVjdGFibGVTaWRlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlPHZvaWQ+KG5ldyBDYWxjdWxhdGVOb2RlQ29ubmVjdG9yc0Nvbm5lY3RhYmxlU2lkZXNSZXF1ZXN0KHRoaXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJyb3dzZXIuaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fbGlzdGVuU3RhdGVTaXplQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuU3RhdGVTaXplQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlPHZvaWQ+KFxuICAgICAgbmV3IFVwZGF0ZU5vZGVXaGVuU3RhdGVPclNpemVDaGFuZ2VkUmVxdWVzdCh0aGlzLCB0aGlzLl9kZXN0cm95UmVmKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubm90aWZ5KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTx2b2lkPihuZXcgUmVtb3ZlTm9kZUZyb21TdG9yZVJlcXVlc3QodGhpcykpO1xuICB9XG59XG4iXX0=
@@ -4,4 +4,4 @@ import { FConnectionCenterDirective } from './f-connection-center';
4
4
  import { FConnectionForCreateComponent } from './f-connection-for-create';
5
5
  import { FMarkerDirective } from './f-marker';
6
6
  import { FSnapConnectionComponent } from './f-snap-connection';
7
- export declare const F_CONNECTION_PROVIDERS: (typeof FConnectionDragHandleStartComponent | typeof FConnectionDragHandleEndComponent | typeof FConnectionSelectionComponent | typeof FConnectionCenterDirective | typeof FConnectionTextPathDirective | typeof FConnectionTextComponent | typeof FConnectionGradientComponent | typeof FConnectionPathComponent | typeof FConnectionForCreateComponent | typeof FConnectionComponent | typeof FMarkerDirective | typeof FSnapConnectionComponent)[];
7
+ export declare const F_CONNECTION_PROVIDERS: (typeof FConnectionTextPathDirective | typeof FConnectionTextComponent | typeof FConnectionDragHandleStartComponent | typeof FConnectionDragHandleEndComponent | typeof FConnectionGradientComponent | typeof FConnectionPathComponent | typeof FConnectionSelectionComponent | typeof FConnectionCenterDirective | typeof FConnectionForCreateComponent | typeof FConnectionComponent | typeof FMarkerDirective | typeof FSnapConnectionComponent)[];
@@ -3,5 +3,6 @@ export declare enum EFConnectableSide {
3
3
  TOP = "top",
4
4
  RIGHT = "right",
5
5
  BOTTOM = "bottom",
6
+ CALCULATE = "calculate",
6
7
  AUTO = "auto"
7
8
  }
@@ -4,6 +4,7 @@ import { Signal } from '@angular/core';
4
4
  export declare abstract class FConnectorBase implements IHasHostElement {
5
5
  abstract fId: Signal<string>;
6
6
  abstract fNodeId: string;
7
+ abstract fNodeHost: HTMLElement | SVGElement;
7
8
  abstract disabled: Signal<boolean>;
8
9
  abstract hostElement: HTMLElement | SVGElement;
9
10
  abstract canBeConnected: boolean;
@@ -13,6 +13,7 @@ export declare class FNodeInputDirective extends FNodeInputBase implements OnIni
13
13
  disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
14
14
  userFConnectableSide: EFConnectableSide;
15
15
  get fNodeId(): string;
16
+ get fNodeHost(): HTMLElement | SVGElement;
16
17
  ngOnInit(): void;
17
18
  ngOnChanges(changes: SimpleChanges): void;
18
19
  setConnected(toConnector: FConnectorBase): void;
@@ -13,6 +13,7 @@ export declare class FNodeOutletDirective extends FNodeOutletBase implements OnI
13
13
  isConnectionFromOutlet: boolean;
14
14
  canBeConnectedInputs: string[];
15
15
  get fNodeId(): string;
16
+ get fNodeHost(): HTMLElement | SVGElement;
16
17
  ngOnInit(): void;
17
18
  ngOnDestroy(): void;
18
19
  static ɵfac: i0.ɵɵFactoryDeclaration<FNodeOutletDirective, never>;
@@ -14,6 +14,7 @@ export declare class FNodeOutputDirective extends FNodeOutputBase implements OnI
14
14
  isSelfConnectable: boolean;
15
15
  canBeConnectedInputs: string[];
16
16
  get fNodeId(): string;
17
+ get fNodeHost(): HTMLElement | SVGElement;
17
18
  ngOnInit(): void;
18
19
  ngOnChanges(changes: SimpleChanges): void;
19
20
  setConnected(toConnector: FConnectorBase): void;
@@ -1,4 +1,4 @@
1
1
  import { FNodeInputDirective } from './f-node-input';
2
2
  import { FNodeOutletDirective } from './f-node-outlet';
3
3
  import { FNodeOutputDirective } from './f-node-output';
4
- export declare const F_CONNECTORS_PROVIDERS: (typeof FNodeInputDirective | typeof FNodeOutletDirective | typeof FNodeOutputDirective)[];
4
+ export declare const F_CONNECTORS_PROVIDERS: (typeof FNodeOutputDirective | typeof FNodeOutletDirective | typeof FNodeInputDirective)[];
@@ -1,9 +1,10 @@
1
- import { AfterViewInit, ElementRef, OnDestroy, OnInit } from "@angular/core";
1
+ import { AfterViewInit, ElementRef, OnDestroy, OnInit } from '@angular/core';
2
2
  import { IRect, ISize } from '@foblex/2d';
3
3
  import { FNodeBase } from './f-node-base';
4
4
  import { IHasHostElement } from '../i-has-host-element';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class FGroupDirective extends FNodeBase implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {
7
+ private _debounceTimer;
7
8
  private readonly _destroyRef;
8
9
  private readonly _mediator;
9
10
  readonly fId: import("@angular/core").InputSignal<string>;
@@ -24,6 +25,8 @@ export declare class FGroupDirective extends FNodeBase implements OnInit, AfterV
24
25
  protected setStyle(styleName: string, value: string): void;
25
26
  protected removeStyle(styleName: string): void;
26
27
  redraw(): void;
28
+ protected _updateConnectorsSides(): void;
29
+ private _calculateNodeConnectorsConnectableSides;
27
30
  ngAfterViewInit(): void;
28
31
  private _listenStateSizeChanges;
29
32
  refresh(): void;
@@ -4,7 +4,7 @@ import { FConnectorBase } from '../f-connectors';
4
4
  import { IHasHostElement } from '../i-has-host-element';
5
5
  import { ISelectable } from '../mixins';
6
6
  import { FChannel } from '../reactivity';
7
- import { BrowserService } from "@foblex/platform";
7
+ import { BrowserService } from '@foblex/platform';
8
8
  export declare const F_NODE: InjectionToken<FNodeBase>;
9
9
  declare const MIXIN_BASE: import("../mixins").Constructor<ISelectable> & import("../mixins").AbstractConstructor<ISelectable> & {
10
10
  new (hostElement: HTMLElement): {
@@ -4,6 +4,7 @@ import { FNodeBase } from './f-node-base';
4
4
  import { IHasHostElement } from '../i-has-host-element';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class FNodeDirective extends FNodeBase implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {
7
+ private _debounceTimer;
7
8
  private readonly _destroyRef;
8
9
  private readonly _mediator;
9
10
  readonly fId: import("@angular/core").InputSignalWithTransform<string, unknown>;
@@ -24,6 +25,8 @@ export declare class FNodeDirective extends FNodeBase implements OnInit, AfterVi
24
25
  protected setStyle(styleName: string, value: string): void;
25
26
  protected removeStyle(styleName: string): void;
26
27
  redraw(): void;
28
+ protected _updateConnectorsSides(): void;
29
+ private _calculateNodeConnectorsConnectableSides;
27
30
  ngAfterViewInit(): void;
28
31
  private _listenStateSizeChanges;
29
32
  refresh(): void;
@@ -1,4 +1,4 @@
1
1
  import { FNodeDirective } from './f-node.directive';
2
2
  import { FGroupDirective } from './f-group.directive';
3
- import { FRotateHandleDirective } from './f-rotate-handle';
4
- export declare const F_NODE_PROVIDERS: (typeof FRotateHandleDirective | typeof FGroupDirective | typeof FNodeDirective)[];
3
+ import { FDragHandleDirective } from './f-drag-handle.directive';
4
+ export declare const F_NODE_PROVIDERS: (typeof FNodeDirective | typeof FGroupDirective | typeof FDragHandleDirective)[];