@foblex/flow 17.0.6 → 17.0.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 (61) hide show
  1. package/domain/f-connection/find-closest-input/find-closest-input.execution.d.ts +11 -0
  2. package/domain/f-connection/{find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.d.ts → find-closest-input/find-closest-input.request.d.ts} +2 -3
  3. package/domain/f-connection/find-closest-input/i-closest-input.d.ts +7 -0
  4. package/domain/f-connection/find-closest-input/index.d.ts +3 -0
  5. package/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.d.ts +2 -3
  6. package/domain/f-connection/index.d.ts +1 -1
  7. package/domain/f-connection/providers.d.ts +2 -2
  8. package/domain/get-normalized-element-rect/get-normalized-element-rect-request.d.ts +2 -1
  9. package/domain/providers.d.ts +1 -1
  10. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.mjs +1 -1
  11. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.mjs +5 -3
  12. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.mjs +19 -29
  13. package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.mjs +6 -3
  14. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.execution.mjs +42 -0
  15. package/esm2022/domain/f-connection/find-closest-input/find-closest-input.request.mjs +9 -0
  16. package/esm2022/domain/f-connection/find-closest-input/i-closest-input.mjs +2 -0
  17. package/esm2022/domain/f-connection/find-closest-input/index.mjs +4 -0
  18. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.mjs +1 -1
  19. package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.mjs +7 -11
  20. package/esm2022/domain/f-connection/index.mjs +2 -2
  21. package/esm2022/domain/f-connection/providers.mjs +3 -3
  22. package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +2 -2
  23. package/esm2022/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.mjs +3 -3
  24. package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect-request.mjs +4 -2
  25. package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect.execution.mjs +5 -5
  26. package/esm2022/f-connection/f-connection/f-connection.component.mjs +6 -5
  27. package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +33 -19
  28. package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +29 -21
  29. package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.mjs +2 -2
  30. package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +2 -2
  31. package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +2 -2
  32. package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +2 -2
  33. package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +2 -2
  34. package/esm2022/f-draggable/node/connection.drag-handler.mjs +2 -2
  35. package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.mjs +2 -2
  36. package/esm2022/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.mjs +15 -8
  37. package/esm2022/f-draggable/node/node-drag-to-parent.drag-handler.mjs +32 -17
  38. package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +1 -1
  39. package/esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.mjs +2 -2
  40. package/esm2022/f-draggable/node-resize/node-resize.drag-handler.mjs +2 -2
  41. package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.execution.mjs +2 -2
  42. package/esm2022/f-line-alignment/domain/index.mjs +1 -2
  43. package/esm2022/f-line-alignment/f-line-alignment.component.mjs +17 -12
  44. package/f-connection/f-connection/f-connection.component.d.ts +4 -2
  45. package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +8 -4
  46. package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +7 -4
  47. package/f-draggable/node/connection-base-drag-handler.d.ts +1 -1
  48. package/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.d.ts +4 -3
  49. package/f-draggable/node/node-drag-to-parent.drag-handler.d.ts +9 -4
  50. package/f-line-alignment/domain/index.d.ts +0 -1
  51. package/f-line-alignment/f-line-alignment.component.d.ts +2 -1
  52. package/fesm2022/foblex-flow.mjs +185 -242
  53. package/fesm2022/foblex-flow.mjs.map +1 -1
  54. package/package.json +3 -3
  55. package/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.d.ts +0 -11
  56. package/domain/f-connection/find-closest-input-using-snap-threshold/index.d.ts +0 -2
  57. package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.mjs +0 -39
  58. package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.mjs +0 -11
  59. package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/index.mjs +0 -3
  60. package/esm2022/f-line-alignment/domain/nearest-coordinate.mjs +0 -104
  61. package/f-line-alignment/domain/nearest-coordinate.d.ts +0 -27
@@ -1,6 +1,6 @@
1
1
  import { Component, inject, Input } from '@angular/core';
2
- import { RectExtensions, SizeExtensions } from '@foblex/2d';
3
- import { LineService, NearestCoordinateFinder } from './domain';
2
+ import { findClosestAlignment, RectExtensions, SizeExtensions } from '@foblex/2d';
3
+ import { LineService } from './domain';
4
4
  import { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';
5
5
  import { GetCanvasRequest, GetNormalizedElementRectRequest, GetFlowHostElementRequest } from '../domain';
6
6
  import { FMediator } from '@foblex/mediator';
@@ -10,6 +10,7 @@ import * as i2 from "@foblex/platform";
10
10
  export class FLineAlignmentComponent extends FLineAlignmentBase {
11
11
  elementReference;
12
12
  fDraggableDataContext;
13
+ DEBOUNCE_TIME = 10;
13
14
  fAlignThreshold = 10;
14
15
  get hostElement() {
15
16
  return this.elementReference.nativeElement;
@@ -20,12 +21,10 @@ export class FLineAlignmentComponent extends FLineAlignmentBase {
20
21
  rects = [];
21
22
  _fMediator = inject(FMediator);
22
23
  _fCanvas;
24
+ _debounceTimer = null;
23
25
  get _transform() {
24
26
  return this._fCanvas.transform;
25
27
  }
26
- get _fFlowHostElement() {
27
- return this._fMediator.send(new GetFlowHostElementRequest());
28
- }
29
28
  constructor(elementReference, fDraggableDataContext, fBrowser) {
30
29
  super();
31
30
  this.elementReference = elementReference;
@@ -37,21 +36,24 @@ export class FLineAlignmentComponent extends FLineAlignmentBase {
37
36
  this.fDraggableDataContext.fLineAlignment = this;
38
37
  }
39
38
  initialize(allNodes, currentNodes) {
40
- this.size = this._fFlowHostElement.getBoundingClientRect();
39
+ this.size = this._fMediator.send(new GetFlowHostElementRequest()).getBoundingClientRect();
41
40
  this.rects = [];
42
41
  const draggedNodeRects = currentNodes.map((x) => {
43
- return this._fMediator.send(new GetNormalizedElementRectRequest(x.hostElement));
42
+ return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
44
43
  });
45
44
  this.draggedNodeRect = RectExtensions.union(draggedNodeRects) || RectExtensions.initialize();
46
45
  const allNodesExcludeCurrents = allNodes.filter((x) => {
47
46
  return !currentNodes.includes(x);
48
47
  });
49
48
  this.rects = allNodesExcludeCurrents.map((x) => {
50
- return this._fMediator.send(new GetNormalizedElementRectRequest(x.hostElement));
49
+ return this._fMediator.execute(new GetNormalizedElementRectRequest(x.hostElement, false));
51
50
  });
52
51
  }
53
52
  handle(difference) {
54
- this.drawIntersectingLines(difference);
53
+ if (this._debounceTimer) {
54
+ clearTimeout(this._debounceTimer);
55
+ }
56
+ this._debounceTimer = setTimeout(() => this.drawIntersectingLines(difference), this.DEBOUNCE_TIME);
55
57
  }
56
58
  drawIntersectingLines(difference) {
57
59
  const intersect = this.findNearestCoordinate(difference);
@@ -70,12 +72,15 @@ export class FLineAlignmentComponent extends FLineAlignmentBase {
70
72
  }
71
73
  findNearestCoordinate(difference) {
72
74
  const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);
73
- const finder = new NearestCoordinateFinder(this.rects, rect, this.fAlignThreshold);
74
- return { xResult: finder.findNearestCoordinateByX(), yResult: finder.findNearestCoordinateByY() };
75
+ return findClosestAlignment(this.rects, rect, this.fAlignThreshold);
75
76
  }
76
77
  complete() {
77
78
  this.lineService.hideVerticalLine();
78
79
  this.lineService.hideHorizontalLine();
80
+ if (this._debounceTimer) {
81
+ clearTimeout(this._debounceTimer);
82
+ this._debounceTimer = null;
83
+ }
79
84
  }
80
85
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FLineAlignmentComponent, deps: [{ token: i0.ElementRef }, { token: i1.FDraggableDataContext }, { token: i2.BrowserService }], target: i0.ɵɵFactoryTarget.Component });
81
86
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: FLineAlignmentComponent, selector: "f-line-alignment", inputs: { fAlignThreshold: "fAlignThreshold" }, host: { classAttribute: "f-line-alignment f-component" }, providers: [
@@ -92,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
92
97
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FDraggableDataContext }, { type: i2.BrowserService }], propDecorators: { fAlignThreshold: [{
93
98
  type: Input
94
99
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1saW5lLWFsaWdubWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtbGluZS1hbGlnbm1lbnQvZi1saW5lLWFsaWdubWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQXlDLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkcsT0FBTyxFQUF3QixXQUFXLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLCtCQUErQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQWdCN0MsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGtCQUFrQjtJQThCbkQ7SUFDQTtJQTVCSCxlQUFlLEdBQVcsRUFBRSxDQUFDO0lBRXBDLElBQW9CLFdBQVc7UUFDN0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFFTyxXQUFXLENBQWM7SUFFekIsSUFBSSxHQUFVLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUUxQyxlQUFlLEdBQVUsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRXJELEtBQUssR0FBWSxFQUFFLENBQUM7SUFFcEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUvQixRQUFRLENBQTBCO0lBRTFDLElBQVksVUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFTLENBQUMsU0FBUyxD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QyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRU0scUJBQXFCLENBQUMsVUFBa0I7UUFDN0MsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sTUFBTSxHQUFHLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRW5GLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7SUFDcEcsQ0FBQztJQUVlLFFBQVE7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO3VHQXhGVSx1QkFBdUI7MkZBQXZCLHVCQUF1QixxSkFKdkI7WUFDVCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUU7U0FDcEUsMkVBUlMsRUFBRTs7MkZBVUQsdUJBQXVCO2tCQVpuQyxTQUFTOytCQUNFLGtCQUFrQixZQUNsQixFQUFFLFlBRUYsWUFBWSxRQUNoQjt3QkFDSixPQUFPLEVBQUUsOEJBQThCO3FCQUN4QyxhQUNVO3dCQUNULEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcseUJBQXlCLEVBQUU7cUJBQ3BFO2dKQUtNLGVBQWU7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQb2ludCwgSVJlY3QsIElTaXplLCBJVHJhbnNmb3JtTW9kZWwsIFJlY3RFeHRlbnNpb25zLCBTaXplRXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgSUxpbmVBbGlnbm1lbnRSZXN1bHQsIExpbmVTZXJ2aWNlLCBOZWFyZXN0Q29vcmRpbmF0ZUZpbmRlciB9IGZyb20gJy4vZG9tYWluJztcbmltcG9ydCB7IEZfTElORV9BTElHTk1FTlQsIEZMaW5lQWxpZ25tZW50QmFzZSB9IGZyb20gJy4vZi1saW5lLWFsaWdubWVudC1iYXNlJztcbmltcG9ydCB7IEZEcmFnZ2FibGVEYXRhQ29udGV4dCB9IGZyb20gJy4uL2YtZHJhZ2dhYmxlJztcbmltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uL2Ytbm9kZSc7XG5pbXBvcnQgeyBHZXRDYW52YXNSZXF1ZXN0LCBHZXROb3JtYWxpemVkRWxlbWVudFJlY3RSZXF1ZXN0LCBHZXRGbG93SG9zdEVsZW1lbnRSZXF1ZXN0IH0gZnJvbSAnLi4vZG9tYWluJztcbmltcG9ydCB7IEZNZWRpYXRvciB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgQnJvd3NlclNlcnZpY2UgfSBmcm9tICdAZm9ibGV4L3BsYXRmb3JtJztcbmltcG9ydCB7IEZDYW52YXNCYXNlIH0gZnJvbSAnLi4vZi1jYW52YXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiZi1saW5lLWFsaWdubWVudFwiLFxuICB0ZW1wbGF0ZTogXCJcIixcbiAgc3R5bGVVcmxzOiBbIFwiLi9mLWxpbmUtYWxpZ25tZW50LmNvbXBvbmVudC5zY3NzXCIgXSxcbiAgZXhwb3J0QXM6IFwiZkNvbXBvbmVudFwiLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ2YtbGluZS1hbGlnbm1lbnQgZi1jb21wb25lbnQnXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogRl9MSU5FX0FMSUdOTUVOVCwgdXNlRXhpc3Rpbmc6IEZMaW5lQWxpZ25tZW50Q29tcG9uZW50IH1cbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRkxpbmVBbGlnbm1lbnRDb21wb25lbnQgZXh0ZW5kcyBGTGluZUFsaWdubWVudEJhc2UgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZkFsaWduVGhyZXNob2xkOiBudW1iZXIgPSAxMDtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGxpbmVTZXJ2aWNlOiBMaW5lU2VydmljZTtcblxuICBwcml2YXRlIHNpemU6IElTaXplID0gU2l6ZUV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIHByaXZhdGUgZHJhZ2dlZE5vZGVSZWN0OiBJUmVjdCA9IFJlY3RFeHRlbnNpb25zLmluaXRpYWxpemUoKTtcblxuICBwcml2YXRlIHJlY3RzOiBJUmVjdFtdID0gW107XG5cbiAgcHJpdmF0ZSBfZk1lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG5cbiAgcHJpdmF0ZSBfZkNhbnZhczogRkNhbnZhc0Jhc2UgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBnZXQgX3RyYW5zZm9ybSgpOiBJVHJhbnNmb3JtTW9kZWwge1xuICAgIHJldHVybiB0aGlzLl9mQ2FudmFzIS50cmFuc2Zvcm07XG4gIH1cblxuICBwcml2YXRlIGdldCBfZkZsb3dIb3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZNZWRpYXRvci5zZW5kPEhUTUxFbGVtZW50PihuZXcgR2V0Rmxvd0hvc3RFbGVtZW50UmVxdWVzdCgpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZmVyZW5jZTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBmRHJhZ2dhYmxlRGF0YUNvbnRleHQ6IEZEcmFnZ2FibGVEYXRhQ29udGV4dCxcbiAgICBmQnJvd3NlcjogQnJvd3NlclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmxpbmVTZXJ2aWNlID0gbmV3IExpbmVTZXJ2aWNlKGZCcm93c2VyLCB0aGlzLmhvc3RFbGVtZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZkNhbnZhcyA9IHRoaXMuX2ZNZWRpYXRvci5zZW5kKG5ldyBHZXRDYW52YXNSZXF1ZXN0KCkpO1xuICAgIHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LmZMaW5lQWxpZ25tZW50ID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBpbml0aWFsaXplKGFsbE5vZGVzOiBGTm9kZUJhc2VbXSwgY3VycmVudE5vZGVzOiBGTm9kZUJhc2VbXSk6IHZvaWQge1xuICAgIHRoaXMuc2l6ZSA9IHRoaXMuX2ZGbG93SG9zdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdGhpcy5yZWN0cyA9IFtdO1xuICAgIGNvbnN0IGRyYWdnZWROb2RlUmVjdHMgPSBjdXJyZW50Tm9kZXMubWFwKCh4KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fZk1lZGlhdG9yLnNlbmQ8SVJlY3Q+KG5ldyBHZXROb3JtYWxpemVkRWxlbWVudFJlY3RSZXF1ZXN0KHguaG9zdEVsZW1lbnQpKTtcbiAgICB9KTtcbiAgICB0aGlzLmRyYWdnZWROb2RlUmVjdCA9IFJlY3RFeHRlbnNpb25zLnVuaW9uKGRyYWdnZWROb2RlUmVjdHMpIHx8IFJlY3RFeHRlbnNpb25zLmluaXRpYWxpemUoKTtcblxuICAgIGNvbnN0IGFsbE5vZGVzRXhjbHVkZUN1cnJlbnRzID0gYWxsTm9kZXMuZmlsdGVyKCh4KSA9PiB7XG4gICAgICByZXR1cm4gIWN1cnJlbnROb2Rlcy5pbmNsdWRlcyh4KTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVjdHMgPSBhbGxOb2Rlc0V4Y2x1ZGVDdXJyZW50cy5tYXAoKHgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9mTWVkaWF0b3Iuc2VuZDxJUmVjdD4obmV3IEdldE5vcm1hbGl6ZWRFbGVtZW50UmVjdFJlcXVlc3QoeC5ob3N0RWxlbWVudCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGhhbmRsZShkaWZmZXJlbmNlOiBJUG9pbnQpOiB2b2lkIHtcbiAgICB0aGlzLmRyYXdJbnRlcnNlY3RpbmdMaW5lcyhkaWZmZXJlbmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZHJhd0ludGVyc2VjdGluZ0xpbmVzKGRpZmZlcmVuY2U6IElQb2ludCk6IHZvaWQge1xuICAgIGNvbnN0IGludGVyc2VjdCA9IHRoaXMuZmluZE5lYXJlc3RDb29yZGluYXRlKGRpZmZlcmVuY2UpO1xuICAgIGlmIChpbnRlcnNlY3QueFJlc3VsdC52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxpbmVTZXJ2aWNlLmRyYXdWZXJ0aWNhbExpbmUoaW50ZXJzZWN0LnhSZXN1bHQudmFsdWUsIHRoaXMuc2l6ZSwgdGhpcy5fdHJhbnNmb3JtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saW5lU2VydmljZS5oaWRlVmVydGljYWxMaW5lKCk7XG4gICAgfVxuICAgIGlmIChpbnRlcnNlY3QueVJlc3VsdC52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxpbmVTZXJ2aWNlLmRyYXdIb3Jpem9udGFsTGluZShpbnRlcnNlY3QueVJlc3VsdC52YWx1ZSwgdGhpcy5zaXplLCB0aGlzLl90cmFuc2Zvcm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpbmVTZXJ2aWNlLmhpZGVIb3Jpem9udGFsTGluZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaW5kTmVhcmVzdENvb3JkaW5hdGUoZGlmZmVyZW5jZTogSVBvaW50KTogSUxpbmVBbGlnbm1lbnRSZXN1bHQge1xuICAgIGNvbnN0IHJlY3QgPSBSZWN0RXh0ZW5zaW9ucy5hZGRQb2ludCh0aGlzLmRyYWdnZWROb2RlUmVjdCwgZGlmZmVyZW5jZSk7XG4gICAgY29uc3QgZmluZGVyID0gbmV3IE5lYXJlc3RDb29yZGluYXRlRmluZGVyKHRoaXMucmVjdHMsIHJlY3QsIHRoaXMuZkFsaWduVGhyZXNob2xkKTtcblxuICAgIHJldHVybiB7IHhSZXN1bHQ6IGZpbmRlci5maW5kTmVhcmVzdENvb3JkaW5hdGVCeVgoKSwgeVJlc3VsdDogZmluZGVyLmZpbmROZWFyZXN0Q29vcmRpbmF0ZUJ5WSgpIH07XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29tcGxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5saW5lU2VydmljZS5oaWRlVmVydGljYWxMaW5lKCk7XG4gICAgdGhpcy5saW5lU2VydmljZS5oaWRlSG9yaXpvbnRhbExpbmUoKTtcbiAgfVxufVxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1saW5lLWFsaWdubWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtbGluZS1hbGlnbm1lbnQvZi1saW5lLWFsaWdubWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQ0wsb0JBQW9CLEVBS3BCLGNBQWMsRUFDZCxjQUFjLEVBQ2YsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUF3QixXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLCtCQUErQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQWdCN0MsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGtCQUFrQjtJQThCbkQ7SUFDQTtJQTdCRixhQUFhLEdBQUcsRUFBRSxDQUFDO0lBR3BCLGVBQWUsR0FBVyxFQUFFLENBQUM7SUFFcEMsSUFBb0IsV0FBVztRQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7SUFDN0MsQ0FBQztJQUVPLFdBQVcsQ0FBYztJQUV6QixJQUFJLEdBQVUsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRTFDLGVBQWUsR0FBVSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFckQsS0FBSyxHQUFZLEVBQUUsQ0FBQztJQUVwQixVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRS9CLFFBQVEsQ0FBMEI7SUFFbEMsY0FBYyxHQUFRLElBQUksQ0FBQztJ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O3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBmaW5kQ2xvc2VzdEFsaWdubWVudCxcbiAgSVBvaW50LFxuICBJUmVjdCxcbiAgSVNpemUsXG4gIElUcmFuc2Zvcm1Nb2RlbCxcbiAgUmVjdEV4dGVuc2lvbnMsXG4gIFNpemVFeHRlbnNpb25zXG59IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgSUxpbmVBbGlnbm1lbnRSZXN1bHQsIExpbmVTZXJ2aWNlIH0gZnJvbSAnLi9kb21haW4nO1xuaW1wb3J0IHsgRl9MSU5FX0FMSUdOTUVOVCwgRkxpbmVBbGlnbm1lbnRCYXNlIH0gZnJvbSAnLi9mLWxpbmUtYWxpZ25tZW50LWJhc2UnO1xuaW1wb3J0IHsgRkRyYWdnYWJsZURhdGFDb250ZXh0IH0gZnJvbSAnLi4vZi1kcmFnZ2FibGUnO1xuaW1wb3J0IHsgRk5vZGVCYXNlIH0gZnJvbSAnLi4vZi1ub2RlJztcbmltcG9ydCB7IEdldENhbnZhc1JlcXVlc3QsIEdldE5vcm1hbGl6ZWRFbGVtZW50UmVjdFJlcXVlc3QsIEdldEZsb3dIb3N0RWxlbWVudFJlcXVlc3QgfSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJ0Bmb2JsZXgvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRkNhbnZhc0Jhc2UgfSBmcm9tICcuLi9mLWNhbnZhcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJmLWxpbmUtYWxpZ25tZW50XCIsXG4gIHRlbXBsYXRlOiBcIlwiLFxuICBzdHlsZVVybHM6IFsgXCIuL2YtbGluZS1hbGlnbm1lbnQuY29tcG9uZW50LnNjc3NcIiBdLFxuICBleHBvcnRBczogXCJmQ29tcG9uZW50XCIsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnZi1saW5lLWFsaWdubWVudCBmLWNvbXBvbmVudCdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBGX0xJTkVfQUxJR05NRU5ULCB1c2VFeGlzdGluZzogRkxpbmVBbGlnbm1lbnRDb21wb25lbnQgfVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGTGluZUFsaWdubWVudENvbXBvbmVudCBleHRlbmRzIEZMaW5lQWxpZ25tZW50QmFzZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIHByaXZhdGUgREVCT1VOQ0VfVElNRSA9IDEwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmQWxpZ25UaHJlc2hvbGQ6IG51bWJlciA9IDEwO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgaG9zdEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgbGluZVNlcnZpY2U6IExpbmVTZXJ2aWNlO1xuXG4gIHByaXZhdGUgc2l6ZTogSVNpemUgPSBTaXplRXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG5cbiAgcHJpdmF0ZSBkcmFnZ2VkTm9kZVJlY3Q6IElSZWN0ID0gUmVjdEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIHByaXZhdGUgcmVjdHM6IElSZWN0W10gPSBbXTtcblxuICBwcml2YXRlIF9mTWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcblxuICBwcml2YXRlIF9mQ2FudmFzOiBGQ2FudmFzQmFzZSB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9kZWJvdW5jZVRpbWVyOiBhbnkgPSBudWxsO1xuXG4gIHByaXZhdGUgZ2V0IF90cmFuc2Zvcm0oKTogSVRyYW5zZm9ybU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fZkNhbnZhcyEudHJhbnNmb3JtO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmZXJlbmNlOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGZEcmFnZ2FibGVEYXRhQ29udGV4dDogRkRyYWdnYWJsZURhdGFDb250ZXh0LFxuICAgIGZCcm93c2VyOiBCcm93c2VyU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubGluZVNlcnZpY2UgPSBuZXcgTGluZVNlcnZpY2UoZkJyb3dzZXIsIHRoaXMuaG9zdEVsZW1lbnQpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mQ2FudmFzID0gdGhpcy5fZk1lZGlhdG9yLnNlbmQobmV3IEdldENhbnZhc1JlcXVlc3QoKSk7XG4gICAgdGhpcy5mRHJhZ2dhYmxlRGF0YUNvbnRleHQuZkxpbmVBbGlnbm1lbnQgPSB0aGlzO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGluaXRpYWxpemUoYWxsTm9kZXM6IEZOb2RlQmFzZVtdLCBjdXJyZW50Tm9kZXM6IEZOb2RlQmFzZVtdKTogdm9pZCB7XG4gICAgdGhpcy5zaXplID0gdGhpcy5fZk1lZGlhdG9yLnNlbmQ8SFRNTEVsZW1lbnQ+KG5ldyBHZXRGbG93SG9zdEVsZW1lbnRSZXF1ZXN0KCkpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRoaXMucmVjdHMgPSBbXTtcbiAgICBjb25zdCBkcmFnZ2VkTm9kZVJlY3RzID0gY3VycmVudE5vZGVzLm1hcCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlPElSZWN0PihuZXcgR2V0Tm9ybWFsaXplZEVsZW1lbnRSZWN0UmVxdWVzdCh4Lmhvc3RFbGVtZW50LCBmYWxzZSkpO1xuICAgIH0pO1xuICAgIHRoaXMuZHJhZ2dlZE5vZGVSZWN0ID0gUmVjdEV4dGVuc2lvbnMudW5pb24oZHJhZ2dlZE5vZGVSZWN0cykgfHwgUmVjdEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gICAgY29uc3QgYWxsTm9kZXNFeGNsdWRlQ3VycmVudHMgPSBhbGxOb2Rlcy5maWx0ZXIoKHgpID0+IHtcbiAgICAgIHJldHVybiAhY3VycmVudE5vZGVzLmluY2x1ZGVzKHgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZWN0cyA9IGFsbE5vZGVzRXhjbHVkZUN1cnJlbnRzLm1hcCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlPElSZWN0PihuZXcgR2V0Tm9ybWFsaXplZEVsZW1lbnRSZWN0UmVxdWVzdCh4Lmhvc3RFbGVtZW50LCBmYWxzZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGhhbmRsZShkaWZmZXJlbmNlOiBJUG9pbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGVib3VuY2VUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2RlYm91bmNlVGltZXIpO1xuICAgIH1cblxuICAgIHRoaXMuX2RlYm91bmNlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZHJhd0ludGVyc2VjdGluZ0xpbmVzKGRpZmZlcmVuY2UpLCB0aGlzLkRFQk9VTkNFX1RJTUUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3SW50ZXJzZWN0aW5nTGluZXMoZGlmZmVyZW5jZTogSVBvaW50KTogdm9pZCB7XG4gICAgY29uc3QgaW50ZXJzZWN0ID0gdGhpcy5maW5kTmVhcmVzdENvb3JkaW5hdGUoZGlmZmVyZW5jZSk7XG4gICAgaWYgKGludGVyc2VjdC54UmVzdWx0LnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubGluZVNlcnZpY2UuZHJhd1ZlcnRpY2FsTGluZShpbnRlcnNlY3QueFJlc3VsdC52YWx1ZSwgdGhpcy5zaXplLCB0aGlzLl90cmFuc2Zvcm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpbmVTZXJ2aWNlLmhpZGVWZXJ0aWNhbExpbmUoKTtcbiAgICB9XG4gICAgaWYgKGludGVyc2VjdC55UmVzdWx0LnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubGluZVNlcnZpY2UuZHJhd0hvcml6b250YWxMaW5lKGludGVyc2VjdC55UmVzdWx0LnZhbHVlLCB0aGlzLnNpemUsIHRoaXMuX3RyYW5zZm9ybSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGluZVNlcnZpY2UuaGlkZUhvcml6b250YWxMaW5lKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbmROZWFyZXN0Q29vcmRpbmF0ZShkaWZmZXJlbmNlOiBJUG9pbnQpOiBJTGluZUFsaWdubWVudFJlc3VsdCB7XG4gICAgY29uc3QgcmVjdCA9IFJlY3RFeHRlbnNpb25zLmFkZFBvaW50KHRoaXMuZHJhZ2dlZE5vZGVSZWN0LCBkaWZmZXJlbmNlKTtcblxuICAgIHJldHVybiBmaW5kQ2xvc2VzdEFsaWdubWVudCh0aGlzLnJlY3RzLCByZWN0LCB0aGlzLmZBbGlnblRocmVzaG9sZCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29tcGxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5saW5lU2VydmljZS5oaWRlVmVydGljYWxMaW5lKCk7XG4gICAgdGhpcy5saW5lU2VydmljZS5oaWRlSG9yaXpvbnRhbExpbmUoKTtcblxuICAgIGlmICh0aGlzLl9kZWJvdW5jZVRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fZGVib3VuY2VUaW1lcik7XG4gICAgICB0aGlzLl9kZWJvdW5jZVRpbWVyID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -12,8 +12,8 @@ export declare class FConnectionComponent extends FConnectionBase implements OnI
12
12
  fTextStartOffset: string;
13
13
  fStartColor: string;
14
14
  fEndColor: string;
15
- fOutputId: string;
16
- fInputId: string;
15
+ fOutputId: any;
16
+ fInputId: any;
17
17
  fRadius: number;
18
18
  fOffset: number;
19
19
  fBehavior: EFConnectionBehavior;
@@ -37,4 +37,6 @@ export declare class FConnectionComponent extends FConnectionBase implements OnI
37
37
  static ɵfac: i0.ɵɵFactoryDeclaration<FConnectionComponent, never>;
38
38
  static ɵcmp: i0.ɵɵComponentDeclaration<FConnectionComponent, "f-connection", ["fComponent"], { "fId": { "alias": "fConnectionId"; "required": false; }; "fText": { "alias": "fText"; "required": false; }; "fTextStartOffset": { "alias": "fTextStartOffset"; "required": false; }; "fStartColor": { "alias": "fStartColor"; "required": false; }; "fEndColor": { "alias": "fEndColor"; "required": false; }; "fOutputId": { "alias": "fOutputId"; "required": false; }; "fInputId": { "alias": "fInputId"; "required": false; }; "fRadius": { "alias": "fRadius"; "required": false; }; "fOffset": { "alias": "fOffset"; "required": false; }; "fBehavior": { "alias": "fBehavior"; "required": false; }; "fType": { "alias": "fType"; "required": false; }; "fDraggingDisabled": { "alias": "fReassignDisabled"; "required": false; }; "fSelectionDisabled": { "alias": "fSelectionDisabled"; "required": false; }; }, {}, ["fConnectionCenters"], ["*", "[fConnectionCenter]"], false, never>;
39
39
  static ngAcceptInputType_fBehavior: unknown;
40
+ static ngAcceptInputType_fDraggingDisabled: unknown;
41
+ static ngAcceptInputType_fSelectionDisabled: unknown;
40
42
  }
@@ -1,5 +1,5 @@
1
1
  import { IDraggableItem } from '../../i-draggable-item';
2
- import { IConnectorWithRect } from '../../../domain';
2
+ import { IClosestInput } from '../../../domain';
3
3
  import { FConnectionBase } from '../../../f-connection';
4
4
  import { FConnectorBase } from '../../../f-connectors';
5
5
  import { FMediator } from '@foblex/mediator';
@@ -17,9 +17,13 @@ export declare class CreateConnectionDragHandler implements IDraggableItem {
17
17
  private canBeConnectedInputs;
18
18
  constructor(fMediator: FMediator, fComponentsStore: FComponentsStore, fOutput: FConnectorBase, onPointerDownPosition: IPoint);
19
19
  prepareDragSequence(): void;
20
+ private _initializeSnapConnection;
21
+ private _initializeConnectionForCreate;
20
22
  onPointerMove(difference: IPoint): void;
21
- private drawTempConnection;
22
- private drawSnapConnection;
23
- getClosetInput(difference: IPoint): IConnectorWithRect | undefined;
23
+ private _drawConnectionForCreate;
24
+ private _drawSnapConnection;
25
+ getClosetInput(difference: IPoint): IClosestInput | undefined;
26
+ private _findClosestInput;
27
+ private _getClosestInputForSnapConnection;
24
28
  onPointerUp(): void;
25
29
  }
@@ -1,5 +1,5 @@
1
1
  import { IDraggableItem } from '../../i-draggable-item';
2
- import { IConnectorWithRect } from '../../../domain';
2
+ import { IClosestInput } from '../../../domain';
3
3
  import { FConnectionBase } from '../../../f-connection';
4
4
  import { FMediator } from '@foblex/mediator';
5
5
  import { IPoint, RoundedRect } from '@foblex/2d';
@@ -15,11 +15,14 @@ export declare class ReassignConnectionDragHandler implements IDraggableItem {
15
15
  private canBeConnectedInputs;
16
16
  constructor(fMediator: FMediator, fComponentsStore: FComponentsStore, fConnection: FConnectionBase);
17
17
  prepareDragSequence(): void;
18
+ private _initializeSnapConnection;
18
19
  private getOutput;
19
20
  private getInput;
20
21
  onPointerMove(difference: IPoint): void;
21
- private drawConnection;
22
- private drawSnapConnection;
23
- getClosetInput(difference: IPoint): IConnectorWithRect | undefined;
22
+ private _drawConnection;
23
+ private _drawSnapConnection;
24
+ getClosetInput(difference: IPoint): IClosestInput | undefined;
25
+ private _findClosestInput;
26
+ private _getClosestInputForSnapConnection;
24
27
  onPointerUp(): void;
25
28
  }
@@ -18,7 +18,7 @@ export declare abstract class ConnectionBaseDragHandler implements IDraggableIte
18
18
  private getInput;
19
19
  private connectorNotFoundPrefix;
20
20
  abstract onPointerMove(difference: IPoint): void;
21
- protected getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint;
21
+ protected getRestrictedDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint;
22
22
  protected redrawConnection(line: ILine): void;
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<ConnectionBaseDragHandler, never>;
24
24
  static ɵdir: i0.ɵɵDirectiveDeclaration<ConnectionBaseDragHandler, never, never, {}, {}, never, never, false, never>;
@@ -12,9 +12,10 @@ export declare class NodeDragToParentPreparationExecution implements IExecution<
12
12
  private get fCanvasPosition();
13
13
  constructor(fMediator: FMediator, fDraggableDataContext: FDraggableDataContext, fComponentsStore: FComponentsStore);
14
14
  handle(request: NodeDragToParentPreparationRequest): void;
15
- private getNotDraggedNodesRects;
16
- private getDraggedNodes;
17
- private getNotDraggedNodes;
15
+ private _getNotDraggedNodesRects;
16
+ private _getNodesBeingDragged;
17
+ private _addParentNodes;
18
+ private _getNotDraggedNodes;
18
19
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeDragToParentPreparationExecution, never>;
19
20
  static ɵprov: i0.ɵɵInjectableDeclaration<NodeDragToParentPreparationExecution>;
20
21
  }
@@ -8,13 +8,18 @@ export declare class NodeDragToParentDragHandler implements IDraggableItem {
8
8
  private fComponentsStore;
9
9
  private fDraggableDataContext;
10
10
  private notDraggedNodesRects;
11
- private get transform();
12
- private onPointerDownPosition;
11
+ private DEBOUNCE_TIME;
12
+ private get _transform();
13
+ private _onPointerDownPosition;
14
+ private _debounceTimer;
13
15
  fNodeWithRect: INodeWithRect | null;
14
16
  constructor(fComponentsStore: FComponentsStore, fDraggableDataContext: FDraggableDataContext, notDraggedNodesRects: INodeWithRect[]);
17
+ private _toggleParentNode;
18
+ private _getNewPosition;
19
+ private _isNodeInsideAnotherNode;
15
20
  onPointerMove(difference: IPoint): void;
16
- private markIncludeNode;
17
- private unmarkIncludeNode;
21
+ private _markIncludeNode;
22
+ private _unmarkIncludeNode;
18
23
  onPointerUp(): void;
19
24
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeDragToParentDragHandler, never>;
20
25
  static ɵdir: i0.ɵɵDirectiveDeclaration<NodeDragToParentDragHandler, never, never, {}, {}, never, never, false, never>;
@@ -3,4 +3,3 @@ export * from './i-line-alignment-result';
3
3
  export * from './i-nearest-coordinate-result';
4
4
  export * from './line-element';
5
5
  export * from './line-service';
6
- export * from './nearest-coordinate';
@@ -9,6 +9,7 @@ import * as i0 from "@angular/core";
9
9
  export declare class FLineAlignmentComponent extends FLineAlignmentBase implements AfterViewInit {
10
10
  private elementReference;
11
11
  private fDraggableDataContext;
12
+ private DEBOUNCE_TIME;
12
13
  fAlignThreshold: number;
13
14
  get hostElement(): HTMLElement;
14
15
  private lineService;
@@ -17,8 +18,8 @@ export declare class FLineAlignmentComponent extends FLineAlignmentBase implemen
17
18
  private rects;
18
19
  private _fMediator;
19
20
  private _fCanvas;
21
+ private _debounceTimer;
20
22
  private get _transform();
21
- private get _fFlowHostElement();
22
23
  constructor(elementReference: ElementRef<HTMLElement>, fDraggableDataContext: FDraggableDataContext, fBrowser: BrowserService);
23
24
  ngAfterViewInit(): void;
24
25
  initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void;