@foblex/flow 1.5.4 → 1.5.6
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/domain/clear-selection/clear-selection.handler.d.ts +11 -0
- package/domain/clear-selection/clear-selection.request.d.ts +2 -0
- package/domain/clear-selection/index.d.ts +2 -0
- package/domain/get-connection-vector/get-connection-vector.handler.d.ts +1 -1
- package/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.d.ts +4 -0
- package/domain/{get-element-rect-in-flow.handler.d.ts → get-element-rect-in-flow/get-element-rect-in-flow.handler.d.ts} +4 -3
- package/domain/get-element-rect-in-flow/index.d.ts +2 -0
- package/domain/get-input-rect-in-flow/get-input-rect-in-flow-request.d.ts +4 -0
- package/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.d.ts +7 -0
- package/domain/get-input-rect-in-flow/get-input-rect-in-flow.handler.d.ts +14 -0
- package/domain/get-input-rect-in-flow/index.d.ts +3 -0
- package/domain/get-nodes-rect/get-nodes-rect.handler.d.ts +11 -0
- package/domain/get-nodes-rect/get-nodes-rect.request.d.ts +2 -0
- package/domain/get-nodes-rect/index.d.ts +2 -0
- package/domain/get-output-rect-in-flow/get-output-rect-in-flow.handler.d.ts +3 -3
- package/domain/get-selection/get-selection.handler.d.ts +11 -0
- package/domain/get-selection/get-selection.request.d.ts +2 -0
- package/domain/get-selection/index.d.ts +2 -0
- package/domain/index.d.ts +6 -5
- package/domain/providers.d.ts +7 -5
- package/domain/redraw-connections/redraw-connections.handler.d.ts +1 -3
- package/domain/select-all/index.d.ts +2 -0
- package/domain/{select-all.handler.d.ts → select-all/select-all.handler.d.ts} +5 -4
- package/domain/select-all/select-all.request.d.ts +2 -0
- package/errors/conflict-error.d.ts +6 -0
- package/errors/create-error-class.d.ts +1 -0
- package/errors/errors.d.ts +3 -0
- package/errors/index.d.ts +4 -0
- package/errors/not-found-error.d.ts +6 -0
- package/esm2022/domain/clear-selection/clear-selection.handler.mjs +28 -0
- package/esm2022/domain/clear-selection/clear-selection.request.mjs +3 -0
- package/esm2022/domain/clear-selection/index.mjs +3 -0
- package/esm2022/domain/get-connection-vector/get-connection-vector.handler.mjs +3 -3
- package/esm2022/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.mjs +6 -0
- package/esm2022/domain/get-element-rect-in-flow/get-element-rect-in-flow.handler.mjs +35 -0
- package/esm2022/domain/get-element-rect-in-flow/index.mjs +3 -0
- package/esm2022/domain/get-input-rect-in-flow/get-input-rect-in-flow-request.mjs +6 -0
- package/esm2022/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.mjs +7 -0
- package/esm2022/domain/get-input-rect-in-flow/get-input-rect-in-flow.handler.mjs +34 -0
- package/esm2022/domain/get-input-rect-in-flow/index.mjs +4 -0
- package/esm2022/domain/get-nodes-rect/get-nodes-rect.handler.mjs +30 -0
- package/esm2022/domain/get-nodes-rect/get-nodes-rect.request.mjs +3 -0
- package/esm2022/domain/get-nodes-rect/index.mjs +3 -0
- package/esm2022/domain/get-output-rect-in-flow/get-output-rect-in-flow.handler.mjs +9 -8
- package/esm2022/domain/get-selection/get-selection.handler.mjs +35 -0
- package/esm2022/domain/get-selection/get-selection.request.mjs +3 -0
- package/esm2022/domain/get-selection/index.mjs +3 -0
- package/esm2022/domain/index.mjs +7 -6
- package/esm2022/domain/providers.mjs +12 -8
- package/esm2022/domain/redraw-connections/redraw-connections.handler.mjs +8 -9
- package/esm2022/domain/select-all/index.mjs +3 -0
- package/esm2022/domain/select-all/select-all.handler.mjs +38 -0
- package/esm2022/domain/select-all/select-all.request.mjs +3 -0
- package/esm2022/errors/conflict-error.mjs +7 -0
- package/esm2022/errors/create-error-class.mjs +11 -0
- package/esm2022/errors/errors.mjs +12 -0
- package/esm2022/errors/index.mjs +5 -0
- package/esm2022/errors/not-found-error.mjs +7 -0
- package/esm2022/f-canvas/f-canvas.component.mjs +15 -12
- package/esm2022/f-connection/common/e-f-connection-behavior.mjs +2 -1
- package/esm2022/f-connectors/f-connector-base.mjs +2 -1
- package/esm2022/f-connectors/f-node-output/f-node-output-base.mjs +2 -2
- package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +9 -2
- package/esm2022/f-draggable/connections/create-connection/create-connection.on-pointer-up.mjs +3 -3
- package/esm2022/f-draggable/connections/create-connection/create-connection.prepare-drag-sequence.mjs +9 -10
- package/esm2022/f-draggable/connections/find-inputs-under-pointer/find-inputs-under-pointer.handler.mjs +3 -3
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +5 -6
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.prepare-drag-sequence.mjs +2 -2
- package/esm2022/f-draggable/external-item/external-item.drag-handler.mjs +1 -4
- package/esm2022/f-draggable/external-item/external-item.on-pointer-up.mjs +9 -8
- package/esm2022/f-draggable/external-item/external-item.prepare-drag-sequence.mjs +4 -1
- package/esm2022/f-draggable/f-draggable-base.mjs +148 -7
- package/esm2022/f-draggable/f-draggable.directive.mjs +19 -24
- package/esm2022/f-draggable/f-selection-change-event.mjs +7 -0
- package/esm2022/f-draggable/index.mjs +2 -2
- package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +4 -5
- package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +4 -5
- package/esm2022/f-draggable/node/connection.drag-handler.mjs +4 -5
- package/esm2022/f-draggable/node/domain/is-connection-under-node/is-connection-under-node.handler.mjs +10 -7
- package/esm2022/f-draggable/node/node.prepare-drag-sequence.mjs +8 -9
- package/esm2022/f-draggable/selection-area/get-can-be-selected-items/get-can-be-selected-items.handler.mjs +9 -8
- package/esm2022/f-draggable/single-select/index.mjs +1 -2
- package/esm2022/f-draggable/single-select/single-select.on-pointer-down.mjs +2 -2
- package/esm2022/f-external-item/f-external-item-base.mjs +1 -1
- package/esm2022/f-external-item/f-external-item.directive.mjs +10 -6
- package/esm2022/f-flow/f-flow.component.mjs +24 -12
- package/esm2022/f-line-alignment/f-line-alignment.component.mjs +9 -8
- package/f-canvas/f-canvas.component.d.ts +3 -5
- package/f-connection/common/e-f-connection-behavior.d.ts +1 -0
- package/f-connectors/f-connector-base.d.ts +1 -0
- package/f-connectors/f-node-output/f-node-output-base.d.ts +1 -0
- package/f-connectors/f-node-output/f-node-output.directive.d.ts +3 -1
- package/f-draggable/connections/create-connection/create-connection.prepare-drag-sequence.d.ts +1 -3
- package/f-draggable/connections/providers.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +1 -3
- package/f-draggable/external-item/external-item.drag-handler.d.ts +1 -2
- package/f-draggable/external-item/external-item.on-pointer-up.d.ts +3 -3
- package/f-draggable/f-draggable-base.d.ts +38 -8
- package/f-draggable/f-draggable.directive.d.ts +6 -4
- package/f-draggable/index.d.ts +1 -1
- package/f-draggable/node/connection-source.drag-handler.d.ts +1 -3
- package/f-draggable/node/connection-target.drag-handler.d.ts +1 -3
- package/f-draggable/node/connection.drag-handler.d.ts +1 -3
- package/f-draggable/node/domain/is-connection-under-node/is-connection-under-node.handler.d.ts +4 -3
- package/f-draggable/node/node.prepare-drag-sequence.d.ts +2 -3
- package/f-draggable/node/providers.d.ts +1 -1
- package/f-draggable/selection-area/get-can-be-selected-items/get-can-be-selected-items.handler.d.ts +3 -3
- package/f-draggable/single-select/index.d.ts +0 -1
- package/f-external-item/f-external-item-base.d.ts +7 -6
- package/f-external-item/f-external-item.directive.d.ts +6 -5
- package/f-flow/f-flow.component.d.ts +7 -4
- package/f-line-alignment/f-line-alignment.component.d.ts +3 -3
- package/fesm2022/foblex-flow.mjs +1735 -1609
- package/fesm2022/foblex-flow.mjs.map +1 -1
- package/package.json +1 -1
- package/domain/errors.d.ts +0 -3
- package/domain/get-all-nodes-rect.handler.d.ts +0 -10
- package/domain/get-input-rect-in-flow.handler.d.ts +0 -19
- package/esm2022/domain/errors.mjs +0 -10
- package/esm2022/domain/get-all-nodes-rect.handler.mjs +0 -23
- package/esm2022/domain/get-element-rect-in-flow.handler.mjs +0 -28
- package/esm2022/domain/get-input-rect-in-flow.handler.mjs +0 -25
- package/esm2022/domain/select-all.handler.mjs +0 -31
- package/esm2022/f-draggable/i-drag-and-drop-base.mjs +0 -147
- package/esm2022/f-draggable/single-select/f-selection-change-event.mjs +0 -7
- package/f-draggable/i-drag-and-drop-base.d.ts +0 -34
- /package/f-draggable/{single-select/f-selection-change-event.d.ts → f-selection-change-event.d.ts} +0 -0
|
@@ -1,15 +1,156 @@
|
|
|
1
|
+
import { EventExtensions, IMouseEvent, ITouchDownEvent, ITouchMoveEvent, ITouchUpEvent, PointExtensions } from '@foblex/core';
|
|
1
2
|
import { Directive, InjectionToken, } from '@angular/core';
|
|
2
|
-
import { IDragAndDropBase } from './i-drag-and-drop-base';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export const F_DRAGGABLE = new InjectionToken('F_DRAGGABLE');
|
|
5
|
-
export
|
|
5
|
+
export const MOUSE_EVENT_IGNORE_TIME = 800;
|
|
6
|
+
export class FDraggableBase {
|
|
7
|
+
isSyntheticEvent(event) {
|
|
8
|
+
const isSyntheticEvent = !!this.lastTouchEventTime &&
|
|
9
|
+
(this.lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now());
|
|
10
|
+
return isSyntheticEvent;
|
|
11
|
+
}
|
|
6
12
|
constructor(ngZone) {
|
|
7
|
-
|
|
13
|
+
this.ngZone = ngZone;
|
|
14
|
+
this.mouseListeners = EventExtensions.emptyListener();
|
|
15
|
+
this.touchListeners = EventExtensions.emptyListener();
|
|
16
|
+
this.startListeners = EventExtensions.emptyListener();
|
|
17
|
+
this.lastTouchEventTime = 0;
|
|
18
|
+
this.isDragStarted = false;
|
|
19
|
+
this.dragStartThreshold = 5;
|
|
20
|
+
this.dragStartDelay = 0;
|
|
21
|
+
this.dragStartTime = 0;
|
|
22
|
+
this.dragStartPosition = PointExtensions.initialize();
|
|
23
|
+
this.moveHandler = this.checkDragSequenceToStart;
|
|
24
|
+
this.onMouseDown = (event) => {
|
|
25
|
+
const isSyntheticEvent = this.isSyntheticEvent(event);
|
|
26
|
+
const isFakeEvent = isFakeMousedownFromScreenReader(event);
|
|
27
|
+
const mouseEvent = new IMouseEvent(event);
|
|
28
|
+
if (isSyntheticEvent || isFakeEvent || this.disabled) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
let result = this.onPointerDown(mouseEvent);
|
|
32
|
+
if (result) {
|
|
33
|
+
this.dragStartTime = Date.now();
|
|
34
|
+
this.dragStartPosition = mouseEvent.getPosition();
|
|
35
|
+
this.ngZone.runOutsideAngular(() => {
|
|
36
|
+
this.document?.addEventListener('mousemove', this.onMouseMove);
|
|
37
|
+
this.document?.addEventListener('mouseup', this.onMouseUp);
|
|
38
|
+
});
|
|
39
|
+
this.mouseListeners = () => {
|
|
40
|
+
this.document?.removeEventListener('mousemove', this.onMouseMove);
|
|
41
|
+
this.document?.removeEventListener('mouseup', this.onMouseUp);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
this.onTouchDown = (event) => {
|
|
46
|
+
const isFakeEvent = isFakeTouchstartFromScreenReader(event);
|
|
47
|
+
const touchEvent = new ITouchDownEvent(event);
|
|
48
|
+
if (isFakeEvent || this.disabled) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
let result = this.onPointerDown(new ITouchDownEvent(event));
|
|
52
|
+
if (result) {
|
|
53
|
+
this.dragStartTime = Date.now();
|
|
54
|
+
this.dragStartPosition = touchEvent.getPosition();
|
|
55
|
+
this.ngZone.runOutsideAngular(() => {
|
|
56
|
+
this.document?.addEventListener('touchmove', this.onTouchMove);
|
|
57
|
+
this.document?.addEventListener('touchend', this.onTouchUp);
|
|
58
|
+
});
|
|
59
|
+
this.touchListeners = () => {
|
|
60
|
+
this.document?.removeEventListener('touchmove', this.onTouchMove);
|
|
61
|
+
this.document?.removeEventListener('touchend', this.onTouchUp);
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
this.onMouseMove = (event) => {
|
|
66
|
+
this.moveHandler(new IMouseEvent(event));
|
|
67
|
+
};
|
|
68
|
+
this.onTouchMove = (event) => {
|
|
69
|
+
this.moveHandler(new ITouchMoveEvent(event));
|
|
70
|
+
};
|
|
71
|
+
this.onMouseUp = (event) => {
|
|
72
|
+
if (this.isDragStarted) {
|
|
73
|
+
this.onPointerUp(new IMouseEvent(event));
|
|
74
|
+
}
|
|
75
|
+
this.endDragSequence();
|
|
76
|
+
};
|
|
77
|
+
this.onTouchUp = (event) => {
|
|
78
|
+
if (this.isDragStarted) {
|
|
79
|
+
this.onPointerUp(new ITouchUpEvent(event));
|
|
80
|
+
}
|
|
81
|
+
this.endDragSequence();
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
checkDragSequenceToStart(event) {
|
|
85
|
+
const pointerPosition = event.getPosition();
|
|
86
|
+
if (!this.isDragStarted) {
|
|
87
|
+
const distanceX = Math.abs(pointerPosition.x - this.dragStartPosition.x);
|
|
88
|
+
const distanceY = Math.abs(pointerPosition.y - this.dragStartPosition.y);
|
|
89
|
+
const isOverThreshold = distanceX + distanceY >= this.dragStartThreshold;
|
|
90
|
+
if (isOverThreshold) {
|
|
91
|
+
const isDelayElapsed = Date.now() >= this.dragStartTime + this.dragStartDelay;
|
|
92
|
+
if (!isDelayElapsed) {
|
|
93
|
+
this.endDragSequence();
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
event.preventDefault();
|
|
97
|
+
this.prepareDragSequence(event);
|
|
98
|
+
this.isDragStarted = true;
|
|
99
|
+
this.moveHandler = this.onPointerMove;
|
|
100
|
+
if (isTouchEvent(event.originalEvent)) {
|
|
101
|
+
this.lastTouchEventTime = Date.now();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
endDragSequence() {
|
|
107
|
+
this.isDragStarted = false;
|
|
108
|
+
this.moveHandler = this.checkDragSequenceToStart;
|
|
109
|
+
this.mouseListeners();
|
|
110
|
+
this.mouseListeners = EventExtensions.emptyListener();
|
|
111
|
+
this.touchListeners();
|
|
112
|
+
this.touchListeners = EventExtensions.emptyListener();
|
|
113
|
+
this.finalizeDragSequence();
|
|
114
|
+
}
|
|
115
|
+
subscribe(document) {
|
|
116
|
+
if (this.document) {
|
|
117
|
+
this.unsubscribe();
|
|
118
|
+
}
|
|
119
|
+
this.document = document;
|
|
120
|
+
this.ngZone.runOutsideAngular(() => {
|
|
121
|
+
document.addEventListener('mousedown', this.onMouseDown, EventExtensions.activeListener());
|
|
122
|
+
document.addEventListener('touchstart', this.onTouchDown, EventExtensions.passiveListener());
|
|
123
|
+
});
|
|
124
|
+
this.startListeners = () => {
|
|
125
|
+
document.removeEventListener('mousedown', this.onMouseDown, EventExtensions.activeListener());
|
|
126
|
+
document.removeEventListener('touchstart', this.onTouchDown, EventExtensions.passiveListener());
|
|
127
|
+
};
|
|
8
128
|
}
|
|
9
|
-
|
|
10
|
-
|
|
129
|
+
unsubscribe() {
|
|
130
|
+
this.startListeners();
|
|
131
|
+
this.startListeners = EventExtensions.emptyListener();
|
|
132
|
+
this.touchListeners();
|
|
133
|
+
this.touchListeners = EventExtensions.emptyListener();
|
|
134
|
+
this.mouseListeners();
|
|
135
|
+
this.mouseListeners = EventExtensions.emptyListener();
|
|
136
|
+
}
|
|
137
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FDraggableBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
|
|
138
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: FDraggableBase, ngImport: i0 }); }
|
|
11
139
|
}
|
|
12
140
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FDraggableBase, decorators: [{
|
|
13
141
|
type: Directive
|
|
14
|
-
}], ctorParameters: () => [{ type:
|
|
15
|
-
|
|
142
|
+
}], ctorParameters: () => [{ type: undefined }] });
|
|
143
|
+
function isTouchEvent(event) {
|
|
144
|
+
return event.type[0] === 't';
|
|
145
|
+
}
|
|
146
|
+
function isFakeMousedownFromScreenReader(event) {
|
|
147
|
+
return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0);
|
|
148
|
+
}
|
|
149
|
+
function isFakeTouchstartFromScreenReader(event) {
|
|
150
|
+
const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);
|
|
151
|
+
return (!!touch &&
|
|
152
|
+
touch.identifier === -1 &&
|
|
153
|
+
(touch.radiusX == null || touch.radiusX === 1) &&
|
|
154
|
+
(touch.radiusY == null || touch.radiusY === 1));
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1kcmFnZ2FibGUtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1kcmFnZ2FibGUvZi1kcmFnZ2FibGUtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNFLFdBQVcsRUFBeUIsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUN0SCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQ0wsU0FBUyxFQUVULGNBQWMsR0FDZixNQUFNLGVBQWUsQ0FBQzs7QUFPdkIsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQixhQUFhLENBQUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFHM0MsTUFBTSxPQUFnQixjQUFjO0lBbUIzQixnQkFBZ0IsQ0FBQyxLQUFpQjtRQUN2QyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO1lBQ2hELENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLHVCQUF1QixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQWVELFlBQ1ksTUFBNkI7UUFBN0IsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUF6QmpDLG1CQUFjLEdBQWEsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNELG1CQUFjLEdBQWEsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTNELG1CQUFjLEdBQWEsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBUTNELHVCQUFrQixHQUFXLENBQUMsQ0FBQztRQUVoQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUM5Qix1QkFBa0IsR0FBVyxDQUFDLENBQUM7UUFDL0IsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFFM0Is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UyxZQUFZLENBQUMsS0FBOEI7SUFDbEQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBRSxLQUFLLEdBQUcsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUywrQkFBK0IsQ0FBQyxLQUFpQjtJQUN4RCxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsU0FBUyxnQ0FBZ0MsQ0FBQyxLQUFpQjtJQUN6RCxNQUFNLEtBQUssR0FDVCxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBRSxDQUFDLENBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFFLENBQUMsQ0FBRSxDQUFDLENBQUM7SUFDL0YsT0FBTyxDQUNMLENBQUMsQ0FBQyxLQUFLO1FBQ1AsS0FBSyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQy9DLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRXZlbnRFeHRlbnNpb25zLFxuICBJSGFzSG9zdEVsZW1lbnQsIElNb3VzZUV2ZW50LCBJUG9pbnQsIElQb2ludGVyRXZlbnQsIElUb3VjaERvd25FdmVudCwgSVRvdWNoTW92ZUV2ZW50LCBJVG91Y2hVcEV2ZW50LCBQb2ludEV4dGVuc2lvbnNcbn0gZnJvbSAnQGZvYmxleC9jb3JlJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3Rpb25Ub2tlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGQ3JlYXRlTm9kZUV2ZW50fSBmcm9tICcuL2V4dGVybmFsLWl0ZW0nO1xuaW1wb3J0IHsgRlJlYXNzaWduQ29ubmVjdGlvbkV2ZW50IH0gZnJvbSAnLi9jb25uZWN0aW9ucyc7XG5pbXBvcnQgeyBGQ3JlYXRlQ29ubmVjdGlvbkV2ZW50IH0gZnJvbSAnLi9jb25uZWN0aW9ucyc7XG5pbXBvcnQgeyBGU2VsZWN0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICcuL2Ytc2VsZWN0aW9uLWNoYW5nZS1ldmVudCc7XG5pbXBvcnQgeyBJQ2FuUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICdAZm9ibGV4L2NvcmUvZHJhZy1hbmQtZHJvcC9pLWNhbi1ydW4tb3V0c2lkZS1hbmd1bGFyJztcblxuZXhwb3J0IGNvbnN0IEZfRFJBR0dBQkxFID0gbmV3IEluamVjdGlvblRva2VuPEZEcmFnZ2FibGVCYXNlPignRl9EUkFHR0FCTEUnKTtcblxuZXhwb3J0IGNvbnN0IE1PVVNFX0VWRU5UX0lHTk9SRV9USU1FID0gODAwO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGRHJhZ2dhYmxlQmFzZSBpbXBsZW1lbnRzIElIYXNIb3N0RWxlbWVudCB7XG5cbiAgcHVibGljIGFic3RyYWN0IGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICBwdWJsaWMgYWJzdHJhY3QgZlNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEZTZWxlY3Rpb25DaGFuZ2VFdmVudD47XG5cbiAgcHVibGljIGFic3RyYWN0IGZDcmVhdGVOb2RlOiBFdmVudEVtaXR0ZXI8RkNyZWF0ZU5vZGVFdmVudD47XG5cbiAgcHVibGljIGFic3RyYWN0IGZSZWFzc2lnbkNvbm5lY3Rpb246IEV2ZW50RW1pdHRlcjxGUmVhc3NpZ25Db25uZWN0aW9uRXZlbnQ+O1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmQ3JlYXRlQ29ubmVjdGlvbjogRXZlbnRFbWl0dGVyPEZDcmVhdGVDb25uZWN0aW9uRXZlbnQ+O1xuXG4gIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50IHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgbW91c2VMaXN0ZW5lcnM6IEZ1bmN0aW9uID0gRXZlbnRFeHRlbnNpb25zLmVtcHR5TGlzdGVuZXIoKTtcbiAgcHJpdmF0ZSB0b3VjaExpc3RlbmVyczogRnVuY3Rpb24gPSBFdmVudEV4dGVuc2lvbnMuZW1wdHlMaXN0ZW5lcigpO1xuXG4gIHByaXZhdGUgc3RhcnRMaXN0ZW5lcnM6IEZ1bmN0aW9uID0gRXZlbnRFeHRlbnNpb25zLmVtcHR5TGlzdGVuZXIoKTtcblxuICBwdWJsaWMgaXNTeW50aGV0aWNFdmVudChldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzU3ludGhldGljRXZlbnQgPSAhIXRoaXMubGFzdFRvdWNoRXZlbnRUaW1lICYmXG4gICAgICAodGhpcy5sYXN0VG91Y2hFdmVudFRpbWUgKyBNT1VTRV9FVkVOVF9JR05PUkVfVElNRSA+IERhdGUubm93KCkpO1xuICAgIHJldHVybiBpc1N5bnRoZXRpY0V2ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBsYXN0VG91Y2hFdmVudFRpbWU6IG51bWJlciA9IDA7XG5cbiAgcHVibGljIGlzRHJhZ1N0YXJ0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBkcmFnU3RhcnRUaHJlc2hvbGQ6IG51bWJlciA9IDU7XG4gIHByaXZhdGUgZHJhZ1N0YXJ0RGVsYXk6IG51bWJlciA9IDA7XG5cbiAgcHJpdmF0ZSBkcmFnU3RhcnRUaW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIGRyYWdTdGFydFBvc2l0aW9uOiBJUG9pbnQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBkaXNhYmxlZDogYm9vbGVhbjtcblxuICBwcml2YXRlIG1vdmVIYW5kbGVyOiBGdW5jdGlvbiA9IHRoaXMuY2hlY2tEcmFnU2VxdWVuY2VUb1N0YXJ0O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgbmdab25lOiBJQ2FuUnVuT3V0c2lkZUFuZ3VsYXJcbiAgKSB7XG4gIH1cblxuICBwcml2YXRlIG9uTW91c2VEb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaXNTeW50aGV0aWNFdmVudCA9IHRoaXMuaXNTeW50aGV0aWNFdmVudChldmVudCk7XG4gICAgY29uc3QgaXNGYWtlRXZlbnQgPSBpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyKGV2ZW50KTtcbiAgICBjb25zdCBtb3VzZUV2ZW50ID0gbmV3IElNb3VzZUV2ZW50KGV2ZW50KTtcblxuICAgIGlmIChpc1N5bnRoZXRpY0V2ZW50IHx8IGlzRmFrZUV2ZW50IHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHJlc3VsdCA9IHRoaXMub25Qb2ludGVyRG93bihtb3VzZUV2ZW50KTtcbiAgICBpZiAocmVzdWx0KSB7XG5cbiAgICAgIHRoaXMuZHJhZ1N0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICB0aGlzLmRyYWdTdGFydFBvc2l0aW9uID0gbW91c2VFdmVudC5nZXRQb3NpdGlvbigpO1xuXG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmUpO1xuICAgICAgICB0aGlzLmRvY3VtZW50Py5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vbk1vdXNlVXApO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubW91c2VMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmUpO1xuICAgICAgICB0aGlzLmRvY3VtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vbk1vdXNlVXApO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uVG91Y2hEb3duID0gKGV2ZW50OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgY29uc3QgaXNGYWtlRXZlbnQgPSBpc0Zha2VUb3VjaHN0YXJ0RnJvbVNjcmVlblJlYWRlcihldmVudCBhcyBUb3VjaEV2ZW50KVxuICAgIGNvbnN0IHRvdWNoRXZlbnQgPSBuZXcgSVRvdWNoRG93bkV2ZW50KGV2ZW50KTtcblxuICAgIGlmIChpc0Zha2VFdmVudCB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCByZXN1bHQgPSB0aGlzLm9uUG9pbnRlckRvd24obmV3IElUb3VjaERvd25FdmVudChldmVudCkpO1xuICAgIGlmIChyZXN1bHQpIHtcblxuICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0UG9zaXRpb24gPSB0b3VjaEV2ZW50LmdldFBvc2l0aW9uKCk7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5kb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoVXApO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudG91Y2hMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMub25Ub3VjaE1vdmUpO1xuICAgICAgICB0aGlzLmRvY3VtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMub25Ub3VjaFVwKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbk1vdXNlTW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgIHRoaXMubW92ZUhhbmRsZXIobmV3IElNb3VzZUV2ZW50KGV2ZW50KSk7XG4gIH1cblxuICBwcml2YXRlIG9uVG91Y2hNb3ZlID0gKGV2ZW50OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgdGhpcy5tb3ZlSGFuZGxlcihuZXcgSVRvdWNoTW92ZUV2ZW50KGV2ZW50KSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRHJhZ1NlcXVlbmNlVG9TdGFydChldmVudDogSVBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbiA9IGV2ZW50LmdldFBvc2l0aW9uKCk7XG5cbiAgICBpZiAoIXRoaXMuaXNEcmFnU3RhcnRlZCkge1xuICAgICAgY29uc3QgZGlzdGFuY2VYID0gTWF0aC5hYnMocG9pbnRlclBvc2l0aW9uLnggLSB0aGlzLmRyYWdTdGFydFBvc2l0aW9uLngpO1xuICAgICAgY29uc3QgZGlzdGFuY2VZID0gTWF0aC5hYnMocG9pbnRlclBvc2l0aW9uLnkgLSB0aGlzLmRyYWdTdGFydFBvc2l0aW9uLnkpO1xuICAgICAgY29uc3QgaXNPdmVyVGhyZXNob2xkID0gZGlzdGFuY2VYICsgZGlzdGFuY2VZID49IHRoaXMuZHJhZ1N0YXJ0VGhyZXNob2xkO1xuXG4gICAgICBpZiAoaXNPdmVyVGhyZXNob2xkKSB7XG4gICAgICAgIGNvbnN0IGlzRGVsYXlFbGFwc2VkID0gRGF0ZS5ub3coKSA+PSB0aGlzLmRyYWdTdGFydFRpbWUgKyB0aGlzLmRyYWdTdGFydERlbGF5O1xuXG4gICAgICAgIGlmICghaXNEZWxheUVsYXBzZWQpIHtcbiAgICAgICAgICB0aGlzLmVuZERyYWdTZXF1ZW5jZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMucHJlcGFyZURyYWdTZXF1ZW5jZShldmVudCk7XG4gICAgICAgIHRoaXMuaXNEcmFnU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMubW92ZUhhbmRsZXIgPSB0aGlzLm9uUG9pbnRlck1vdmU7XG4gICAgICAgIGlmIChpc1RvdWNoRXZlbnQoZXZlbnQub3JpZ2luYWxFdmVudCkpIHtcbiAgICAgICAgICB0aGlzLmxhc3RUb3VjaEV2ZW50VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcHJlcGFyZURyYWdTZXF1ZW5jZShldmVudDogSVBvaW50ZXJFdmVudCk6IHZvaWQ7XG5cbiAgcHJpdmF0ZSBvbk1vdXNlVXAgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAodGhpcy5pc0RyYWdTdGFydGVkKSB7XG4gICAgICB0aGlzLm9uUG9pbnRlclVwKG5ldyBJTW91c2VFdmVudChldmVudCkpO1xuICAgIH1cbiAgICB0aGlzLmVuZERyYWdTZXF1ZW5jZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblRvdWNoVXAgPSAoZXZlbnQ6IFRvdWNoRXZlbnQpID0+IHtcbiAgICBpZiAodGhpcy5pc0RyYWdTdGFydGVkKSB7XG4gICAgICB0aGlzLm9uUG9pbnRlclVwKG5ldyBJVG91Y2hVcEV2ZW50KGV2ZW50KSk7XG4gICAgfVxuICAgIHRoaXMuZW5kRHJhZ1NlcXVlbmNlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuZERyYWdTZXF1ZW5jZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLm1vdmVIYW5kbGVyID0gdGhpcy5jaGVja0RyYWdTZXF1ZW5jZVRvU3RhcnQ7XG4gICAgdGhpcy5tb3VzZUxpc3RlbmVycygpO1xuICAgIHRoaXMubW91c2VMaXN0ZW5lcnMgPSBFdmVudEV4dGVuc2lvbnMuZW1wdHlMaXN0ZW5lcigpO1xuICAgIHRoaXMudG91Y2hMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRvdWNoTGlzdGVuZXJzID0gRXZlbnRFeHRlbnNpb25zLmVtcHR5TGlzdGVuZXIoKTtcbiAgICB0aGlzLmZpbmFsaXplRHJhZ1NlcXVlbmNlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZmluYWxpemVEcmFnU2VxdWVuY2UoKTogdm9pZDtcblxuICBwdWJsaWMgYWJzdHJhY3Qgb25Qb2ludGVyRG93bihldmVudDogSVBvaW50ZXJFdmVudCk6IGJvb2xlYW47XG5cbiAgcHVibGljIGFic3RyYWN0IG9uUG9pbnRlck1vdmUoZXZlbnQ6IElQb2ludGVyRXZlbnQpOiB2b2lkO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBvblBvaW50ZXJVcChldmVudDogSVBvaW50ZXJFdmVudCk6IHZvaWQ7XG5cbiAgcHVibGljIHN1YnNjcmliZShkb2N1bWVudDogRG9jdW1lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudCkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG5cbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLm9uTW91c2VEb3duLCBFdmVudEV4dGVuc2lvbnMuYWN0aXZlTGlzdGVuZXIoKSk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5vblRvdWNoRG93biwgRXZlbnRFeHRlbnNpb25zLnBhc3NpdmVMaXN0ZW5lcigpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhcnRMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLm9uTW91c2VEb3duLCBFdmVudEV4dGVuc2lvbnMuYWN0aXZlTGlzdGVuZXIoKSk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5vblRvdWNoRG93biwgRXZlbnRFeHRlbnNpb25zLnBhc3NpdmVMaXN0ZW5lcigpKTtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuXG4gICAgdGhpcy5zdGFydExpc3RlbmVycygpO1xuICAgIHRoaXMuc3RhcnRMaXN0ZW5lcnMgPSBFdmVudEV4dGVuc2lvbnMuZW1wdHlMaXN0ZW5lcigpO1xuICAgIHRoaXMudG91Y2hMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRvdWNoTGlzdGVuZXJzID0gRXZlbnRFeHRlbnNpb25zLmVtcHR5TGlzdGVuZXIoKTtcbiAgICB0aGlzLm1vdXNlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5tb3VzZUxpc3RlbmVycyA9IEV2ZW50RXh0ZW5zaW9ucy5lbXB0eUxpc3RlbmVyKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNUb3VjaEV2ZW50KGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IGV2ZW50IGlzIFRvdWNoRXZlbnQge1xuICByZXR1cm4gZXZlbnQudHlwZVsgMCBdID09PSAndCc7XG59XG5cbmZ1bmN0aW9uIGlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIGV2ZW50LmJ1dHRvbnMgPT09IDAgfHwgKGV2ZW50Lm9mZnNldFggPT09IDAgJiYgZXZlbnQub2Zmc2V0WSA9PT0gMCk7XG59XG5cbmZ1bmN0aW9uIGlzRmFrZVRvdWNoc3RhcnRGcm9tU2NyZWVuUmVhZGVyKGV2ZW50OiBUb3VjaEV2ZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IHRvdWNoOiBUb3VjaCB8IHVuZGVmaW5lZCA9XG4gICAgKGV2ZW50LnRvdWNoZXMgJiYgZXZlbnQudG91Y2hlc1sgMCBdKSB8fCAoZXZlbnQuY2hhbmdlZFRvdWNoZXMgJiYgZXZlbnQuY2hhbmdlZFRvdWNoZXNbIDAgXSk7XG4gIHJldHVybiAoXG4gICAgISF0b3VjaCAmJlxuICAgIHRvdWNoLmlkZW50aWZpZXIgPT09IC0xICYmXG4gICAgKHRvdWNoLnJhZGl1c1ggPT0gbnVsbCB8fCB0b3VjaC5yYWRpdXNYID09PSAxKSAmJlxuICAgICh0b3VjaC5yYWRpdXNZID09IG51bGwgfHwgdG91Y2gucmFkaXVzWSA9PT0gMSlcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -3,25 +3,29 @@ import { F_DRAGGABLE, FDraggableBase } from './f-draggable-base';
|
|
|
3
3
|
import { Subscription } from 'rxjs';
|
|
4
4
|
import { ExternalItemOnPointerUp, ExternalItemPrepareDragSequence } from './external-item';
|
|
5
5
|
import { Point } from '@foblex/core';
|
|
6
|
-
import {
|
|
6
|
+
import { SingleSelectOnPointerDown } from './single-select';
|
|
7
7
|
import { SelectionAreaOnPointerUp, SelectionAreaPrepareDragSequence } from './selection-area';
|
|
8
8
|
import { NodeOnPointerUp, NodePrepareDragSequence } from './node';
|
|
9
9
|
import { CanvasOnPointerUp, CanvasPrepareDragSequence } from './canvas';
|
|
10
10
|
import { DOCUMENT } from '@angular/common';
|
|
11
11
|
import { CreateConnectionOnPointerUp, CreateConnectionPrepareDragSequence, ReassignConnectionOnPointerUp, ReassignConnectionPrepareDragSequence } from './connections';
|
|
12
|
+
import { GetSelectionRequest } from '../domain';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "./f-draggable-data-context";
|
|
14
15
|
import * as i2 from "../f-components-store";
|
|
16
|
+
import * as i3 from "../f-mediator";
|
|
15
17
|
export class FDraggableDirective extends FDraggableBase {
|
|
16
18
|
get hostElement() {
|
|
17
19
|
return this.elementReference.nativeElement;
|
|
18
20
|
}
|
|
19
|
-
constructor(elementReference, fDraggableDataContext, ngZone, injector, fComponentsStore,
|
|
21
|
+
constructor(elementReference, fDraggableDataContext, ngZone, injector, fComponentsStore, fMediator, doc) {
|
|
20
22
|
super(ngZone);
|
|
21
23
|
this.elementReference = elementReference;
|
|
22
24
|
this.fDraggableDataContext = fDraggableDataContext;
|
|
23
25
|
this.injector = injector;
|
|
24
26
|
this.fComponentsStore = fComponentsStore;
|
|
27
|
+
this.fMediator = fMediator;
|
|
28
|
+
this.doc = doc;
|
|
25
29
|
this.subscriptions$ = new Subscription();
|
|
26
30
|
this.disabled = false;
|
|
27
31
|
this.fSelectionChange = new EventEmitter();
|
|
@@ -30,23 +34,22 @@ export class FDraggableDirective extends FDraggableBase {
|
|
|
30
34
|
this.fCreateNode = new EventEmitter();
|
|
31
35
|
this.fReassignConnection = new EventEmitter();
|
|
32
36
|
this.fCreateConnection = new EventEmitter();
|
|
33
|
-
this.selectedItemsOnPointerDown = 0;
|
|
34
|
-
this.document = document;
|
|
35
37
|
}
|
|
36
38
|
ngOnInit() {
|
|
37
39
|
this.fComponentsStore.fDraggable = this;
|
|
38
40
|
}
|
|
39
41
|
ngAfterViewInit() {
|
|
40
|
-
super.subscribe(this.
|
|
42
|
+
super.subscribe(this.doc);
|
|
41
43
|
}
|
|
42
44
|
onPointerDown(event) {
|
|
43
45
|
this.fDraggableDataContext.reset();
|
|
44
46
|
let result = event.isMouseLeftButton();
|
|
45
|
-
this.selectedItemsOnPointerDown = this.fDraggableDataContext.selectedItems.length;
|
|
46
47
|
this.injector.get(SingleSelectOnPointerDown).handle(event);
|
|
47
48
|
this.injector.get(ReassignConnectionPrepareDragSequence).handle(event);
|
|
48
49
|
this.injector.get(CreateConnectionPrepareDragSequence).handle(event);
|
|
49
|
-
|
|
50
|
+
if (!result) {
|
|
51
|
+
this.finalizeDragSequence();
|
|
52
|
+
}
|
|
50
53
|
return result;
|
|
51
54
|
}
|
|
52
55
|
prepareDragSequence(event) {
|
|
@@ -76,31 +79,23 @@ export class FDraggableDirective extends FDraggableBase {
|
|
|
76
79
|
this.injector.get(CanvasOnPointerUp).handle(event);
|
|
77
80
|
this.injector.get(ExternalItemOnPointerUp).handle(event);
|
|
78
81
|
this.hostElement.classList.remove('f-dragging');
|
|
79
|
-
this.emitSelectionChangeEvent();
|
|
80
82
|
this.fDraggableDataContext.reset();
|
|
81
83
|
}
|
|
84
|
+
finalizeDragSequence() {
|
|
85
|
+
this.emitSelectionChangeEvent();
|
|
86
|
+
}
|
|
82
87
|
emitSelectionChangeEvent() {
|
|
83
|
-
if (!this.fDraggableDataContext.isSelectedChanged
|
|
84
|
-
&& this.selectedItemsOnPointerDown === this.fDraggableDataContext.selectedItems.length) {
|
|
88
|
+
if (!this.fDraggableDataContext.isSelectedChanged) {
|
|
85
89
|
return;
|
|
86
90
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
this.fDraggableDataContext.selectedItems.forEach((x) => {
|
|
90
|
-
if (x.hostElement.classList.contains('f-node')) {
|
|
91
|
-
selectedNodes.push(x.hostElement.id);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
selectedConnections.push(x.hostElement.id);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
this.fSelectionChange.emit(new FSelectionChangeEvent(selectedNodes, selectedConnections));
|
|
91
|
+
const result = this.fMediator.send(new GetSelectionRequest());
|
|
92
|
+
this.fSelectionChange.emit(result);
|
|
98
93
|
}
|
|
99
94
|
ngOnDestroy() {
|
|
100
95
|
super.unsubscribe();
|
|
101
96
|
this.subscriptions$.unsubscribe();
|
|
102
97
|
}
|
|
103
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FDraggableDirective, deps: [{ token: i0.ElementRef }, { token: i1.FDraggableDataContext }, { token: i0.NgZone }, { token: i0.Injector }, { token: i2.FComponentsStore }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FDraggableDirective, deps: [{ token: i0.ElementRef }, { token: i1.FDraggableDataContext }, { token: i0.NgZone }, { token: i0.Injector }, { token: i2.FComponentsStore }, { token: i3.FFlowMediator }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
104
99
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.1", type: FDraggableDirective, selector: "f-flow[fDraggable]", inputs: { disabled: ["fDraggableDisabled", "disabled"] }, outputs: { fSelectionChange: "fSelectionChange", fCreateNode: "fCreateNode", fReassignConnection: "fReassignConnection", fCreateConnection: "fCreateConnection" }, providers: [
|
|
105
100
|
{ provide: F_DRAGGABLE, useExisting: FDraggableDirective }
|
|
106
101
|
], exportAs: ["fDraggable"], usesInheritance: true, ngImport: i0 }); }
|
|
@@ -114,7 +109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
114
109
|
{ provide: F_DRAGGABLE, useExisting: FDraggableDirective }
|
|
115
110
|
]
|
|
116
111
|
}]
|
|
117
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FDraggableDataContext }, { type: i0.NgZone }, { type: i0.Injector }, { type: i2.FComponentsStore }, { type:
|
|
112
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FDraggableDataContext }, { type: i0.NgZone }, { type: i0.Injector }, { type: i2.FComponentsStore }, { type: i3.FFlowMediator }, { type: Document, decorators: [{
|
|
118
113
|
type: Inject,
|
|
119
114
|
args: [DOCUMENT]
|
|
120
115
|
}] }], propDecorators: { disabled: [{
|
|
@@ -129,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
129
124
|
}], fCreateConnection: [{
|
|
130
125
|
type: Output
|
|
131
126
|
}] } });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1kcmFnZ2FibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWRyYWdnYWJsZS9mLWRyYWdnYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQUUsTUFBTSxFQUVwQixLQUFLLEVBR0csTUFBTSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLCtCQUErQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0csT0FBTyxFQUFpQixLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFFTCwyQkFBMkIsRUFDM0IsbUNBQW1DLEVBQ25DLDZCQUE2QixFQUM3QixxQ0FBcUMsRUFDdEMsTUFBTSxlQUFlLENBQUM7Ozs7QUFTdkIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7SUFPckQsSUFBb0IsV0FBVztRQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7SUFDN0MsQ0FBQztJ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RTtTQUMzRDs7MkZBRVUsbUJBQW1CO2tCQVAvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcscUJBQXFCLEVBQUU7cUJBQzNEO2lCQUNGOzswQkFxQ00sTUFBTTsyQkFBQyxRQUFRO3lDQS9CSixRQUFRO3NCQUR2QixLQUFLO3VCQUFDLG9CQUFvQjtnQkFRWCxnQkFBZ0I7c0JBRC9CLE1BQU07Z0JBT1MsV0FBVztzQkFEMUIsTUFBTTtnQkFJUyxtQkFBbUI7c0JBRGxDLE1BQU07Z0JBSVMsaUJBQWlCO3NCQURoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LCBPdXRwdXRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZfRFJBR0dBQkxFLCBGRHJhZ2dhYmxlQmFzZSB9IGZyb20gJy4vZi1kcmFnZ2FibGUtYmFzZSc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vZi1jb21wb25lbnRzLXN0b3JlJztcbmltcG9ydCB7IEZEcmFnZ2FibGVEYXRhQ29udGV4dCB9IGZyb20gJy4vZi1kcmFnZ2FibGUtZGF0YS1jb250ZXh0JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRkNyZWF0ZU5vZGVFdmVudCwgRXh0ZXJuYWxJdGVtT25Qb2ludGVyVXAsIEV4dGVybmFsSXRlbVByZXBhcmVEcmFnU2VxdWVuY2UgfSBmcm9tICcuL2V4dGVybmFsLWl0ZW0nO1xuaW1wb3J0IHsgSVBvaW50ZXJFdmVudCwgUG9pbnQgfSBmcm9tICdAZm9ibGV4L2NvcmUnO1xuaW1wb3J0IHsgRlNlbGVjdGlvbkNoYW5nZUV2ZW50LCBTaW5nbGVTZWxlY3RPblBvaW50ZXJEb3duIH0gZnJvbSAnLi9zaW5nbGUtc2VsZWN0JztcbmltcG9ydCB7IFNlbGVjdGlvbkFyZWFPblBvaW50ZXJVcCwgU2VsZWN0aW9uQXJlYVByZXBhcmVEcmFnU2VxdWVuY2UgfSBmcm9tICcuL3NlbGVjdGlvbi1hcmVhJztcbmltcG9ydCB7IE5vZGVPblBvaW50ZXJVcCwgTm9kZVByZXBhcmVEcmFnU2VxdWVuY2UgfSBmcm9tICcuL25vZGUnO1xuaW1wb3J0IHsgQ2FudmFzT25Qb2ludGVyVXAsIENhbnZhc1ByZXBhcmVEcmFnU2VxdWVuY2UgfSBmcm9tICcuL2NhbnZhcyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBGQ3JlYXRlQ29ubmVjdGlvbkV2ZW50LFxuICBDcmVhdGVDb25uZWN0aW9uT25Qb2ludGVyVXAsXG4gIENyZWF0ZUNvbm5lY3Rpb25QcmVwYXJlRHJhZ1NlcXVlbmNlLCBGUmVhc3NpZ25Db25uZWN0aW9uRXZlbnQsXG4gIFJlYXNzaWduQ29ubmVjdGlvbk9uUG9pbnRlclVwLFxuICBSZWFzc2lnbkNvbm5lY3Rpb25QcmVwYXJlRHJhZ1NlcXVlbmNlXG59IGZyb20gJy4vY29ubmVjdGlvbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiZi1mbG93W2ZEcmFnZ2FibGVdXCIsXG4gIGV4cG9ydEFzOiAnZkRyYWdnYWJsZScsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogRl9EUkFHR0FCTEUsIHVzZUV4aXN0aW5nOiBGRHJhZ2dhYmxlRGlyZWN0aXZlIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGRHJhZ2dhYmxlRGlyZWN0aXZlIGV4dGVuZHMgRkRyYWdnYWJsZUJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zJDogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIEBJbnB1dCgnZkRyYWdnYWJsZURpc2FibGVkJylcbiAgcHVibGljIG92ZXJyaWRlIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCBob3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvdmVycmlkZSBmU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RlNlbGVjdGlvbkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RlNlbGVjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIC8vIEBPdXRwdXQoKVxuICAvLyBwdWJsaWMgb3ZlcnJpZGUgZkNvbm5lY3Rpb25JbnRlcnNlY3ROb2RlOiBFdmVudEVtaXR0ZXI8Q29ubmVjdGlvbkludGVyc2VjdE5vZGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPENvbm5lY3Rpb25JbnRlcnNlY3ROb2RlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvdmVycmlkZSBmQ3JlYXRlTm9kZTogRXZlbnRFbWl0dGVyPEZDcmVhdGVOb2RlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGQ3JlYXRlTm9kZUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZlJlYXNzaWduQ29ubmVjdGlvbjogRXZlbnRFbWl0dGVyPEZSZWFzc2lnbkNvbm5lY3Rpb25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZSZWFzc2lnbkNvbm5lY3Rpb25FdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGZDcmVhdGVDb25uZWN0aW9uOiBFdmVudEVtaXR0ZXI8RkNyZWF0ZUNvbm5lY3Rpb25FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZDcmVhdGVDb25uZWN0aW9uRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQ7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZEl0ZW1zT25Qb2ludGVyRG93bjogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgZWxlbWVudFJlZmVyZW5jZTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICBwcml2YXRlIGZEcmFnZ2FibGVEYXRhQ29udGV4dDogRkRyYWdnYWJsZURhdGFDb250ZXh0LFxuICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgIHByaXZhdGUgZkNvbXBvbmVudHNTdG9yZTogRkNvbXBvbmVudHNTdG9yZSxcbiAgICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBhbnlcbiAgKSB7XG4gICAgc3VwZXIobmdab25lKTtcbiAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQgYXMgRG9jdW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZEcmFnZ2FibGUgPSB0aGlzO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5zdWJzY3JpYmUodGhpcy5kb2N1bWVudCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25Qb2ludGVyRG93bihldmVudDogSVBvaW50ZXJFdmVudCk6IGJvb2xlYW4ge1xuICAgIHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LnJlc2V0KCk7XG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IGV2ZW50LmlzTW91c2VMZWZ0QnV0dG9uKCk7XG5cbiAgICB0aGlzLnNlbGVjdGVkSXRlbXNPblBvaW50ZXJEb3duID0gdGhpcy5mRHJhZ2dhYmxlRGF0YUNvbnRleHQuc2VsZWN0ZWRJdGVtcy5sZW5ndGg7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChTaW5nbGVTZWxlY3RPblBvaW50ZXJEb3duKS5oYW5kbGUoZXZlbnQpO1xuXG4gICAgdGhpcy5pbmplY3Rvci5nZXQoUmVhc3NpZ25Db25uZWN0aW9uUHJlcGFyZURyYWdTZXF1ZW5jZSkuaGFuZGxlKGV2ZW50KTtcblxuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KENyZWF0ZUNvbm5lY3Rpb25QcmVwYXJlRHJhZ1NlcXVlbmNlKS5oYW5kbGUoZXZlbnQpO1xuXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcHJlcGFyZURyYWdTZXF1ZW5jZShldmVudDogSVBvaW50ZXJFdmVudCkge1xuXG4gICAgdGhpcy5pbmplY3Rvci5nZXQoU2VsZWN0aW9uQXJlYVByZXBhcmVEcmFnU2VxdWVuY2UpLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChOb2RlUHJlcGFyZURyYWdTZXF1ZW5jZSkuaGFuZGxlKGV2ZW50KTtcblxuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KENhbnZhc1ByZXBhcmVEcmFnU2VxdWVuY2UpLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChFeHRlcm5hbEl0ZW1QcmVwYXJlRHJhZ1NlcXVlbmNlKS5oYW5kbGUoZXZlbnQpO1xuXG4gICAgdGhpcy5mRHJhZ2dhYmxlRGF0YUNvbnRleHQuZHJhZ2dhYmxlSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5pbml0aWFsaXplPy4oKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5kcmFnZ2FibGVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2YtZHJhZ2dpbmcnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25Qb2ludGVyTW92ZShldmVudDogSVBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbkluQ2FudmFzID0gUG9pbnQuZnJvbVBvaW50KGV2ZW50LmdldFBvc2l0aW9uKCkpLmVsZW1lbnRUcmFuc2Zvcm0odGhpcy5ob3N0RWxlbWVudCk7XG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHBvaW50ZXJQb3NpdGlvbkluQ2FudmFzLmRpdih0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5vblBvaW50ZXJEb3duU2NhbGUpLnN1Yih0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5vblBvaW50ZXJEb3duUG9zaXRpb24pO1xuICAgIHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0ubW92ZShkaWZmZXJlbmNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvblBvaW50ZXJVcChldmVudDogSVBvaW50ZXJFdmVudCk6IHZvaWQge1xuXG4gICAgdGhpcy5pbmplY3Rvci5nZXQoUmVhc3NpZ25Db25uZWN0aW9uT25Qb2ludGVyVXApLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChDcmVhdGVDb25uZWN0aW9uT25Qb2ludGVyVXApLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChTZWxlY3Rpb25BcmVhT25Qb2ludGVyVXApLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChOb2RlT25Qb2ludGVyVXApLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChDYW52YXNPblBvaW50ZXJVcCkuaGFuZGxlKGV2ZW50KTtcblxuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KEV4dGVybmFsSXRlbU9uUG9pbnRlclVwKS5oYW5kbGUoZXZlbnQpO1xuXG4gICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmLWRyYWdnaW5nJyk7XG5cbiAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpO1xuXG4gICAgdGhpcy5mRHJhZ2dhYmxlRGF0YUNvbnRleHQucmVzZXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICAgIXRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LmlzU2VsZWN0ZWRDaGFuZ2VkXG4gICAgICAgICYmIHRoaXMuc2VsZWN0ZWRJdGVtc09uUG9pbnRlckRvd24gPT09IHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LnNlbGVjdGVkSXRlbXMubGVuZ3RoXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBzZWxlY3RlZE5vZGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBzZWxlY3RlZENvbm5lY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgaWYgKHguaG9zdEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdmLW5vZGUnKSkge1xuICAgICAgICBzZWxlY3RlZE5vZGVzLnB1c2goeC5ob3N0RWxlbWVudC5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZENvbm5lY3Rpb25zLnB1c2goeC5ob3N0RWxlbWVudC5pZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mU2VsZWN0aW9uQ2hhbmdlLmVtaXQobmV3IEZTZWxlY3Rpb25DaGFuZ2VFdmVudChzZWxlY3RlZE5vZGVzLCBzZWxlY3RlZENvbm5lY3Rpb25zKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuIl19
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1kcmFnZ2FibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWRyYWdnYWJsZS9mLWRyYWdnYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQUUsTUFBTSxFQUVwQixLQUFLLEVBR0csTUFBTSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLCtCQUErQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0csT0FBTyxFQUFpQixLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFFTCwyQkFBMkIsRUFDM0IsbUNBQW1DLEVBQ25DLDZCQUE2QixFQUM3QixxQ0FBcUMsRUFDdEMsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQVNoRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsY0FBYztJQU9yRCxJQUFvQixXQUFXO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGdC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LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlciwgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsIE91dHB1dFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRl9EUkFHR0FCTEUsIEZEcmFnZ2FibGVCYXNlIH0gZnJvbSAnLi9mLWRyYWdnYWJsZS1iYXNlJztcbmltcG9ydCB7IEZDb21wb25lbnRzU3RvcmUgfSBmcm9tICcuLi9mLWNvbXBvbmVudHMtc3RvcmUnO1xuaW1wb3J0IHsgRkRyYWdnYWJsZURhdGFDb250ZXh0IH0gZnJvbSAnLi9mLWRyYWdnYWJsZS1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGQ3JlYXRlTm9kZUV2ZW50LCBFeHRlcm5hbEl0ZW1PblBvaW50ZXJVcCwgRXh0ZXJuYWxJdGVtUHJlcGFyZURyYWdTZXF1ZW5jZSB9IGZyb20gJy4vZXh0ZXJuYWwtaXRlbSc7XG5pbXBvcnQgeyBJUG9pbnRlckV2ZW50LCBQb2ludCB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RPblBvaW50ZXJEb3duIH0gZnJvbSAnLi9zaW5nbGUtc2VsZWN0JztcbmltcG9ydCB7IFNlbGVjdGlvbkFyZWFPblBvaW50ZXJVcCwgU2VsZWN0aW9uQXJlYVByZXBhcmVEcmFnU2VxdWVuY2UgfSBmcm9tICcuL3NlbGVjdGlvbi1hcmVhJztcbmltcG9ydCB7IE5vZGVPblBvaW50ZXJVcCwgTm9kZVByZXBhcmVEcmFnU2VxdWVuY2UgfSBmcm9tICcuL25vZGUnO1xuaW1wb3J0IHsgQ2FudmFzT25Qb2ludGVyVXAsIENhbnZhc1ByZXBhcmVEcmFnU2VxdWVuY2UgfSBmcm9tICcuL2NhbnZhcyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBGQ3JlYXRlQ29ubmVjdGlvbkV2ZW50LFxuICBDcmVhdGVDb25uZWN0aW9uT25Qb2ludGVyVXAsXG4gIENyZWF0ZUNvbm5lY3Rpb25QcmVwYXJlRHJhZ1NlcXVlbmNlLCBGUmVhc3NpZ25Db25uZWN0aW9uRXZlbnQsXG4gIFJlYXNzaWduQ29ubmVjdGlvbk9uUG9pbnRlclVwLFxuICBSZWFzc2lnbkNvbm5lY3Rpb25QcmVwYXJlRHJhZ1NlcXVlbmNlXG59IGZyb20gJy4vY29ubmVjdGlvbnMnO1xuaW1wb3J0IHsgRlNlbGVjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9mLXNlbGVjdGlvbi1jaGFuZ2UtZXZlbnQnO1xuaW1wb3J0IHsgRkZsb3dNZWRpYXRvciB9IGZyb20gJy4uL2YtbWVkaWF0b3InO1xuaW1wb3J0IHsgR2V0U2VsZWN0aW9uUmVxdWVzdCB9IGZyb20gJy4uL2RvbWFpbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJmLWZsb3dbZkRyYWdnYWJsZV1cIixcbiAgZXhwb3J0QXM6ICdmRHJhZ2dhYmxlJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBGX0RSQUdHQUJMRSwgdXNlRXhpc3Rpbmc6IEZEcmFnZ2FibGVEaXJlY3RpdmUgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZEcmFnZ2FibGVEaXJlY3RpdmUgZXh0ZW5kcyBGRHJhZ2dhYmxlQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMkOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgQElucHV0KCdmRHJhZ2dhYmxlRGlzYWJsZWQnKVxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGZTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxGU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgLy8gQE91dHB1dCgpXG4gIC8vIHB1YmxpYyBvdmVycmlkZSBmQ29ubmVjdGlvbkludGVyc2VjdE5vZGU6IEV2ZW50RW1pdHRlcjxDb25uZWN0aW9uSW50ZXJzZWN0Tm9kZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29ubmVjdGlvbkludGVyc2VjdE5vZGVFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGZDcmVhdGVOb2RlOiBFdmVudEVtaXR0ZXI8RkNyZWF0ZU5vZGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZDcmVhdGVOb2RlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvdmVycmlkZSBmUmVhc3NpZ25Db25uZWN0aW9uOiBFdmVudEVtaXR0ZXI8RlJlYXNzaWduQ29ubmVjdGlvbkV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RlJlYXNzaWduQ29ubmVjdGlvbkV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZkNyZWF0ZUNvbm5lY3Rpb246IEV2ZW50RW1pdHRlcjxGQ3JlYXRlQ29ubmVjdGlvbkV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RkNyZWF0ZUNvbm5lY3Rpb25FdmVudD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWZlcmVuY2U6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgZkRyYWdnYWJsZURhdGFDb250ZXh0OiBGRHJhZ2dhYmxlRGF0YUNvbnRleHQsXG4gICAgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBmQ29tcG9uZW50c1N0b3JlOiBGQ29tcG9uZW50c1N0b3JlLFxuICAgIHByaXZhdGUgZk1lZGlhdG9yOiBGRmxvd01lZGlhdG9yLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jOiBEb2N1bWVudFxuICApIHtcbiAgICBzdXBlcihuZ1pvbmUpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZkNvbXBvbmVudHNTdG9yZS5mRHJhZ2dhYmxlID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc3VwZXIuc3Vic2NyaWJlKHRoaXMuZG9jKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvblBvaW50ZXJEb3duKGV2ZW50OiBJUG9pbnRlckV2ZW50KTogYm9vbGVhbiB7XG4gICAgdGhpcy5mRHJhZ2dhYmxlRGF0YUNvbnRleHQucmVzZXQoKTtcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZXZlbnQuaXNNb3VzZUxlZnRCdXR0b24oKTtcblxuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KFNpbmdsZVNlbGVjdE9uUG9pbnRlckRvd24pLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChSZWFzc2lnbkNvbm5lY3Rpb25QcmVwYXJlRHJhZ1NlcXVlbmNlKS5oYW5kbGUoZXZlbnQpO1xuXG4gICAgdGhpcy5pbmplY3Rvci5nZXQoQ3JlYXRlQ29ubmVjdGlvblByZXBhcmVEcmFnU2VxdWVuY2UpLmhhbmRsZShldmVudCk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhpcy5maW5hbGl6ZURyYWdTZXF1ZW5jZSgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBwcmVwYXJlRHJhZ1NlcXVlbmNlKGV2ZW50OiBJUG9pbnRlckV2ZW50KSB7XG4gICAgdGhpcy5pbmplY3Rvci5nZXQoU2VsZWN0aW9uQXJlYVByZXBhcmVEcmFnU2VxdWVuY2UpLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChOb2RlUHJlcGFyZURyYWdTZXF1ZW5jZSkuaGFuZGxlKGV2ZW50KTtcblxuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KENhbnZhc1ByZXBhcmVEcmFnU2VxdWVuY2UpLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChFeHRlcm5hbEl0ZW1QcmVwYXJlRHJhZ1NlcXVlbmNlKS5oYW5kbGUoZXZlbnQpO1xuXG4gICAgdGhpcy5mRHJhZ2dhYmxlRGF0YUNvbnRleHQuZHJhZ2dhYmxlSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5pbml0aWFsaXplPy4oKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5kcmFnZ2FibGVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2YtZHJhZ2dpbmcnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25Qb2ludGVyTW92ZShldmVudDogSVBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbkluQ2FudmFzID0gUG9pbnQuZnJvbVBvaW50KGV2ZW50LmdldFBvc2l0aW9uKCkpLmVsZW1lbnRUcmFuc2Zvcm0odGhpcy5ob3N0RWxlbWVudCk7XG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHBvaW50ZXJQb3NpdGlvbkluQ2FudmFzLmRpdih0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5vblBvaW50ZXJEb3duU2NhbGUpLnN1Yih0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5vblBvaW50ZXJEb3duUG9zaXRpb24pO1xuICAgIHRoaXMuZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0ubW92ZShkaWZmZXJlbmNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvblBvaW50ZXJVcChldmVudDogSVBvaW50ZXJFdmVudCk6IHZvaWQge1xuXG4gICAgdGhpcy5pbmplY3Rvci5nZXQoUmVhc3NpZ25Db25uZWN0aW9uT25Qb2ludGVyVXApLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChDcmVhdGVDb25uZWN0aW9uT25Qb2ludGVyVXApLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChTZWxlY3Rpb25BcmVhT25Qb2ludGVyVXApLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChOb2RlT25Qb2ludGVyVXApLmhhbmRsZShldmVudCk7XG5cbiAgICB0aGlzLmluamVjdG9yLmdldChDYW52YXNPblBvaW50ZXJVcCkuaGFuZGxlKGV2ZW50KTtcblxuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KEV4dGVybmFsSXRlbU9uUG9pbnRlclVwKS5oYW5kbGUoZXZlbnQpO1xuXG4gICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmLWRyYWdnaW5nJyk7XG5cbiAgICB0aGlzLmZEcmFnZ2FibGVEYXRhQ29udGV4dC5yZXNldCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpbmFsaXplRHJhZ1NlcXVlbmNlKCk6IHZvaWQge1xuICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5mRHJhZ2dhYmxlRGF0YUNvbnRleHQuaXNTZWxlY3RlZENoYW5nZWRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5mTWVkaWF0b3Iuc2VuZDxGU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KG5ldyBHZXRTZWxlY3Rpb25SZXF1ZXN0KCkpO1xuICAgIHRoaXMuZlNlbGVjdGlvbkNoYW5nZS5lbWl0KHJlc3VsdCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class FSelectionChangeEvent {
|
|
2
|
+
constructor(nodes, connections) {
|
|
3
|
+
this.nodes = nodes;
|
|
4
|
+
this.connections = connections;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1zZWxlY3Rpb24tY2hhbmdlLWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWRyYWdnYWJsZS9mLXNlbGVjdGlvbi1jaGFuZ2UtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQyxZQUNXLEtBQWUsRUFDZixXQUFxQjtRQURyQixVQUFLLEdBQUwsS0FBSyxDQUFVO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENBQVU7SUFFaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEZTZWxlY3Rpb25DaGFuZ2VFdmVudCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgbm9kZXM6IHN0cmluZ1tdLFxuICAgICAgcHVibGljIGNvbm5lY3Rpb25zOiBzdHJpbmdbXSxcbiAgKSB7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -8,6 +8,6 @@ export * from './e-f-draggable-type';
|
|
|
8
8
|
export * from './f-draggable.directive';
|
|
9
9
|
export * from './f-draggable-base';
|
|
10
10
|
export * from './f-draggable-data-context';
|
|
11
|
-
export * from './
|
|
11
|
+
export * from './f-selection-change-event';
|
|
12
12
|
export * from './i-draggable-item';
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBRXpCLGNBQWMsZUFBZSxDQUFDO0FBRTlCLGNBQWMsaUJBQWlCLENBQUM7QUFFaEMsY0FBYyxRQUFRLENBQUM7QUFFdkIsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxjQUFjLGlCQUFpQixDQUFDO0FBRWhDLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxjQUFjLG9CQUFvQixDQUFDO0FBRW5DLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYW52YXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2Nvbm5lY3Rpb25zJztcblxuZXhwb3J0ICogZnJvbSAnLi9leHRlcm5hbC1pdGVtJztcblxuZXhwb3J0ICogZnJvbSAnLi9ub2RlJztcblxuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Rpb24tYXJlYSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vc2luZ2xlLXNlbGVjdCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZS1mLWRyYWdnYWJsZS10eXBlJztcblxuZXhwb3J0ICogZnJvbSAnLi9mLWRyYWdnYWJsZS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2YtZHJhZ2dhYmxlLWJhc2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2YtZHJhZ2dhYmxlLWRhdGEtY29udGV4dCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZi1zZWxlY3Rpb24tY2hhbmdlLWV2ZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9pLWRyYWdnYWJsZS1pdGVtJztcblxuXG5cbiJdfQ==
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { RectExtensions } from '@foblex/core';
|
|
2
2
|
import { EFDraggableType } from '../e-f-draggable-type';
|
|
3
|
-
import { GetConnectionVectorRequest, GetOutputRectInFlowRequest } from '../../domain';
|
|
3
|
+
import { GetConnectionVectorRequest, GetInputRectInFlowRequest, GetOutputRectInFlowRequest } from '../../domain';
|
|
4
4
|
import { EFConnectableSide } from '../../f-connectors';
|
|
5
5
|
export class ConnectionSourceDragHandler {
|
|
6
|
-
constructor(
|
|
7
|
-
this.getInputRectInFlowHandler = getInputRectInFlowHandler;
|
|
6
|
+
constructor(fMediator, connection) {
|
|
8
7
|
this.fMediator = fMediator;
|
|
9
8
|
this.connection = connection;
|
|
10
9
|
this.type = EFDraggableType.CONNECTION;
|
|
@@ -17,7 +16,7 @@ export class ConnectionSourceDragHandler {
|
|
|
17
16
|
const fromConnector = this.fMediator.send(new GetOutputRectInFlowRequest(this.connection.fOutputId));
|
|
18
17
|
this.fromConnectorRect = fromConnector.rect;
|
|
19
18
|
this.fromConnectorSide = fromConnector.fConnectableSide;
|
|
20
|
-
const toConnector = this.
|
|
19
|
+
const toConnector = this.fMediator.send(new GetInputRectInFlowRequest(this.connection.fInputId));
|
|
21
20
|
this.toConnectorRect = toConnector.rect;
|
|
22
21
|
this.toConnectorSide = toConnector.fConnectableSide;
|
|
23
22
|
}
|
|
@@ -28,4 +27,4 @@ export class ConnectionSourceDragHandler {
|
|
|
28
27
|
this.connection.redraw();
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi1zb3VyY2UuZHJhZy1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWRyYWdnYWJsZS9ub2RlL2Nvbm5lY3Rpb24tc291cmNlLmRyYWctaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBCLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUNMLDBCQUEwQixFQUUxQix5QkFBeUIsRUFFekIsMEJBQTBCLEVBRTNCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3ZELE1BQU0sT0FBTywyQkFBMkI7SUFVdEMsWUFDWSxTQUF3QixFQUN4QixVQUEyQjtRQUQzQixjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBVnZCLFNBQUksR0FBb0IsZUFBZSxDQUFDLFVBQVUsQ0FBQztRQUUzRCxzQkFBaUIsR0FBVSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkQsc0JBQWlCLEdBQXNCLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUVoRSxvQkFBZSxHQUFVLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyRCxvQkFBZSxHQUFzQixpQkFBaUIsQ0FBQyxHQUFHLENBQUM7SUFNbkUsQ0FBQztJQUVNLFVBQVU7UUFDZixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDckMsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUM1RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztRQUV4RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBNkIsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDN0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDO0lBQ3RELENBQUM7SUFFTSxJQUFJLENBQUMsVUFBa0I7UUFDNUIsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV0RixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBVSxJQUFJLDBCQUEwQixDQUNsRSxpQkFBaUIsRUFDakIsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQ3pCLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FDdkIsQ0FDSixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUG9pbnQsIElSZWN0LCBJVmVjdG9yLCBSZWN0RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBJRHJhZ2dhYmxlSXRlbSB9IGZyb20gJy4uL2ktZHJhZ2dhYmxlLWl0ZW0nO1xuaW1wb3J0IHsgRUZEcmFnZ2FibGVUeXBlIH0gZnJvbSAnLi4vZS1mLWRyYWdnYWJsZS10eXBlJztcbmltcG9ydCB7XG4gIEdldENvbm5lY3Rpb25WZWN0b3JSZXF1ZXN0LFxuICBHZXRJbnB1dFJlY3RJbkZsb3dIYW5kbGVyLFxuICBHZXRJbnB1dFJlY3RJbkZsb3dSZXF1ZXN0LFxuICBHZXRJbnB1dFJlY3RJbkZsb3dSZXNwb25zZSxcbiAgR2V0T3V0cHV0UmVjdEluRmxvd1JlcXVlc3QsXG4gIEdldE91dHB1dFJlY3RJbkZsb3dSZXNwb25zZVxufSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRkNvbm5lY3Rpb25CYXNlIH0gZnJvbSAnLi4vLi4vZi1jb25uZWN0aW9uJztcbmltcG9ydCB7IEVGQ29ubmVjdGFibGVTaWRlIH0gZnJvbSAnLi4vLi4vZi1jb25uZWN0b3JzJztcbmltcG9ydCB7IEZGbG93TWVkaWF0b3IgfSBmcm9tICcuLi8uLi9mLW1lZGlhdG9yJztcblxuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25Tb3VyY2VEcmFnSGFuZGxlciBpbXBsZW1lbnRzIElEcmFnZ2FibGVJdGVtIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogRUZEcmFnZ2FibGVUeXBlID0gRUZEcmFnZ2FibGVUeXBlLkNPTk5FQ1RJT047XG5cbiAgcHJpdmF0ZSBmcm9tQ29ubmVjdG9yUmVjdDogSVJlY3QgPSBSZWN0RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG4gIHByaXZhdGUgZnJvbUNvbm5lY3RvclNpZGU6IEVGQ29ubmVjdGFibGVTaWRlID0gRUZDb25uZWN0YWJsZVNpZGUuQk9UVE9NO1xuXG4gIHByaXZhdGUgdG9Db25uZWN0b3JSZWN0OiBJUmVjdCA9IFJlY3RFeHRlbnNpb25zLmluaXRpYWxpemUoKTtcbiAgcHJpdmF0ZSB0b0Nvbm5lY3RvclNpZGU6IEVGQ29ubmVjdGFibGVTaWRlID0gRUZDb25uZWN0YWJsZVNpZGUuVE9QO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBmTWVkaWF0b3I6IEZGbG93TWVkaWF0b3IsXG4gICAgICBwcml2YXRlIGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSxcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBmcm9tQ29ubmVjdG9yID0gdGhpcy5mTWVkaWF0b3Iuc2VuZDxHZXRPdXRwdXRSZWN0SW5GbG93UmVzcG9uc2U+KFxuICAgICAgICBuZXcgR2V0T3V0cHV0UmVjdEluRmxvd1JlcXVlc3QodGhpcy5jb25uZWN0aW9uLmZPdXRwdXRJZClcbiAgICApO1xuICAgIHRoaXMuZnJvbUNvbm5lY3RvclJlY3QgPSBmcm9tQ29ubmVjdG9yLnJlY3Q7XG4gICAgdGhpcy5mcm9tQ29ubmVjdG9yU2lkZSA9IGZyb21Db25uZWN0b3IuZkNvbm5lY3RhYmxlU2lkZTtcblxuICAgIGNvbnN0IHRvQ29ubmVjdG9yID0gdGhpcy5mTWVkaWF0b3Iuc2VuZDxHZXRJbnB1dFJlY3RJbkZsb3dSZXNwb25zZT4obmV3IEdldElucHV0UmVjdEluRmxvd1JlcXVlc3QodGhpcy5jb25uZWN0aW9uLmZJbnB1dElkKSk7XG4gICAgdGhpcy50b0Nvbm5lY3RvclJlY3QgPSB0b0Nvbm5lY3Rvci5yZWN0O1xuICAgIHRoaXMudG9Db25uZWN0b3JTaWRlID0gdG9Db25uZWN0b3IuZkNvbm5lY3RhYmxlU2lkZTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlKGRpZmZlcmVuY2U6IElQb2ludCk6IHZvaWQge1xuICAgIGNvbnN0IGZyb21Db25uZWN0b3JSZWN0ID0gUmVjdEV4dGVuc2lvbnMuYWRkUG9pbnQodGhpcy5mcm9tQ29ubmVjdG9yUmVjdCwgZGlmZmVyZW5jZSk7XG5cbiAgICBjb25zdCB2ZWN0b3IgPSB0aGlzLmZNZWRpYXRvci5zZW5kPElWZWN0b3I+KG5ldyBHZXRDb25uZWN0aW9uVmVjdG9yUmVxdWVzdChcbiAgICAgICAgICAgIGZyb21Db25uZWN0b3JSZWN0LFxuICAgICAgICAgICAgdGhpcy50b0Nvbm5lY3RvclJlY3QsXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZkJlaGF2aW9yLFxuICAgICAgICAgICAgdGhpcy5mcm9tQ29ubmVjdG9yU2lkZSxcbiAgICAgICAgICAgIHRoaXMudG9Db25uZWN0b3JTaWRlLFxuICAgICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuY29ubmVjdGlvbi5zZXRWZWN0b3IodmVjdG9yLnBvaW50MSwgdGhpcy5mcm9tQ29ubmVjdG9yU2lkZSwgdmVjdG9yLnBvaW50MiwgdGhpcy50b0Nvbm5lY3RvclNpZGUpO1xuICAgIHRoaXMuY29ubmVjdGlvbi5yZWRyYXcoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { RectExtensions } from '@foblex/core';
|
|
2
2
|
import { EFDraggableType } from '../e-f-draggable-type';
|
|
3
|
-
import { GetConnectionVectorRequest, GetOutputRectInFlowRequest } from '../../domain';
|
|
3
|
+
import { GetConnectionVectorRequest, GetInputRectInFlowRequest, GetOutputRectInFlowRequest } from '../../domain';
|
|
4
4
|
import { EFConnectableSide } from '../../f-connectors';
|
|
5
5
|
export class ConnectionTargetDragHandler {
|
|
6
|
-
constructor(
|
|
7
|
-
this.getInputRectInFlowHandler = getInputRectInFlowHandler;
|
|
6
|
+
constructor(fMediator, connection) {
|
|
8
7
|
this.fMediator = fMediator;
|
|
9
8
|
this.connection = connection;
|
|
10
9
|
this.type = EFDraggableType.CONNECTION;
|
|
@@ -17,7 +16,7 @@ export class ConnectionTargetDragHandler {
|
|
|
17
16
|
const fromConnector = this.fMediator.send(new GetOutputRectInFlowRequest(this.connection.fOutputId));
|
|
18
17
|
this.fromConnectorRect = fromConnector.rect;
|
|
19
18
|
this.fromConnectorSide = fromConnector.fConnectableSide;
|
|
20
|
-
const toConnector = this.
|
|
19
|
+
const toConnector = this.fMediator.send(new GetInputRectInFlowRequest(this.connection.fInputId));
|
|
21
20
|
this.toConnectorRect = toConnector.rect;
|
|
22
21
|
this.toConnectorSide = toConnector.fConnectableSide;
|
|
23
22
|
}
|
|
@@ -28,4 +27,4 @@ export class ConnectionTargetDragHandler {
|
|
|
28
27
|
this.connection.redraw();
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi10YXJnZXQuZHJhZy1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWRyYWdnYWJsZS9ub2RlL2Nvbm5lY3Rpb24tdGFyZ2V0LmRyYWctaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBCLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUNMLDBCQUEwQixFQUUxQix5QkFBeUIsRUFFekIsMEJBQTBCLEVBRTNCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3ZELE1BQU0sT0FBTywyQkFBMkI7SUFVdEMsWUFDWSxTQUF3QixFQUN4QixVQUEyQjtRQUQzQixjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBVnZCLFNBQUksR0FBb0IsZUFBZSxDQUFDLFVBQVUsQ0FBQztRQUUzRCxzQkFBaUIsR0FBVSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkQsc0JBQWlCLEdBQXNCLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUVoRSxvQkFBZSxHQUFVLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyRCxvQkFBZSxHQUFzQixpQkFBaUIsQ0FBQyxHQUFHLENBQUM7SUFNbkUsQ0FBQztJQUVNLFVBQVU7UUFDZixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDckMsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUM1RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztRQUV4RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBNkIsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDN0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDO0lBQ3RELENBQUM7SUFFTSxJQUFJLENBQUMsVUFBa0I7UUFDNUIsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWxGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFVLElBQUksMEJBQTBCLENBQ2xFLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsZUFBZSxFQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUN6QixJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksQ0FBQyxlQUFlLENBQ3ZCLENBQ0osQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBvaW50LCBJUmVjdCwgSVZlY3RvciwgUmVjdEV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4L2NvcmUnO1xuaW1wb3J0IHsgSURyYWdnYWJsZUl0ZW0gfSBmcm9tICcuLi9pLWRyYWdnYWJsZS1pdGVtJztcbmltcG9ydCB7IEVGRHJhZ2dhYmxlVHlwZSB9IGZyb20gJy4uL2UtZi1kcmFnZ2FibGUtdHlwZSc7XG5pbXBvcnQge1xuICBHZXRDb25uZWN0aW9uVmVjdG9yUmVxdWVzdCxcbiAgR2V0SW5wdXRSZWN0SW5GbG93SGFuZGxlcixcbiAgR2V0SW5wdXRSZWN0SW5GbG93UmVxdWVzdCxcbiAgR2V0SW5wdXRSZWN0SW5GbG93UmVzcG9uc2UsXG4gIEdldE91dHB1dFJlY3RJbkZsb3dSZXF1ZXN0LFxuICBHZXRPdXRwdXRSZWN0SW5GbG93UmVzcG9uc2Vcbn0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZDb25uZWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uL2YtY29ubmVjdGlvbic7XG5pbXBvcnQgeyBFRkNvbm5lY3RhYmxlU2lkZSB9IGZyb20gJy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBGRmxvd01lZGlhdG9yIH0gZnJvbSAnLi4vLi4vZi1tZWRpYXRvcic7XG5cbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uVGFyZ2V0RHJhZ0hhbmRsZXIgaW1wbGVtZW50cyBJRHJhZ2dhYmxlSXRlbSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IEVGRHJhZ2dhYmxlVHlwZSA9IEVGRHJhZ2dhYmxlVHlwZS5DT05ORUNUSU9OO1xuXG4gIHByaXZhdGUgZnJvbUNvbm5lY3RvclJlY3Q6IElSZWN0ID0gUmVjdEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuICBwcml2YXRlIGZyb21Db25uZWN0b3JTaWRlOiBFRkNvbm5lY3RhYmxlU2lkZSA9IEVGQ29ubmVjdGFibGVTaWRlLkJPVFRPTTtcblxuICBwcml2YXRlIHRvQ29ubmVjdG9yUmVjdDogSVJlY3QgPSBSZWN0RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG4gIHByaXZhdGUgdG9Db25uZWN0b3JTaWRlOiBFRkNvbm5lY3RhYmxlU2lkZSA9IEVGQ29ubmVjdGFibGVTaWRlLlRPUDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgZk1lZGlhdG9yOiBGRmxvd01lZGlhdG9yLFxuICAgICAgcHJpdmF0ZSBjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsXG4gICkge1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgY29uc3QgZnJvbUNvbm5lY3RvciA9IHRoaXMuZk1lZGlhdG9yLnNlbmQ8R2V0T3V0cHV0UmVjdEluRmxvd1Jlc3BvbnNlPihcbiAgICAgICAgbmV3IEdldE91dHB1dFJlY3RJbkZsb3dSZXF1ZXN0KHRoaXMuY29ubmVjdGlvbi5mT3V0cHV0SWQpXG4gICAgKTtcbiAgICB0aGlzLmZyb21Db25uZWN0b3JSZWN0ID0gZnJvbUNvbm5lY3Rvci5yZWN0O1xuICAgIHRoaXMuZnJvbUNvbm5lY3RvclNpZGUgPSBmcm9tQ29ubmVjdG9yLmZDb25uZWN0YWJsZVNpZGU7XG5cbiAgICBjb25zdCB0b0Nvbm5lY3RvciA9IHRoaXMuZk1lZGlhdG9yLnNlbmQ8R2V0SW5wdXRSZWN0SW5GbG93UmVzcG9uc2U+KG5ldyBHZXRJbnB1dFJlY3RJbkZsb3dSZXF1ZXN0KHRoaXMuY29ubmVjdGlvbi5mSW5wdXRJZCkpO1xuICAgIHRoaXMudG9Db25uZWN0b3JSZWN0ID0gdG9Db25uZWN0b3IucmVjdDtcbiAgICB0aGlzLnRvQ29ubmVjdG9yU2lkZSA9IHRvQ29ubmVjdG9yLmZDb25uZWN0YWJsZVNpZGU7XG4gIH1cblxuICBwdWJsaWMgbW92ZShkaWZmZXJlbmNlOiBJUG9pbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0b0Nvbm5lY3RvclJlY3QgPSBSZWN0RXh0ZW5zaW9ucy5hZGRQb2ludCh0aGlzLnRvQ29ubmVjdG9yUmVjdCwgZGlmZmVyZW5jZSk7XG5cbiAgICBjb25zdCB2ZWN0b3IgPSB0aGlzLmZNZWRpYXRvci5zZW5kPElWZWN0b3I+KG5ldyBHZXRDb25uZWN0aW9uVmVjdG9yUmVxdWVzdChcbiAgICAgICAgICAgIHRoaXMuZnJvbUNvbm5lY3RvclJlY3QsXG4gICAgICAgICAgICB0b0Nvbm5lY3RvclJlY3QsXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZkJlaGF2aW9yLFxuICAgICAgICAgICAgdGhpcy5mcm9tQ29ubmVjdG9yU2lkZSxcbiAgICAgICAgICAgIHRoaXMudG9Db25uZWN0b3JTaWRlLFxuICAgICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuY29ubmVjdGlvbi5zZXRWZWN0b3IodmVjdG9yLnBvaW50MSwgdGhpcy5mcm9tQ29ubmVjdG9yU2lkZSwgdmVjdG9yLnBvaW50MiwgdGhpcy50b0Nvbm5lY3RvclNpZGUpO1xuICAgIHRoaXMuY29ubmVjdGlvbi5yZWRyYXcoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Point, VectorExtensions } from '@foblex/core';
|
|
2
2
|
import { EFDraggableType } from '../e-f-draggable-type';
|
|
3
|
-
import { GetConnectionVectorRequest, GetOutputRectInFlowRequest } from '../../domain';
|
|
3
|
+
import { GetConnectionVectorRequest, GetInputRectInFlowRequest, GetOutputRectInFlowRequest } from '../../domain';
|
|
4
4
|
import { EFConnectableSide } from '../../f-connectors';
|
|
5
5
|
export class ConnectionDragHandler {
|
|
6
|
-
constructor(
|
|
7
|
-
this.getInputRectInFlowHandler = getInputRectInFlowHandler;
|
|
6
|
+
constructor(fMediator, connection) {
|
|
8
7
|
this.fMediator = fMediator;
|
|
9
8
|
this.connection = connection;
|
|
10
9
|
this.type = EFDraggableType.CONNECTION;
|
|
@@ -15,7 +14,7 @@ export class ConnectionDragHandler {
|
|
|
15
14
|
initialize() {
|
|
16
15
|
const fromConnector = this.fMediator.send(new GetOutputRectInFlowRequest(this.connection.fOutputId));
|
|
17
16
|
this.fromConnectorSide = fromConnector.fConnectableSide;
|
|
18
|
-
const toConnector = this.
|
|
17
|
+
const toConnector = this.fMediator.send(new GetInputRectInFlowRequest(this.connection.fInputId));
|
|
19
18
|
this.toConnectorSide = toConnector.fConnectableSide;
|
|
20
19
|
this.onPointerDownVector = this.fMediator.send(new GetConnectionVectorRequest(fromConnector.rect, toConnector.rect, this.connection.fBehavior, fromConnector.fConnectableSide, toConnector.fConnectableSide));
|
|
21
20
|
}
|
|
@@ -26,4 +25,4 @@ export class ConnectionDragHandler {
|
|
|
26
25
|
this.connection.redraw();
|
|
27
26
|
}
|
|
28
27
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5kcmFnLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL25vZGUvY29ubmVjdGlvbi5kcmFnLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIseUJBQXlCLEVBRXpCLDBCQUEwQixFQUUzQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUd2RCxNQUFNLE9BQU8scUJBQXFCO0lBVWhDLFlBQ1ksU0FBd0IsRUFDekIsVUFBMkI7UUFEMUIsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQVZ0QixTQUFJLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQztRQUUxQyx3QkFBbUIsR0FBWSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUU3RCxzQkFBaUIsR0FBc0IsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1FBRWhFLG9CQUFlLEdBQXNCLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztJQU1uRSxDQUFDO0lBRU0sVUFBVTtRQUNmLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNyQyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQzVELENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDO1FBRXhELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUE2QixJQUFJLHlCQUF5QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM3SCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUVwRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSwwQkFBMEIsQ0FDckUsYUFBYSxDQUFDLElBQUksRUFDbEIsV0FBVyxDQUFDLElBQUksRUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQ3pCLGFBQWEsQ0FBQyxnQkFBZ0IsRUFDOUIsV0FBVyxDQUFDLGdCQUFnQixDQUMvQixDQUNKLENBQUM7SUFDSixDQUFDO0lBRU0sSUFBSSxDQUFDLFVBQWtCO1FBQzVCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFakYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBvaW50LCBJVmVjdG9yLCBQb2ludCwgVmVjdG9yRXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBJRHJhZ2dhYmxlSXRlbSB9IGZyb20gJy4uL2ktZHJhZ2dhYmxlLWl0ZW0nO1xuaW1wb3J0IHsgRUZEcmFnZ2FibGVUeXBlIH0gZnJvbSAnLi4vZS1mLWRyYWdnYWJsZS10eXBlJztcbmltcG9ydCB7XG4gIEdldENvbm5lY3Rpb25WZWN0b3JSZXF1ZXN0LFxuICBHZXRJbnB1dFJlY3RJbkZsb3dSZXF1ZXN0LFxuICBHZXRJbnB1dFJlY3RJbkZsb3dSZXNwb25zZSxcbiAgR2V0T3V0cHV0UmVjdEluRmxvd1JlcXVlc3QsXG4gIEdldE91dHB1dFJlY3RJbkZsb3dSZXNwb25zZVxufSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRkNvbm5lY3Rpb25CYXNlIH0gZnJvbSAnLi4vLi4vZi1jb25uZWN0aW9uJztcbmltcG9ydCB7IEVGQ29ubmVjdGFibGVTaWRlIH0gZnJvbSAnLi4vLi4vZi1jb25uZWN0b3JzJztcbmltcG9ydCB7IEZGbG93TWVkaWF0b3IgfSBmcm9tICcuLi8uLi9mLW1lZGlhdG9yJztcblxuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25EcmFnSGFuZGxlciBpbXBsZW1lbnRzIElEcmFnZ2FibGVJdGVtIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9IEVGRHJhZ2dhYmxlVHlwZS5DT05ORUNUSU9OO1xuXG4gIHByaXZhdGUgb25Qb2ludGVyRG93blZlY3RvcjogSVZlY3RvciA9IFZlY3RvckV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIHByaXZhdGUgZnJvbUNvbm5lY3RvclNpZGU6IEVGQ29ubmVjdGFibGVTaWRlID0gRUZDb25uZWN0YWJsZVNpZGUuQk9UVE9NO1xuXG4gIHByaXZhdGUgdG9Db25uZWN0b3JTaWRlOiBFRkNvbm5lY3RhYmxlU2lkZSA9IEVGQ29ubmVjdGFibGVTaWRlLlRPUDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgZk1lZGlhdG9yOiBGRmxvd01lZGlhdG9yLFxuICAgICAgcHVibGljIGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSxcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpIHtcbiAgICBjb25zdCBmcm9tQ29ubmVjdG9yID0gdGhpcy5mTWVkaWF0b3Iuc2VuZDxHZXRPdXRwdXRSZWN0SW5GbG93UmVzcG9uc2U+KFxuICAgICAgICBuZXcgR2V0T3V0cHV0UmVjdEluRmxvd1JlcXVlc3QodGhpcy5jb25uZWN0aW9uLmZPdXRwdXRJZClcbiAgICApO1xuICAgIHRoaXMuZnJvbUNvbm5lY3RvclNpZGUgPSBmcm9tQ29ubmVjdG9yLmZDb25uZWN0YWJsZVNpZGU7XG5cbiAgICBjb25zdCB0b0Nvbm5lY3RvciA9IHRoaXMuZk1lZGlhdG9yLnNlbmQ8R2V0SW5wdXRSZWN0SW5GbG93UmVzcG9uc2U+KG5ldyBHZXRJbnB1dFJlY3RJbkZsb3dSZXF1ZXN0KHRoaXMuY29ubmVjdGlvbi5mSW5wdXRJZCkpO1xuICAgIHRoaXMudG9Db25uZWN0b3JTaWRlID0gdG9Db25uZWN0b3IuZkNvbm5lY3RhYmxlU2lkZTtcblxuICAgIHRoaXMub25Qb2ludGVyRG93blZlY3RvciA9IHRoaXMuZk1lZGlhdG9yLnNlbmQobmV3IEdldENvbm5lY3Rpb25WZWN0b3JSZXF1ZXN0KFxuICAgICAgICAgICAgZnJvbUNvbm5lY3Rvci5yZWN0LFxuICAgICAgICAgICAgdG9Db25uZWN0b3IucmVjdCxcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5mQmVoYXZpb3IsXG4gICAgICAgICAgICBmcm9tQ29ubmVjdG9yLmZDb25uZWN0YWJsZVNpZGUsXG4gICAgICAgICAgICB0b0Nvbm5lY3Rvci5mQ29ubmVjdGFibGVTaWRlLFxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlKGRpZmZlcmVuY2U6IElQb2ludCk6IHZvaWQge1xuICAgIGNvbnN0IGZyb21Qb2ludCA9IFBvaW50LmZyb21Qb2ludCh0aGlzLm9uUG9pbnRlckRvd25WZWN0b3IucG9pbnQxKS5hZGQoZGlmZmVyZW5jZSk7XG4gICAgY29uc3QgdG9Qb2ludCA9IFBvaW50LmZyb21Qb2ludCh0aGlzLm9uUG9pbnRlckRvd25WZWN0b3IucG9pbnQyKS5hZGQoZGlmZmVyZW5jZSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24uc2V0VmVjdG9yKGZyb21Qb2ludCwgdGhpcy5mcm9tQ29ubmVjdG9yU2lkZSwgdG9Qb2ludCwgdGhpcy50b0Nvbm5lY3RvclNpZGUpO1xuICAgIHRoaXMuY29ubmVjdGlvbi5yZWRyYXcoKTtcbiAgfVxufVxuIl19
|