ngx-vflow 0.13.0-0 → 0.13.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 +3 -3
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +13 -4
- package/esm2022/lib/vflow/directives/root-pointer.directive.mjs +1 -1
- package/esm2022/lib/vflow/directives/selectable.directive.mjs +5 -2
- package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +124 -180
- package/esm2022/lib/vflow/services/draggable.service.mjs +40 -19
- package/esm2022/lib/vflow/services/keyboard.service.mjs +45 -0
- package/esm2022/lib/vflow/services/node-changes.service.mjs +6 -7
- package/esm2022/lib/vflow/services/selection.service.mjs +12 -5
- package/esm2022/lib/vflow/types/keyboard-action.type.mjs +2 -0
- package/esm2022/lib/vflow/utils/get-os.mjs +24 -0
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ngx-vflow.mjs +257 -214
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/components/vflow/vflow.component.d.ts +4 -1
- package/lib/vflow/directives/root-pointer.directive.d.ts +10 -16
- package/lib/vflow/directives/space-point-context.directive.d.ts +1 -15
- package/lib/vflow/models/edge.model.d.ts +17 -1
- package/lib/vflow/public-components/resizable/resizable.component.d.ts +6 -11
- package/lib/vflow/services/draggable.service.d.ts +2 -0
- package/lib/vflow/services/keyboard.service.d.ts +11 -0
- package/lib/vflow/services/selection.service.d.ts +1 -0
- package/lib/vflow/types/keyboard-action.type.d.ts +2 -0
- package/lib/vflow/utils/get-os.d.ts +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Injectable, signal } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { fromEvent, merge, switchMap, tap } from 'rxjs';
|
|
4
|
+
import { getOS } from '../utils/get-os';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class KeyboardService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.actions = signal({
|
|
9
|
+
multiSelection: [
|
|
10
|
+
getOS() === 'macos' ? 'MetaLeft' : 'ControlLeft',
|
|
11
|
+
getOS() === 'macos' ? 'MetaRight' : 'ControlRight',
|
|
12
|
+
]
|
|
13
|
+
});
|
|
14
|
+
this.actionsActive = {
|
|
15
|
+
multiSelection: false
|
|
16
|
+
};
|
|
17
|
+
toObservable(this.actions).pipe(switchMap(() => merge(fromEvent(document, 'keydown').pipe(tap(event => {
|
|
18
|
+
for (const action in this.actions()) {
|
|
19
|
+
const keyCodes = this.actions()[action] ?? [];
|
|
20
|
+
if (keyCodes.includes(event.code)) {
|
|
21
|
+
this.actionsActive[action] = true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
})), fromEvent(document, 'keyup').pipe(tap(event => {
|
|
25
|
+
for (const action in this.actions()) {
|
|
26
|
+
const keyCodes = this.actions()[action] ?? [];
|
|
27
|
+
if (keyCodes.includes(event.code)) {
|
|
28
|
+
this.actionsActive[action] = false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
})))), takeUntilDestroyed()).subscribe();
|
|
32
|
+
}
|
|
33
|
+
setShortcuts(newActions) {
|
|
34
|
+
this.actions.update((actions) => ({ ...actions, ...newActions }));
|
|
35
|
+
}
|
|
36
|
+
isActiveAction(action) {
|
|
37
|
+
return this.actionsActive[action];
|
|
38
|
+
}
|
|
39
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KeyboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
40
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KeyboardService }); }
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KeyboardService, decorators: [{
|
|
43
|
+
type: Injectable
|
|
44
|
+
}], ctorParameters: function () { return []; } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9rZXlib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBR3hDLE1BQU0sT0FBTyxlQUFlO0lBWTFCO1FBWFEsWUFBTyxHQUFzQyxNQUFNLENBQUM7WUFDMUQsY0FBYyxFQUFFO2dCQUNkLEtBQUssRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUNoRCxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYzthQUNuRDtTQUNGLENBQUMsQ0FBQztRQUVLLGtCQUFhLEdBQW9DO1lBQ3ZELGNBQWMsRUFBRSxLQUFLO1NBQ3RCLENBQUM7UUFHQSxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDN0IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNiLEtBQUssQ0FDSCxTQUFTLENBQWdCLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBd0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFaEUsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUF3QixDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUNyRDthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsRUFFRCxTQUFTLENBQWdCLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzlDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBd0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFaEUsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUF3QixDQUFDLEdBQUcsS0FBSyxDQUFDO2lCQUN0RDthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUNGLEVBQ0Qsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU0sWUFBWSxDQUFDLFVBQTZCO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLGNBQWMsQ0FBQyxNQUFzQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbkMsQ0FBQzsrR0FuRFUsZUFBZTttSEFBZixlQUFlOzs0RkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2V5Ym9hcmRBY3Rpb24sIEtleWJvYXJkU2hvcnRjdXRzIH0gZnJvbSAnLi4vdHlwZXMva2V5Ym9hcmQtYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0T1MgfSBmcm9tICcuLi91dGlscy9nZXQtb3MnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgS2V5Ym9hcmRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBhY3Rpb25zOiBXcml0YWJsZVNpZ25hbDxLZXlib2FyZFNob3J0Y3V0cz4gPSBzaWduYWwoe1xuICAgIG11bHRpU2VsZWN0aW9uOiBbXG4gICAgICBnZXRPUygpID09PSAnbWFjb3MnID8gJ01ldGFMZWZ0JyA6ICdDb250cm9sTGVmdCcsXG4gICAgICBnZXRPUygpID09PSAnbWFjb3MnID8gJ01ldGFSaWdodCcgOiAnQ29udHJvbFJpZ2h0JyxcbiAgICBdXG4gIH0pO1xuXG4gIHByaXZhdGUgYWN0aW9uc0FjdGl2ZTogUmVjb3JkPEtleWJvYXJkQWN0aW9uLCBib29sZWFuPiA9IHtcbiAgICBtdWx0aVNlbGVjdGlvbjogZmFsc2VcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0b09ic2VydmFibGUodGhpcy5hY3Rpb25zKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKS5waXBlKFxuICAgICAgICAgICAgdGFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gaW4gdGhpcy5hY3Rpb25zKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlDb2RlcyA9IHRoaXMuYWN0aW9ucygpW2FjdGlvbiBhcyBLZXlib2FyZEFjdGlvbl0gPz8gW107XG5cbiAgICAgICAgICAgICAgICBpZiAoa2V5Q29kZXMuaW5jbHVkZXMoZXZlbnQuY29kZSkpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uc0FjdGl2ZVthY3Rpb24gYXMgS2V5Ym9hcmRBY3Rpb25dID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcblxuICAgICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleXVwJykucGlwZShcbiAgICAgICAgICAgIHRhcChldmVudCA9PiB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgYWN0aW9uIGluIHRoaXMuYWN0aW9ucygpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5Q29kZXMgPSB0aGlzLmFjdGlvbnMoKVthY3Rpb24gYXMgS2V5Ym9hcmRBY3Rpb25dID8/IFtdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGtleUNvZGVzLmluY2x1ZGVzKGV2ZW50LmNvZGUpKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbnNBY3RpdmVbYWN0aW9uIGFzIEtleWJvYXJkQWN0aW9uXSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2hvcnRjdXRzKG5ld0FjdGlvbnM6IEtleWJvYXJkU2hvcnRjdXRzKSB7XG4gICAgdGhpcy5hY3Rpb25zLnVwZGF0ZSgoYWN0aW9ucykgPT4gKHsgLi4uYWN0aW9ucywgLi4ubmV3QWN0aW9ucyB9KSk7XG4gIH1cblxuICBwdWJsaWMgaXNBY3RpdmVBY3Rpb24oYWN0aW9uOiBLZXlib2FyZEFjdGlvbikge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbnNBY3RpdmVbYWN0aW9uXVxuICB9XG59XG4iXX0=
|
|
@@ -14,12 +14,11 @@ export class NodesChangeService {
|
|
|
14
14
|
// Check for nodes list change and watch for specific node from this list change its position
|
|
15
15
|
switchMap((nodes) => merge(...nodes.map(node => node.point$.pipe(
|
|
16
16
|
// skip initial position from signal
|
|
17
|
-
skip(1), map(() => node))))),
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
]));
|
|
17
|
+
skip(1), map(() => node))))), map((changedNode) => {
|
|
18
|
+
return this.entitiesService.nodes()
|
|
19
|
+
.filter(node => node === changedNode || node.selected())
|
|
20
|
+
.map(node => ({ type: 'position', id: node.node.id, point: node.point() }));
|
|
21
|
+
}));
|
|
23
22
|
this.nodeSizeChange$ = toObservable(this.entitiesService.nodes)
|
|
24
23
|
.pipe(switchMap((nodes) => merge(...nodes.map(node => node.size$.pipe(skip(1), map(() => node))))), map(changedNode => [
|
|
25
24
|
{ type: 'size', id: changedNode.node.id, size: changedNode.size() }
|
|
@@ -43,4 +42,4 @@ export class NodesChangeService {
|
|
|
43
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodesChangeService, decorators: [{
|
|
44
43
|
type: Injectable
|
|
45
44
|
}] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGFuZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvbm9kZS1jaGFuZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksR0FBRyxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBYyxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFPLE1BQU0sTUFBTSxDQUFDOztBQUd2SSxtREFBbUQ7QUFDbkQseUNBQXlDO0FBQ3pDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFBO0FBRzlCLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRTdDLHlCQUFvQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQzthQUN0RSxJQUFJO1FBQ0gsNkZBQTZGO1FBQzdGLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2xCLEtBQUssQ0FDSCxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQ2Qsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2hCLENBQ0YsQ0FDRixDQUNGLEVBQ0QsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTtpQkFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ3ZELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQy9FLENBQUMsQ0FBQyxDQUNnQyxDQUFBO1FBRTVCLG9CQUFlLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO2FBQ2pFLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNsQixLQUFLLENBQ0gsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2hCLENBQ0YsQ0FDRixDQUNGLEVBQ0QsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDakIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFO1NBQ3BFLENBQUMsQ0FDZ0MsQ0FBQTtRQUU1QixtQkFBYyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQzthQUNoRSxJQUFJLENBQ0gsUUFBUSxFQUFFLEVBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUN6QixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ2hELEVBQ0QsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUNqQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNaLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQ3ZELENBQ2lDLENBQUE7UUFFNUIsc0JBQWlCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO2FBQ25FLElBQUksQ0FDSCxRQUFRLEVBQUUsRUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQ3pCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDaEQsRUFDRCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ2pDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1osS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDMUQsQ0FDaUMsQ0FBQTtRQUU1Qix3QkFBbUIsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7YUFDckUsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2xCLEtBQUssQ0FDSCxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2pCLG9CQUFvQixFQUFFLEVBQ3RCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2hCLENBQ0YsQ0FDRixDQUNGLEVBQ0QsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUNuQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUU7U0FDOUUsQ0FBQyxDQUNnQyxDQUFBO1FBRXRCLGFBQVEsR0FBNkIsS0FBSyxDQUN4RCxJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLG1CQUFtQixDQUN6QixDQUFDLElBQUk7UUFDSixtREFBbUQ7UUFDbkQsNkNBQTZDO1FBQzdDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsQ0FDL0MsQ0FBQTtLQUNGOytHQTlGWSxrQkFBa0I7bUhBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBhc3luY1NjaGVkdWxlciwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBtZXJnZSwgb2JzZXJ2ZU9uLCBwYWlyd2lzZSwgc2tpcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGVDaGFuZ2UgfSBmcm9tICcuLi90eXBlcy9ub2RlLWNoYW5nZS50eXBlJztcblxuLy8gdGhpcyBkZWxheSBmaXhlcyB0aGUgY2FzZXMgd2hlbiBjaGFuZ2UgdHJpZ2dlcmVkXG4vLyBidXQgdGhlIGZsb3cgbm90IHlldCBmeWxseSByZS1yZW5kZXJlZFxuY29uc3QgREVMQVlfRk9SX1NDSEVEVUxFUiA9IDI1XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOb2Rlc0NoYW5nZVNlcnZpY2Uge1xuICBwcm90ZWN0ZWQgZW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpXG5cbiAgcHJvdGVjdGVkIG5vZGVzUG9zaXRpb25DaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKVxuICAgIC5waXBlKFxuICAgICAgLy8gQ2hlY2sgZm9yIG5vZGVzIGxpc3QgY2hhbmdlIGFuZCB3YXRjaCBmb3Igc3BlY2lmaWMgbm9kZSBmcm9tIHRoaXMgbGlzdCBjaGFuZ2UgaXRzIHBvc2l0aW9uXG4gICAgICBzd2l0Y2hNYXAoKG5vZGVzKSA9PlxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAuLi5ub2Rlcy5tYXAobm9kZSA9PlxuICAgICAgICAgICAgbm9kZS5wb2ludCQucGlwZShcbiAgICAgICAgICAgICAgLy8gc2tpcCBpbml0aWFsIHBvc2l0aW9uIGZyb20gc2lnbmFsXG4gICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgIG1hcCgoKSA9PiBub2RlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIG1hcCgoY2hhbmdlZE5vZGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKClcbiAgICAgICAgICAuZmlsdGVyKG5vZGUgPT4gbm9kZSA9PT0gY2hhbmdlZE5vZGUgfHwgbm9kZS5zZWxlY3RlZCgpKVxuICAgICAgICAgIC5tYXAobm9kZSA9PiAoeyB0eXBlOiAncG9zaXRpb24nLCBpZDogbm9kZS5ub2RlLmlkLCBwb2ludDogbm9kZS5wb2ludCgpIH0pKVxuICAgICAgfSlcbiAgICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPE5vZGVDaGFuZ2VbXT5cblxuICBwcm90ZWN0ZWQgbm9kZVNpemVDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKVxuICAgIC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChub2RlcykgPT5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgLi4ubm9kZXMubWFwKG5vZGUgPT5cbiAgICAgICAgICAgIG5vZGUuc2l6ZSQucGlwZShcbiAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgbWFwKCgpID0+IG5vZGUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgbWFwKGNoYW5nZWROb2RlID0+IFtcbiAgICAgICAgeyB0eXBlOiAnc2l6ZScsIGlkOiBjaGFuZ2VkTm9kZS5ub2RlLmlkLCBzaXplOiBjaGFuZ2VkTm9kZS5zaXplKCkgfVxuICAgICAgXSlcbiAgICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPE5vZGVDaGFuZ2VbXT5cblxuICBwcm90ZWN0ZWQgbm9kZUFkZENoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMpXG4gICAgLnBpcGUoXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgbWFwKChbb2xkTGlzdCwgbmV3TGlzdF0pID0+XG4gICAgICAgIG5ld0xpc3QuZmlsdGVyKG5vZGUgPT4gIW9sZExpc3QuaW5jbHVkZXMobm9kZSkpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChub2RlcykgPT4gISFub2Rlcy5sZW5ndGgpLFxuICAgICAgbWFwKChub2RlcykgPT5cbiAgICAgICAgbm9kZXMubWFwKG5vZGUgPT4gKHsgdHlwZTogJ2FkZCcsIGlkOiBub2RlLm5vZGUuaWQgfSkpXG4gICAgICApXG4gICAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+XG5cbiAgcHJvdGVjdGVkIG5vZGVSZW1vdmVDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKVxuICAgIC5waXBlKFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIG1hcCgoW29sZExpc3QsIG5ld0xpc3RdKSA9PlxuICAgICAgICBvbGRMaXN0LmZpbHRlcihub2RlID0+ICFuZXdMaXN0LmluY2x1ZGVzKG5vZGUpKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcigobm9kZXMpID0+ICEhbm9kZXMubGVuZ3RoKSxcbiAgICAgIG1hcCgobm9kZXMpID0+XG4gICAgICAgIG5vZGVzLm1hcChub2RlID0+ICh7IHR5cGU6ICdyZW1vdmUnLCBpZDogbm9kZS5ub2RlLmlkIH0pKVxuICAgICAgKVxuICAgICkgc2F0aXNmaWVzIE9ic2VydmFibGU8Tm9kZUNoYW5nZVtdPlxuXG4gIHByb3RlY3RlZCBub2RlU2VsZWN0ZWRDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKVxuICAgIC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChub2RlcykgPT5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgLi4ubm9kZXMubWFwKG5vZGUgPT5cbiAgICAgICAgICAgIG5vZGUuc2VsZWN0ZWQkLnBpcGUoXG4gICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgIG1hcCgoKSA9PiBub2RlKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBtYXAoKGNoYW5nZWROb2RlKSA9PiBbXG4gICAgICAgIHsgdHlwZTogJ3NlbGVjdCcsIGlkOiBjaGFuZ2VkTm9kZS5ub2RlLmlkLCBzZWxlY3RlZDogY2hhbmdlZE5vZGUuc2VsZWN0ZWQoKSB9XG4gICAgICBdKVxuICAgICkgc2F0aXNmaWVzIE9ic2VydmFibGU8Tm9kZUNoYW5nZVtdPlxuXG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VzJDogT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+ID0gbWVyZ2UoXG4gICAgdGhpcy5ub2Rlc1Bvc2l0aW9uQ2hhbmdlJCxcbiAgICB0aGlzLm5vZGVTaXplQ2hhbmdlJCxcbiAgICB0aGlzLm5vZGVBZGRDaGFuZ2UkLFxuICAgIHRoaXMubm9kZVJlbW92ZUNoYW5nZSQsXG4gICAgdGhpcy5ub2RlU2VsZWN0ZWRDaGFuZ2UkXG4gICkucGlwZShcbiAgICAvLyB0aGlzIGZpeGVzIGEgYnVnIHdoZW4gb24gZmlyZSBub2RlIGV2ZW50IGNoYW5nZSxcbiAgICAvLyB5b3UgY2FuJ3QgZ2V0IHZhbGlkIGxpc3Qgb2YgZGV0YWNoZWQgZWRnZXNcbiAgICBvYnNlcnZlT24oYXN5bmNTY2hlZHVsZXIsIERFTEFZX0ZPUl9TQ0hFRFVMRVIpLFxuICApXG59XG4iXX0=
|
|
@@ -2,10 +2,12 @@ import { Injectable, inject } from '@angular/core';
|
|
|
2
2
|
import { FlowEntitiesService } from './flow-entities.service';
|
|
3
3
|
import { Subject, tap } from 'rxjs';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { KeyboardService } from './keyboard.service';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
export class SelectionService {
|
|
7
8
|
constructor() {
|
|
8
9
|
this.flowEntitiesService = inject(FlowEntitiesService);
|
|
10
|
+
this.keyboardService = inject(KeyboardService);
|
|
9
11
|
this.viewport$ = new Subject();
|
|
10
12
|
this.resetSelection = this.viewport$.pipe(tap(({ start, end, target }) => {
|
|
11
13
|
if (start && end && target) {
|
|
@@ -27,10 +29,15 @@ export class SelectionService {
|
|
|
27
29
|
this.viewport$.next(viewport);
|
|
28
30
|
}
|
|
29
31
|
select(entity) {
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
// ? May be not a responsibility of this method
|
|
33
|
+
// if entity already selected - do nothing
|
|
34
|
+
if (entity?.selected()) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (!this.keyboardService.isActiveAction('multiSelection')) {
|
|
38
|
+
// undo select for previously selected nodes
|
|
39
|
+
this.flowEntitiesService.entities().forEach(n => n.selected.set(false));
|
|
40
|
+
}
|
|
34
41
|
if (entity) {
|
|
35
42
|
// select passed entity
|
|
36
43
|
entity.selected.set(true);
|
|
@@ -42,4 +49,4 @@ export class SelectionService {
|
|
|
42
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionService, decorators: [{
|
|
43
50
|
type: Injectable
|
|
44
51
|
}] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFZckQsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUlVLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQ2pELG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXhDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBd0IsQ0FBQTtRQUUvQyxtQkFBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUM1QyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUM3QixJQUFJLEtBQUssSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFO2dCQUMxQixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUE7Z0JBRXBDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBRXZDLG1CQUFtQjtnQkFDbkIsTUFBTSxPQUFPLEdBQUcsS0FBSyxHQUFHLEtBQUssSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFBO2dCQUM5Qyx3REFBd0Q7Z0JBQ3hELE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtnQkFFdEQsSUFBSSxPQUFPLElBQUksZUFBZSxFQUFFO29CQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO2lCQUNsQjthQUNGO1FBQ0gsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtLQXdCZDthQWxEZ0IsVUFBSyxHQUFHLENBQUMsQUFBSixDQUFJO0lBNkJqQixXQUFXLENBQUMsUUFBOEI7UUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUF5QjtRQUNyQywrQ0FBK0M7UUFDL0MsMENBQTBDO1FBQzFDLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ3RCLE9BQU07U0FDUDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQzFELDRDQUE0QztZQUM1QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtTQUN4RTtRQUVELElBQUksTUFBTSxFQUFFO1lBQ1YsdUJBQXVCO1lBQ3ZCLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQzFCO0lBQ0gsQ0FBQzsrR0FsRFUsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZpZXdwb3J0U3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXdwb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd0VudGl0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmxvdy1lbnRpdHkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN1YmplY3QsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgS2V5Ym9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9rZXlib2FyZC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBWaWV3cG9ydEZvclNlbGVjdGlvbiB7XG4gIHN0YXJ0OiBWaWV3cG9ydFN0YXRlXG4gIGVuZDogVmlld3BvcnRTdGF0ZVxuICAvKipcbiAgICogVGFyZ2V0IG1heSBub3QgZXhpc3QgaWYgdmlld3BvcnQgY2hhbmdlIG1hZGUgcHJvZ3JhbW1hdGljYWxseVxuICAgKi9cbiAgdGFyZ2V0PzogRWxlbWVudFxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIGRlbHRhID0gNlxuXG4gIHByaXZhdGUgZmxvd0VudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKVxuICBwcml2YXRlIGtleWJvYXJkU2VydmljZSA9IGluamVjdChLZXlib2FyZFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCB2aWV3cG9ydCQgPSBuZXcgU3ViamVjdDxWaWV3cG9ydEZvclNlbGVjdGlvbj4oKVxuXG4gIHByb3RlY3RlZCByZXNldFNlbGVjdGlvbiA9IHRoaXMudmlld3BvcnQkLnBpcGUoXG4gICAgdGFwKCh7IHN0YXJ0LCBlbmQsIHRhcmdldCB9KSA9PiB7XG4gICAgICBpZiAoc3RhcnQgJiYgZW5kICYmIHRhcmdldCkge1xuICAgICAgICBjb25zdCBkZWx0YSA9IFNlbGVjdGlvblNlcnZpY2UuZGVsdGFcblxuICAgICAgICBjb25zdCBkaWZmWCA9IE1hdGguYWJzKGVuZC54IC0gc3RhcnQueClcbiAgICAgICAgY29uc3QgZGlmZlkgPSBNYXRoLmFicyhlbmQueSAtIHN0YXJ0LnkpXG5cbiAgICAgICAgLy8gY2xpY2sgKG5vdCBkcmFnKVxuICAgICAgICBjb25zdCBpc0NsaWNrID0gZGlmZlggPCBkZWx0YSAmJiBkaWZmWSA8IGRlbHRhXG4gICAgICAgIC8vIGRvIG5vdCByZXNldCBpZiBldmVudCBjaGFpbiBjb250YWlucyBzZWxlY3RhYmxlIGVsZW1zXG4gICAgICAgIGNvbnN0IGlzTm90U2VsZWN0YWJsZSA9ICF0YXJnZXQuY2xvc2VzdCgnLnNlbGVjdGFibGUnKVxuXG4gICAgICAgIGlmIChpc0NsaWNrICYmIGlzTm90U2VsZWN0YWJsZSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0KG51bGwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICApLnN1YnNjcmliZSgpXG5cblxuICBwdWJsaWMgc2V0Vmlld3BvcnQodmlld3BvcnQ6IFZpZXdwb3J0Rm9yU2VsZWN0aW9uKSB7XG4gICAgdGhpcy52aWV3cG9ydCQubmV4dCh2aWV3cG9ydClcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3QoZW50aXR5OiBGbG93RW50aXR5IHwgbnVsbCkge1xuICAgIC8vID8gTWF5IGJlIG5vdCBhIHJlc3BvbnNpYmlsaXR5IG9mIHRoaXMgbWV0aG9kXG4gICAgLy8gaWYgZW50aXR5IGFscmVhZHkgc2VsZWN0ZWQgLSBkbyBub3RoaW5nXG4gICAgaWYgKGVudGl0eT8uc2VsZWN0ZWQoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmtleWJvYXJkU2VydmljZS5pc0FjdGl2ZUFjdGlvbignbXVsdGlTZWxlY3Rpb24nKSkge1xuICAgICAgLy8gdW5kbyBzZWxlY3QgZm9yIHByZXZpb3VzbHkgc2VsZWN0ZWQgbm9kZXNcbiAgICAgIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5lbnRpdGllcygpLmZvckVhY2gobiA9PiBuLnNlbGVjdGVkLnNldChmYWxzZSkpXG4gICAgfVxuXG4gICAgaWYgKGVudGl0eSkge1xuICAgICAgLy8gc2VsZWN0IHBhc3NlZCBlbnRpdHlcbiAgICAgIGVudGl0eS5zZWxlY3RlZC5zZXQodHJ1ZSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtYWN0aW9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdHlwZXMva2V5Ym9hcmQtYWN0aW9uLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEtleWJvYXJkQWN0aW9uID0gJ211bHRpU2VsZWN0aW9uJ1xuXG5leHBvcnQgdHlwZSBLZXlib2FyZFNob3J0Y3V0cyA9IFJlY29yZDxLZXlib2FyZEFjdGlvbiwgbnVsbCB8IHN0cmluZ1tdPjtcbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export function getOS() {
|
|
2
|
+
const userAgent = window.navigator.userAgent.toLowerCase();
|
|
3
|
+
const macosPlatforms = /(macintosh|macintel|macppc|mac68k|macos)/i;
|
|
4
|
+
const windowsPlatforms = /(win32|win64|windows|wince)/i;
|
|
5
|
+
const iosPlatforms = /(iphone|ipad|ipod)/i;
|
|
6
|
+
let os = null;
|
|
7
|
+
if (macosPlatforms.test(userAgent)) {
|
|
8
|
+
os = "macos";
|
|
9
|
+
}
|
|
10
|
+
else if (iosPlatforms.test(userAgent)) {
|
|
11
|
+
os = "ios";
|
|
12
|
+
}
|
|
13
|
+
else if (windowsPlatforms.test(userAgent)) {
|
|
14
|
+
os = "windows";
|
|
15
|
+
}
|
|
16
|
+
else if (/android/.test(userAgent)) {
|
|
17
|
+
os = "android";
|
|
18
|
+
}
|
|
19
|
+
else if (!os && /linux/.test(userAgent)) {
|
|
20
|
+
os = "linux";
|
|
21
|
+
}
|
|
22
|
+
return os;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL2dldC1vcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsS0FBSztJQUNuQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUMxRCxNQUFNLGNBQWMsR0FBRywyQ0FBMkMsQ0FBQTtJQUNsRSxNQUFNLGdCQUFnQixHQUFHLDhCQUE4QixDQUFBO0lBQ3ZELE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFBO0lBRTFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQTtJQUViLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUNsQyxFQUFFLEdBQUcsT0FBZ0IsQ0FBQztLQUN2QjtTQUFNLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUN2QyxFQUFFLEdBQUcsS0FBYyxDQUFDO0tBQ3JCO1NBQU0sSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDM0MsRUFBRSxHQUFHLFNBQWtCLENBQUM7S0FDekI7U0FBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDcEMsRUFBRSxHQUFHLFNBQWtCLENBQUM7S0FDekI7U0FBTSxJQUFJLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDekMsRUFBRSxHQUFHLE9BQWdCLENBQUM7S0FDdkI7SUFFRCxPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0T1MoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKClcbiAgY29uc3QgbWFjb3NQbGF0Zm9ybXMgPSAvKG1hY2ludG9zaHxtYWNpbnRlbHxtYWNwcGN8bWFjNjhrfG1hY29zKS9pXG4gIGNvbnN0IHdpbmRvd3NQbGF0Zm9ybXMgPSAvKHdpbjMyfHdpbjY0fHdpbmRvd3N8d2luY2UpL2lcbiAgY29uc3QgaW9zUGxhdGZvcm1zID0gLyhpcGhvbmV8aXBhZHxpcG9kKS9pXG5cbiAgbGV0IG9zID0gbnVsbFxuXG4gIGlmIChtYWNvc1BsYXRmb3Jtcy50ZXN0KHVzZXJBZ2VudCkpIHtcbiAgICBvcyA9IFwibWFjb3NcIiBhcyBjb25zdDtcbiAgfSBlbHNlIGlmIChpb3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpKSB7XG4gICAgb3MgPSBcImlvc1wiIGFzIGNvbnN0O1xuICB9IGVsc2UgaWYgKHdpbmRvd3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpKSB7XG4gICAgb3MgPSBcIndpbmRvd3NcIiBhcyBjb25zdDtcbiAgfSBlbHNlIGlmICgvYW5kcm9pZC8udGVzdCh1c2VyQWdlbnQpKSB7XG4gICAgb3MgPSBcImFuZHJvaWRcIiBhcyBjb25zdDtcbiAgfSBlbHNlIGlmICghb3MgJiYgL2xpbnV4Ly50ZXN0KHVzZXJBZ2VudCkpIHtcbiAgICBvcyA9IFwibGludXhcIiBhcyBjb25zdDtcbiAgfVxuXG4gIHJldHVybiBvc1xufVxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -19,6 +19,7 @@ export * from './lib/vflow/types/edge-change.type';
|
|
|
19
19
|
export * from './lib/vflow/types/position.type';
|
|
20
20
|
export * from './lib/vflow/types/background.type';
|
|
21
21
|
export * from './lib/vflow/types/connection-mode.type';
|
|
22
|
+
export * from './lib/vflow/types/keyboard-action.type';
|
|
22
23
|
// Components
|
|
23
24
|
export * from './lib/vflow/components/vflow/vflow.component';
|
|
24
25
|
export * from './lib/vflow/components/handle/handle.component';
|
|
@@ -30,4 +31,4 @@ export * from './lib/vflow/directives/template.directive';
|
|
|
30
31
|
export * from './lib/vflow/directives/connection-controller.directive';
|
|
31
32
|
export * from './lib/vflow/directives/changes-controller.directive';
|
|
32
33
|
export * from './lib/vflow/directives/selectable.directive';
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsYUFBYTtBQUNiLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHlDQUF5QyxDQUFDO0FBRXhELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLCtDQUErQyxDQUFDO0FBRTlELFFBQVE7QUFDUixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCxhQUFhO0FBQ2IsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxpRkFBaUYsQ0FBQztBQUNoRyxjQUFjLDZEQUE2RCxDQUFDO0FBRTVFLGFBQWE7QUFDYixjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLDZDQUE2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTW9kdWxlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdmZsb3cubW9kdWxlJztcblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL2VkZ2UuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvZWRnZS1sYWJlbC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9jb25uZWN0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL2Nvbm5lY3Rpb24uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvY29ubmVjdGlvbi1zZXR0aW5ncy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9oYW5kbGUtcG9zaXRpb25zLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL21hcmtlci5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgVmlld3BvcnRTdGF0ZSB9IGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvY29tcG9uZW50LW5vZGUtZXZlbnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvZml0LXZpZXctb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9vcHRpbWl6YXRpb24uaW50ZXJmYWNlJztcblxuLy8gVHlwZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL25vZGUtY2hhbmdlLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdHlwZXMvZWRnZS1jaGFuZ2UudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90eXBlcy9wb3NpdGlvbi50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL2JhY2tncm91bmQudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90eXBlcy9jb25uZWN0aW9uLW1vZGUudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90eXBlcy9rZXlib2FyZC1hY3Rpb24udHlwZSc7XG5cbi8vIENvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2NvbXBvbmVudHMvaGFuZGxlL2hhbmRsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvY3VzdG9tLW5vZGUvY3VzdG9tLW5vZGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL2N1c3RvbS1keW5hbWljLW5vZGUvY3VzdG9tLWR5bmFtaWMtbm9kZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xuXG4vLyBEaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2Nvbm5lY3Rpb24tY29udHJvbGxlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvZGlyZWN0aXZlcy9jaGFuZ2VzLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS5kaXJlY3RpdmUnO1xuIl19
|