@foblex/flow 16.0.3 → 16.0.5
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.
- package/README.md +23 -18
- package/domain/providers.d.ts +1 -1
- package/esm2022/f-canvas/f-canvas.component.mjs +12 -5
- package/esm2022/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +2 -2
- package/esm2022/f-draggable/connections/reassign-connection/f-reassign-connection.event.mjs +3 -2
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.mjs +3 -3
- package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +14 -3
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.mjs +8 -4
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.mjs +4 -1
- package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.execution.mjs +17 -7
- package/esm2022/f-draggable/single-select/single-select.execution.mjs +4 -1
- package/esm2022/f-zoom/f-zoom-base.mjs +37 -37
- package/f-canvas/f-canvas.component.d.ts +1 -0
- package/f-connection/providers.d.ts +1 -1
- package/f-connectors/providers.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/f-reassign-connection.event.d.ts +3 -1
- package/f-draggable/node/connection-base-drag-handler.d.ts +1 -0
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.d.ts +3 -0
- package/fesm2022/foblex-flow.mjs +94 -55
- package/fesm2022/foblex-flow.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -14,6 +14,38 @@ export class FZoomBase {
|
|
|
14
14
|
this.fComponentsStore = fComponentsStore;
|
|
15
15
|
this.isEnabled = false;
|
|
16
16
|
this.listeners = EventExtensions.emptyListener();
|
|
17
|
+
this.onWheel = (event) => {
|
|
18
|
+
event.preventDefault();
|
|
19
|
+
const targetElement = event.target;
|
|
20
|
+
if (this.fComponentsStore.fDraggable?.isDragStarted || targetElement?.closest('[fLockedContext]')) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
let result = this.getScale();
|
|
24
|
+
const direction = event.deltaY > 0 ? -1 : 1;
|
|
25
|
+
const step = this.step;
|
|
26
|
+
result = result + step * direction;
|
|
27
|
+
result = Math.max(this.minimum, Math.min(result, this.maximum));
|
|
28
|
+
const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);
|
|
29
|
+
this.fCanvas.setZoom(result, pointerPositionInFlow);
|
|
30
|
+
this.fCanvas.redraw();
|
|
31
|
+
this.fCanvas.emitCanvasChangeEvent();
|
|
32
|
+
};
|
|
33
|
+
this.onDoubleClick = (event) => {
|
|
34
|
+
event.preventDefault();
|
|
35
|
+
const targetElement = event.target;
|
|
36
|
+
if (this.fComponentsStore.fDraggable?.isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
let result = this.getScale();
|
|
40
|
+
const direction = 1;
|
|
41
|
+
const step = this.dblClickStep;
|
|
42
|
+
result = result + step * direction;
|
|
43
|
+
result = Math.max(this.minimum, Math.min(result, this.maximum));
|
|
44
|
+
const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);
|
|
45
|
+
this.fCanvas.setZoom(result, pointerPositionInFlow);
|
|
46
|
+
this.fCanvas.redrawWithAnimation();
|
|
47
|
+
this.fCanvas.emitCanvasChangeEvent();
|
|
48
|
+
};
|
|
17
49
|
}
|
|
18
50
|
toggleZoom() {
|
|
19
51
|
if (this.isEnabled) {
|
|
@@ -28,48 +60,16 @@ export class FZoomBase {
|
|
|
28
60
|
if (!this.flowHost) {
|
|
29
61
|
return;
|
|
30
62
|
}
|
|
31
|
-
this.flowHost.addEventListener('wheel', this.onWheel
|
|
32
|
-
this.flowHost.addEventListener('dblclick', this.onDoubleClick
|
|
63
|
+
this.flowHost.addEventListener('wheel', this.onWheel);
|
|
64
|
+
this.flowHost.addEventListener('dblclick', this.onDoubleClick);
|
|
33
65
|
this.listeners = () => {
|
|
34
|
-
this.flowHost.removeEventListener('wheel', this.onWheel
|
|
35
|
-
this.flowHost.removeEventListener('dblclick', this.onDoubleClick
|
|
66
|
+
this.flowHost.removeEventListener('wheel', this.onWheel);
|
|
67
|
+
this.flowHost.removeEventListener('dblclick', this.onDoubleClick);
|
|
36
68
|
};
|
|
37
69
|
}
|
|
38
70
|
getScale() {
|
|
39
71
|
return this.fCanvas.transform.scale || 1;
|
|
40
72
|
}
|
|
41
|
-
onWheel(event) {
|
|
42
|
-
event.preventDefault();
|
|
43
|
-
const targetElement = event.target;
|
|
44
|
-
if (this.fComponentsStore.fDraggable?.isDragStarted || targetElement?.closest('[fLockedContext]')) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
let result = this.getScale();
|
|
48
|
-
const direction = event.deltaY > 0 ? -1 : 1;
|
|
49
|
-
const step = this.step;
|
|
50
|
-
result = result + step * direction;
|
|
51
|
-
result = Math.max(this.minimum, Math.min(result, this.maximum));
|
|
52
|
-
const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);
|
|
53
|
-
this.fCanvas.setZoom(result, pointerPositionInFlow);
|
|
54
|
-
this.fCanvas.redraw();
|
|
55
|
-
this.fCanvas.emitCanvasChangeEvent();
|
|
56
|
-
}
|
|
57
|
-
onDoubleClick(event) {
|
|
58
|
-
event.preventDefault();
|
|
59
|
-
const targetElement = event.target;
|
|
60
|
-
if (this.fComponentsStore.fDraggable?.isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
let result = this.getScale();
|
|
64
|
-
const direction = 1;
|
|
65
|
-
const step = this.dblClickStep;
|
|
66
|
-
result = result + step * direction;
|
|
67
|
-
result = Math.max(this.minimum, Math.min(result, this.maximum));
|
|
68
|
-
const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);
|
|
69
|
-
this.fCanvas.setZoom(result, pointerPositionInFlow);
|
|
70
|
-
this.fCanvas.redrawWithAnimation();
|
|
71
|
-
this.fCanvas.emitCanvasChangeEvent();
|
|
72
|
-
}
|
|
73
73
|
onZoomToCenter(deltaY, position) {
|
|
74
74
|
const preventDefault = () => {
|
|
75
75
|
};
|
|
@@ -94,4 +94,4 @@ export class FZoomBase {
|
|
|
94
94
|
this.listeners = EventExtensions.emptyListener();
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi16b29tLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2Ytem9vbS9mLXpvb20tYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFVLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRW5DLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBWSxRQUFRLENBQUMsQ0FBQztBQUU5RCxNQUFNLE9BQWdCLFNBQVM7SUFZN0IsSUFBWSxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQXNCLENBQUM7SUFDdEQsQ0FBQztJQUVELFlBQ2MsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFuQnRDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFRN0IsY0FBUyxHQUFhLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQWE5RCxDQUFDO0lBRVMsVUFBVTtRQUNsQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixPQUFPO1NBQ1I7UUFFRCxJQUFJ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QUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVTLFdBQVc7UUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25ELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvZHJhZy10b29sa2l0JztcbmltcG9ydCB7IElQb2ludCwgUG9pbnQsIFJlY3RFeHRlbnNpb25zIH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRkNhbnZhc0Jhc2UgfSBmcm9tICcuLi9mLWNhbnZhcyc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IGlzTm9kZSB9IGZyb20gJy4uL2Ytbm9kZSc7XG5cbmV4cG9ydCBjb25zdCBGX1pPT00gPSBuZXcgSW5qZWN0aW9uVG9rZW48Rlpvb21CYXNlPignRl9aT09NJyk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGWm9vbUJhc2Uge1xuXG4gIHByb3RlY3RlZCBpc0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgYWJzdHJhY3QgbWluaW11bTogbnVtYmVyO1xuICBwdWJsaWMgYWJzdHJhY3QgbWF4aW11bTogbnVtYmVyO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBzdGVwOiBudW1iZXI7XG4gIHB1YmxpYyBhYnN0cmFjdCBkYmxDbGlja1N0ZXA6IG51bWJlcjtcblxuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb24gPSBFdmVudEV4dGVuc2lvbnMuZW1wdHlMaXN0ZW5lcigpO1xuXG4gIHByaXZhdGUgZ2V0IGZsb3dIb3N0KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZsb3dIb3N0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZkNhbnZhcygpOiBGQ2FudmFzQmFzZSB7XG4gICAgcmV0dXJuIHRoaXMuZkNvbXBvbmVudHNTdG9yZS5mQ2FudmFzIGFzIEZDYW52YXNCYXNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgcHJvdGVjdGVkIGZDb21wb25lbnRzU3RvcmU6IEZDb21wb25lbnRzU3RvcmVcbiAgKSB7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlWm9vbSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZSgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbmVycygpO1xuICAgIGlmICghdGhpcy5mbG93SG9zdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmxvd0hvc3QuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLm9uV2hlZWwuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5mbG93SG9zdC5hZGRFdmVudExpc3RlbmVyKCdkYmxjbGljaycsIHRoaXMub25Eb3VibGVDbGljay5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmxpc3RlbmVycyA9ICgpID0+IHtcbiAgICAgIHRoaXMuZmxvd0hvc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLm9uV2hlZWwuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLmZsb3dIb3N0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgdGhpcy5vbkRvdWJsZUNsaWNrLmJpbmQodGhpcykpO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0U2NhbGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mQ2FudmFzLnRyYW5zZm9ybS5zY2FsZSB8fCAxO1xuICB9XG5cbiAgcHJpdmF0ZSBvbldoZWVsKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuZkNvbXBvbmVudHNTdG9yZS5mRHJhZ2dhYmxlPy5pc0RyYWdTdGFydGVkIHx8IHRhcmdldEVsZW1lbnQ/LmNsb3Nlc3QoJ1tmTG9ja2VkQ29udGV4dF0nKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQ6IG51bWJlciA9IHRoaXMuZ2V0U2NhbGUoKTtcblxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IGV2ZW50LmRlbHRhWSA+IDAgPyAtMSA6IDE7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuc3RlcDtcbiAgICByZXN1bHQgPSByZXN1bHQgKyBzdGVwICogZGlyZWN0aW9uO1xuXG4gICAgcmVzdWx0ID0gTWF0aC5tYXgodGhpcy5taW5pbXVtLCBNYXRoLm1pbihyZXN1bHQsIHRoaXMubWF4aW11bSkpO1xuXG4gICAgY29uc3QgcG9pbnRlclBvc2l0aW9uSW5GbG93ID0gbmV3IFBvaW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpLmVsZW1lbnRUcmFuc2Zvcm0odGhpcy5mbG93SG9zdCk7XG5cbiAgICB0aGlzLmZDYW52YXMuc2V0Wm9vbShyZXN1bHQsIHBvaW50ZXJQb3NpdGlvbkluRmxvdyk7XG4gICAgdGhpcy5mQ2FudmFzLnJlZHJhdygpO1xuICAgIHRoaXMuZkNhbnZhcy5lbWl0Q2FudmFzQ2hhbmdlRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Eb3VibGVDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICh0aGlzLmZDb21wb25lbnRzU3RvcmUuZkRyYWdnYWJsZT8uaXNEcmFnU3RhcnRlZCB8fCBpc05vZGUodGFyZ2V0RWxlbWVudCkgfHwgdGFyZ2V0RWxlbWVudD8uY2xvc2VzdCgnW2ZMb2NrZWRDb250ZXh0XScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gdGhpcy5nZXRTY2FsZSgpO1xuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gMTtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5kYmxDbGlja1N0ZXA7XG4gICAgcmVzdWx0ID0gcmVzdWx0ICsgc3RlcCAqIGRpcmVjdGlvbjtcblxuICAgIHJlc3VsdCA9IE1hdGgubWF4KHRoaXMubWluaW11bSwgTWF0aC5taW4ocmVzdWx0LCB0aGlzLm1heGltdW0pKTtcblxuICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbkluRmxvdyA9IG5ldyBQb2ludChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKS5lbGVtZW50VHJhbnNmb3JtKHRoaXMuZmxvd0hvc3QpO1xuICAgIHRoaXMuZkNhbnZhcy5zZXRab29tKHJlc3VsdCwgcG9pbnRlclBvc2l0aW9uSW5GbG93KTtcbiAgICB0aGlzLmZDYW52YXMucmVkcmF3V2l0aEFuaW1hdGlvbigpO1xuICAgIHRoaXMuZkNhbnZhcy5lbWl0Q2FudmFzQ2hhbmdlRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25ab29tVG9DZW50ZXIoZGVsdGFZOiBudW1iZXIsIHBvc2l0aW9uPzogSVBvaW50KTogdm9pZCB7XG4gICAgY29uc3QgcHJldmVudERlZmF1bHQgPSAoKSA9PiB7XG4gICAgfTtcbiAgICBjb25zdCByZWN0ID0gUmVjdEV4dGVuc2lvbnMuZnJvbUVsZW1lbnQodGhpcy5mbG93SG9zdCk7XG5cbiAgICB0aGlzLm9uV2hlZWwoe1xuICAgICAgZGVsdGFZLCBwcmV2ZW50RGVmYXVsdCwgY2xpZW50WDogcG9zaXRpb24/LnggfHwgcmVjdC5ncmF2aXR5Q2VudGVyLngsIGNsaWVudFk6IHBvc2l0aW9uPy55IHx8IHJlY3QuZ3Jhdml0eUNlbnRlci55XG4gICAgfSBhcyBXaGVlbEV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyB6b29tSW4ocG9zaXRpb24/OiBJUG9pbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uWm9vbVRvQ2VudGVyKC0xLCBwb3NpdGlvbik7XG4gIH1cblxuICBwdWJsaWMgem9vbU91dChwb3NpdGlvbj86IElQb2ludCk6IHZvaWQge1xuICAgIHRoaXMub25ab29tVG9DZW50ZXIoMSwgcG9zaXRpb24pO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZkNhbnZhcy5yZXNldFpvb20oKTtcbiAgICB0aGlzLmZDYW52YXMucmVkcmF3KCk7XG4gICAgdGhpcy5mQ2FudmFzLmVtaXRDYW52YXNDaGFuZ2VFdmVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuZXJzKCk7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSBFdmVudEV4dGVuc2lvbnMuZW1wdHlMaXN0ZW5lcigpO1xuICB9XG59XG4iXX0=
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi16b29tLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2Ytem9vbS9mLXpvb20tYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFVLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRW5DLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBWSxRQUFRLENBQUMsQ0FBQztBQUU5RCxNQUFNLE9BQWdCLFNBQVM7SUFZN0IsSUFBWSxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQXNCLENBQUM7SUFDdEQsQ0FBQztJQUVELFlBQ2MsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFuQnRDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFRN0IsY0FBUyxHQUFhLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQXlDdEQsWUFBTyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO1lBQ3RDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztZQUVsRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsYUFBYSxJQUFJLGFBQWEsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRTtnQkFDakcsT0FBTzthQUNSO1lBRUQsSUFBSSxNQUFNLEdBQVcsSUFB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LHFCQUFxQixFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVTLFdBQVc7UUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25ELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvZHJhZy10b29sa2l0JztcbmltcG9ydCB7IElQb2ludCwgUG9pbnQsIFJlY3RFeHRlbnNpb25zIH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRkNhbnZhc0Jhc2UgfSBmcm9tICcuLi9mLWNhbnZhcyc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IGlzTm9kZSB9IGZyb20gJy4uL2Ytbm9kZSc7XG5cbmV4cG9ydCBjb25zdCBGX1pPT00gPSBuZXcgSW5qZWN0aW9uVG9rZW48Rlpvb21CYXNlPignRl9aT09NJyk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGWm9vbUJhc2Uge1xuXG4gIHByb3RlY3RlZCBpc0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgYWJzdHJhY3QgbWluaW11bTogbnVtYmVyO1xuICBwdWJsaWMgYWJzdHJhY3QgbWF4aW11bTogbnVtYmVyO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBzdGVwOiBudW1iZXI7XG4gIHB1YmxpYyBhYnN0cmFjdCBkYmxDbGlja1N0ZXA6IG51bWJlcjtcblxuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb24gPSBFdmVudEV4dGVuc2lvbnMuZW1wdHlMaXN0ZW5lcigpO1xuXG4gIHByaXZhdGUgZ2V0IGZsb3dIb3N0KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZsb3dIb3N0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZkNhbnZhcygpOiBGQ2FudmFzQmFzZSB7XG4gICAgcmV0dXJuIHRoaXMuZkNvbXBvbmVudHNTdG9yZS5mQ2FudmFzIGFzIEZDYW52YXNCYXNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgcHJvdGVjdGVkIGZDb21wb25lbnRzU3RvcmU6IEZDb21wb25lbnRzU3RvcmVcbiAgKSB7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlWm9vbSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZSgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbmVycygpO1xuICAgIGlmICghdGhpcy5mbG93SG9zdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmxvd0hvc3QuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLm9uV2hlZWwpO1xuICAgIHRoaXMuZmxvd0hvc3QuYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCB0aGlzLm9uRG91YmxlQ2xpY2spO1xuICAgIHRoaXMubGlzdGVuZXJzID0gKCkgPT4ge1xuICAgICAgdGhpcy5mbG93SG9zdC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIHRoaXMub25XaGVlbCk7XG4gICAgICB0aGlzLmZsb3dIb3N0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgdGhpcy5vbkRvdWJsZUNsaWNrKTtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldFNjYWxlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZkNhbnZhcy50cmFuc2Zvcm0uc2NhbGUgfHwgMTtcbiAgfVxuXG4gIHByaXZhdGUgb25XaGVlbCA9IChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICh0aGlzLmZDb21wb25lbnRzU3RvcmUuZkRyYWdnYWJsZT8uaXNEcmFnU3RhcnRlZCB8fCB0YXJnZXRFbGVtZW50Py5jbG9zZXN0KCdbZkxvY2tlZENvbnRleHRdJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0OiBudW1iZXIgPSB0aGlzLmdldFNjYWxlKCk7XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSBldmVudC5kZWx0YVkgPiAwID8gLTEgOiAxO1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLnN0ZXA7XG4gICAgcmVzdWx0ID0gcmVzdWx0ICsgc3RlcCAqIGRpcmVjdGlvbjtcblxuICAgIHJlc3VsdCA9IE1hdGgubWF4KHRoaXMubWluaW11bSwgTWF0aC5taW4ocmVzdWx0LCB0aGlzLm1heGltdW0pKTtcblxuICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbkluRmxvdyA9IG5ldyBQb2ludChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKS5lbGVtZW50VHJhbnNmb3JtKHRoaXMuZmxvd0hvc3QpO1xuXG4gICAgdGhpcy5mQ2FudmFzLnNldFpvb20ocmVzdWx0LCBwb2ludGVyUG9zaXRpb25JbkZsb3cpO1xuICAgIHRoaXMuZkNhbnZhcy5yZWRyYXcoKTtcbiAgICB0aGlzLmZDYW52YXMuZW1pdENhbnZhc0NoYW5nZUV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIG9uRG91YmxlQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy5mQ29tcG9uZW50c1N0b3JlLmZEcmFnZ2FibGU/LmlzRHJhZ1N0YXJ0ZWQgfHwgaXNOb2RlKHRhcmdldEVsZW1lbnQpIHx8IHRhcmdldEVsZW1lbnQ/LmNsb3Nlc3QoJ1tmTG9ja2VkQ29udGV4dF0nKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQ6IG51bWJlciA9IHRoaXMuZ2V0U2NhbGUoKTtcblxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IDE7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZGJsQ2xpY2tTdGVwO1xuICAgIHJlc3VsdCA9IHJlc3VsdCArIHN0ZXAgKiBkaXJlY3Rpb247XG5cbiAgICByZXN1bHQgPSBNYXRoLm1heCh0aGlzLm1pbmltdW0sIE1hdGgubWluKHJlc3VsdCwgdGhpcy5tYXhpbXVtKSk7XG5cbiAgICBjb25zdCBwb2ludGVyUG9zaXRpb25JbkZsb3cgPSBuZXcgUG9pbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSkuZWxlbWVudFRyYW5zZm9ybSh0aGlzLmZsb3dIb3N0KTtcbiAgICB0aGlzLmZDYW52YXMuc2V0Wm9vbShyZXN1bHQsIHBvaW50ZXJQb3NpdGlvbkluRmxvdyk7XG4gICAgdGhpcy5mQ2FudmFzLnJlZHJhd1dpdGhBbmltYXRpb24oKTtcbiAgICB0aGlzLmZDYW52YXMuZW1pdENhbnZhc0NoYW5nZUV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIG9uWm9vbVRvQ2VudGVyKGRlbHRhWTogbnVtYmVyLCBwb3NpdGlvbj86IElQb2ludCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZlbnREZWZhdWx0ID0gKCkgPT4ge1xuICAgIH07XG4gICAgY29uc3QgcmVjdCA9IFJlY3RFeHRlbnNpb25zLmZyb21FbGVtZW50KHRoaXMuZmxvd0hvc3QpO1xuXG4gICAgdGhpcy5vbldoZWVsKHtcbiAgICAgIGRlbHRhWSwgcHJldmVudERlZmF1bHQsIGNsaWVudFg6IHBvc2l0aW9uPy54IHx8IHJlY3QuZ3Jhdml0eUNlbnRlci54LCBjbGllbnRZOiBwb3NpdGlvbj8ueSB8fCByZWN0LmdyYXZpdHlDZW50ZXIueVxuICAgIH0gYXMgV2hlZWxFdmVudCk7XG4gIH1cblxuICBwdWJsaWMgem9vbUluKHBvc2l0aW9uPzogSVBvaW50KTogdm9pZCB7XG4gICAgdGhpcy5vblpvb21Ub0NlbnRlcigtMSwgcG9zaXRpb24pO1xuICB9XG5cbiAgcHVibGljIHpvb21PdXQocG9zaXRpb24/OiBJUG9pbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uWm9vbVRvQ2VudGVyKDEsIHBvc2l0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmZDYW52YXMucmVzZXRab29tKCk7XG4gICAgdGhpcy5mQ2FudmFzLnJlZHJhdygpO1xuICAgIHRoaXMuZkNhbnZhcy5lbWl0Q2FudmFzQ2hhbmdlRXZlbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZSgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbmVycygpO1xuICAgIHRoaXMubGlzdGVuZXJzID0gRXZlbnRFeHRlbnNpb25zLmVtcHR5TGlzdGVuZXIoKTtcbiAgfVxufVxuIl19
|
|
@@ -22,6 +22,7 @@ export declare class FCanvasComponent extends FCanvasBase implements OnInit {
|
|
|
22
22
|
ngOnInit(): void;
|
|
23
23
|
redraw(): void;
|
|
24
24
|
redrawWithAnimation(): void;
|
|
25
|
+
private isMobile;
|
|
25
26
|
centerGroupOrNode(id: string, animated?: boolean): void;
|
|
26
27
|
fitToScreen(toCenter?: IPoint, animated?: boolean): void;
|
|
27
28
|
resetScaleAndCenter(animated?: boolean): void;
|
|
@@ -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
|
|
7
|
+
export declare const F_CONNECTION_PROVIDERS: (typeof FConnectionTextPathDirective | typeof FConnectionTextComponent | typeof FConnectionDragHandleComponent | typeof FConnectionGradientComponent | typeof FConnectionPathComponent | typeof FConnectionSelectionComponent | typeof FMarkerDirective | typeof FConnectionCenterDirective | typeof FConnectionForCreateComponent | typeof FConnectionComponent | typeof FSnapConnectionComponent)[];
|
|
@@ -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
|
|
4
|
+
export declare const F_CONNECTORS_PROVIDERS: (typeof FNodeInputDirective | typeof FNodeOutletDirective | typeof FNodeOutputDirective)[];
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { IPoint } from '@foblex/2d';
|
|
1
2
|
export declare class FReassignConnectionEvent {
|
|
2
3
|
fConnectionId: string;
|
|
3
4
|
fOutputId: string;
|
|
4
5
|
oldFInputId: string;
|
|
5
6
|
newFInputId: string | undefined;
|
|
6
|
-
|
|
7
|
+
fDropPosition: IPoint;
|
|
8
|
+
constructor(fConnectionId: string, fOutputId: string, oldFInputId: string, newFInputId: string | undefined, fDropPosition: IPoint);
|
|
7
9
|
}
|
|
@@ -16,6 +16,7 @@ export declare abstract class ConnectionBaseDragHandler implements IDraggableIte
|
|
|
16
16
|
initialize(): void;
|
|
17
17
|
private getOutput;
|
|
18
18
|
private getInput;
|
|
19
|
+
private connectorNotFoundPrefix;
|
|
19
20
|
abstract move(difference: IPoint): void;
|
|
20
21
|
protected getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint;
|
|
21
22
|
protected redrawConnection(line: ILine): void;
|
package/fesm2022/foblex-flow.mjs
CHANGED
|
@@ -2275,11 +2275,12 @@ class ReassignConnectionFinalizeRequest {
|
|
|
2275
2275
|
}
|
|
2276
2276
|
|
|
2277
2277
|
class FReassignConnectionEvent {
|
|
2278
|
-
constructor(fConnectionId, fOutputId, oldFInputId, newFInputId) {
|
|
2278
|
+
constructor(fConnectionId, fOutputId, oldFInputId, newFInputId, fDropPosition) {
|
|
2279
2279
|
this.fConnectionId = fConnectionId;
|
|
2280
2280
|
this.fOutputId = fOutputId;
|
|
2281
2281
|
this.oldFInputId = oldFInputId;
|
|
2282
2282
|
this.newFInputId = newFInputId;
|
|
2283
|
+
this.fDropPosition = fDropPosition;
|
|
2283
2284
|
}
|
|
2284
2285
|
}
|
|
2285
2286
|
|
|
@@ -2301,10 +2302,10 @@ let ReassignConnectionFinalizeExecution = class ReassignConnectionFinalizeExecut
|
|
|
2301
2302
|
}
|
|
2302
2303
|
emitEvent(event) {
|
|
2303
2304
|
const input = this.getInputUnderPointer(event);
|
|
2304
|
-
if (
|
|
2305
|
+
if (!!input && !this.isReassignToDifferentInput(input)) {
|
|
2305
2306
|
return;
|
|
2306
2307
|
}
|
|
2307
|
-
this.fDraggable.fReassignConnection.emit(new FReassignConnectionEvent(this.dragHandler.fConnection.fId, this.dragHandler.fConnection.fOutputId, this.dragHandler.fConnection.fInputId, input.
|
|
2308
|
+
this.fDraggable.fReassignConnection.emit(new FReassignConnectionEvent(this.dragHandler.fConnection.fId, this.dragHandler.fConnection.fOutputId, this.dragHandler.fConnection.fInputId, input?.id, event.getPosition()));
|
|
2308
2309
|
}
|
|
2309
2310
|
getInputUnderPointer(event) {
|
|
2310
2311
|
return this.fMediator.send(new GetInputUnderPointerRequest(event, this.dragHandler));
|
|
@@ -2705,7 +2706,7 @@ class FConnectionTextPathDirective {
|
|
|
2705
2706
|
getSymbolWidth(name) {
|
|
2706
2707
|
const text = name || 'connection';
|
|
2707
2708
|
const { fontFamily, fontSize } = this.getFontStyles(this.hostElement);
|
|
2708
|
-
this.fontSize = fontSize;
|
|
2709
|
+
this.fontSize = fontSize || '12px';
|
|
2709
2710
|
const canvas = this.fBrowser.document.createElement('canvas');
|
|
2710
2711
|
let context;
|
|
2711
2712
|
try {
|
|
@@ -3883,10 +3884,21 @@ class ConnectionBaseDragHandler {
|
|
|
3883
3884
|
this.fInputWithRect = this.fMediator.send(new GetConnectorWithRectRequest(this.getInput()));
|
|
3884
3885
|
}
|
|
3885
3886
|
getOutput() {
|
|
3886
|
-
|
|
3887
|
+
const result = this.fComponentsStore.fOutputs.find((x) => x.id === this.connection.fOutputId);
|
|
3888
|
+
if (!result) {
|
|
3889
|
+
throw new Error(this.connectorNotFoundPrefix(`fOutput with id ${this.connection.fOutputId} not found`));
|
|
3890
|
+
}
|
|
3891
|
+
return result;
|
|
3887
3892
|
}
|
|
3888
3893
|
getInput() {
|
|
3889
|
-
|
|
3894
|
+
const result = this.fComponentsStore.fInputs.find((x) => x.id === this.connection.fInputId);
|
|
3895
|
+
if (!result) {
|
|
3896
|
+
throw new Error(this.connectorNotFoundPrefix(`fInput with id ${this.connection.fInputId} not found`));
|
|
3897
|
+
}
|
|
3898
|
+
return result;
|
|
3899
|
+
}
|
|
3900
|
+
connectorNotFoundPrefix(message) {
|
|
3901
|
+
return `ConnectionDragHandler Error: Connection From (fOutput)${this.connection.fOutputId} To (fInput)${this.connection.fInputId}. ${message}. Please ensure that all f-connections are associated with existing connectors`;
|
|
3890
3902
|
}
|
|
3891
3903
|
getDifference(difference, restrictions) {
|
|
3892
3904
|
return {
|
|
@@ -4122,6 +4134,9 @@ const DEFAULT_RESTRICTIONS = {
|
|
|
4122
4134
|
};
|
|
4123
4135
|
|
|
4124
4136
|
class CreateMoveNodesDragModelFromSelectionRequest {
|
|
4137
|
+
constructor(nodeWithDisabledSelection) {
|
|
4138
|
+
this.nodeWithDisabledSelection = nodeWithDisabledSelection;
|
|
4139
|
+
}
|
|
4125
4140
|
}
|
|
4126
4141
|
|
|
4127
4142
|
class NodeDragHandler {
|
|
@@ -4175,13 +4190,17 @@ let CreateMoveNodesDragModelFromSelectionExecution = class CreateMoveNodesDragMo
|
|
|
4175
4190
|
this.fMediator = fMediator;
|
|
4176
4191
|
}
|
|
4177
4192
|
handle(request) {
|
|
4178
|
-
const itemsToDrag = this.getNodesWithRestrictions(this.getSelectedNodes());
|
|
4193
|
+
const itemsToDrag = this.getNodesWithRestrictions(this.getSelectedNodes(request.nodeWithDisabledSelection));
|
|
4179
4194
|
return this.getDragHandlersWithConnections(this.getDragHandlersFromNodes(itemsToDrag), this.getAllOutputIds(itemsToDrag), this.getAllInputIds(itemsToDrag));
|
|
4180
4195
|
}
|
|
4181
|
-
getSelectedNodes() {
|
|
4182
|
-
|
|
4196
|
+
getSelectedNodes(nodeWithDisabledSelection) {
|
|
4197
|
+
const result = this.fDraggableDataContext.selectedItems
|
|
4183
4198
|
.map((x) => this.fComponentsStore.findNode(x.hostElement))
|
|
4184
4199
|
.filter((x) => !!x);
|
|
4200
|
+
if (nodeWithDisabledSelection) {
|
|
4201
|
+
result.push(nodeWithDisabledSelection);
|
|
4202
|
+
}
|
|
4203
|
+
return result;
|
|
4185
4204
|
}
|
|
4186
4205
|
getNodesWithRestrictions(selectedNodes) {
|
|
4187
4206
|
const result = [];
|
|
@@ -4262,22 +4281,32 @@ let NodeMovePreparationExecution = class NodeMovePreparationExecution {
|
|
|
4262
4281
|
this.fMediator = fMediator;
|
|
4263
4282
|
}
|
|
4264
4283
|
handle(request) {
|
|
4265
|
-
this.
|
|
4266
|
-
|
|
4284
|
+
const node = this.getNode(request.event.targetElement);
|
|
4285
|
+
if (!node) {
|
|
4286
|
+
throw new Error('Node not found');
|
|
4287
|
+
}
|
|
4288
|
+
let itemsToDrag = [];
|
|
4289
|
+
if (!node.fSelectionDisabled) {
|
|
4290
|
+
this.selectAndUpdateNodeLayer(node);
|
|
4291
|
+
itemsToDrag = this.createDragModelFromSelection();
|
|
4292
|
+
}
|
|
4293
|
+
else {
|
|
4294
|
+
itemsToDrag = this.createDragModelFromSelection(node);
|
|
4295
|
+
}
|
|
4267
4296
|
this.initializeLineAlignment(this.filterNodesFromDraggableItems(itemsToDrag));
|
|
4268
4297
|
this.fDraggableDataContext.onPointerDownScale = this.transform.scale;
|
|
4269
4298
|
this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
|
|
4270
4299
|
.elementTransform(this.flowHost).div(this.transform.scale);
|
|
4271
4300
|
this.fDraggableDataContext.draggableItems = itemsToDrag;
|
|
4272
4301
|
}
|
|
4273
|
-
selectAndUpdateNodeLayer(
|
|
4274
|
-
this.fMediator.send(new SelectAndUpdateNodeLayerRequest(
|
|
4302
|
+
selectAndUpdateNodeLayer(node) {
|
|
4303
|
+
this.fMediator.send(new SelectAndUpdateNodeLayerRequest(node));
|
|
4275
4304
|
}
|
|
4276
4305
|
getNode(targetElement) {
|
|
4277
4306
|
return this.fComponentsStore.findNode(targetElement);
|
|
4278
4307
|
}
|
|
4279
|
-
createDragModelFromSelection() {
|
|
4280
|
-
return this.fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest());
|
|
4308
|
+
createDragModelFromSelection(nodeWithDisabledSelection) {
|
|
4309
|
+
return this.fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection));
|
|
4281
4310
|
}
|
|
4282
4311
|
initializeLineAlignment(nodesToDrag) {
|
|
4283
4312
|
this.fDraggableDataContext.fLineAlignment?.initialize(this.fComponentsStore.fNodes, nodesToDrag);
|
|
@@ -4870,6 +4899,9 @@ let SingleSelectExecution = class SingleSelectExecution {
|
|
|
4870
4899
|
this.clearSelection();
|
|
4871
4900
|
this.selectItem(item);
|
|
4872
4901
|
}
|
|
4902
|
+
else if (item.fSelectionDisabled) {
|
|
4903
|
+
this.clearSelection();
|
|
4904
|
+
}
|
|
4873
4905
|
}
|
|
4874
4906
|
else {
|
|
4875
4907
|
this.clearSelection();
|
|
@@ -7102,11 +7134,18 @@ class FCanvasComponent extends FCanvasBase {
|
|
|
7102
7134
|
this.fMediator.send(new EmitTransformChangesRequest());
|
|
7103
7135
|
}
|
|
7104
7136
|
redrawWithAnimation() {
|
|
7137
|
+
let duration = F_CANVAS_ANIMATION_DURATION;
|
|
7138
|
+
if (this.isMobile()) {
|
|
7139
|
+
duration = 80;
|
|
7140
|
+
}
|
|
7105
7141
|
this.fComponentsStore.fBackground?.setTransform(this.transform);
|
|
7106
|
-
this.hostElement.setAttribute("style", `transition: transform ${
|
|
7107
|
-
setTimeout(() =>
|
|
7108
|
-
|
|
7109
|
-
|
|
7142
|
+
this.hostElement.setAttribute("style", `transition: transform ${duration}ms ease-in-out; transform: ${TransformModelExtensions.toString(this.transform)}`);
|
|
7143
|
+
setTimeout(() => this.redraw(), F_CANVAS_ANIMATION_DURATION);
|
|
7144
|
+
}
|
|
7145
|
+
isMobile() {
|
|
7146
|
+
// @ts-ignore
|
|
7147
|
+
const userAgent = navigator.userAgent || navigator.vendor || window['opera'];
|
|
7148
|
+
return /android|iPad|iPhone|iPod/i.test(userAgent);
|
|
7110
7149
|
}
|
|
7111
7150
|
centerGroupOrNode(id, animated = true) {
|
|
7112
7151
|
this.fMediator.send(new CenterGroupOrNodeRequest(id, animated));
|
|
@@ -7754,6 +7793,38 @@ class FZoomBase {
|
|
|
7754
7793
|
this.fComponentsStore = fComponentsStore;
|
|
7755
7794
|
this.isEnabled = false;
|
|
7756
7795
|
this.listeners = EventExtensions.emptyListener();
|
|
7796
|
+
this.onWheel = (event) => {
|
|
7797
|
+
event.preventDefault();
|
|
7798
|
+
const targetElement = event.target;
|
|
7799
|
+
if (this.fComponentsStore.fDraggable?.isDragStarted || targetElement?.closest('[fLockedContext]')) {
|
|
7800
|
+
return;
|
|
7801
|
+
}
|
|
7802
|
+
let result = this.getScale();
|
|
7803
|
+
const direction = event.deltaY > 0 ? -1 : 1;
|
|
7804
|
+
const step = this.step;
|
|
7805
|
+
result = result + step * direction;
|
|
7806
|
+
result = Math.max(this.minimum, Math.min(result, this.maximum));
|
|
7807
|
+
const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);
|
|
7808
|
+
this.fCanvas.setZoom(result, pointerPositionInFlow);
|
|
7809
|
+
this.fCanvas.redraw();
|
|
7810
|
+
this.fCanvas.emitCanvasChangeEvent();
|
|
7811
|
+
};
|
|
7812
|
+
this.onDoubleClick = (event) => {
|
|
7813
|
+
event.preventDefault();
|
|
7814
|
+
const targetElement = event.target;
|
|
7815
|
+
if (this.fComponentsStore.fDraggable?.isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {
|
|
7816
|
+
return;
|
|
7817
|
+
}
|
|
7818
|
+
let result = this.getScale();
|
|
7819
|
+
const direction = 1;
|
|
7820
|
+
const step = this.dblClickStep;
|
|
7821
|
+
result = result + step * direction;
|
|
7822
|
+
result = Math.max(this.minimum, Math.min(result, this.maximum));
|
|
7823
|
+
const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);
|
|
7824
|
+
this.fCanvas.setZoom(result, pointerPositionInFlow);
|
|
7825
|
+
this.fCanvas.redrawWithAnimation();
|
|
7826
|
+
this.fCanvas.emitCanvasChangeEvent();
|
|
7827
|
+
};
|
|
7757
7828
|
}
|
|
7758
7829
|
toggleZoom() {
|
|
7759
7830
|
if (this.isEnabled) {
|
|
@@ -7768,48 +7839,16 @@ class FZoomBase {
|
|
|
7768
7839
|
if (!this.flowHost) {
|
|
7769
7840
|
return;
|
|
7770
7841
|
}
|
|
7771
|
-
this.flowHost.addEventListener('wheel', this.onWheel
|
|
7772
|
-
this.flowHost.addEventListener('dblclick', this.onDoubleClick
|
|
7842
|
+
this.flowHost.addEventListener('wheel', this.onWheel);
|
|
7843
|
+
this.flowHost.addEventListener('dblclick', this.onDoubleClick);
|
|
7773
7844
|
this.listeners = () => {
|
|
7774
|
-
this.flowHost.removeEventListener('wheel', this.onWheel
|
|
7775
|
-
this.flowHost.removeEventListener('dblclick', this.onDoubleClick
|
|
7845
|
+
this.flowHost.removeEventListener('wheel', this.onWheel);
|
|
7846
|
+
this.flowHost.removeEventListener('dblclick', this.onDoubleClick);
|
|
7776
7847
|
};
|
|
7777
7848
|
}
|
|
7778
7849
|
getScale() {
|
|
7779
7850
|
return this.fCanvas.transform.scale || 1;
|
|
7780
7851
|
}
|
|
7781
|
-
onWheel(event) {
|
|
7782
|
-
event.preventDefault();
|
|
7783
|
-
const targetElement = event.target;
|
|
7784
|
-
if (this.fComponentsStore.fDraggable?.isDragStarted || targetElement?.closest('[fLockedContext]')) {
|
|
7785
|
-
return;
|
|
7786
|
-
}
|
|
7787
|
-
let result = this.getScale();
|
|
7788
|
-
const direction = event.deltaY > 0 ? -1 : 1;
|
|
7789
|
-
const step = this.step;
|
|
7790
|
-
result = result + step * direction;
|
|
7791
|
-
result = Math.max(this.minimum, Math.min(result, this.maximum));
|
|
7792
|
-
const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);
|
|
7793
|
-
this.fCanvas.setZoom(result, pointerPositionInFlow);
|
|
7794
|
-
this.fCanvas.redraw();
|
|
7795
|
-
this.fCanvas.emitCanvasChangeEvent();
|
|
7796
|
-
}
|
|
7797
|
-
onDoubleClick(event) {
|
|
7798
|
-
event.preventDefault();
|
|
7799
|
-
const targetElement = event.target;
|
|
7800
|
-
if (this.fComponentsStore.fDraggable?.isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {
|
|
7801
|
-
return;
|
|
7802
|
-
}
|
|
7803
|
-
let result = this.getScale();
|
|
7804
|
-
const direction = 1;
|
|
7805
|
-
const step = this.dblClickStep;
|
|
7806
|
-
result = result + step * direction;
|
|
7807
|
-
result = Math.max(this.minimum, Math.min(result, this.maximum));
|
|
7808
|
-
const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);
|
|
7809
|
-
this.fCanvas.setZoom(result, pointerPositionInFlow);
|
|
7810
|
-
this.fCanvas.redrawWithAnimation();
|
|
7811
|
-
this.fCanvas.emitCanvasChangeEvent();
|
|
7812
|
-
}
|
|
7813
7852
|
onZoomToCenter(deltaY, position) {
|
|
7814
7853
|
const preventDefault = () => {
|
|
7815
7854
|
};
|