ngx-vflow 0.4.0 → 0.6.0
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/esm2022/lib/vflow/components/node/node.component.mjs +12 -6
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +51 -9
- package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +115 -14
- package/esm2022/lib/vflow/directives/map-context.directive.mjs +7 -6
- package/esm2022/lib/vflow/directives/pointer.directive.mjs +84 -0
- package/esm2022/lib/vflow/directives/root-pointer.directive.mjs +42 -0
- package/esm2022/lib/vflow/directives/root-svg-context.directive.mjs +5 -2
- package/esm2022/lib/vflow/directives/selectable.directive.mjs +1 -1
- package/esm2022/lib/vflow/directives/space-point-context.directive.mjs +10 -6
- package/esm2022/lib/vflow/interfaces/component-node-event.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/node.interface.mjs +1 -1
- package/esm2022/lib/vflow/models/node.model.mjs +25 -5
- package/esm2022/lib/vflow/public-components/custom-node.component.mjs +51 -0
- package/esm2022/lib/vflow/services/component-event-bus.service.mjs +18 -0
- package/esm2022/lib/vflow/services/draggable.service.mjs +2 -2
- package/esm2022/lib/vflow/services/selection.service.mjs +2 -2
- package/esm2022/lib/vflow/vflow.module.mjs +9 -3
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ngx-vflow.mjs +397 -42
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/components/node/node.component.d.ts +10 -9
- package/lib/vflow/components/vflow/vflow.component.d.ts +9 -2
- package/lib/vflow/directives/changes-controller.directive.d.ts +35 -9
- package/lib/vflow/directives/pointer.directive.d.ts +21 -0
- package/lib/vflow/directives/root-pointer.directive.d.ts +40 -0
- package/lib/vflow/directives/space-point-context.directive.d.ts +13 -3
- package/lib/vflow/interfaces/component-node-event.interface.d.ts +32 -0
- package/lib/vflow/interfaces/node.interface.d.ts +9 -1
- package/lib/vflow/models/node.model.d.ts +14 -1
- package/lib/vflow/public-components/custom-node.component.d.ts +20 -0
- package/lib/vflow/services/component-event-bus.service.d.ts +9 -0
- package/lib/vflow/services/selection.service.d.ts +4 -1
- package/lib/vflow/vflow.module.d.ts +5 -3
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { Directive,
|
|
1
|
+
import { Directive, Output, inject } from '@angular/core';
|
|
2
2
|
import { EdgeChangesService } from '../services/edge-changes.service';
|
|
3
3
|
import { NodesChangeService } from '../services/node-changes.service';
|
|
4
|
-
import {
|
|
5
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { filter, map } from 'rxjs';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
export class ChangesControllerDirective {
|
|
8
7
|
constructor() {
|
|
@@ -11,20 +10,50 @@ export class ChangesControllerDirective {
|
|
|
11
10
|
/**
|
|
12
11
|
* Watch nodes change
|
|
13
12
|
*/
|
|
14
|
-
this.onNodesChange =
|
|
13
|
+
this.onNodesChange = this.nodesChangeService.changes$;
|
|
14
|
+
this.onNodesChangePosition = this.nodeChangesOfType('position');
|
|
15
|
+
this.onNodesChangePositionSignle = this.singleChange(this.nodeChangesOfType('position'));
|
|
16
|
+
this.onNodesChangePositionMany = this.manyChanges(this.nodeChangesOfType('position'));
|
|
17
|
+
this.onNodesChangeAdd = this.nodeChangesOfType('add');
|
|
18
|
+
this.onNodesChangeAddSingle = this.singleChange(this.nodeChangesOfType('add'));
|
|
19
|
+
this.onNodesChangeAddMany = this.manyChanges(this.nodeChangesOfType('add'));
|
|
20
|
+
this.onNodesChangeRemove = this.nodeChangesOfType('remove');
|
|
21
|
+
this.onNodesChangeRemoveSingle = this.singleChange(this.nodeChangesOfType('remove'));
|
|
22
|
+
this.onNodesChangeRemoveMany = this.manyChanges(this.nodeChangesOfType('remove'));
|
|
23
|
+
this.onNodesChangeSelect = this.nodeChangesOfType('select');
|
|
24
|
+
this.onNodesChangeSelectSingle = this.singleChange(this.nodeChangesOfType('select'));
|
|
25
|
+
this.onNodesChangeSelectMany = this.manyChanges(this.nodeChangesOfType('select'));
|
|
15
26
|
/**
|
|
16
|
-
* Watch
|
|
27
|
+
* Watch edges change
|
|
17
28
|
*/
|
|
18
|
-
this.onEdgesChange =
|
|
19
|
-
this.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
this.onEdgesChange = this.edgesChangeService.changes$;
|
|
30
|
+
this.onNodesChangeDetached = this.edgeChangesOfType('detached');
|
|
31
|
+
this.onNodesChangeDetachedSingle = this.singleChange(this.edgeChangesOfType('detached'));
|
|
32
|
+
this.onNodesChangeDetachedMany = this.manyChanges(this.edgeChangesOfType('detached'));
|
|
33
|
+
this.onEdgesChangeAdd = this.edgeChangesOfType('add');
|
|
34
|
+
this.onEdgeChangeAddSingle = this.singleChange(this.edgeChangesOfType('add'));
|
|
35
|
+
this.onEdgeChangeAddMany = this.manyChanges(this.edgeChangesOfType('add'));
|
|
36
|
+
this.onEdgeChangeRemove = this.edgeChangesOfType('remove');
|
|
37
|
+
this.onEdgeChangeRemoveSingle = this.singleChange(this.edgeChangesOfType('remove'));
|
|
38
|
+
this.onEdgeChangeRemoveMany = this.manyChanges(this.edgeChangesOfType('remove'));
|
|
39
|
+
this.onEdgeChangeSelect = this.edgeChangesOfType('select');
|
|
40
|
+
this.onEdgeChangeSelectSingle = this.singleChange(this.edgeChangesOfType('select'));
|
|
41
|
+
this.onEdgeChangeSelectMany = this.manyChanges(this.edgeChangesOfType('select'));
|
|
42
|
+
}
|
|
43
|
+
nodeChangesOfType(type) {
|
|
44
|
+
return this.nodesChangeService.changes$.pipe(map(changes => changes.filter((c) => c.type === type)), filter(changes => !!changes.length));
|
|
45
|
+
}
|
|
46
|
+
edgeChangesOfType(type) {
|
|
47
|
+
return this.edgesChangeService.changes$.pipe(map(changes => changes.filter((c) => c.type === type)), filter(changes => !!changes.length));
|
|
48
|
+
}
|
|
49
|
+
singleChange(changes$) {
|
|
50
|
+
return changes$.pipe(filter(changes => changes.length === 1), map(([first]) => first));
|
|
51
|
+
}
|
|
52
|
+
manyChanges(changes$) {
|
|
53
|
+
return changes$.pipe(filter(changes => changes.length > 1));
|
|
25
54
|
}
|
|
26
55
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChangesControllerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
27
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ChangesControllerDirective, isStandalone: true, selector: "[changesController]", outputs: { onNodesChange: "onNodesChange", onEdgesChange: "onEdgesChange" }, ngImport: i0 }); }
|
|
56
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ChangesControllerDirective, isStandalone: true, selector: "[changesController]", outputs: { onNodesChange: "onNodesChange", onNodesChangePosition: "onNodesChange.position", onNodesChangePositionSignle: "onNodesChange.position.single", onNodesChangePositionMany: "onNodesChange.position.many", onNodesChangeAdd: "onNodesChange.add", onNodesChangeAddSingle: "onNodesChange.add.single", onNodesChangeAddMany: "onNodesChange.add.many", onNodesChangeRemove: "onNodesChange.remove", onNodesChangeRemoveSingle: "onNodesChange.remove.single", onNodesChangeRemoveMany: "onNodesChange.remove.many", onNodesChangeSelect: "onNodesChange.select", onNodesChangeSelectSingle: "onNodesChange.select.single", onNodesChangeSelectMany: "onNodesChange.select.many", onEdgesChange: "onEdgesChange", onNodesChangeDetached: "onEdgesChange.detached", onNodesChangeDetachedSingle: "onEdgesChange.detached.single", onNodesChangeDetachedMany: "onEdgesChange.detached.many", onEdgesChangeAdd: "onEdgesChange.add", onEdgeChangeAddSingle: "onEdgesChange.add.single", onEdgeChangeAddMany: "onEdgesChange.add.many", onEdgeChangeRemove: "onEdgesChange.remove", onEdgeChangeRemoveSingle: "onEdgesChange.remove.single", onEdgeChangeRemoveMany: "onEdgesChange.remove.many", onEdgeChangeSelect: "onEdgesChange.select", onEdgeChangeSelectSingle: "onEdgesChange.select.single", onEdgeChangeSelectMany: "onEdgesChange.select.many" }, ngImport: i0 }); }
|
|
28
57
|
}
|
|
29
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChangesControllerDirective, decorators: [{
|
|
30
59
|
type: Directive,
|
|
@@ -34,7 +63,79 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
34
63
|
}]
|
|
35
64
|
}], propDecorators: { onNodesChange: [{
|
|
36
65
|
type: Output
|
|
66
|
+
}], onNodesChangePosition: [{
|
|
67
|
+
type: Output,
|
|
68
|
+
args: ['onNodesChange.position']
|
|
69
|
+
}], onNodesChangePositionSignle: [{
|
|
70
|
+
type: Output,
|
|
71
|
+
args: ['onNodesChange.position.single']
|
|
72
|
+
}], onNodesChangePositionMany: [{
|
|
73
|
+
type: Output,
|
|
74
|
+
args: ['onNodesChange.position.many']
|
|
75
|
+
}], onNodesChangeAdd: [{
|
|
76
|
+
type: Output,
|
|
77
|
+
args: ['onNodesChange.add']
|
|
78
|
+
}], onNodesChangeAddSingle: [{
|
|
79
|
+
type: Output,
|
|
80
|
+
args: ['onNodesChange.add.single']
|
|
81
|
+
}], onNodesChangeAddMany: [{
|
|
82
|
+
type: Output,
|
|
83
|
+
args: ['onNodesChange.add.many']
|
|
84
|
+
}], onNodesChangeRemove: [{
|
|
85
|
+
type: Output,
|
|
86
|
+
args: ['onNodesChange.remove']
|
|
87
|
+
}], onNodesChangeRemoveSingle: [{
|
|
88
|
+
type: Output,
|
|
89
|
+
args: ['onNodesChange.remove.single']
|
|
90
|
+
}], onNodesChangeRemoveMany: [{
|
|
91
|
+
type: Output,
|
|
92
|
+
args: ['onNodesChange.remove.many']
|
|
93
|
+
}], onNodesChangeSelect: [{
|
|
94
|
+
type: Output,
|
|
95
|
+
args: ['onNodesChange.select']
|
|
96
|
+
}], onNodesChangeSelectSingle: [{
|
|
97
|
+
type: Output,
|
|
98
|
+
args: ['onNodesChange.select.single']
|
|
99
|
+
}], onNodesChangeSelectMany: [{
|
|
100
|
+
type: Output,
|
|
101
|
+
args: ['onNodesChange.select.many']
|
|
37
102
|
}], onEdgesChange: [{
|
|
38
103
|
type: Output
|
|
104
|
+
}], onNodesChangeDetached: [{
|
|
105
|
+
type: Output,
|
|
106
|
+
args: ['onEdgesChange.detached']
|
|
107
|
+
}], onNodesChangeDetachedSingle: [{
|
|
108
|
+
type: Output,
|
|
109
|
+
args: ['onEdgesChange.detached.single']
|
|
110
|
+
}], onNodesChangeDetachedMany: [{
|
|
111
|
+
type: Output,
|
|
112
|
+
args: ['onEdgesChange.detached.many']
|
|
113
|
+
}], onEdgesChangeAdd: [{
|
|
114
|
+
type: Output,
|
|
115
|
+
args: ['onEdgesChange.add']
|
|
116
|
+
}], onEdgeChangeAddSingle: [{
|
|
117
|
+
type: Output,
|
|
118
|
+
args: ['onEdgesChange.add.single']
|
|
119
|
+
}], onEdgeChangeAddMany: [{
|
|
120
|
+
type: Output,
|
|
121
|
+
args: ['onEdgesChange.add.many']
|
|
122
|
+
}], onEdgeChangeRemove: [{
|
|
123
|
+
type: Output,
|
|
124
|
+
args: ['onEdgesChange.remove']
|
|
125
|
+
}], onEdgeChangeRemoveSingle: [{
|
|
126
|
+
type: Output,
|
|
127
|
+
args: ['onEdgesChange.remove.single']
|
|
128
|
+
}], onEdgeChangeRemoveMany: [{
|
|
129
|
+
type: Output,
|
|
130
|
+
args: ['onEdgesChange.remove.many']
|
|
131
|
+
}], onEdgeChangeSelect: [{
|
|
132
|
+
type: Output,
|
|
133
|
+
args: ['onEdgesChange.select']
|
|
134
|
+
}], onEdgeChangeSelectSingle: [{
|
|
135
|
+
type: Output,
|
|
136
|
+
args: ['onEdgesChange.select.single']
|
|
137
|
+
}], onEdgeChangeSelectMany: [{
|
|
138
|
+
type: Output,
|
|
139
|
+
args: ['onEdgesChange.select.many']
|
|
39
140
|
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlcy1jb250cm9sbGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2NoYW5nZXMtY29udHJvbGxlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU9oRSxNQUFNLE9BQU8sMEJBQTBCO0lBSnZDO1FBS1ksdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDL0MsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFFekQ7O1dBRUc7UUFFSSxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFBO1FBRXZEOztXQUVHO1FBRUksa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQTtRQUU3QyxpQ0FBNEIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUTthQUN0RSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUNsRCxrQkFBa0IsRUFBRSxDQUNyQjthQUNBLFNBQVMsRUFBRSxDQUFBO1FBRUosaUNBQTRCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVE7YUFDdEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDbEQsa0JBQWtCLEVBQUUsQ0FDckI7YUFDQSxTQUFTLEVBQUUsQ0FBQTtLQUNmOytHQTdCWSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBU1EsYUFBYTtzQkFEbkIsTUFBTTtnQkFPQSxhQUFhO3NCQURuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVDaGFuZ2UgfSBmcm9tICcuLi90eXBlcy9ub2RlLWNoYW5nZS50eXBlJztcbmltcG9ydCB7IEVkZ2VDaGFuZ2VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VkZ2UtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vZGUtY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRWRnZUNoYW5nZSB9IGZyb20gJy4uL3R5cGVzL2VkZ2UtY2hhbmdlLnR5cGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2hhbmdlc0NvbnRyb2xsZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDaGFuZ2VzQ29udHJvbGxlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBub2Rlc0NoYW5nZVNlcnZpY2UgPSBpbmplY3QoTm9kZXNDaGFuZ2VTZXJ2aWNlKVxuICBwcm90ZWN0ZWQgZWRnZXNDaGFuZ2VTZXJ2aWNlID0gaW5qZWN0KEVkZ2VDaGFuZ2VzU2VydmljZSlcblxuICAvKipcbiAgICogV2F0Y2ggbm9kZXMgY2hhbmdlXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uTm9kZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGVDaGFuZ2VbXT4oKVxuXG4gIC8qKlxuICAgKiBXYXRjaCBub2RlcyBjaGFuZ2VcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25FZGdlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRnZUNoYW5nZVtdPigpXG5cbiAgcHJvdGVjdGVkIG5vZGVzQ2hhbmdlUHJveHlTdWJzY3JpcHRpb24gPSB0aGlzLm5vZGVzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJFxuICAgIC5waXBlKFxuICAgICAgdGFwKChjaGFuZ2VzKSA9PiB0aGlzLm9uTm9kZXNDaGFuZ2UuZW1pdChjaGFuZ2VzKSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgIClcbiAgICAuc3Vic2NyaWJlKClcblxuICBwcm90ZWN0ZWQgZWRnZXNDaGFuZ2VQcm94eVN1YnNjcmlwdGlvbiA9IHRoaXMuZWRnZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKGNoYW5nZXMpID0+IHRoaXMub25FZGdlc0NoYW5nZS5lbWl0KGNoYW5nZXMpKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKVxufVxuIl19
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlcy1jb250cm9sbGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2NoYW5nZXMtY29udHJvbGxlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU8vQyxNQUFNLE9BQU8sMEJBQTBCO0lBSnZDO1FBS1ksdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDL0MsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFFekQ7O1dBRUc7UUFFSSxrQkFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUE7UUFHaEQsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRzFELGdDQUEyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FDbkMsQ0FBQTtRQUdNLDhCQUF5QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FDbkMsQ0FBQTtRQUdNLHFCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUdoRCwyQkFBc0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUMvQyxJQUFJ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QU0zQixvQkFBb0I7c0JBRDFCLE1BQU07dUJBQUMsd0JBQXdCO2dCQU16QixtQkFBbUI7c0JBRHpCLE1BQU07dUJBQUMsc0JBQXNCO2dCQUl2Qix5QkFBeUI7c0JBRC9CLE1BQU07dUJBQUMsNkJBQTZCO2dCQU05Qix1QkFBdUI7c0JBRDdCLE1BQU07dUJBQUMsMkJBQTJCO2dCQU01QixtQkFBbUI7c0JBRHpCLE1BQU07dUJBQUMsc0JBQXNCO2dCQUl2Qix5QkFBeUI7c0JBRC9CLE1BQU07dUJBQUMsNkJBQTZCO2dCQU05Qix1QkFBdUI7c0JBRDdCLE1BQU07dUJBQUMsMkJBQTJCO2dCQVM1QixhQUFhO3NCQURuQixNQUFNO2dCQUlBLHFCQUFxQjtzQkFEM0IsTUFBTTt1QkFBQyx3QkFBd0I7Z0JBSXpCLDJCQUEyQjtzQkFEakMsTUFBTTt1QkFBQywrQkFBK0I7Z0JBTWhDLHlCQUF5QjtzQkFEL0IsTUFBTTt1QkFBQyw2QkFBNkI7Z0JBTTlCLGdCQUFnQjtzQkFEdEIsTUFBTTt1QkFBQyxtQkFBbUI7Z0JBSXBCLHFCQUFxQjtzQkFEM0IsTUFBTTt1QkFBQywwQkFBMEI7Z0JBTTNCLG1CQUFtQjtzQkFEekIsTUFBTTt1QkFBQyx3QkFBd0I7Z0JBTXpCLGtCQUFrQjtzQkFEeEIsTUFBTTt1QkFBQyxzQkFBc0I7Z0JBSXZCLHdCQUF3QjtzQkFEOUIsTUFBTTt1QkFBQyw2QkFBNkI7Z0JBTTlCLHNCQUFzQjtzQkFENUIsTUFBTTt1QkFBQywyQkFBMkI7Z0JBTTVCLGtCQUFrQjtzQkFEeEIsTUFBTTt1QkFBQyxzQkFBc0I7Z0JBSXZCLHdCQUF3QjtzQkFEOUIsTUFBTTt1QkFBQyw2QkFBNkI7Z0JBTTlCLHNCQUFzQjtzQkFENUIsTUFBTTt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE91dHB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlQWRkQ2hhbmdlLCBOb2RlQ2hhbmdlLCBOb2RlUG9zaXRpb25DaGFuZ2UsIE5vZGVSZW1vdmVDaGFuZ2UsIE5vZGVTZWxlY3RlZENoYW5nZSB9IGZyb20gJy4uL3R5cGVzL25vZGUtY2hhbmdlLnR5cGUnO1xuaW1wb3J0IHsgRWRnZUNoYW5nZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZWRnZS1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZXNDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbm9kZS1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVkZ2VBZGRDaGFuZ2UsIEVkZ2VDaGFuZ2UsIEVkZ2VEZXRhY2hlZENoYW5nZSwgRWRnZVJlbW92ZUNoYW5nZSwgRWRnZVNlbGVjdENoYW5nZSB9IGZyb20gJy4uL3R5cGVzL2VkZ2UtY2hhbmdlLnR5cGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2hhbmdlc0NvbnRyb2xsZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDaGFuZ2VzQ29udHJvbGxlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBub2Rlc0NoYW5nZVNlcnZpY2UgPSBpbmplY3QoTm9kZXNDaGFuZ2VTZXJ2aWNlKVxuICBwcm90ZWN0ZWQgZWRnZXNDaGFuZ2VTZXJ2aWNlID0gaW5qZWN0KEVkZ2VDaGFuZ2VzU2VydmljZSlcblxuICAvKipcbiAgICogV2F0Y2ggbm9kZXMgY2hhbmdlXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uTm9kZXNDaGFuZ2UgPSB0aGlzLm5vZGVzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJFxuXG4gIEBPdXRwdXQoJ29uTm9kZXNDaGFuZ2UucG9zaXRpb24nKVxuICBwdWJsaWMgb25Ob2Rlc0NoYW5nZVBvc2l0aW9uID0gdGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgncG9zaXRpb24nKVxuXG4gIEBPdXRwdXQoJ29uTm9kZXNDaGFuZ2UucG9zaXRpb24uc2luZ2xlJylcbiAgcHVibGljIG9uTm9kZXNDaGFuZ2VQb3NpdGlvblNpZ25sZSA9IHRoaXMuc2luZ2xlQ2hhbmdlKFxuICAgIHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3Bvc2l0aW9uJylcbiAgKVxuXG4gIEBPdXRwdXQoJ29uTm9kZXNDaGFuZ2UucG9zaXRpb24ubWFueScpXG4gIHB1YmxpYyBvbk5vZGVzQ2hhbmdlUG9zaXRpb25NYW55ID0gdGhpcy5tYW55Q2hhbmdlcyhcbiAgICB0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdwb3NpdGlvbicpXG4gIClcblxuICBAT3V0cHV0KCdvbk5vZGVzQ2hhbmdlLmFkZCcpXG4gIHB1YmxpYyBvbk5vZGVzQ2hhbmdlQWRkID0gdGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnYWRkJylcblxuICBAT3V0cHV0KCdvbk5vZGVzQ2hhbmdlLmFkZC5zaW5nbGUnKVxuICBwdWJsaWMgb25Ob2Rlc0NoYW5nZUFkZFNpbmdsZSA9IHRoaXMuc2luZ2xlQ2hhbmdlKFxuICAgIHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ2FkZCcpXG4gIClcblxuICBAT3V0cHV0KCdvbk5vZGVzQ2hhbmdlLmFkZC5tYW55JylcbiAgcHVibGljIG9uTm9kZXNDaGFuZ2VBZGRNYW55ID0gdGhpcy5tYW55Q2hhbmdlcyhcbiAgICB0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdhZGQnKVxuICApXG5cbiAgQE91dHB1dCgnb25Ob2Rlc0NoYW5nZS5yZW1vdmUnKVxuICBwdWJsaWMgb25Ob2Rlc0NoYW5nZVJlbW92ZSA9IHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3JlbW92ZScpXG5cbiAgQE91dHB1dCgnb25Ob2Rlc0NoYW5nZS5yZW1vdmUuc2luZ2xlJylcbiAgcHVibGljIG9uTm9kZXNDaGFuZ2VSZW1vdmVTaW5nbGUgPSB0aGlzLnNpbmdsZUNoYW5nZShcbiAgICB0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdyZW1vdmUnKVxuICApXG5cbiAgQE91dHB1dCgnb25Ob2Rlc0NoYW5nZS5yZW1vdmUubWFueScpXG4gIHB1YmxpYyBvbk5vZGVzQ2hhbmdlUmVtb3ZlTWFueSA9IHRoaXMubWFueUNoYW5nZXMoXG4gICAgdGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgncmVtb3ZlJylcbiAgKVxuXG4gIEBPdXRwdXQoJ29uTm9kZXNDaGFuZ2Uuc2VsZWN0JylcbiAgcHVibGljIG9uTm9kZXNDaGFuZ2VTZWxlY3QgPSB0aGlzLm5vZGVDaGFuZ2VzT2ZUeXBlKCdzZWxlY3QnKVxuXG4gIEBPdXRwdXQoJ29uTm9kZXNDaGFuZ2Uuc2VsZWN0LnNpbmdsZScpXG4gIHB1YmxpYyBvbk5vZGVzQ2hhbmdlU2VsZWN0U2luZ2xlID0gdGhpcy5zaW5nbGVDaGFuZ2UoXG4gICAgdGhpcy5ub2RlQ2hhbmdlc09mVHlwZSgnc2VsZWN0JylcbiAgKVxuXG4gIEBPdXRwdXQoJ29uTm9kZXNDaGFuZ2Uuc2VsZWN0Lm1hbnknKVxuICBwdWJsaWMgb25Ob2Rlc0NoYW5nZVNlbGVjdE1hbnkgPSB0aGlzLm1hbnlDaGFuZ2VzKFxuICAgIHRoaXMubm9kZUNoYW5nZXNPZlR5cGUoJ3NlbGVjdCcpXG4gIClcblxuICAvKipcbiAgICogV2F0Y2ggZWRnZXMgY2hhbmdlXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uRWRnZXNDaGFuZ2UgPSB0aGlzLmVkZ2VzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJFxuXG4gIEBPdXRwdXQoJ29uRWRnZXNDaGFuZ2UuZGV0YWNoZWQnKVxuICBwdWJsaWMgb25Ob2Rlc0NoYW5nZURldGFjaGVkID0gdGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnZGV0YWNoZWQnKVxuXG4gIEBPdXRwdXQoJ29uRWRnZXNDaGFuZ2UuZGV0YWNoZWQuc2luZ2xlJylcbiAgcHVibGljIG9uTm9kZXNDaGFuZ2VEZXRhY2hlZFNpbmdsZSA9IHRoaXMuc2luZ2xlQ2hhbmdlKFxuICAgIHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ2RldGFjaGVkJylcbiAgKVxuXG4gIEBPdXRwdXQoJ29uRWRnZXNDaGFuZ2UuZGV0YWNoZWQubWFueScpXG4gIHB1YmxpYyBvbk5vZGVzQ2hhbmdlRGV0YWNoZWRNYW55ID0gdGhpcy5tYW55Q2hhbmdlcyhcbiAgICB0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdkZXRhY2hlZCcpXG4gIClcblxuICBAT3V0cHV0KCdvbkVkZ2VzQ2hhbmdlLmFkZCcpXG4gIHB1YmxpYyBvbkVkZ2VzQ2hhbmdlQWRkID0gdGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnYWRkJylcblxuICBAT3V0cHV0KCdvbkVkZ2VzQ2hhbmdlLmFkZC5zaW5nbGUnKVxuICBwdWJsaWMgb25FZGdlQ2hhbmdlQWRkU2luZ2xlID0gdGhpcy5zaW5nbGVDaGFuZ2UoXG4gICAgdGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnYWRkJylcbiAgKVxuXG4gIEBPdXRwdXQoJ29uRWRnZXNDaGFuZ2UuYWRkLm1hbnknKVxuICBwdWJsaWMgb25FZGdlQ2hhbmdlQWRkTWFueSA9IHRoaXMubWFueUNoYW5nZXMoXG4gICAgdGhpcy5lZGdlQ2hhbmdlc09mVHlwZSgnYWRkJylcbiAgKVxuXG4gIEBPdXRwdXQoJ29uRWRnZXNDaGFuZ2UucmVtb3ZlJylcbiAgcHVibGljIG9uRWRnZUNoYW5nZVJlbW92ZSA9IHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ3JlbW92ZScpXG5cbiAgQE91dHB1dCgnb25FZGdlc0NoYW5nZS5yZW1vdmUuc2luZ2xlJylcbiAgcHVibGljIG9uRWRnZUNoYW5nZVJlbW92ZVNpbmdsZSA9IHRoaXMuc2luZ2xlQ2hhbmdlKFxuICAgIHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ3JlbW92ZScpXG4gIClcblxuICBAT3V0cHV0KCdvbkVkZ2VzQ2hhbmdlLnJlbW92ZS5tYW55JylcbiAgcHVibGljIG9uRWRnZUNoYW5nZVJlbW92ZU1hbnkgPSB0aGlzLm1hbnlDaGFuZ2VzKFxuICAgIHRoaXMuZWRnZUNoYW5nZXNPZlR5cGUoJ3JlbW92ZScpXG4gIClcblxuICBAT3V0cHV0KCdvbkVkZ2VzQ2hhbmdlLnNlbGVjdCcpXG4gIHB1YmxpYyBvbkVkZ2VDaGFuZ2VTZWxlY3QgPSB0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdzZWxlY3QnKVxuXG4gIEBPdXRwdXQoJ29uRWRnZXNDaGFuZ2Uuc2VsZWN0LnNpbmdsZScpXG4gIHB1YmxpYyBvbkVkZ2VDaGFuZ2VTZWxlY3RTaW5nbGUgPSB0aGlzLnNpbmdsZUNoYW5nZShcbiAgICB0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdzZWxlY3QnKVxuICApXG5cbiAgQE91dHB1dCgnb25FZGdlc0NoYW5nZS5zZWxlY3QubWFueScpXG4gIHB1YmxpYyBvbkVkZ2VDaGFuZ2VTZWxlY3RNYW55ID0gdGhpcy5tYW55Q2hhbmdlcyhcbiAgICB0aGlzLmVkZ2VDaGFuZ2VzT2ZUeXBlKCdzZWxlY3QnKVxuICApXG5cbiAgcHJpdmF0ZSBub2RlQ2hhbmdlc09mVHlwZTxUIGV4dGVuZHMgTm9kZUNoYW5nZVsndHlwZSddPih0eXBlOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkLnBpcGUoXG4gICAgICBtYXAoY2hhbmdlcyA9PiBjaGFuZ2VzLmZpbHRlcigoYyk6IGMgaXMgTm9kZUNoYW5nZU1hcFtUXSA9PiBjLnR5cGUgPT09IHR5cGUpKSxcbiAgICAgIGZpbHRlcihjaGFuZ2VzID0+ICEhY2hhbmdlcy5sZW5ndGgpXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBlZGdlQ2hhbmdlc09mVHlwZTxUIGV4dGVuZHMgRWRnZUNoYW5nZVsndHlwZSddPih0eXBlOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRnZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkLnBpcGUoXG4gICAgICBtYXAoY2hhbmdlcyA9PiBjaGFuZ2VzLmZpbHRlcigoYyk6IGMgaXMgRWRnZUNoYW5nZU1hcFtUXSA9PiBjLnR5cGUgPT09IHR5cGUpKSxcbiAgICAgIGZpbHRlcihjaGFuZ2VzID0+ICEhY2hhbmdlcy5sZW5ndGgpXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBzaW5nbGVDaGFuZ2U8VD4oY2hhbmdlcyQ6IE9ic2VydmFibGU8VFtdPikge1xuICAgIHJldHVybiBjaGFuZ2VzJC5waXBlKFxuICAgICAgZmlsdGVyKGNoYW5nZXMgPT4gY2hhbmdlcy5sZW5ndGggPT09IDEpLFxuICAgICAgbWFwKChbZmlyc3RdKSA9PiBmaXJzdClcbiAgICApXG4gIH1cblxuICBwcml2YXRlIG1hbnlDaGFuZ2VzPFQ+KGNoYW5nZXMkOiBPYnNlcnZhYmxlPFRbXT4pIHtcbiAgICByZXR1cm4gY2hhbmdlcyQucGlwZShcbiAgICAgIGZpbHRlcihjaGFuZ2VzID0+IGNoYW5nZXMubGVuZ3RoID4gMSksXG4gICAgKVxuICB9XG59XG5cbi8vIFRPRE86IGRvIG5vdCB3cml0ZSB0aGlzIHR5cGVzIG1hbnVhbGx5XG50eXBlIE5vZGVDaGFuZ2VNYXAgPSB7XG4gIHBvc2l0aW9uOiBOb2RlUG9zaXRpb25DaGFuZ2UsXG4gIGFkZDogTm9kZUFkZENoYW5nZSxcbiAgcmVtb3ZlOiBOb2RlUmVtb3ZlQ2hhbmdlLFxuICBzZWxlY3Q6IE5vZGVTZWxlY3RlZENoYW5nZVxufVxuXG50eXBlIEVkZ2VDaGFuZ2VNYXAgPSB7XG4gIGRldGFjaGVkOiBFZGdlRGV0YWNoZWRDaGFuZ2UsXG4gIGFkZDogRWRnZUFkZENoYW5nZSxcbiAgcmVtb3ZlOiBFZGdlUmVtb3ZlQ2hhbmdlLFxuICBzZWxlY3Q6IEVkZ2VTZWxlY3RDaGFuZ2Vcbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Directive, ElementRef, Input, effect, inject } from '@angular/core';
|
|
1
|
+
import { Directive, ElementRef, Input, effect, inject, untracked } from '@angular/core';
|
|
2
2
|
import { select } from 'd3-selection';
|
|
3
3
|
import { zoom, zoomIdentity } from 'd3-zoom';
|
|
4
4
|
import { ViewportService } from '../services/viewport.service';
|
|
@@ -16,8 +16,7 @@ export class MapContextDirective {
|
|
|
16
16
|
this.zoomableSelection = select(this.host);
|
|
17
17
|
this.viewportForSelection = {};
|
|
18
18
|
// under the hood this effect triggers handleZoom, so error throws without this flag
|
|
19
|
-
|
|
20
|
-
this.manualViewportChangeEffect = effect(() => setTimeout(() => {
|
|
19
|
+
this.manualViewportChangeEffect = effect(() => {
|
|
21
20
|
const viewport = this.viewportService.writableViewport();
|
|
22
21
|
const state = viewport.state;
|
|
23
22
|
if (viewport.changeType === 'initial') {
|
|
@@ -30,7 +29,9 @@ export class MapContextDirective {
|
|
|
30
29
|
}
|
|
31
30
|
// If only pan provided
|
|
32
31
|
if ((isDefined(state.x) && isDefined(state.y)) && !isDefined(state.zoom)) {
|
|
33
|
-
|
|
32
|
+
// remain same zoom value
|
|
33
|
+
const zoom = untracked(this.viewportService.readableViewport).zoom;
|
|
34
|
+
this.rootSvgSelection.call(this.zoomBehavior.transform, zoomIdentity.translate(state.x, state.y).scale(zoom));
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
36
37
|
// If whole viewort state provided
|
|
@@ -38,7 +39,7 @@ export class MapContextDirective {
|
|
|
38
39
|
this.rootSvgSelection.call(this.zoomBehavior.transform, zoomIdentity.translate(state.x, state.y).scale(state.zoom));
|
|
39
40
|
return;
|
|
40
41
|
}
|
|
41
|
-
}
|
|
42
|
+
}, { allowSignalWrites: true });
|
|
42
43
|
this.handleZoom = ({ transform }) => {
|
|
43
44
|
// update public signal for user to read
|
|
44
45
|
this.viewportService.readableViewport.set(mapTransformToViewportState(transform));
|
|
@@ -86,4 +87,4 @@ const evTarget = (anyEvent) => {
|
|
|
86
87
|
}
|
|
87
88
|
return undefined;
|
|
88
89
|
};
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUE0QyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUF3QixNQUFNLCtCQUErQixDQUFDOztBQUt2RixNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBUVksWUFBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUNuRCxTQUFJLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUE7UUFDaEUscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDM0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFekMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN2QyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXJDLHlCQUFvQixHQUFrQyxFQUFFLENBQUE7UUFF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U0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNlbGVjdCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5pbXBvcnQgeyBEM1pvb21FdmVudCwgWm9vbUJlaGF2aW9yLCBab29tVHJhbnNmb3JtLCB6b29tLCB6b29tSWRlbnRpdHkgfSBmcm9tICdkMy16b29tJztcbmltcG9ydCB7IFZpZXdwb3J0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvaXMtZGVmaW5lZCc7XG5pbXBvcnQgeyBSb290U3ZnUmVmZXJlbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9yZWZlcmVuY2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IFZpZXdwb3J0U3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXdwb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlLCBWaWV3cG9ydEZvclNlbGVjdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcblxudHlwZSBab29tRXZlbnQgPSBEM1pvb21FdmVudDxTVkdTVkdFbGVtZW50LCB1bmtub3duPlxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdnW21hcENvbnRleHRdJyB9KVxuZXhwb3J0IGNsYXNzIE1hcENvbnRleHREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWluWm9vbSE6IG51bWJlclxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhab29tITogbnVtYmVyXG5cbiAgcHJvdGVjdGVkIHJvb3RTdmcgPSBpbmplY3QoUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSkuZWxlbWVudFxuICBwcm90ZWN0ZWQgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPFNWR0dFbGVtZW50Pj4oRWxlbWVudFJlZikubmF0aXZlRWxlbWVudFxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uU2VydmljZSA9IGluamVjdChTZWxlY3Rpb25TZXJ2aWNlKVxuICBwcm90ZWN0ZWQgdmlld3BvcnRTZXJ2aWNlID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSlcblxuICBwcm90ZWN0ZWQgcm9vdFN2Z1NlbGVjdGlvbiA9IHNlbGVjdCh0aGlzLnJvb3RTdmcpXG4gIHByb3RlY3RlZCB6b29tYWJsZVNlbGVjdGlvbiA9IHNlbGVjdCh0aGlzLmhvc3QpXG5cbiAgcHJvdGVjdGVkIHZpZXdwb3J0Rm9yU2VsZWN0aW9uOiBQYXJ0aWFsPFZpZXdwb3J0Rm9yU2VsZWN0aW9uPiA9IHt9XG5cbiAgLy8gdW5kZXIgdGhlIGhvb2QgdGhpcyBlZmZlY3QgdHJpZ2dlcnMgaGFuZGxlWm9vbSwgc28gZXJyb3IgdGhyb3dzIHdpdGhvdXQgdGhpcyBmbGFnXG4gIC8vIFRPRE86IGhhY2sgd2l0aCB0aW1lciBmaXhlcyB3cm9uZyBub2RlIHNjYWxpbmcgKGhhbmRsZSBwb3NpdGlvbnMgbm90IG1hdGNoZWQgd2l0aCBjb250ZW50IHNpemUpXG4gIHByb3RlY3RlZCBtYW51YWxWaWV3cG9ydENoYW5nZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnRTZXJ2aWNlLndyaXRhYmxlVmlld3BvcnQoKVxuICAgIGNvbnN0IHN0YXRlID0gdmlld3BvcnQuc3RhdGVcblxuICAgIGlmICh2aWV3cG9ydC5jaGFuZ2VUeXBlID09PSAnaW5pdGlhbCcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIG9ubHkgem9vbSBwcm92aWRlZFxuICAgIGlmIChpc0RlZmluZWQoc3RhdGUuem9vbSkgJiYgKCFpc0RlZmluZWQoc3RhdGUueCkgJiYgIWlzRGVmaW5lZChzdGF0ZS55KSkpIHtcbiAgICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yLnNjYWxlVG8sIHN0YXRlLnpvb20pXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIG9ubHkgcGFuIHByb3ZpZGVkXG4gICAgaWYgKChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpKSAmJiAhaXNEZWZpbmVkKHN0YXRlLnpvb20pKSB7XG4gICAgICB0aGlzLnJvb3RTdmdTZWxlY3Rpb24uY2FsbCh0aGlzLnpvb21CZWhhdmlvci50cmFuc2xhdGVUbywgc3RhdGUueCwgc3RhdGUueSlcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgd2hvbGUgdmlld29ydCBzdGF0ZSBwcm92aWRlZFxuICAgIGlmIChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpICYmIGlzRGVmaW5lZChzdGF0ZS56b29tKSkge1xuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uLmNhbGwodGhpcy56b29tQmVoYXZpb3IudHJhbnNmb3JtLFxuICAgICAgICB6b29tSWRlbnRpdHkudHJhbnNsYXRlKHN0YXRlLngsIHN0YXRlLnkpLnNjYWxlKHN0YXRlLnpvb20pXG4gICAgICApXG5cbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSksIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSlcblxuICBwcm90ZWN0ZWQgem9vbUJlaGF2aW9yITogWm9vbUJlaGF2aW9yPFNWR1NWR0VsZW1lbnQsIHVua25vd24+O1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb21CZWhhdmlvciA9IHpvb208U1ZHU1ZHRWxlbWVudCwgdW5rbm93bj4oKVxuICAgICAgLnNjYWxlRXh0ZW50KFt0aGlzLm1pblpvb20sIHRoaXMubWF4Wm9vbV0pXG4gICAgICAub24oJ3N0YXJ0JywgKGV2ZW50OiBab29tRXZlbnQpID0+IHRoaXMub25EM3pvb21TdGFydChldmVudCkpXG4gICAgICAub24oJ3pvb20nLCAoZXZlbnQ6IFpvb21FdmVudCkgPT4gdGhpcy5oYW5kbGVab29tKGV2ZW50KSlcbiAgICAgIC5vbignZW5kJywgKGV2ZW50OiBab29tRXZlbnQpID0+IHRoaXMub25EM3pvb21FbmQoZXZlbnQpKVxuXG4gICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAuY2FsbCh0aGlzLnpvb21CZWhhdmlvcilcbiAgICAgIC5vbignZGJsY2xpY2suem9vbScsIG51bGwpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVpvb20gPSAoeyB0cmFuc2Zvcm0gfTogWm9vbUV2ZW50KSA9PiB7XG4gICAgLy8gdXBkYXRlIHB1YmxpYyBzaWduYWwgZm9yIHVzZXIgdG8gcmVhZFxuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQuc2V0KG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pKVxuXG4gICAgdGhpcy56b29tYWJsZVNlbGVjdGlvbi5hdHRyKCd0cmFuc2Zvcm0nLCB0cmFuc2Zvcm0udG9TdHJpbmcoKSlcbiAgfVxuXG4gIHByaXZhdGUgb25EM3pvb21TdGFydCh7IHRyYW5zZm9ybSB9OiBab29tRXZlbnQpIHtcbiAgICB0aGlzLnZpZXdwb3J0Rm9yU2VsZWN0aW9uID0ge1xuICAgICAgc3RhcnQ6IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkQzem9vbUVuZCh7IHRyYW5zZm9ybSwgc291cmNlRXZlbnQgfTogWm9vbUV2ZW50KSB7XG4gICAgdGhpcy52aWV3cG9ydEZvclNlbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMudmlld3BvcnRGb3JTZWxlY3Rpb24sXG4gICAgICBlbmQ6IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pLFxuICAgICAgdGFyZ2V0OiBldlRhcmdldChzb3VyY2VFdmVudClcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2V0Vmlld3BvcnQoXG4gICAgICB0aGlzLnZpZXdwb3J0Rm9yU2VsZWN0aW9uIGFzIFZpZXdwb3J0Rm9yU2VsZWN0aW9uXG4gICAgKVxuICB9XG59XG5cbmNvbnN0IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSA9ICh0cmFuc2Zvcm06IFpvb21UcmFuc2Zvcm0pOiBWaWV3cG9ydFN0YXRlID0+XG4gICh7IHpvb206IHRyYW5zZm9ybS5rLCB4OiB0cmFuc2Zvcm0ueCwgeTogdHJhbnNmb3JtLnkgfSlcblxuY29uc3QgZXZUYXJnZXQgPSAoYW55RXZlbnQ6IGFueSk6IEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoYW55RXZlbnQgaW5zdGFuY2VvZiBFdmVudCAmJiBhbnlFdmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgcmV0dXJuIGFueUV2ZW50LnRhcmdldFxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBNEMsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBd0IsTUFBTSwrQkFBK0IsQ0FBQzs7QUFLdkYsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQVFZLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbkQsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFBO1FBQ2hFLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzNDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRXpDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVyQyx5QkFBb0IsR0FBa0MsRUFB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QUU7SUFDdEQsSUFBSSxRQUFRLFlBQVksS0FBSyxJQUFJLFFBQVEsQ0FBQyxNQUFNLFlBQVksT0FBTyxFQUFFO1FBQ25FLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQTtLQUN2QjtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCB7IEQzWm9vbUV2ZW50LCBab29tQmVoYXZpb3IsIFpvb21UcmFuc2Zvcm0sIHpvb20sIHpvb21JZGVudGl0eSB9IGZyb20gJ2QzLXpvb20nO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICcuLi91dGlscy9pcy1kZWZpbmVkJztcbmltcG9ydCB7IFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUgfSBmcm9tICcuL3JlZmVyZW5jZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVmlld3BvcnRTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlbGVjdGlvblNlcnZpY2UsIFZpZXdwb3J0Rm9yU2VsZWN0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UnO1xuXG50eXBlIFpvb21FdmVudCA9IEQzWm9vbUV2ZW50PFNWR1NWR0VsZW1lbnQsIHVua25vd24+XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2dbbWFwQ29udGV4dF0nIH0pXG5leHBvcnQgY2xhc3MgTWFwQ29udGV4dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5ab29tITogbnVtYmVyXG5cbiAgQElucHV0KClcbiAgcHVibGljIG1heFpvb20hOiBudW1iZXJcblxuICBwcm90ZWN0ZWQgcm9vdFN2ZyA9IGluamVjdChSb290U3ZnUmVmZXJlbmNlRGlyZWN0aXZlKS5lbGVtZW50XG4gIHByb3RlY3RlZCBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHR0VsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50XG4gIHByb3RlY3RlZCBzZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KFNlbGVjdGlvblNlcnZpY2UpXG4gIHByb3RlY3RlZCB2aWV3cG9ydFNlcnZpY2UgPSBpbmplY3QoVmlld3BvcnRTZXJ2aWNlKVxuXG4gIHByb3RlY3RlZCByb290U3ZnU2VsZWN0aW9uID0gc2VsZWN0KHRoaXMucm9vdFN2ZylcbiAgcHJvdGVjdGVkIHpvb21hYmxlU2VsZWN0aW9uID0gc2VsZWN0KHRoaXMuaG9zdClcblxuICBwcm90ZWN0ZWQgdmlld3BvcnRGb3JTZWxlY3Rpb246IFBhcnRpYWw8Vmlld3BvcnRGb3JTZWxlY3Rpb24+ID0ge31cblxuICAvLyB1bmRlciB0aGUgaG9vZCB0aGlzIGVmZmVjdCB0cmlnZ2VycyBoYW5kbGVab29tLCBzbyBlcnJvciB0aHJvd3Mgd2l0aG91dCB0aGlzIGZsYWdcbiAgcHJvdGVjdGVkIG1hbnVhbFZpZXdwb3J0Q2hhbmdlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnRTZXJ2aWNlLndyaXRhYmxlVmlld3BvcnQoKVxuICAgIGNvbnN0IHN0YXRlID0gdmlld3BvcnQuc3RhdGVcblxuICAgIGlmICh2aWV3cG9ydC5jaGFuZ2VUeXBlID09PSAnaW5pdGlhbCcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIG9ubHkgem9vbSBwcm92aWRlZFxuICAgIGlmIChpc0RlZmluZWQoc3RhdGUuem9vbSkgJiYgKCFpc0RlZmluZWQoc3RhdGUueCkgJiYgIWlzRGVmaW5lZChzdGF0ZS55KSkpIHtcbiAgICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yLnNjYWxlVG8sIHN0YXRlLnpvb20pXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIG9ubHkgcGFuIHByb3ZpZGVkXG4gICAgaWYgKChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpKSAmJiAhaXNEZWZpbmVkKHN0YXRlLnpvb20pKSB7XG4gICAgICAvLyByZW1haW4gc2FtZSB6b29tIHZhbHVlXG4gICAgICBjb25zdCB6b29tID0gdW50cmFja2VkKHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQpLnpvb21cblxuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uLmNhbGwodGhpcy56b29tQmVoYXZpb3IudHJhbnNmb3JtLFxuICAgICAgICB6b29tSWRlbnRpdHkudHJhbnNsYXRlKHN0YXRlLngsIHN0YXRlLnkpLnNjYWxlKHpvb20pXG4gICAgICApXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIHdob2xlIHZpZXdvcnQgc3RhdGUgcHJvdmlkZWRcbiAgICBpZiAoaXNEZWZpbmVkKHN0YXRlLngpICYmIGlzRGVmaW5lZChzdGF0ZS55KSAmJiBpc0RlZmluZWQoc3RhdGUuem9vbSkpIHtcbiAgICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yLnRyYW5zZm9ybSxcbiAgICAgICAgem9vbUlkZW50aXR5LnRyYW5zbGF0ZShzdGF0ZS54LCBzdGF0ZS55KS5zY2FsZShzdGF0ZS56b29tKVxuICAgICAgKVxuXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSlcblxuICBwcm90ZWN0ZWQgem9vbUJlaGF2aW9yITogWm9vbUJlaGF2aW9yPFNWR1NWR0VsZW1lbnQsIHVua25vd24+O1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb21CZWhhdmlvciA9IHpvb208U1ZHU1ZHRWxlbWVudCwgdW5rbm93bj4oKVxuICAgICAgLnNjYWxlRXh0ZW50KFt0aGlzLm1pblpvb20sIHRoaXMubWF4Wm9vbV0pXG4gICAgICAub24oJ3N0YXJ0JywgKGV2ZW50OiBab29tRXZlbnQpID0+IHRoaXMub25EM3pvb21TdGFydChldmVudCkpXG4gICAgICAub24oJ3pvb20nLCAoZXZlbnQ6IFpvb21FdmVudCkgPT4gdGhpcy5oYW5kbGVab29tKGV2ZW50KSlcbiAgICAgIC5vbignZW5kJywgKGV2ZW50OiBab29tRXZlbnQpID0+IHRoaXMub25EM3pvb21FbmQoZXZlbnQpKVxuXG4gICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAuY2FsbCh0aGlzLnpvb21CZWhhdmlvcilcbiAgICAgIC5vbignZGJsY2xpY2suem9vbScsIG51bGwpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVpvb20gPSAoeyB0cmFuc2Zvcm0gfTogWm9vbUV2ZW50KSA9PiB7XG4gICAgLy8gdXBkYXRlIHB1YmxpYyBzaWduYWwgZm9yIHVzZXIgdG8gcmVhZFxuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQuc2V0KG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pKVxuXG4gICAgdGhpcy56b29tYWJsZVNlbGVjdGlvbi5hdHRyKCd0cmFuc2Zvcm0nLCB0cmFuc2Zvcm0udG9TdHJpbmcoKSlcbiAgfVxuXG4gIHByaXZhdGUgb25EM3pvb21TdGFydCh7IHRyYW5zZm9ybSB9OiBab29tRXZlbnQpIHtcbiAgICB0aGlzLnZpZXdwb3J0Rm9yU2VsZWN0aW9uID0ge1xuICAgICAgc3RhcnQ6IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkQzem9vbUVuZCh7IHRyYW5zZm9ybSwgc291cmNlRXZlbnQgfTogWm9vbUV2ZW50KSB7XG4gICAgdGhpcy52aWV3cG9ydEZvclNlbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMudmlld3BvcnRGb3JTZWxlY3Rpb24sXG4gICAgICBlbmQ6IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pLFxuICAgICAgdGFyZ2V0OiBldlRhcmdldChzb3VyY2VFdmVudClcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2V0Vmlld3BvcnQoXG4gICAgICB0aGlzLnZpZXdwb3J0Rm9yU2VsZWN0aW9uIGFzIFZpZXdwb3J0Rm9yU2VsZWN0aW9uXG4gICAgKVxuICB9XG59XG5cbmNvbnN0IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSA9ICh0cmFuc2Zvcm06IFpvb21UcmFuc2Zvcm0pOiBWaWV3cG9ydFN0YXRlID0+XG4gICh7IHpvb206IHRyYW5zZm9ybS5rLCB4OiB0cmFuc2Zvcm0ueCwgeTogdHJhbnNmb3JtLnkgfSlcblxuY29uc3QgZXZUYXJnZXQgPSAoYW55RXZlbnQ6IGFueSk6IEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoYW55RXZlbnQgaW5zdGFuY2VvZiBFdmVudCAmJiBhbnlFdmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgcmV0dXJuIGFueUV2ZW50LnRhcmdldFxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Directive, ElementRef, EventEmitter, HostListener, Output, inject } from '@angular/core';
|
|
2
|
+
import { filter, tap } from 'rxjs';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { RootPointerDirective } from './root-pointer.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class PointerDirective {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.hostElement = inject(ElementRef).nativeElement;
|
|
9
|
+
this.pointerMovementDirective = inject(RootPointerDirective);
|
|
10
|
+
this.pointerOver = new EventEmitter();
|
|
11
|
+
this.pointerOut = new EventEmitter();
|
|
12
|
+
this.pointerStart = new EventEmitter();
|
|
13
|
+
this.pointerEnd = new EventEmitter();
|
|
14
|
+
this.wasPointerOver = false;
|
|
15
|
+
// TODO check if i could avoid global touch end
|
|
16
|
+
this.touchEnd = this.pointerMovementDirective.touchEnd$
|
|
17
|
+
.pipe(filter(({ target }) => target === this.hostElement), tap(({ originalEvent }) => this.pointerEnd.emit(originalEvent)), takeUntilDestroyed())
|
|
18
|
+
.subscribe();
|
|
19
|
+
this.touchOverOut = this.pointerMovementDirective.touchMovement$
|
|
20
|
+
.pipe(tap(({ target, originalEvent }) => {
|
|
21
|
+
this.handleTouchOverAndOut(target, originalEvent);
|
|
22
|
+
}), takeUntilDestroyed())
|
|
23
|
+
.subscribe();
|
|
24
|
+
}
|
|
25
|
+
onPointerStart(event) {
|
|
26
|
+
this.pointerStart.emit(event);
|
|
27
|
+
if (event instanceof TouchEvent) {
|
|
28
|
+
this.pointerMovementDirective.setInitialTouch(event);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
onPointerEnd(event) {
|
|
32
|
+
this.pointerEnd.emit(event);
|
|
33
|
+
}
|
|
34
|
+
onMouseOver(event) {
|
|
35
|
+
this.pointerOver.emit(event);
|
|
36
|
+
}
|
|
37
|
+
onMouseOut(event) {
|
|
38
|
+
this.pointerOut.emit(event);
|
|
39
|
+
}
|
|
40
|
+
// TODO: dirty imperative implementation
|
|
41
|
+
handleTouchOverAndOut(target, event) {
|
|
42
|
+
if (target === this.hostElement) {
|
|
43
|
+
this.pointerOver.emit(event);
|
|
44
|
+
this.wasPointerOver = true;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// should not emit before pointerOver
|
|
48
|
+
if (this.wasPointerOver) {
|
|
49
|
+
this.pointerOut.emit(event);
|
|
50
|
+
}
|
|
51
|
+
this.wasPointerOver = false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PointerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
55
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PointerDirective, selector: "[pointerStart], [pointerEnd], [pointerOver], [pointerOut]", outputs: { pointerOver: "pointerOver", pointerOut: "pointerOut", pointerStart: "pointerStart", pointerEnd: "pointerEnd" }, host: { listeners: { "mousedown": "onPointerStart($event)", "touchstart": "onPointerStart($event)", "mouseup": "onPointerEnd($event)", "mouseover": "onMouseOver($event)", "mouseout": "onMouseOut($event)" } }, ngImport: i0 }); }
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PointerDirective, decorators: [{
|
|
58
|
+
type: Directive,
|
|
59
|
+
args: [{ selector: '[pointerStart], [pointerEnd], [pointerOver], [pointerOut]' }]
|
|
60
|
+
}], propDecorators: { pointerOver: [{
|
|
61
|
+
type: Output
|
|
62
|
+
}], pointerOut: [{
|
|
63
|
+
type: Output
|
|
64
|
+
}], pointerStart: [{
|
|
65
|
+
type: Output
|
|
66
|
+
}], pointerEnd: [{
|
|
67
|
+
type: Output
|
|
68
|
+
}], onPointerStart: [{
|
|
69
|
+
type: HostListener,
|
|
70
|
+
args: ['mousedown', ['$event']]
|
|
71
|
+
}, {
|
|
72
|
+
type: HostListener,
|
|
73
|
+
args: ['touchstart', ['$event']]
|
|
74
|
+
}], onPointerEnd: [{
|
|
75
|
+
type: HostListener,
|
|
76
|
+
args: ['mouseup', ['$event']]
|
|
77
|
+
}], onMouseOver: [{
|
|
78
|
+
type: HostListener,
|
|
79
|
+
args: ['mouseover', ['$event']]
|
|
80
|
+
}], onMouseOut: [{
|
|
81
|
+
type: HostListener,
|
|
82
|
+
args: ['mouseout', ['$event']]
|
|
83
|
+
}] } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9wb2ludGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBR2hFLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFWSxnQkFBVyxHQUFHLE1BQU0sQ0FBc0IsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFBO1FBQ25FLDZCQUF3QixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBR3ZELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQTtRQUd2QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQTtRQUd0QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUE7UUFHeEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUE7UUEyQnhDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRS9CLCtDQUErQztRQUNyQyxhQUFRLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVM7YUFDekQsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQ25ELEdBQUcsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQy9ELGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxFQUFFLENBQUE7UUFFSixpQkFBWSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjO2FBQ2xFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFDbkQsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLEVBQUUsQ0FDckI7YUFDQSxTQUFTLEVBQUUsQ0FBQTtLQWdCZjtJQXpEVyxjQUFjLENBQUMsS0FBWTtRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUU3QixJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFHUyxZQUFZLENBQUMsS0FBWTtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBR1MsV0FBVyxDQUFDLEtBQVk7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUdTLFVBQVUsQ0FBQyxLQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFzQkQsd0NBQXdDO0lBQ2hDLHFCQUFxQixDQUFDLE1BQXNCLEVBQUUsS0FBaUI7UUFDckUsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjthQUFNO1lBQ0wscUNBQXFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7YUFDNUI7WUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNILENBQUM7K0dBMUVVLGdCQUFnQjttR0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDJEQUEyRCxFQUFFOzhCQU14RSxXQUFXO3NCQURwQixNQUFNO2dCQUlHLFVBQVU7c0JBRG5CLE1BQU07Z0JBSUcsWUFBWTtzQkFEckIsTUFBTTtnQkFJRyxVQUFVO3NCQURuQixNQUFNO2dCQUtHLGNBQWM7c0JBRnZCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDcEMsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVTVCLFlBQVk7c0JBRHJCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU16QixXQUFXO3NCQURwQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNM0IsVUFBVTtzQkFEbkIsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUm9vdFBvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuL3Jvb3QtcG9pbnRlci5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbcG9pbnRlclN0YXJ0XSwgW3BvaW50ZXJFbmRdLCBbcG9pbnRlck92ZXJdLCBbcG9pbnRlck91dF0nIH0pXG5leHBvcnQgY2xhc3MgUG9pbnRlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBob3N0RWxlbWVudCA9IGluamVjdDxFbGVtZW50UmVmPEVsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50XG4gIHByb3RlY3RlZCBwb2ludGVyTW92ZW1lbnREaXJlY3RpdmUgPSBpbmplY3QoUm9vdFBvaW50ZXJEaXJlY3RpdmUpXG5cbiAgQE91dHB1dCgpXG4gIHByb3RlY3RlZCBwb2ludGVyT3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KClcblxuICBAT3V0cHV0KClcbiAgcHJvdGVjdGVkIHBvaW50ZXJPdXQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpXG5cbiAgQE91dHB1dCgpXG4gIHByb3RlY3RlZCBwb2ludGVyU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpXG5cbiAgQE91dHB1dCgpXG4gIHByb3RlY3RlZCBwb2ludGVyRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Qb2ludGVyU3RhcnQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5wb2ludGVyU3RhcnQuZW1pdChldmVudClcblxuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFRvdWNoRXZlbnQpIHtcbiAgICAgIHRoaXMucG9pbnRlck1vdmVtZW50RGlyZWN0aXZlLnNldEluaXRpYWxUb3VjaChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvblBvaW50ZXJFbmQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5wb2ludGVyRW5kLmVtaXQoZXZlbnQpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Nb3VzZU92ZXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5wb2ludGVyT3Zlci5lbWl0KGV2ZW50KVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdXQnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Nb3VzZU91dChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLnBvaW50ZXJPdXQuZW1pdChldmVudClcbiAgfVxuXG4gIHByaXZhdGUgd2FzUG9pbnRlck92ZXIgPSBmYWxzZTtcblxuICAvLyBUT0RPIGNoZWNrIGlmIGkgY291bGQgYXZvaWQgZ2xvYmFsIHRvdWNoIGVuZFxuICBwcm90ZWN0ZWQgdG91Y2hFbmQgPSB0aGlzLnBvaW50ZXJNb3ZlbWVudERpcmVjdGl2ZS50b3VjaEVuZCRcbiAgICAucGlwZShcbiAgICAgIGZpbHRlcigoeyB0YXJnZXQgfSkgPT4gdGFyZ2V0ID09PSB0aGlzLmhvc3RFbGVtZW50KSxcbiAgICAgIHRhcCgoeyBvcmlnaW5hbEV2ZW50IH0pID0+IHRoaXMucG9pbnRlckVuZC5lbWl0KG9yaWdpbmFsRXZlbnQpKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKVxuXG4gIHByb3RlY3RlZCB0b3VjaE92ZXJPdXQgPSB0aGlzLnBvaW50ZXJNb3ZlbWVudERpcmVjdGl2ZS50b3VjaE1vdmVtZW50JFxuICAgIC5waXBlKFxuICAgICAgdGFwKCh7IHRhcmdldCwgb3JpZ2luYWxFdmVudCB9KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlVG91Y2hPdmVyQW5kT3V0KHRhcmdldCwgb3JpZ2luYWxFdmVudClcbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICApXG4gICAgLnN1YnNjcmliZSgpXG5cbiAgLy8gVE9ETzogZGlydHkgaW1wZXJhdGl2ZSBpbXBsZW1lbnRhdGlvblxuICBwcml2YXRlIGhhbmRsZVRvdWNoT3ZlckFuZE91dCh0YXJnZXQ6IEVsZW1lbnQgfCBudWxsLCBldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICh0YXJnZXQgPT09IHRoaXMuaG9zdEVsZW1lbnQpIHtcbiAgICAgIHRoaXMucG9pbnRlck92ZXIuZW1pdChldmVudClcbiAgICAgIHRoaXMud2FzUG9pbnRlck92ZXIgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzaG91bGQgbm90IGVtaXQgYmVmb3JlIHBvaW50ZXJPdmVyXG4gICAgICBpZiAodGhpcy53YXNQb2ludGVyT3Zlcikge1xuICAgICAgICB0aGlzLnBvaW50ZXJPdXQuZW1pdChldmVudClcbiAgICAgIH1cblxuICAgICAgdGhpcy53YXNQb2ludGVyT3ZlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Directive, ElementRef, inject } from '@angular/core';
|
|
2
|
+
import { Subject, animationFrameScheduler, fromEvent, map, merge, observeOn, share, tap } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class RootPointerDirective {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.host = inject(ElementRef).nativeElement;
|
|
7
|
+
this.initialTouch$ = new Subject();
|
|
8
|
+
// TODO: do not emit if mouse not down
|
|
9
|
+
this.mouseMovement$ = fromEvent(this.host, 'mousemove').pipe(map(event => ({
|
|
10
|
+
x: event.clientX,
|
|
11
|
+
y: event.clientY,
|
|
12
|
+
originalEvent: event
|
|
13
|
+
})), observeOn(animationFrameScheduler), share());
|
|
14
|
+
this.touchMovement$ = merge(this.initialTouch$, fromEvent(this.host, 'touchmove')).pipe(tap((event) => event.preventDefault()), map((originalEvent) => {
|
|
15
|
+
const x = originalEvent.touches[0]?.clientX ?? 0;
|
|
16
|
+
const y = originalEvent.touches[0]?.clientY ?? 0;
|
|
17
|
+
const target = document.elementFromPoint(x, y);
|
|
18
|
+
return { x, y, target, originalEvent };
|
|
19
|
+
}), observeOn(animationFrameScheduler), share());
|
|
20
|
+
this.touchEnd$ = fromEvent(this.host, 'touchend').pipe(map((originalEvent) => {
|
|
21
|
+
const x = originalEvent.changedTouches[0]?.clientX ?? 0;
|
|
22
|
+
const y = originalEvent.changedTouches[0]?.clientY ?? 0;
|
|
23
|
+
const target = document.elementFromPoint(x, y);
|
|
24
|
+
return { x, y, target, originalEvent };
|
|
25
|
+
}), share());
|
|
26
|
+
this.pointerMovement$ = merge(this.mouseMovement$, this.touchMovement$);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* We should know when user started a touch in order to not
|
|
30
|
+
* show old touch position when connection creation is started
|
|
31
|
+
*/
|
|
32
|
+
setInitialTouch(event) {
|
|
33
|
+
this.initialTouch$.next(event);
|
|
34
|
+
}
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootPointerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
36
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RootPointerDirective, selector: "svg[rootPointer]", ngImport: i0 }); }
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootPointerDirective, decorators: [{
|
|
39
|
+
type: Directive,
|
|
40
|
+
args: [{ selector: 'svg[rootPointer]' }]
|
|
41
|
+
}] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1wb2ludGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL3Jvb3QtcG9pbnRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBYyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBUSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSXhILE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFVSxTQUFJLEdBQUcsTUFBTSxDQUE0QixVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUE7UUFFbEUsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFBO1FBRWpELHNDQUFzQztRQUMvQixtQkFBYyxHQUFHLFNBQVMsQ0FBYSxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDeEUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNaLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTztZQUNoQixDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDaEIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQyxDQUFDLEVBQ0gsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEVBQ2xDLEtBQUssRUFBRSxDQUNvQixDQUFDO1FBRXZCLG1CQUFjLEdBQUcsS0FBSyxDQUMzQixJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLENBQWEsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FDOUMsQ0FBQyxJQUFJLENBQ0osR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsRUFDdEMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFBO1lBQ2hELE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBRTlDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQTtRQUN4QyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsdUJBQXVCLENBQUMsRUFDbEMsS0FBSyxFQUFFLENBQ29CLENBQUM7UUFFdkIsY0FBUyxHQUFHLFNBQVMsQ0FBYSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDbEUsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFBO1lBQ3ZELE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQTtZQUN2RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBRTlDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQTtRQUN4QyxDQUFDLENBQUMsRUFDRixLQUFLLEVBQUUsQ0FDb0IsQ0FBQTtRQUV0QixxQkFBZ0IsR0FBRyxLQUFLLENBQzdCLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUE7S0FRRjtJQVBDOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxLQUFpQjtRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxDQUFDOytHQXJEVSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgZnJvbUV2ZW50LCBtYXAsIG1lcmdlLCBvYnNlcnZlT24sIHNoYXJlLCBza2lwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdzdmdbcm9vdFBvaW50ZXJdJyB9KVxuZXhwb3J0IGNsYXNzIFJvb3RQb2ludGVyRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHU1ZHRWxlbWVudD4+KEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnRcblxuICBwcml2YXRlIGluaXRpYWxUb3VjaCQgPSBuZXcgU3ViamVjdDxUb3VjaEV2ZW50PigpXG5cbiAgLy8gVE9ETzogZG8gbm90IGVtaXQgaWYgbW91c2Ugbm90IGRvd25cbiAgcHVibGljIG1vdXNlTW92ZW1lbnQkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlbW92ZScpLnBpcGUoXG4gICAgbWFwKGV2ZW50ID0+ICh7XG4gICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgeTogZXZlbnQuY2xpZW50WSxcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50XG4gICAgfSkpLFxuICAgIG9ic2VydmVPbihhbmltYXRpb25GcmFtZVNjaGVkdWxlciksXG4gICAgc2hhcmUoKVxuICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPFBvaW50PjtcblxuICBwdWJsaWMgdG91Y2hNb3ZlbWVudCQgPSBtZXJnZShcbiAgICB0aGlzLmluaXRpYWxUb3VjaCQsXG4gICAgZnJvbUV2ZW50PFRvdWNoRXZlbnQ+KHRoaXMuaG9zdCwgJ3RvdWNobW92ZScpXG4gICkucGlwZShcbiAgICB0YXAoKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKSxcbiAgICBtYXAoKG9yaWdpbmFsRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHggPSBvcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF0/LmNsaWVudFggPz8gMFxuICAgICAgY29uc3QgeSA9IG9yaWdpbmFsRXZlbnQudG91Y2hlc1swXT8uY2xpZW50WSA/PyAwXG4gICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpXG5cbiAgICAgIHJldHVybiB7IHgsIHksIHRhcmdldCwgb3JpZ2luYWxFdmVudCB9XG4gICAgfSksXG4gICAgb2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICBzaGFyZSgpXG4gICkgc2F0aXNmaWVzIE9ic2VydmFibGU8UG9pbnQ+O1xuXG4gIHB1YmxpYyB0b3VjaEVuZCQgPSBmcm9tRXZlbnQ8VG91Y2hFdmVudD4odGhpcy5ob3N0LCAndG91Y2hlbmQnKS5waXBlKFxuICAgIG1hcCgob3JpZ2luYWxFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeCA9IG9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0/LmNsaWVudFggPz8gMFxuICAgICAgY29uc3QgeSA9IG9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0/LmNsaWVudFkgPz8gMFxuICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KVxuXG4gICAgICByZXR1cm4geyB4LCB5LCB0YXJnZXQsIG9yaWdpbmFsRXZlbnQgfVxuICAgIH0pLFxuICAgIHNoYXJlKClcbiAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxQb2ludD5cblxuICBwdWJsaWMgcG9pbnRlck1vdmVtZW50JCA9IG1lcmdlKFxuICAgIHRoaXMubW91c2VNb3ZlbWVudCQsXG4gICAgdGhpcy50b3VjaE1vdmVtZW50JFxuICApXG4gIC8qKlxuICAgKiBXZSBzaG91bGQga25vdyB3aGVuIHVzZXIgc3RhcnRlZCBhIHRvdWNoIGluIG9yZGVyIHRvIG5vdFxuICAgKiBzaG93IG9sZCB0b3VjaCBwb3NpdGlvbiB3aGVuIGNvbm5lY3Rpb24gY3JlYXRpb24gaXMgc3RhcnRlZFxuICAgKi9cbiAgcHVibGljIHNldEluaXRpYWxUb3VjaChldmVudDogVG91Y2hFdmVudCkge1xuICAgIHRoaXMuaW5pdGlhbFRvdWNoJC5uZXh0KGV2ZW50KVxuICB9XG59XG4iXX0=
|
|
@@ -14,7 +14,7 @@ export class RootSvgContextDirective {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootSvgContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
17
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RootSvgContextDirective, selector: "svg[rootSvgContext]", host: { listeners: { "document:mouseup": "resetConnection()" } }, ngImport: i0 }); }
|
|
17
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RootSvgContextDirective, selector: "svg[rootSvgContext]", host: { listeners: { "document:mouseup": "resetConnection()", "document:touchend": "resetConnection()" } }, ngImport: i0 }); }
|
|
18
18
|
}
|
|
19
19
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootSvgContextDirective, decorators: [{
|
|
20
20
|
type: Directive,
|
|
@@ -22,5 +22,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
22
22
|
}], propDecorators: { resetConnection: [{
|
|
23
23
|
type: HostListener,
|
|
24
24
|
args: ['document:mouseup']
|
|
25
|
+
}, {
|
|
26
|
+
type: HostListener,
|
|
27
|
+
args: ['document:touchend']
|
|
25
28
|
}] } });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1zdmctY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9yb290LXN2Zy1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBR3BFLGlDQUFpQztBQUVqQyxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRVUsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FZdEQ7SUFWQyw2Q0FBNkM7SUFHbkMsZUFBZTtRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFOUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLGtCQUFrQixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtTQUN2QztJQUNILENBQUM7K0dBWlUsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7OEJBT2xDLGVBQWU7c0JBRnhCLFlBQVk7dUJBQUMsa0JBQWtCOztzQkFDL0IsWUFBWTt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGbG93U3RhdHVzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zsb3ctc3RhdHVzLnNlcnZpY2UnO1xuXG5cbi8vIFRPRE86IHRvbyBnZW5lcmFsIHB1cnBvc2UgbmFuZVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnc3ZnW3Jvb3RTdmdDb250ZXh0XScgfSlcbmV4cG9ydCBjbGFzcyBSb290U3ZnQ29udGV4dERpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZmxvd1N0YXR1c1NlcnZpY2UgPSBpbmplY3QoRmxvd1N0YXR1c1NlcnZpY2UpXG5cbiAgLy8gVE9ETzogY2hlY2sgZm9yIG11bHRpcGxlIGluc3RhbmNlcyBvbiBwYWdlXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDp0b3VjaGVuZCcpXG4gIHByb3RlY3RlZCByZXNldENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5mbG93U3RhdHVzU2VydmljZS5zdGF0dXMoKVxuXG4gICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tc3RhcnQnKSB7XG4gICAgICB0aGlzLmZsb3dTdGF0dXNTZXJ2aWNlLnNldElkbGVTdGF0dXMoKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
36
36
|
type: HostListener,
|
|
37
37
|
args: ['mousedown']
|
|
38
38
|
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVVLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQ2pELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzNDLGVBQVUsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFDdEQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtLQW1CL0Q7SUFoQlcsV0FBVztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDNUIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUNyQztJQUNILENBQUM7SUFFTyxNQUFNO1FBQ1osSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUE7U0FDakM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQTtTQUM3QjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQzsrR0F0QlUsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFOzhCQVEzQixXQUFXO3NCQURwQixZQUFZO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRnZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZWRnZS9lZGdlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEZsb3dFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zsb3ctZW50aXR5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9ub2RlL25vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LXNldHRpbmdzLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbc2VsZWN0YWJsZV0nIH0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZURpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZmxvd1NldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKVxuICBwcml2YXRlIHNlbGVjdGlvblNlcnZpY2UgPSBpbmplY3QoU2VsZWN0aW9uU2VydmljZSlcbiAgcHJpdmF0ZSBwYXJlbnRFZGdlID0gaW5qZWN0KEVkZ2VDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgcHJpdmF0ZSBwYXJlbnROb2RlID0gaW5qZWN0KE5vZGVDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSlcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nKVxuICBwcm90ZWN0ZWQgb25Nb3VzZWRvd24oKSB7XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5lbnRpdHkoKVxuICAgIGlmIChlbnRpdHkgJiYgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmVudGl0aWVzU2VsZWN0YWJsZSgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0KGVudGl0eSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVudGl0eSgpOiBGbG93RW50aXR5IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMucGFyZW50Tm9kZSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZS5ub2RlTW9kZWxcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFyZW50RWRnZSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50RWRnZS5tb2RlbFxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
import { Directive, ElementRef, computed, inject } from '@angular/core';
|
|
2
2
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { fromEvent, map } from 'rxjs';
|
|
4
3
|
import { RootSvgReferenceDirective } from './reference.directive';
|
|
4
|
+
import { RootPointerDirective } from './root-pointer.directive';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class SpacePointContextDirective {
|
|
7
7
|
constructor() {
|
|
8
|
+
this.pointerMovementDirective = inject(RootPointerDirective);
|
|
9
|
+
this.rootSvg = inject(RootSvgReferenceDirective).element;
|
|
10
|
+
this.host = inject(ElementRef).nativeElement;
|
|
8
11
|
/**
|
|
9
12
|
* Signal with current mouse position in svg space
|
|
10
13
|
*/
|
|
11
14
|
this.svgCurrentSpacePoint = computed(() => {
|
|
12
|
-
const movement = this.
|
|
15
|
+
const movement = this.pointerMovement();
|
|
16
|
+
if (!movement) {
|
|
17
|
+
return { x: 0, y: 0 };
|
|
18
|
+
}
|
|
13
19
|
const point = this.rootSvg.createSVGPoint();
|
|
14
20
|
point.x = movement.x;
|
|
15
21
|
point.y = movement.y;
|
|
16
22
|
return point.matrixTransform(this.host.getScreenCTM().inverse());
|
|
17
23
|
});
|
|
18
|
-
this.
|
|
19
|
-
this.host = inject(ElementRef).nativeElement;
|
|
20
|
-
this.mouseMovement = toSignal(fromEvent(this.rootSvg, 'mousemove').pipe(map(event => ({ x: event.clientX, y: event.clientY }))), { initialValue: { x: 0, y: 0 } });
|
|
24
|
+
this.pointerMovement = toSignal(this.pointerMovementDirective.pointerMovement$);
|
|
21
25
|
}
|
|
22
26
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpacePointContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
23
27
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SpacePointContextDirective, selector: "g[spacePointContext]", ngImport: i0 }); }
|
|
@@ -26,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
26
30
|
type: Directive,
|
|
27
31
|
args: [{ selector: 'g[spacePointContext]' }]
|
|
28
32
|
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2UtcG9pbnQtY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9zcGFjZS1wb2ludC1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHaEUsTUFBTSxPQUFPLDBCQUEwQjtJQUR2QztRQUVVLDZCQUF3QixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQ3ZELFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbkQsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFBO1FBRXhFOztXQUVHO1FBQ0kseUJBQW9CLEdBQWtCLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO1lBRXZDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO2FBQ3RCO1lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQTtZQUMzQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUE7WUFDcEIsS0FBSyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBRXBCLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDbkUsQ0FBQyxDQUFDLENBQUE7UUFFSyxvQkFBZSxHQUFHLFFBQVEsQ0FDL0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixDQUMvQyxDQUFBO0tBQ0Y7K0dBekJZLDBCQUEwQjttR0FBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUR0QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBTaWduYWwsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSB9IGZyb20gJy4vcmVmZXJlbmNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJvb3RQb2ludGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9yb290LXBvaW50ZXIuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZ1tzcGFjZVBvaW50Q29udGV4dF0nIH0pXG5leHBvcnQgY2xhc3MgU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUge1xuICBwcml2YXRlIHBvaW50ZXJNb3ZlbWVudERpcmVjdGl2ZSA9IGluamVjdChSb290UG9pbnRlckRpcmVjdGl2ZSlcbiAgcHJpdmF0ZSByb290U3ZnID0gaW5qZWN0KFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUpLmVsZW1lbnRcbiAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHR0VsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50XG5cbiAgLyoqXG4gICAqIFNpZ25hbCB3aXRoIGN1cnJlbnQgbW91c2UgcG9zaXRpb24gaW4gc3ZnIHNwYWNlXG4gICAqL1xuICBwdWJsaWMgc3ZnQ3VycmVudFNwYWNlUG9pbnQ6IFNpZ25hbDxQb2ludD4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbW92ZW1lbnQgPSB0aGlzLnBvaW50ZXJNb3ZlbWVudCgpXG5cbiAgICBpZiAoIW1vdmVtZW50KSB7XG4gICAgICByZXR1cm4geyB4OiAwLCB5OiAwIH1cbiAgICB9XG5cbiAgICBjb25zdCBwb2ludCA9IHRoaXMucm9vdFN2Zy5jcmVhdGVTVkdQb2ludCgpXG4gICAgcG9pbnQueCA9IG1vdmVtZW50LnhcbiAgICBwb2ludC55ID0gbW92ZW1lbnQueVxuXG4gICAgcmV0dXJuIHBvaW50Lm1hdHJpeFRyYW5zZm9ybSh0aGlzLmhvc3QuZ2V0U2NyZWVuQ1RNKCkhLmludmVyc2UoKSlcbiAgfSlcblxuICBwdWJsaWMgcG9pbnRlck1vdmVtZW50ID0gdG9TaWduYWwoXG4gICAgdGhpcy5wb2ludGVyTW92ZW1lbnREaXJlY3RpdmUucG9pbnRlck1vdmVtZW50JCxcbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LW5vZGUtZXZlbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2ludGVyZmFjZXMvY29tcG9uZW50LW5vZGUtZXZlbnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ3VzdG9tTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9wdWJsaWMtY29tcG9uZW50cy9jdXN0b20tbm9kZS5jb21wb25lbnRcIjtcblxudHlwZSBFdmVudEluZm88VD4gPSBUIGV4dGVuZHMgRXZlbnRFbWl0dGVyPGluZmVyIFU+ID8gVSA6IG5ldmVyO1xuXG50eXBlIEV2ZW50S2V5czxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBFdmVudEVtaXR0ZXI8YW55PiA/IEsgOiBuZXZlclxufVtrZXlvZiBUXTtcblxudHlwZSBFdmVudFNoYXBlPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IHsgZXZlbnROYW1lOiBQLCBldmVudFBheWxvYWQ6IEV2ZW50SW5mbzxUW1BdPiB9XG59W0tdO1xuXG50eXBlIEV2ZW50c0Zyb21Db21wb25lbnQ8VD4gPSBFdmVudFNoYXBlPFQsIEV2ZW50S2V5czxUPj47XG5cbi8qKlxuICogRXZlbnQgb2YgY3VzdG9tIGNvbXBvbmVudCBub2RlXG4gKlxuICogR2VuZXJpYyBhY2NlcHRzIGFycmF5IG9mIGN1c3RvbSBjb21wb25lbnRzIGFuZCBtZXJnZSB0aGVpciBldmVudCBlbWl0dGVycyBmb3IgdHlwZS1zYWZlXG4gKiBldmVudCBoYW5kbGluZ1xuICpcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IHR5cGUgQ29tcG9uZW50Tm9kZUV2ZW50PFQgZXh0ZW5kcyBDdXN0b21Ob2RlQ29tcG9uZW50W10+ID0geyBub2RlSWQ6IHN0cmluZyB9ICYge1xuICBbSSBpbiBrZXlvZiBUXTogRXZlbnRzRnJvbUNvbXBvbmVudDxUW0ldPlxufVtudW1iZXJdO1xuXG5leHBvcnQgdHlwZSBBbnlDb21wb25lbnROb2RlRXZlbnQgPSB7XG4gIG5vZGVJZDogc3RyaW5nXG4gIGV2ZW50TmFtZTogc3RyaW5nXG4gIGV2ZW50UGF5bG9hZDogdW5rbm93blxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVHlwZSwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgUG9pbnQgfSBmcm9tIFwiLi9wb2ludC5pbnRlcmZhY2VcIlxuaW1wb3J0IHsgQ3VzdG9tTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9wdWJsaWMtY29tcG9uZW50cy9jdXN0b20tbm9kZS5jb21wb25lbnRcIlxuXG5leHBvcnQgdHlwZSBOb2RlPFQgPSB1bmtub3duPiA9IFNoYXJlZE5vZGUgJiAoXG4gIERlZmF1bHROb2RlIHxcbiAgSHRtbFRlbXBsYXRlTm9kZTxUPiB8XG4gIENvbXBvbmVudE5vZGU8VD5cbilcbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkTm9kZSB7XG4gIGlkOiBzdHJpbmdcbiAgcG9pbnQ6IFBvaW50XG4gIGRyYWdnYWJsZT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0Tm9kZSB7XG4gIHR5cGU6ICdkZWZhdWx0J1xuICB0ZXh0Pzogc3RyaW5nXG4gIHdpZHRoPzogbnVtYmVyXG4gIGhlaWdodD86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh0bWxUZW1wbGF0ZU5vZGU8VCA9IHVua25vd24+IHtcbiAgdHlwZTogJ2h0bWwtdGVtcGxhdGUnXG4gIGRhdGE/OiBUXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50Tm9kZTxUID0gdW5rbm93bj4ge1xuICB0eXBlOiBUeXBlPEN1c3RvbU5vZGVDb21wb25lbnQ8VD4+XG4gIGRhdGE/OiBUXG59XG4iXX0=
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import { computed, inject, signal } from '@angular/core';
|
|
2
2
|
import { isDefined } from '../utils/is-defined';
|
|
3
|
-
import { toObservable } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { FlowSettingsService } from '../services/flow-settings.service';
|
|
5
|
+
import { BehaviorSubject, animationFrameScheduler, observeOn } from 'rxjs';
|
|
6
|
+
import { CustomNodeComponent } from '../public-components/custom-node.component';
|
|
5
7
|
export class NodeModel {
|
|
8
|
+
static { this.defaultTypeSize = {
|
|
9
|
+
width: 100,
|
|
10
|
+
height: 50
|
|
11
|
+
}; }
|
|
6
12
|
constructor(node) {
|
|
7
13
|
this.node = node;
|
|
8
14
|
this.flowSettingsService = inject(FlowSettingsService);
|
|
9
|
-
this.
|
|
10
|
-
this.
|
|
15
|
+
this.internalPoint$ = new BehaviorSubject({ x: 0, y: 0 });
|
|
16
|
+
this.throttledPoint$ = this.internalPoint$.pipe(observeOn(animationFrameScheduler));
|
|
17
|
+
this.point = toSignal(this.throttledPoint$, {
|
|
18
|
+
initialValue: this.internalPoint$.getValue()
|
|
19
|
+
});
|
|
20
|
+
this.point$ = this.throttledPoint$;
|
|
11
21
|
this.size = signal({ width: 0, height: 0 });
|
|
12
22
|
this.renderOrder = signal(0);
|
|
13
23
|
this.selected = signal(false);
|
|
@@ -21,9 +31,19 @@ export class NodeModel {
|
|
|
21
31
|
this.draggable = true;
|
|
22
32
|
// disabled for configuration for now
|
|
23
33
|
this.magnetRadius = 20;
|
|
24
|
-
this.
|
|
34
|
+
this.isComponentType = CustomNodeComponent.isPrototypeOf(this.node.type);
|
|
35
|
+
this.componentTypeInputs = computed(() => {
|
|
36
|
+
return {
|
|
37
|
+
node: this.node,
|
|
38
|
+
_selected: this.selected()
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
this.setPoint(node.point);
|
|
25
42
|
if (isDefined(node.draggable))
|
|
26
43
|
this.draggable = node.draggable;
|
|
27
44
|
}
|
|
45
|
+
setPoint(point) {
|
|
46
|
+
this.internalPoint$.next(point);
|
|
47
|
+
}
|
|
28
48
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvbm9kZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVEsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFHbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNENBQTRDLENBQUE7QUFFaEYsTUFBTSxPQUFPLFNBQVM7YUFDTixvQkFBZSxHQUFHO1FBQzlCLEtBQUssRUFBRSxHQUFHO1FBQ1YsTUFBTSxFQUFFLEVBQUU7S0FDWCxBQUg0QixDQUc1QjtJQStDRCxZQUNTLElBQWE7UUFBYixTQUFJLEdBQUosSUFBSSxDQUFTO1FBOUNkLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRWpELG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRXBELG9CQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2hELFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUNuQyxDQUFBO1FBRU0sVUFBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzVDLFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRTtTQUM3QyxDQUFDLENBQUE7UUFFSyxXQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUU5QixTQUFJLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUV0QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUV2QixhQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLGNBQVMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZDLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUV6RiwyREFBMkQ7UUFDcEQsbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xGLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVsRixZQUFPLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQTtRQUVuQyxhQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVyQyxjQUFTLEdBQUcsSUFBSSxDQUFBO1FBRXZCLHFDQUFxQztRQUNyQixpQkFBWSxHQUFHLEVBQUUsQ0FBQTtRQUUxQixvQkFBZSxHQUFHLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRW5FLHdCQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDekMsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7YUFDM0IsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBS0EsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFekIsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtJQUNoRSxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQVk7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSdcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJy4uL3V0aWxzL2lzLWRlZmluZWQnXG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnXG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4vaGFuZGxlLm1vZGVsJ1xuaW1wb3J0IHsgRmxvd0VudGl0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmxvdy1lbnRpdHkuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgRmxvd1NldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zsb3ctc2V0dGluZ3Muc2VydmljZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIG9ic2VydmVPbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgQ3VzdG9tTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL3B1YmxpYy1jb21wb25lbnRzL2N1c3RvbS1ub2RlLmNvbXBvbmVudCdcblxuZXhwb3J0IGNsYXNzIE5vZGVNb2RlbDxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBGbG93RW50aXR5IHtcbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0VHlwZVNpemUgPSB7XG4gICAgd2lkdGg6IDEwMCxcbiAgICBoZWlnaHQ6IDUwXG4gIH1cblxuICBwcml2YXRlIGZsb3dTZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoRmxvd1NldHRpbmdzU2VydmljZSlcblxuICBwcml2YXRlIGludGVybmFsUG9pbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7IHg6IDAsIHk6IDAgfSlcblxuICBwcml2YXRlIHRocm90dGxlZFBvaW50JCA9IHRoaXMuaW50ZXJuYWxQb2ludCQucGlwZShcbiAgICBvYnNlcnZlT24oYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpXG4gIClcblxuICBwdWJsaWMgcG9pbnQgPSB0b1NpZ25hbCh0aGlzLnRocm90dGxlZFBvaW50JCwge1xuICAgIGluaXRpYWxWYWx1ZTogdGhpcy5pbnRlcm5hbFBvaW50JC5nZXRWYWx1ZSgpXG4gIH0pXG5cbiAgcHVibGljIHBvaW50JCA9IHRoaXMudGhyb3R0bGVkUG9pbnQkO1xuXG4gIHB1YmxpYyBzaXplID0gc2lnbmFsKHsgd2lkdGg6IDAsIGhlaWdodDogMCB9KVxuXG4gIHB1YmxpYyByZW5kZXJPcmRlciA9IHNpZ25hbCgwKVxuXG4gIHB1YmxpYyBzZWxlY3RlZCA9IHNpZ25hbChmYWxzZSlcbiAgcHVibGljIHNlbGVjdGVkJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNlbGVjdGVkKVxuXG4gIHB1YmxpYyBwb2ludFRyYW5zZm9ybSA9IGNvbXB1dGVkKCgpID0+IGB0cmFuc2xhdGUoJHt0aGlzLnBvaW50KCkueH0sICR7dGhpcy5wb2ludCgpLnl9KWApXG5cbiAgLy8gTm93IHNvdXJjZSBhbmQgaGFuZGxlIHBvc2l0aW9ucyBkZXJpdmVkIGZyb20gcGFyZW50IGZsb3dcbiAgcHVibGljIHNvdXJjZVBvc2l0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmhhbmRsZVBvc2l0aW9ucygpLnNvdXJjZSlcbiAgcHVibGljIHRhcmdldFBvc2l0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmhhbmRsZVBvc2l0aW9ucygpLnRhcmdldClcblxuICBwdWJsaWMgaGFuZGxlcyA9IHNpZ25hbDxIYW5kbGVNb2RlbFtdPihbXSlcblxuICBwdWJsaWMgaGFuZGxlcyQgPSB0b09ic2VydmFibGUodGhpcy5oYW5kbGVzKVxuXG4gIHB1YmxpYyBkcmFnZ2FibGUgPSB0cnVlXG5cbiAgLy8gZGlzYWJsZWQgZm9yIGNvbmZpZ3VyYXRpb24gZm9yIG5vd1xuICBwdWJsaWMgcmVhZG9ubHkgbWFnbmV0UmFkaXVzID0gMjBcblxuICBwdWJsaWMgaXNDb21wb25lbnRUeXBlID0gQ3VzdG9tTm9kZUNvbXBvbmVudC5pc1Byb3RvdHlwZU9mKHRoaXMubm9kZS50eXBlKVxuXG4gIHB1YmxpYyBjb21wb25lbnRUeXBlSW5wdXRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBub2RlOiB0aGlzLm5vZGUsXG4gICAgICBfc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQoKVxuICAgIH1cbiAgfSlcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbm9kZTogTm9kZTxUPlxuICApIHtcbiAgICB0aGlzLnNldFBvaW50KG5vZGUucG9pbnQpXG5cbiAgICBpZiAoaXNEZWZpbmVkKG5vZGUuZHJhZ2dhYmxlKSkgdGhpcy5kcmFnZ2FibGUgPSBub2RlLmRyYWdnYWJsZVxuICB9XG5cbiAgcHVibGljIHNldFBvaW50KHBvaW50OiBQb2ludCkge1xuICAgIHRoaXMuaW50ZXJuYWxQb2ludCQubmV4dChwb2ludCk7XG4gIH1cbn1cbiJdfQ==
|