ngx-vflow 1.16.3 → 2.0.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/README.md +35 -69
- package/fesm2022/ngx-vflow-testing.mjs +77 -67
- package/fesm2022/ngx-vflow-testing.mjs.map +1 -1
- package/fesm2022/ngx-vflow.mjs +926 -559
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/components/custom-node-base/custom-node-base.component.d.ts +1 -1
- package/lib/vflow/components/vflow/vflow.component.d.ts +18 -9
- package/lib/vflow/directives/auto-pan.directive.d.ts +16 -0
- package/lib/vflow/directives/changes-controller.directive.d.ts +13 -87
- package/lib/vflow/directives/connection-controller.directive.d.ts +8 -10
- package/lib/vflow/directives/space-point-context.directive.d.ts +2 -1
- package/lib/vflow/interfaces/component-node-event.interface.d.ts +1 -2
- package/lib/vflow/interfaces/connection-events.interface.d.ts +66 -0
- package/lib/vflow/interfaces/connection-settings.interface.d.ts +7 -1
- package/lib/vflow/interfaces/connection.interface.d.ts +0 -5
- package/lib/vflow/interfaces/curve-factory.interface.d.ts +2 -2
- package/lib/vflow/interfaces/edge-label.interface.d.ts +0 -4
- package/lib/vflow/interfaces/edge.interface.d.ts +36 -8
- package/lib/vflow/interfaces/node.interface.d.ts +44 -63
- package/lib/vflow/interfaces/selection-strategy.interface.d.ts +16 -0
- package/lib/vflow/interfaces/template-context.interface.d.ts +8 -3
- package/lib/vflow/models/connection.model.d.ts +1 -1
- package/lib/vflow/models/edge.model.d.ts +20 -23
- package/lib/vflow/models/handle.model.d.ts +1 -1
- package/lib/vflow/models/node.model.d.ts +4 -7
- package/lib/vflow/public-components/custom-node/custom-node.component.d.ts +1 -1
- package/lib/vflow/public-components/custom-template-edge/custom-template-edge.component.d.ts +2 -1
- package/lib/vflow/public-components/minimap/minimap.component.d.ts +1 -1
- package/lib/vflow/services/draggable.service.d.ts +3 -0
- package/lib/vflow/services/flow-entities.service.d.ts +2 -2
- package/lib/vflow/services/flow-settings.service.d.ts +3 -0
- package/lib/vflow/services/flow-status.service.d.ts +35 -7
- package/lib/vflow/services/selection.service.d.ts +4 -1
- package/lib/vflow/strategies/default-selection.strategy.d.ts +6 -0
- package/lib/vflow/strategies/manual-selection.strategy.d.ts +5 -0
- package/lib/vflow/types/selection-mode.type.d.ts +1 -0
- package/lib/vflow/types/unwrap-signal.type.d.ts +4 -0
- package/lib/vflow/utils/adjust-direction.d.ts +2 -6
- package/lib/vflow/utils/identity-checker/reference-identity-checker.d.ts +2 -2
- package/lib/vflow/utils/is-vflow-component.d.ts +0 -2
- package/lib/vflow/utils/signals/to-lazy-signal.d.ts +4 -4
- package/package.json +3 -7
- package/public-api.d.ts +3 -2
- package/testing/component-mocks/vflow-mock.component.d.ts +8 -6
- package/testing/directive-mocks/connection-controller-mock.directive.d.ts +8 -6
- package/esm2022/lib/vflow/components/alignment-helper/alignment-helper.component.mjs +0 -103
- package/esm2022/lib/vflow/components/background/background.component.mjs +0 -121
- package/esm2022/lib/vflow/components/connection/connection.component.mjs +0 -157
- package/esm2022/lib/vflow/components/custom-node-base/custom-node-base.component.mjs +0 -57
- package/esm2022/lib/vflow/components/default-node/default-node.component.mjs +0 -16
- package/esm2022/lib/vflow/components/defs/defs.component.mjs +0 -16
- package/esm2022/lib/vflow/components/edge/edge.component.mjs +0 -54
- package/esm2022/lib/vflow/components/edge-label/edge-label.component.mjs +0 -76
- package/esm2022/lib/vflow/components/node/node.component.mjs +0 -107
- package/esm2022/lib/vflow/components/preview-flow/draw-node.mjs +0 -100
- package/esm2022/lib/vflow/components/preview-flow/preview-flow.component.mjs +0 -62
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +0 -437
- package/esm2022/lib/vflow/constants/magic-number-to-fix-glitch-in-chrome.constant.mjs +0 -4
- package/esm2022/lib/vflow/decorators/microtask.decorator.mjs +0 -11
- package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +0 -165
- package/esm2022/lib/vflow/directives/connection-controller.directive.mjs +0 -145
- package/esm2022/lib/vflow/directives/drag-handle.directive.mjs +0 -28
- package/esm2022/lib/vflow/directives/flow-size-controller.directive.mjs +0 -40
- package/esm2022/lib/vflow/directives/handle-size-controller.directive.mjs +0 -41
- package/esm2022/lib/vflow/directives/map-context.directive.mjs +0 -116
- package/esm2022/lib/vflow/directives/node-handles-controller.directive.mjs +0 -33
- package/esm2022/lib/vflow/directives/node-resize-controller.directive.mjs +0 -37
- package/esm2022/lib/vflow/directives/pointer.directive.mjs +0 -84
- package/esm2022/lib/vflow/directives/reference.directive.mjs +0 -17
- package/esm2022/lib/vflow/directives/root-pointer.directive.mjs +0 -58
- package/esm2022/lib/vflow/directives/root-svg-context.directive.mjs +0 -35
- package/esm2022/lib/vflow/directives/selectable.directive.mjs +0 -48
- package/esm2022/lib/vflow/directives/space-point-context.directive.mjs +0 -42
- package/esm2022/lib/vflow/directives/template.directive.mjs +0 -119
- package/esm2022/lib/vflow/interfaces/alignment-helper-settings.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/box.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/component-node-event.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/connection-settings.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/connection.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/connection.internal.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/contextable.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/curve-factory.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/edge-label.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/edge.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/fit-view-options.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/flow-entity.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/intersecting-nodes-options.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/marker.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/node-preview.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/node.interface.mjs +0 -53
- package/esm2022/lib/vflow/interfaces/optimization.interface.mjs +0 -7
- package/esm2022/lib/vflow/interfaces/point.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/rect.mjs +0 -10
- package/esm2022/lib/vflow/interfaces/template-context.interface.mjs +0 -2
- package/esm2022/lib/vflow/interfaces/viewport.interface.mjs +0 -2
- package/esm2022/lib/vflow/math/edge-path/bezier-path.mjs +0 -66
- package/esm2022/lib/vflow/math/edge-path/smooth-step-path.mjs +0 -226
- package/esm2022/lib/vflow/math/edge-path/straigh-path.mjs +0 -12
- package/esm2022/lib/vflow/math/point-on-line-by-ratio.mjs +0 -12
- package/esm2022/lib/vflow/models/connection.model.mjs +0 -31
- package/esm2022/lib/vflow/models/edge-label.model.mjs +0 -8
- package/esm2022/lib/vflow/models/edge.model.mjs +0 -208
- package/esm2022/lib/vflow/models/handle.model.mjs +0 -98
- package/esm2022/lib/vflow/models/minimap.model.mjs +0 -7
- package/esm2022/lib/vflow/models/node.model.mjs +0 -181
- package/esm2022/lib/vflow/models/toolbar.model.mjs +0 -36
- package/esm2022/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.mjs +0 -25
- package/esm2022/lib/vflow/public-components/custom-node/custom-node.component.mjs +0 -24
- package/esm2022/lib/vflow/public-components/custom-template-edge/custom-template-edge.component.mjs +0 -29
- package/esm2022/lib/vflow/public-components/handle/handle.component.mjs +0 -53
- package/esm2022/lib/vflow/public-components/minimap/minimap.component.mjs +0 -108
- package/esm2022/lib/vflow/public-components/node-toolbar/node-toolbar.component.mjs +0 -73
- package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +0 -272
- package/esm2022/lib/vflow/services/component-event-bus.service.mjs +0 -18
- package/esm2022/lib/vflow/services/draggable.service.mjs +0 -124
- package/esm2022/lib/vflow/services/edge-changes.service.mjs +0 -43
- package/esm2022/lib/vflow/services/edge-rendering.service.mjs +0 -40
- package/esm2022/lib/vflow/services/flow-entities.service.mjs +0 -56
- package/esm2022/lib/vflow/services/flow-rendering.service.mjs +0 -41
- package/esm2022/lib/vflow/services/flow-settings.service.mjs +0 -33
- package/esm2022/lib/vflow/services/flow-status.service.mjs +0 -49
- package/esm2022/lib/vflow/services/handle.service.mjs +0 -30
- package/esm2022/lib/vflow/services/keyboard.service.mjs +0 -47
- package/esm2022/lib/vflow/services/node-accessor.service.mjs +0 -16
- package/esm2022/lib/vflow/services/node-changes.service.mjs +0 -41
- package/esm2022/lib/vflow/services/node-rendering.service.mjs +0 -66
- package/esm2022/lib/vflow/services/overlays.service.mjs +0 -35
- package/esm2022/lib/vflow/services/preview-flow-render-strategy.service.mjs +0 -21
- package/esm2022/lib/vflow/services/selection.service.mjs +0 -54
- package/esm2022/lib/vflow/services/viewport.service.mjs +0 -64
- package/esm2022/lib/vflow/types/background.type.mjs +0 -2
- package/esm2022/lib/vflow/types/connection-mode.type.mjs +0 -2
- package/esm2022/lib/vflow/types/edge-change.type.mjs +0 -2
- package/esm2022/lib/vflow/types/handle-type.type.mjs +0 -2
- package/esm2022/lib/vflow/types/keyboard-action.type.mjs +0 -2
- package/esm2022/lib/vflow/types/node-change.type.mjs +0 -2
- package/esm2022/lib/vflow/types/position.type.mjs +0 -2
- package/esm2022/lib/vflow/types/viewport-change-type.type.mjs +0 -2
- package/esm2022/lib/vflow/utils/add-nodes-to-edges.mjs +0 -11
- package/esm2022/lib/vflow/utils/adjust-direction.mjs +0 -30
- package/esm2022/lib/vflow/utils/align-number.mjs +0 -4
- package/esm2022/lib/vflow/utils/assert-injector.mjs +0 -27
- package/esm2022/lib/vflow/utils/event.mjs +0 -4
- package/esm2022/lib/vflow/utils/get-os.mjs +0 -24
- package/esm2022/lib/vflow/utils/get-overlapping-area.mjs +0 -6
- package/esm2022/lib/vflow/utils/get-space-points.mjs +0 -25
- package/esm2022/lib/vflow/utils/hash.mjs +0 -7
- package/esm2022/lib/vflow/utils/id.mjs +0 -5
- package/esm2022/lib/vflow/utils/identity-checker/reference-identity-checker.mjs +0 -28
- package/esm2022/lib/vflow/utils/is-callable.mjs +0 -10
- package/esm2022/lib/vflow/utils/is-defined.mjs +0 -4
- package/esm2022/lib/vflow/utils/is-group-node.mjs +0 -4
- package/esm2022/lib/vflow/utils/is-vflow-component.mjs +0 -9
- package/esm2022/lib/vflow/utils/nodes.mjs +0 -60
- package/esm2022/lib/vflow/utils/resizable.mjs +0 -11
- package/esm2022/lib/vflow/utils/round.mjs +0 -2
- package/esm2022/lib/vflow/utils/signals/extended-computed.mjs +0 -15
- package/esm2022/lib/vflow/utils/signals/to-lazy-signal.mjs +0 -35
- package/esm2022/lib/vflow/utils/to-unified-node.mjs +0 -24
- package/esm2022/lib/vflow/utils/transform-background.mjs +0 -4
- package/esm2022/lib/vflow/utils/viewport.mjs +0 -51
- package/esm2022/lib/vflow/vflow.mjs +0 -29
- package/esm2022/ngx-vflow.mjs +0 -5
- package/esm2022/public-api.mjs +0 -55
- package/esm2022/testing/component-mocks/custom-template-edge-mock.component.mjs +0 -16
- package/esm2022/testing/component-mocks/handle-mock.component.mjs +0 -26
- package/esm2022/testing/component-mocks/minimap-mock.component.mjs +0 -24
- package/esm2022/testing/component-mocks/node-toolbar-mock.component.mjs +0 -23
- package/esm2022/testing/component-mocks/resizable-mock.component.mjs +0 -27
- package/esm2022/testing/component-mocks/vflow-mock.component.mjs +0 -299
- package/esm2022/testing/directive-mocks/connection-controller-mock.directive.mjs +0 -29
- package/esm2022/testing/directive-mocks/drag-handle-mock.directive.mjs +0 -11
- package/esm2022/testing/directive-mocks/selectable-mock.directive.mjs +0 -14
- package/esm2022/testing/directive-mocks/template-mock.directive.mjs +0 -101
- package/esm2022/testing/ngx-vflow-testing.mjs +0 -5
- package/esm2022/testing/provide-custom-node-mocks.mjs +0 -60
- package/esm2022/testing/public-api.mjs +0 -13
- package/esm2022/testing/types.mjs +0 -2
- package/esm2022/testing/vflow-mocks.mjs +0 -28
- package/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.d.ts +0 -13
- package/lib/vflow/utils/to-unified-node.d.ts +0 -2
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject } from '@angular/core';
|
|
2
|
-
import { FlowEntitiesService } from './flow-entities.service';
|
|
3
|
-
import { toObservable } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { asyncScheduler, distinctUntilChanged, filter, map, merge, observeOn, pairwise, skip, switchMap, } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
// this delay fixes the cases when change triggered
|
|
7
|
-
// but the flow not yet fylly re-rendered
|
|
8
|
-
const DELAY_FOR_SCHEDULER = 25;
|
|
9
|
-
export class NodesChangeService {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.entitiesService = inject(FlowEntitiesService);
|
|
12
|
-
this.nodesPositionChange$ = toObservable(this.entitiesService.nodes).pipe(
|
|
13
|
-
// Check for nodes list change and watch for specific node from this list change its position
|
|
14
|
-
switchMap((nodes) => merge(...nodes.map((node) => node.point$.pipe(
|
|
15
|
-
// skip initial position from signal
|
|
16
|
-
skip(1), map(() => node))))), map((changedNode) => {
|
|
17
|
-
return [
|
|
18
|
-
{ type: 'position', id: changedNode.rawNode.id, point: changedNode.point() },
|
|
19
|
-
// TODO: emits even if node is not change position
|
|
20
|
-
...this.entitiesService
|
|
21
|
-
.nodes()
|
|
22
|
-
.filter((node) => node !== changedNode && node.selected())
|
|
23
|
-
.map((node) => ({ type: 'position', id: node.rawNode.id, point: node.point() })),
|
|
24
|
-
];
|
|
25
|
-
}));
|
|
26
|
-
this.nodeSizeChange$ = toObservable(this.entitiesService.nodes).pipe(switchMap((nodes) => merge(...nodes.map((node) => node.size$.pipe(skip(1), map(() => node))))), map((changedNode) => [{ type: 'size', id: changedNode.rawNode.id, size: changedNode.size() }]));
|
|
27
|
-
this.nodeAddChange$ = toObservable(this.entitiesService.nodes).pipe(pairwise(), map(([oldList, newList]) => newList.filter((node) => !oldList.includes(node))), filter((nodes) => !!nodes.length), map((nodes) => nodes.map((node) => ({ type: 'add', id: node.rawNode.id }))));
|
|
28
|
-
this.nodeRemoveChange$ = toObservable(this.entitiesService.nodes).pipe(pairwise(), map(([oldList, newList]) => oldList.filter((node) => !newList.includes(node))), filter((nodes) => !!nodes.length), map((nodes) => nodes.map((node) => ({ type: 'remove', id: node.rawNode.id }))));
|
|
29
|
-
this.nodeSelectedChange$ = toObservable(this.entitiesService.nodes).pipe(switchMap((nodes) => merge(...nodes.map((node) => node.selected$.pipe(distinctUntilChanged(), skip(1), map(() => node))))), map((changedNode) => [{ type: 'select', id: changedNode.rawNode.id, selected: changedNode.selected() }]));
|
|
30
|
-
this.changes$ = merge(this.nodesPositionChange$, this.nodeSizeChange$, this.nodeAddChange$, this.nodeRemoveChange$, this.nodeSelectedChange$).pipe(
|
|
31
|
-
// this fixes a bug when on fire node event change,
|
|
32
|
-
// you can't get valid list of detached edges
|
|
33
|
-
observeOn(asyncScheduler, DELAY_FOR_SCHEDULER));
|
|
34
|
-
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodesChangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodesChangeService }); }
|
|
37
|
-
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodesChangeService, decorators: [{
|
|
39
|
-
type: Injectable
|
|
40
|
-
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGFuZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvbm9kZS1jaGFuZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFFTCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQzs7QUFHZCxtREFBbUQ7QUFDbkQseUNBQXlDO0FBQ3pDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBRy9CLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTlDLHlCQUFvQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUk7UUFDNUUsNkZBQTZGO1FBQzdGLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2xCLEtBQUssQ0FDSCxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDZCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDaEIsQ0FDRixDQUNGLENBQ0YsRUFDRCxHQUFHLENB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ZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgYXN5bmNTY2hlZHVsZXIsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgbWVyZ2UsXG4gIG9ic2VydmVPbixcbiAgcGFpcndpc2UsXG4gIHNraXAsXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb2RlQ2hhbmdlIH0gZnJvbSAnLi4vdHlwZXMvbm9kZS1jaGFuZ2UudHlwZSc7XG5cbi8vIHRoaXMgZGVsYXkgZml4ZXMgdGhlIGNhc2VzIHdoZW4gY2hhbmdlIHRyaWdnZXJlZFxuLy8gYnV0IHRoZSBmbG93IG5vdCB5ZXQgZnlsbHkgcmUtcmVuZGVyZWRcbmNvbnN0IERFTEFZX0ZPUl9TQ0hFRFVMRVIgPSAyNTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5vZGVzQ2hhbmdlU2VydmljZSB7XG4gIHByb3RlY3RlZCBlbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIG5vZGVzUG9zaXRpb25DaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKS5waXBlKFxuICAgIC8vIENoZWNrIGZvciBub2RlcyBsaXN0IGNoYW5nZSBhbmQgd2F0Y2ggZm9yIHNwZWNpZmljIG5vZGUgZnJvbSB0aGlzIGxpc3QgY2hhbmdlIGl0cyBwb3NpdGlvblxuICAgIHN3aXRjaE1hcCgobm9kZXMpID0+XG4gICAgICBtZXJnZShcbiAgICAgICAgLi4ubm9kZXMubWFwKChub2RlKSA9PlxuICAgICAgICAgIG5vZGUucG9pbnQkLnBpcGUoXG4gICAgICAgICAgICAvLyBza2lwIGluaXRpYWwgcG9zaXRpb24gZnJvbSBzaWduYWxcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gbm9kZSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBtYXAoKGNoYW5nZWROb2RlKSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7IHR5cGU6ICdwb3NpdGlvbicsIGlkOiBjaGFuZ2VkTm9kZS5yYXdOb2RlLmlkLCBwb2ludDogY2hhbmdlZE5vZGUucG9pbnQoKSB9IGFzIE5vZGVDaGFuZ2UsXG4gICAgICAgIC8vIFRPRE86IGVtaXRzIGV2ZW4gaWYgbm9kZSBpcyBub3QgY2hhbmdlIHBvc2l0aW9uXG4gICAgICAgIC4uLih0aGlzLmVudGl0aWVzU2VydmljZVxuICAgICAgICAgIC5ub2RlcygpXG4gICAgICAgICAgLmZpbHRlcigobm9kZSkgPT4gbm9kZSAhPT0gY2hhbmdlZE5vZGUgJiYgbm9kZS5zZWxlY3RlZCgpKVxuICAgICAgICAgIC5tYXAoKG5vZGUpID0+ICh7IHR5cGU6ICdwb3NpdGlvbicsIGlkOiBub2RlLnJhd05vZGUuaWQsIHBvaW50OiBub2RlLnBvaW50KCkgfSkpIGFzIE5vZGVDaGFuZ2VbXSksXG4gICAgICBdO1xuICAgIH0pLFxuICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPE5vZGVDaGFuZ2VbXT47XG5cbiAgcHJvdGVjdGVkIG5vZGVTaXplQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcykucGlwZShcbiAgICBzd2l0Y2hNYXAoKG5vZGVzKSA9PlxuICAgICAgbWVyZ2UoXG4gICAgICAgIC4uLm5vZGVzLm1hcCgobm9kZSkgPT5cbiAgICAgICAgICBub2RlLnNpemUkLnBpcGUoXG4gICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgbWFwKCgpID0+IG5vZGUpLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICAgbWFwKChjaGFuZ2VkTm9kZSkgPT4gW3sgdHlwZTogJ3NpemUnLCBpZDogY2hhbmdlZE5vZGUucmF3Tm9kZS5pZCwgc2l6ZTogY2hhbmdlZE5vZGUuc2l6ZSgpIH1dKSxcbiAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+O1xuXG4gIHByb3RlY3RlZCBub2RlQWRkQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcykucGlwZShcbiAgICBwYWlyd2lzZSgpLFxuICAgIG1hcCgoW29sZExpc3QsIG5ld0xpc3RdKSA9PiBuZXdMaXN0LmZpbHRlcigobm9kZSkgPT4gIW9sZExpc3QuaW5jbHVkZXMobm9kZSkpKSxcbiAgICBmaWx0ZXIoKG5vZGVzKSA9PiAhIW5vZGVzLmxlbmd0aCksXG4gICAgbWFwKChub2RlcykgPT4gbm9kZXMubWFwKChub2RlKSA9PiAoeyB0eXBlOiAnYWRkJywgaWQ6IG5vZGUucmF3Tm9kZS5pZCB9KSkpLFxuICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPE5vZGVDaGFuZ2VbXT47XG5cbiAgcHJvdGVjdGVkIG5vZGVSZW1vdmVDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKS5waXBlKFxuICAgIHBhaXJ3aXNlKCksXG4gICAgbWFwKChbb2xkTGlzdCwgbmV3TGlzdF0pID0+IG9sZExpc3QuZmlsdGVyKChub2RlKSA9PiAhbmV3TGlzdC5pbmNsdWRlcyhub2RlKSkpLFxuICAgIGZpbHRlcigobm9kZXMpID0+ICEhbm9kZXMubGVuZ3RoKSxcbiAgICBtYXAoKG5vZGVzKSA9PiBub2Rlcy5tYXAoKG5vZGUpID0+ICh7IHR5cGU6ICdyZW1vdmUnLCBpZDogbm9kZS5yYXdOb2RlLmlkIH0pKSksXG4gICkgc2F0aXNmaWVzIE9ic2VydmFibGU8Tm9kZUNoYW5nZVtdPjtcblxuICBwcm90ZWN0ZWQgbm9kZVNlbGVjdGVkQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcykucGlwZShcbiAgICBzd2l0Y2hNYXAoKG5vZGVzKSA9PlxuICAgICAgbWVyZ2UoXG4gICAgICAgIC4uLm5vZGVzLm1hcCgobm9kZSkgPT5cbiAgICAgICAgICBub2RlLnNlbGVjdGVkJC5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gbm9kZSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBtYXAoKGNoYW5nZWROb2RlKSA9PiBbeyB0eXBlOiAnc2VsZWN0JywgaWQ6IGNoYW5nZWROb2RlLnJhd05vZGUuaWQsIHNlbGVjdGVkOiBjaGFuZ2VkTm9kZS5zZWxlY3RlZCgpIH1dKSxcbiAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+O1xuXG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VzJDogT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+ID0gbWVyZ2UoXG4gICAgdGhpcy5ub2Rlc1Bvc2l0aW9uQ2hhbmdlJCxcbiAgICB0aGlzLm5vZGVTaXplQ2hhbmdlJCxcbiAgICB0aGlzLm5vZGVBZGRDaGFuZ2UkLFxuICAgIHRoaXMubm9kZVJlbW92ZUNoYW5nZSQsXG4gICAgdGhpcy5ub2RlU2VsZWN0ZWRDaGFuZ2UkLFxuICApLnBpcGUoXG4gICAgLy8gdGhpcyBmaXhlcyBhIGJ1ZyB3aGVuIG9uIGZpcmUgbm9kZSBldmVudCBjaGFuZ2UsXG4gICAgLy8geW91IGNhbid0IGdldCB2YWxpZCBsaXN0IG9mIGRldGFjaGVkIGVkZ2VzXG4gICAgb2JzZXJ2ZU9uKGFzeW5jU2NoZWR1bGVyLCBERUxBWV9GT1JfU0NIRURVTEVSKSxcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { Injectable, computed, inject } from '@angular/core';
|
|
2
|
-
import { FlowEntitiesService } from './flow-entities.service';
|
|
3
|
-
import { FlowSettingsService } from './flow-settings.service';
|
|
4
|
-
import { isRectInViewport } from '../utils/viewport';
|
|
5
|
-
import { ViewportService } from './viewport.service';
|
|
6
|
-
import { toObservable } from '@angular/core/rxjs-interop';
|
|
7
|
-
import { asyncScheduler, debounceTime, filter, map, merge, observeOn } from 'rxjs';
|
|
8
|
-
import { toLazySignal } from '../utils/signals/to-lazy-signal';
|
|
9
|
-
import { isGroupNode } from '../utils/is-group-node';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
export class NodeRenderingService {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.flowEntitiesService = inject(FlowEntitiesService);
|
|
14
|
-
this.flowSettingsService = inject(FlowSettingsService);
|
|
15
|
-
this.viewportService = inject(ViewportService);
|
|
16
|
-
this.nodes = computed(() => {
|
|
17
|
-
if (!this.flowSettingsService.optimization().virtualization) {
|
|
18
|
-
return [...this.flowEntitiesService.nodes()].sort((aNode, bNode) => aNode.renderOrder() - bNode.renderOrder());
|
|
19
|
-
}
|
|
20
|
-
return this.viewportNodesAfterInteraction().sort((aNode, bNode) => aNode.renderOrder() - bNode.renderOrder());
|
|
21
|
-
});
|
|
22
|
-
this.groups = computed(() => {
|
|
23
|
-
return this.nodes().filter((n) => !!n.children().length || isGroupNode(n));
|
|
24
|
-
});
|
|
25
|
-
this.nonGroups = computed(() => {
|
|
26
|
-
return this.nodes().filter((n) => !this.groups().includes(n));
|
|
27
|
-
});
|
|
28
|
-
this.viewportNodes = computed(() => {
|
|
29
|
-
const nodes = this.flowEntitiesService.nodes();
|
|
30
|
-
const viewport = this.viewportService.readableViewport();
|
|
31
|
-
const flowWidth = this.flowSettingsService.computedFlowWidth();
|
|
32
|
-
const flowHeight = this.flowSettingsService.computedFlowHeight();
|
|
33
|
-
return nodes.filter((n) => {
|
|
34
|
-
const { x, y } = n.globalPoint();
|
|
35
|
-
const width = n.width();
|
|
36
|
-
const height = n.height();
|
|
37
|
-
return isRectInViewport({ x, y, width, height }, viewport, flowWidth, flowHeight);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
this.viewportNodesAfterInteraction = toLazySignal(merge(
|
|
41
|
-
// TODO: maybe there is a better way wait when viewport is ready?
|
|
42
|
-
// (to correctly calculate viewport nodes on first render)
|
|
43
|
-
toObservable(this.flowEntitiesService.nodes).pipe(observeOn(asyncScheduler), filter((nodes) => !!nodes.length)), this.viewportService.viewportChangeEnd$.pipe(debounceTime(300))).pipe(map(() => {
|
|
44
|
-
const viewport = this.viewportService.readableViewport();
|
|
45
|
-
const zoomThreshold = this.flowSettingsService.optimization().virtualizationZoomThreshold;
|
|
46
|
-
return viewport.zoom < zoomThreshold ? [] : this.viewportNodes();
|
|
47
|
-
})), {
|
|
48
|
-
initialValue: [],
|
|
49
|
-
});
|
|
50
|
-
this.maxOrder = computed(() => {
|
|
51
|
-
return Math.max(...this.flowEntitiesService.nodes().map((n) => n.renderOrder()));
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
pullNode(node) {
|
|
55
|
-
// pull node
|
|
56
|
-
node.renderOrder.set(this.maxOrder() + 1);
|
|
57
|
-
// pull children
|
|
58
|
-
node.children().forEach((n) => this.pullNode(n));
|
|
59
|
-
}
|
|
60
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeRenderingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
61
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeRenderingService }); }
|
|
62
|
-
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeRenderingService, decorators: [{
|
|
64
|
-
type: Injectable
|
|
65
|
-
}] });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1yZW5kZXJpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9ub2RlLXJlbmRlcmluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUdyRCxNQUFNLE9BQU8sb0JBQW9CO0lBRGpDO1FBRVUsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEQsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEQsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbEMsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxj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QyxZQUFZLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztZQUUxRixPQUFPLFFBQVEsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FDSCxFQUNEO1lBQ0UsWUFBWSxFQUFFLEVBQUU7U0FDakIsQ0FDRixDQUFDO1FBRU0sYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztLQVNKO0lBUFEsUUFBUSxDQUFDLElBQWU7UUFDN0IsWUFBWTtRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUxQyxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7K0dBckVVLG9CQUFvQjttSEFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBpc1JlY3RJblZpZXdwb3J0IH0gZnJvbSAnLi4vdXRpbHMvdmlld3BvcnQnO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSAnLi92aWV3cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGFzeW5jU2NoZWR1bGVyLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBtZXJnZSwgb2JzZXJ2ZU9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0b0xhenlTaWduYWwgfSBmcm9tICcuLi91dGlscy9zaWduYWxzL3RvLWxhenktc2lnbmFsJztcbmltcG9ydCB7IGlzR3JvdXBOb2RlIH0gZnJvbSAnLi4vdXRpbHMvaXMtZ3JvdXAtbm9kZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOb2RlUmVuZGVyaW5nU2VydmljZSB7XG4gIHByaXZhdGUgZmxvd0VudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmbG93U2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpO1xuICBwcml2YXRlIHZpZXdwb3J0U2VydmljZSA9IGluamVjdChWaWV3cG9ydFNlcnZpY2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBub2RlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIXRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5vcHRpbWl6YXRpb24oKS52aXJ0dWFsaXphdGlvbikge1xuICAgICAgcmV0dXJuIFsuLi50aGlzLmZsb3dFbnRpdGllc1NlcnZpY2Uubm9kZXMoKV0uc29ydCgoYU5vZGUsIGJOb2RlKSA9PiBhTm9kZS5yZW5kZXJPcmRlcigpIC0gYk5vZGUucmVuZGVyT3JkZXIoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmlld3BvcnROb2Rlc0FmdGVySW50ZXJhY3Rpb24oKS5zb3J0KChhTm9kZSwgYk5vZGUpID0+IGFOb2RlLnJlbmRlck9yZGVyKCkgLSBiTm9kZS5yZW5kZXJPcmRlcigpKTtcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGdyb3VwcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcygpLmZpbHRlcigobikgPT4gISFuLmNoaWxkcmVuKCkubGVuZ3RoIHx8IGlzR3JvdXBOb2RlKG4pKTtcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5vbkdyb3VwcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcygpLmZpbHRlcigobikgPT4gIXRoaXMuZ3JvdXBzKCkuaW5jbHVkZXMobikpO1xuICB9KTtcblxuICBwdWJsaWMgdmlld3BvcnROb2RlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBub2RlcyA9IHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5ub2RlcygpO1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydFNlcnZpY2UucmVhZGFibGVWaWV3cG9ydCgpO1xuICAgIGNvbnN0IGZsb3dXaWR0aCA9IHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5jb21wdXRlZEZsb3dXaWR0aCgpO1xuICAgIGNvbnN0IGZsb3dIZWlnaHQgPSB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93SGVpZ2h0KCk7XG5cbiAgICByZXR1cm4gbm9kZXMuZmlsdGVyKChuKSA9PiB7XG4gICAgICBjb25zdCB7IHgsIHkgfSA9IG4uZ2xvYmFsUG9pbnQoKTtcbiAgICAgIGNvbnN0IHdpZHRoID0gbi53aWR0aCgpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gbi5oZWlnaHQoKTtcblxuICAgICAgcmV0dXJuIGlzUmVjdEluVmlld3BvcnQoeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0sIHZpZXdwb3J0LCBmbG93V2lkdGgsIGZsb3dIZWlnaHQpO1xuICAgIH0pO1xuICB9KTtcblxuICBwcml2YXRlIHZpZXdwb3J0Tm9kZXNBZnRlckludGVyYWN0aW9uID0gdG9MYXp5U2lnbmFsKFxuICAgIG1lcmdlKFxuICAgICAgLy8gVE9ETzogbWF5YmUgdGhlcmUgaXMgYSBiZXR0ZXIgd2F5IHdhaXQgd2hlbiB2aWV3cG9ydCBpcyByZWFkeT9cbiAgICAgIC8vICh0byBjb3JyZWN0bHkgY2FsY3VsYXRlIHZpZXdwb3J0IG5vZGVzIG9uIGZpcnN0IHJlbmRlcilcbiAgICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2Uubm9kZXMpLnBpcGUoXG4gICAgICAgIG9ic2VydmVPbihhc3luY1NjaGVkdWxlciksXG4gICAgICAgIGZpbHRlcigobm9kZXMpID0+ICEhbm9kZXMubGVuZ3RoKSxcbiAgICAgICksXG5cbiAgICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLnZpZXdwb3J0Q2hhbmdlRW5kJC5waXBlKGRlYm91bmNlVGltZSgzMDApKSxcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQoKTtcbiAgICAgICAgY29uc3Qgem9vbVRocmVzaG9sZCA9IHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5vcHRpbWl6YXRpb24oKS52aXJ0dWFsaXphdGlvblpvb21UaHJlc2hvbGQ7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdwb3J0Lnpvb20gPCB6b29tVGhyZXNob2xkID8gW10gOiB0aGlzLnZpZXdwb3J0Tm9kZXMoKTtcbiAgICAgIH0pLFxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiBbXSxcbiAgICB9LFxuICApO1xuXG4gIHByaXZhdGUgbWF4T3JkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLnRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5ub2RlcygpLm1hcCgobikgPT4gbi5yZW5kZXJPcmRlcigpKSk7XG4gIH0pO1xuXG4gIHB1YmxpYyBwdWxsTm9kZShub2RlOiBOb2RlTW9kZWwpIHtcbiAgICAvLyBwdWxsIG5vZGVcbiAgICBub2RlLnJlbmRlck9yZGVyLnNldCh0aGlzLm1heE9yZGVyKCkgKyAxKTtcblxuICAgIC8vIHB1bGwgY2hpbGRyZW5cbiAgICBub2RlLmNoaWxkcmVuKCkuZm9yRWFjaCgobikgPT4gdGhpcy5wdWxsTm9kZShuKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { computed, Injectable, signal } from '@angular/core';
|
|
3
|
-
import { Microtask } from '../decorators/microtask.decorator';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class OverlaysService {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.toolbars = signal([]);
|
|
8
|
-
this.nodeToolbarsMap = computed(() => {
|
|
9
|
-
const map = new Map();
|
|
10
|
-
this.toolbars().forEach((toolbar) => {
|
|
11
|
-
const existing = map.get(toolbar.node) ?? [];
|
|
12
|
-
map.set(toolbar.node, [...existing, toolbar]);
|
|
13
|
-
});
|
|
14
|
-
return map;
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
addToolbar(toolbar) {
|
|
18
|
-
this.toolbars.update((toolbars) => [...toolbars, toolbar]);
|
|
19
|
-
}
|
|
20
|
-
removeToolbar(toolbar) {
|
|
21
|
-
this.toolbars.update((toolbars) => toolbars.filter((t) => t !== toolbar));
|
|
22
|
-
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OverlaysService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OverlaysService }); }
|
|
25
|
-
}
|
|
26
|
-
__decorate([
|
|
27
|
-
Microtask
|
|
28
|
-
], OverlaysService.prototype, "addToolbar", null);
|
|
29
|
-
__decorate([
|
|
30
|
-
Microtask
|
|
31
|
-
], OverlaysService.prototype, "removeToolbar", null);
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OverlaysService, decorators: [{
|
|
33
|
-
type: Injectable
|
|
34
|
-
}], propDecorators: { addToolbar: [], removeToolbar: [] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9vdmVybGF5cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUc5RCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVtQixhQUFRLEdBQUcsTUFBTSxDQUFpQixFQUFFLENBQUMsQ0FBQztRQUVoRCxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7WUFFakQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNsQyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzdDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO0tBV0o7SUFSUSxVQUFVLENBQUMsT0FBcUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBR00sYUFBYSxDQUFDLE9BQXFCO1FBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDOytHQXRCVSxlQUFlO21IQUFmLGVBQWU7O0FBZW5CO0lBRE4sU0FBUztpREFHVDtBQUdNO0lBRE4sU0FBUztvREFHVDs0RkF0QlUsZUFBZTtrQkFEM0IsVUFBVTs4QkFnQkYsVUFBVSxNQUtWLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb29sYmFyTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvdG9vbGJhci5tb2RlbCc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBNaWNyb3Rhc2sgfSBmcm9tICcuLi9kZWNvcmF0b3JzL21pY3JvdGFzay5kZWNvcmF0b3InO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3ZlcmxheXNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0b29sYmFycyA9IHNpZ25hbDxUb29sYmFyTW9kZWxbXT4oW10pO1xuXG4gIHB1YmxpYyBub2RlVG9vbGJhcnNNYXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxOb2RlTW9kZWwsIFRvb2xiYXJNb2RlbFtdPigpO1xuXG4gICAgdGhpcy50b29sYmFycygpLmZvckVhY2goKHRvb2xiYXIpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gbWFwLmdldCh0b29sYmFyLm5vZGUpID8/IFtdO1xuICAgICAgbWFwLnNldCh0b29sYmFyLm5vZGUsIFsuLi5leGlzdGluZywgdG9vbGJhcl0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hcDtcbiAgfSk7XG5cbiAgQE1pY3JvdGFza1xuICBwdWJsaWMgYWRkVG9vbGJhcih0b29sYmFyOiBUb29sYmFyTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2xiYXJzLnVwZGF0ZSgodG9vbGJhcnMpID0+IFsuLi50b29sYmFycywgdG9vbGJhcl0pO1xuICB9XG5cbiAgQE1pY3JvdGFza1xuICBwdWJsaWMgcmVtb3ZlVG9vbGJhcih0b29sYmFyOiBUb29sYmFyTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2xiYXJzLnVwZGF0ZSgodG9vbGJhcnMpID0+IHRvb2xiYXJzLmZpbHRlcigodCkgPT4gdCAhPT0gdG9vbGJhcikpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class PreviewFlowRenderStrategyService {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PreviewFlowRenderStrategyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PreviewFlowRenderStrategyService }); }
|
|
6
|
-
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PreviewFlowRenderStrategyService, decorators: [{
|
|
8
|
-
type: Injectable
|
|
9
|
-
}] });
|
|
10
|
-
export class ViewportPreviewFlowRenderStrategyService extends PreviewFlowRenderStrategyService {
|
|
11
|
-
shouldRenderNode(node) {
|
|
12
|
-
// Do not render preview node if the real node is visible
|
|
13
|
-
return !node.isVisible();
|
|
14
|
-
}
|
|
15
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportPreviewFlowRenderStrategyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
16
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportPreviewFlowRenderStrategyService }); }
|
|
17
|
-
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportPreviewFlowRenderStrategyService, decorators: [{
|
|
19
|
-
type: Injectable
|
|
20
|
-
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1mbG93LXJlbmRlci1zdHJhdGVneS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3NlcnZpY2VzL3ByZXZpZXctZmxvdy1yZW5kZXItc3RyYXRlZ3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQWdCLGdDQUFnQzsrR0FBaEMsZ0NBQWdDO21IQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBRHJELFVBQVU7O0FBTVgsTUFBTSxPQUFPLHdDQUF5QyxTQUFRLGdDQUFnQztJQUNyRixnQkFBZ0IsQ0FBQyxJQUFlO1FBQ3JDLHlEQUF5RDtRQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNCLENBQUM7K0dBSlUsd0NBQXdDO21IQUF4Qyx3Q0FBd0M7OzRGQUF4Qyx3Q0FBd0M7a0JBRHBELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcmV2aWV3Rmxvd1JlbmRlclN0cmF0ZWd5U2VydmljZSB7XG4gIHB1YmxpYyBhYnN0cmFjdCBzaG91bGRSZW5kZXJOb2RlKG5vZGU6IE5vZGVNb2RlbCk6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFByZXZpZXdGbG93UmVuZGVyU3RyYXRlZ3lTZXJ2aWNlIGV4dGVuZHMgUHJldmlld0Zsb3dSZW5kZXJTdHJhdGVneVNlcnZpY2Uge1xuICBwdWJsaWMgc2hvdWxkUmVuZGVyTm9kZShub2RlOiBOb2RlTW9kZWwpOiBib29sZWFuIHtcbiAgICAvLyBEbyBub3QgcmVuZGVyIHByZXZpZXcgbm9kZSBpZiB0aGUgcmVhbCBub2RlIGlzIHZpc2libGVcbiAgICByZXR1cm4gIW5vZGUuaXNWaXNpYmxlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject } from '@angular/core';
|
|
2
|
-
import { FlowEntitiesService } from './flow-entities.service';
|
|
3
|
-
import { Subject, tap } from 'rxjs';
|
|
4
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
|
-
import { KeyboardService } from './keyboard.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class SelectionService {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.flowEntitiesService = inject(FlowEntitiesService);
|
|
10
|
-
this.keyboardService = inject(KeyboardService);
|
|
11
|
-
this.viewport$ = new Subject();
|
|
12
|
-
this.resetSelection = this.viewport$
|
|
13
|
-
.pipe(tap(({ start, end, target }) => {
|
|
14
|
-
if (start && end && target) {
|
|
15
|
-
const delta = SelectionService.delta;
|
|
16
|
-
const diffX = Math.abs(end.x - start.x);
|
|
17
|
-
const diffY = Math.abs(end.y - start.y);
|
|
18
|
-
// click (not drag)
|
|
19
|
-
const isClick = diffX < delta && diffY < delta;
|
|
20
|
-
// do not reset if event chain contains selectable elems
|
|
21
|
-
const isNotSelectable = !target.closest('.selectable');
|
|
22
|
-
if (isClick && isNotSelectable) {
|
|
23
|
-
this.select(null);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}), takeUntilDestroyed())
|
|
27
|
-
.subscribe();
|
|
28
|
-
}
|
|
29
|
-
static { this.delta = 6; }
|
|
30
|
-
setViewport(viewport) {
|
|
31
|
-
this.viewport$.next(viewport);
|
|
32
|
-
}
|
|
33
|
-
select(entity) {
|
|
34
|
-
// ? May be not a responsibility of this method
|
|
35
|
-
// if entity already selected - do nothing
|
|
36
|
-
if (entity?.selected()) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
if (!this.keyboardService.isActiveAction('multiSelection')) {
|
|
40
|
-
// undo select for previously selected nodes
|
|
41
|
-
this.flowEntitiesService.entities().forEach((n) => n.selected.set(false));
|
|
42
|
-
}
|
|
43
|
-
if (entity) {
|
|
44
|
-
// select passed entity
|
|
45
|
-
entity.selected.set(true);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
49
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectionService }); }
|
|
50
|
-
}
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectionService, decorators: [{
|
|
52
|
-
type: Injectable
|
|
53
|
-
}] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVlyRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBSVUsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEQsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO1FBRWhELG1CQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVM7YUFDdEMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQzdCLElBQUksS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2dCQUVyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUV4QyxtQkFBbUI7Z0JBQ25CLE1BQU0sT0FBTyxHQUFHLEtBQUssR0FBRyxLQUFLLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDL0Msd0RBQXdEO2dCQUN4RCxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRXZELElBQUksT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxFQUFFLENBQUM7S0F1QmhCO2FBbkRnQixVQUFLLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUE4QmxCLFdBQVcsQ0FBQyxRQUE4QjtRQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQXlCO1FBQ3JDLCtDQUErQztRQUMvQywwQ0FBMEM7UUFDMUMsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDM0QsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCx1QkFBdUI7WUFDdkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7K0dBbkRVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaWV3cG9ydFN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zsb3ctZW50aXR5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEtleWJvYXJkU2VydmljZSB9IGZyb20gJy4va2V5Ym9hcmQuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRGb3JTZWxlY3Rpb24ge1xuICBzdGFydDogVmlld3BvcnRTdGF0ZTtcbiAgZW5kOiBWaWV3cG9ydFN0YXRlO1xuICAvKipcbiAgICogVGFyZ2V0IG1heSBub3QgZXhpc3QgaWYgdmlld3BvcnQgY2hhbmdlIG1hZGUgcHJvZ3JhbW1hdGljYWxseVxuICAgKi9cbiAgdGFyZ2V0PzogRWxlbWVudDtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBkZWx0YSA9IDY7XG5cbiAgcHJpdmF0ZSBmbG93RW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpO1xuICBwcml2YXRlIGtleWJvYXJkU2VydmljZSA9IGluamVjdChLZXlib2FyZFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCB2aWV3cG9ydCQgPSBuZXcgU3ViamVjdDxWaWV3cG9ydEZvclNlbGVjdGlvbj4oKTtcblxuICBwcm90ZWN0ZWQgcmVzZXRTZWxlY3Rpb24gPSB0aGlzLnZpZXdwb3J0JFxuICAgIC5waXBlKFxuICAgICAgdGFwKCh7IHN0YXJ0LCBlbmQsIHRhcmdldCB9KSA9PiB7XG4gICAgICAgIGlmIChzdGFydCAmJiBlbmQgJiYgdGFyZ2V0KSB7XG4gICAgICAgICAgY29uc3QgZGVsdGEgPSBTZWxlY3Rpb25TZXJ2aWNlLmRlbHRhO1xuXG4gICAgICAgICAgY29uc3QgZGlmZlggPSBNYXRoLmFicyhlbmQueCAtIHN0YXJ0LngpO1xuICAgICAgICAgIGNvbnN0IGRpZmZZID0gTWF0aC5hYnMoZW5kLnkgLSBzdGFydC55KTtcblxuICAgICAgICAgIC8vIGNsaWNrIChub3QgZHJhZylcbiAgICAgICAgICBjb25zdCBpc0NsaWNrID0gZGlmZlggPCBkZWx0YSAmJiBkaWZmWSA8IGRlbHRhO1xuICAgICAgICAgIC8vIGRvIG5vdCByZXNldCBpZiBldmVudCBjaGFpbiBjb250YWlucyBzZWxlY3RhYmxlIGVsZW1zXG4gICAgICAgICAgY29uc3QgaXNOb3RTZWxlY3RhYmxlID0gIXRhcmdldC5jbG9zZXN0KCcuc2VsZWN0YWJsZScpO1xuXG4gICAgICAgICAgaWYgKGlzQ2xpY2sgJiYgaXNOb3RTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICBwdWJsaWMgc2V0Vmlld3BvcnQodmlld3BvcnQ6IFZpZXdwb3J0Rm9yU2VsZWN0aW9uKSB7XG4gICAgdGhpcy52aWV3cG9ydCQubmV4dCh2aWV3cG9ydCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KGVudGl0eTogRmxvd0VudGl0eSB8IG51bGwpIHtcbiAgICAvLyA/IE1heSBiZSBub3QgYSByZXNwb25zaWJpbGl0eSBvZiB0aGlzIG1ldGhvZFxuICAgIC8vIGlmIGVudGl0eSBhbHJlYWR5IHNlbGVjdGVkIC0gZG8gbm90aGluZ1xuICAgIGlmIChlbnRpdHk/LnNlbGVjdGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMua2V5Ym9hcmRTZXJ2aWNlLmlzQWN0aXZlQWN0aW9uKCdtdWx0aVNlbGVjdGlvbicpKSB7XG4gICAgICAvLyB1bmRvIHNlbGVjdCBmb3IgcHJldmlvdXNseSBzZWxlY3RlZCBub2Rlc1xuICAgICAgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmVudGl0aWVzKCkuZm9yRWFjaCgobikgPT4gbi5zZWxlY3RlZC5zZXQoZmFsc2UpKTtcbiAgICB9XG5cbiAgICBpZiAoZW50aXR5KSB7XG4gICAgICAvLyBzZWxlY3QgcGFzc2VkIGVudGl0eVxuICAgICAgZW50aXR5LnNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject, signal } from '@angular/core';
|
|
2
|
-
import { getNodesBounds } from '../utils/nodes';
|
|
3
|
-
import { FlowEntitiesService } from './flow-entities.service';
|
|
4
|
-
import { getViewportForBounds } from '../utils/viewport';
|
|
5
|
-
import { FlowSettingsService } from './flow-settings.service';
|
|
6
|
-
import { Subject } from 'rxjs';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class ViewportService {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.entitiesService = inject(FlowEntitiesService);
|
|
11
|
-
this.flowSettingsService = inject(FlowSettingsService);
|
|
12
|
-
/**
|
|
13
|
-
* Internal signal that accepts value from user by lib api
|
|
14
|
-
* When this signal changes, lib sets new view state and update readableViewport signal
|
|
15
|
-
*/
|
|
16
|
-
this.writableViewport = signal({
|
|
17
|
-
changeType: 'initial',
|
|
18
|
-
state: ViewportService.getDefaultViewport(),
|
|
19
|
-
duration: 0,
|
|
20
|
-
});
|
|
21
|
-
/**
|
|
22
|
-
* Public signal with viewport state. User can directly read from this signal. It's updated by:
|
|
23
|
-
* - user events on flow
|
|
24
|
-
* - writableViewport signal
|
|
25
|
-
*/
|
|
26
|
-
this.readableViewport = signal(ViewportService.getDefaultViewport());
|
|
27
|
-
this.viewportChangeEnd$ = new Subject();
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* The default value used by d3, just copy it here
|
|
31
|
-
*
|
|
32
|
-
* @returns default viewport value
|
|
33
|
-
*/
|
|
34
|
-
static getDefaultViewport() {
|
|
35
|
-
return { zoom: 1, x: 0, y: 0 };
|
|
36
|
-
}
|
|
37
|
-
// TODO: add writableViewportWithConstraints (to apply min zoom/max zoom values)
|
|
38
|
-
fitView(options = { padding: 0.1, duration: 0, nodes: [] }) {
|
|
39
|
-
const nodes = this.getBoundsNodes(options.nodes ?? []);
|
|
40
|
-
const state = getViewportForBounds(getNodesBounds(nodes), this.flowSettingsService.computedFlowWidth(), this.flowSettingsService.computedFlowHeight(), this.flowSettingsService.minZoom(), this.flowSettingsService.maxZoom(), options.padding ?? 0.1);
|
|
41
|
-
const duration = options.duration ?? 0;
|
|
42
|
-
this.writableViewport.set({ changeType: 'absolute', state, duration });
|
|
43
|
-
}
|
|
44
|
-
triggerViewportChangeEvent(type) {
|
|
45
|
-
if (type === 'end') {
|
|
46
|
-
this.viewportChangeEnd$.next();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
getBoundsNodes(nodeIds) {
|
|
50
|
-
return !nodeIds?.length
|
|
51
|
-
? // If nodes option not passed or the list is empty, then get fit the whole view
|
|
52
|
-
this.entitiesService.nodes()
|
|
53
|
-
: // Otherwise fit to specific nodes
|
|
54
|
-
nodeIds
|
|
55
|
-
.map((nodeId) => this.entitiesService.nodes().find(({ rawNode }) => rawNode.id === nodeId))
|
|
56
|
-
.filter((node) => !!node);
|
|
57
|
-
}
|
|
58
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
59
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportService }); }
|
|
60
|
-
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportService, decorators: [{
|
|
62
|
-
type: Injectable
|
|
63
|
-
}] });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWtCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVUsb0JBQWUsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM5Qyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQVcxRDs7O1dBR0c7UUFDYSxxQkFBZ0IsR0FBcUMsTUFBTSxDQUFDO1lBQzFFLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLEtBQUssRUFBRSxlQUFlLENBQUMsa0JBQWtCLEVBQUU7WUFDM0MsUUFBUSxFQUFFLENBQUM7U0FDWixDQUFDLENBQUM7UUFFSDs7OztXQUlHO1FBQ2EscUJBQWdCLEdBQWtDLE1BQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRS9GLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0FvQzFEO0lBOURDOzs7O09BSUc7SUFDSyxNQUFNLENBQUMsa0JBQWtCO1FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFxQkQsZ0ZBQWdGO0lBRXpFLE9BQU8sQ0FBQyxVQUEwQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQy9FLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV2RCxNQUFNLEtBQUssR0FBRyxvQkFBb0IsQ0FDaEMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsRUFDNUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLEVBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsRUFDbEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxFQUNsQyxPQUFPLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FDdkIsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSwwQkFBMEIsQ0FBQyxJQUFXO1FBQzNDLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFpQjtRQUN0QyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU07WUFDckIsQ0FBQyxDQUFDLCtFQUErRTtnQkFDL0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDOUIsQ0FBQyxDQUFDLGtDQUFrQztnQkFDbEMsT0FBTztxQkFDSixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztxQkFDMUYsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7K0dBakVVLGVBQWU7bUhBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFdyaXRhYmxlU2lnbmFsLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlld3BvcnRTdGF0ZSwgV3JpdGFibGVWaWV3cG9ydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGdldE5vZGVzQm91bmRzIH0gZnJvbSAnLi4vdXRpbHMvbm9kZXMnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFZpZXdwb3J0Rm9yQm91bmRzIH0gZnJvbSAnLi4vdXRpbHMvdmlld3BvcnQnO1xuaW1wb3J0IHsgRmxvd1NldHRpbmdzU2VydmljZSB9IGZyb20gJy4vZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpdFZpZXdPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9maXQtdmlldy1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2Uge1xuICBwcml2YXRlIGVudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmbG93U2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSB1c2VkIGJ5IGQzLCBqdXN0IGNvcHkgaXQgaGVyZVxuICAgKlxuICAgKiBAcmV0dXJucyBkZWZhdWx0IHZpZXdwb3J0IHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXREZWZhdWx0Vmlld3BvcnQoKTogVmlld3BvcnRTdGF0ZSB7XG4gICAgcmV0dXJuIHsgem9vbTogMSwgeDogMCwgeTogMCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIHNpZ25hbCB0aGF0IGFjY2VwdHMgdmFsdWUgZnJvbSB1c2VyIGJ5IGxpYiBhcGlcbiAgICogV2hlbiB0aGlzIHNpZ25hbCBjaGFuZ2VzLCBsaWIgc2V0cyBuZXcgdmlldyBzdGF0ZSBhbmQgdXBkYXRlIHJlYWRhYmxlVmlld3BvcnQgc2lnbmFsXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd3JpdGFibGVWaWV3cG9ydDogV3JpdGFibGVTaWduYWw8V3JpdGFibGVWaWV3cG9ydD4gPSBzaWduYWwoe1xuICAgIGNoYW5nZVR5cGU6ICdpbml0aWFsJyxcbiAgICBzdGF0ZTogVmlld3BvcnRTZXJ2aWNlLmdldERlZmF1bHRWaWV3cG9ydCgpLFxuICAgIGR1cmF0aW9uOiAwLFxuICB9KTtcblxuICAvKipcbiAgICogUHVibGljIHNpZ25hbCB3aXRoIHZpZXdwb3J0IHN0YXRlLiBVc2VyIGNhbiBkaXJlY3RseSByZWFkIGZyb20gdGhpcyBzaWduYWwuIEl0J3MgdXBkYXRlZCBieTpcbiAgICogLSB1c2VyIGV2ZW50cyBvbiBmbG93XG4gICAqIC0gd3JpdGFibGVWaWV3cG9ydCBzaWduYWxcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWFkYWJsZVZpZXdwb3J0OiBXcml0YWJsZVNpZ25hbDxWaWV3cG9ydFN0YXRlPiA9IHNpZ25hbChWaWV3cG9ydFNlcnZpY2UuZ2V0RGVmYXVsdFZpZXdwb3J0KCkpO1xuXG4gIHB1YmxpYyByZWFkb25seSB2aWV3cG9ydENoYW5nZUVuZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vIFRPRE86IGFkZCB3cml0YWJsZVZpZXdwb3J0V2l0aENvbnN0cmFpbnRzICh0byBhcHBseSBtaW4gem9vbS9tYXggem9vbSB2YWx1ZXMpXG5cbiAgcHVibGljIGZpdFZpZXcob3B0aW9uczogRml0Vmlld09wdGlvbnMgPSB7IHBhZGRpbmc6IDAuMSwgZHVyYXRpb246IDAsIG5vZGVzOiBbXSB9KSB7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldEJvdW5kc05vZGVzKG9wdGlvbnMubm9kZXMgPz8gW10pO1xuXG4gICAgY29uc3Qgc3RhdGUgPSBnZXRWaWV3cG9ydEZvckJvdW5kcyhcbiAgICAgIGdldE5vZGVzQm91bmRzKG5vZGVzKSxcbiAgICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5jb21wdXRlZEZsb3dXaWR0aCgpLFxuICAgICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmNvbXB1dGVkRmxvd0hlaWdodCgpLFxuICAgICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLm1pblpvb20oKSxcbiAgICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5tYXhab29tKCksXG4gICAgICBvcHRpb25zLnBhZGRpbmcgPz8gMC4xLFxuICAgICk7XG5cbiAgICBjb25zdCBkdXJhdGlvbiA9IG9wdGlvbnMuZHVyYXRpb24gPz8gMDtcblxuICAgIHRoaXMud3JpdGFibGVWaWV3cG9ydC5zZXQoeyBjaGFuZ2VUeXBlOiAnYWJzb2x1dGUnLCBzdGF0ZSwgZHVyYXRpb24gfSk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlclZpZXdwb3J0Q2hhbmdlRXZlbnQodHlwZTogJ2VuZCcpIHtcbiAgICBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgIHRoaXMudmlld3BvcnRDaGFuZ2VFbmQkLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEJvdW5kc05vZGVzKG5vZGVJZHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuICFub2RlSWRzPy5sZW5ndGhcbiAgICAgID8gLy8gSWYgbm9kZXMgb3B0aW9uIG5vdCBwYXNzZWQgb3IgdGhlIGxpc3QgaXMgZW1wdHksIHRoZW4gZ2V0IGZpdCB0aGUgd2hvbGUgdmlld1xuICAgICAgICB0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcygpXG4gICAgICA6IC8vIE90aGVyd2lzZSBmaXQgdG8gc3BlY2lmaWMgbm9kZXNcbiAgICAgICAgbm9kZUlkc1xuICAgICAgICAgIC5tYXAoKG5vZGVJZCkgPT4gdGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMoKS5maW5kKCh7IHJhd05vZGUgfSkgPT4gcmF3Tm9kZS5pZCA9PT0gbm9kZUlkKSlcbiAgICAgICAgICAuZmlsdGVyKChub2RlKTogbm9kZSBpcyBOb2RlTW9kZWwgPT4gISFub2RlKTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3R5cGVzL2JhY2tncm91bmQudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQmFja2dyb3VuZCA9IENvbG9yQmFja2dyb3VuZCB8IERvdHNCYWNrZ3JvdW5kIHwgSW1hZ2VCYWNrZ3JvdW5kO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yQmFja2dyb3VuZCB7XG4gIHR5cGU6ICdzb2xpZCc7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG90c0JhY2tncm91bmQge1xuICB0eXBlOiAnZG90cyc7XG4gIC8qKlxuICAgKiBHYXAgYmV0d2VlbiBkb3RzXG4gICAqL1xuICBnYXA/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvbG9yIG9mIHRoZSBkb3RcbiAgICovXG4gIGNvbG9yPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaWFtZXRlciBvZiB0aGUgZG90XG4gICAqL1xuICBzaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb2xvciBiZWhpbmQgdGhhIGRvdCBwYXR0ZXJuXG4gICAqL1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VCYWNrZ3JvdW5kIHtcbiAgdHlwZTogJ2ltYWdlJztcbiAgLyoqXG4gICAqIFBhdGggdG8gaW1hZ2UuIFBhc3NlcyBhcyBhIGhyZWYgdG8gdGhpcyBlbGVtZW50OlxuICAgKlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvRWxlbWVudC9pbWFnZVxuICAgKi9cbiAgc3JjOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIGltYWdlIHdpbGwgYmUgZml4ZWQgb24gdGhlIGJhY2tncm91bmQgKG5vdCBtb3Zpbmcgd2l0aCB0aGUgZmxvdywgem9vbSBhbHNvIGRvZXNuJ3QgYWZmZWN0IGl0KVxuICAgKi9cbiAgZml4ZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBpbWFnZSB3aWxsIGJlIHJlcGVhdGVkXG4gICAqL1xuICByZXBlYXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTY2FsZSByZWxhdGl2ZSB0byBuYXR1cmFsIGltYWdlIHNpemUuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpZiBpbWFnZSBpcyAxMDB4MTAwIGFuZCBzY2FsZSBpcyAwLjUsIGl0IHdpbGwgYmUgcmVuZGVyZWQgYXMgNTB4NTBcbiAgICovXG4gIHNjYWxlPzogbnVtYmVyO1xufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi1tb2RlLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdHlwZXMvY29ubmVjdGlvbi1tb2RlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENvbm5lY3Rpb25Nb2RlID0gJ2xvb3NlJyB8ICdzdHJpY3QnO1xuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1jaGFuZ2UudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy9lZGdlLWNoYW5nZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFZGdlQ2hhbmdlID0gRWRnZURldGFjaGVkQ2hhbmdlIHwgRWRnZUFkZENoYW5nZSB8IEVkZ2VSZW1vdmVDaGFuZ2UgfCBFZGdlU2VsZWN0Q2hhbmdlO1xuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGdlRGV0YWNoZWRDaGFuZ2UgZXh0ZW5kcyBFZGdlQ2hhbmdlU2hhcmVkIHtcbiAgdHlwZTogJ2RldGFjaGVkJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZGdlQWRkQ2hhbmdlIGV4dGVuZHMgRWRnZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdhZGQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVkZ2VSZW1vdmVDaGFuZ2UgZXh0ZW5kcyBFZGdlQ2hhbmdlU2hhcmVkIHtcbiAgdHlwZTogJ3JlbW92ZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRnZVNlbGVjdENoYW5nZSBleHRlbmRzIEVkZ2VDaGFuZ2VTaGFyZWQge1xuICB0eXBlOiAnc2VsZWN0JztcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBFZGdlQ2hhbmdlU2hhcmVkIHtcbiAgaWQ6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLXR5cGUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy9oYW5kbGUtdHlwZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBIYW5kbGVUeXBlID0gJ3NvdXJjZScgfCAndGFyZ2V0JztcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtYWN0aW9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdHlwZXMva2V5Ym9hcmQtYWN0aW9uLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEtleWJvYXJkQWN0aW9uID0gJ211bHRpU2VsZWN0aW9uJztcblxuZXhwb3J0IHR5cGUgS2V5Ym9hcmRTaG9ydGN1dHMgPSBSZWNvcmQ8S2V5Ym9hcmRBY3Rpb24sIG51bGwgfCBzdHJpbmdbXT47XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGFuZ2UudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy9ub2RlLWNoYW5nZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgTm9kZUNoYW5nZSA9IE5vZGVQb3NpdGlvbkNoYW5nZSB8IE5vZGVTaXplQ2hhbmdlIHwgTm9kZUFkZENoYW5nZSB8IE5vZGVSZW1vdmVDaGFuZ2UgfCBOb2RlU2VsZWN0ZWRDaGFuZ2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVBvc2l0aW9uQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdwb3NpdGlvbic7XG4gIHBvaW50OiBQb2ludDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb2RlU2l6ZUNoYW5nZSBleHRlbmRzIE5vZGVDaGFuZ2VTaGFyZWQge1xuICB0eXBlOiAnc2l6ZSc7XG4gIHNpemU6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb2RlQWRkQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdhZGQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVSZW1vdmVDaGFuZ2UgZXh0ZW5kcyBOb2RlQ2hhbmdlU2hhcmVkIHtcbiAgdHlwZTogJ3JlbW92ZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVNlbGVjdGVkQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdzZWxlY3QnO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIE5vZGVDaGFuZ2VTaGFyZWQge1xuICBpZDogc3RyaW5nO1xufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24udHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy9wb3NpdGlvbi50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQb3NpdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbScgfCAncmlnaHQnIHwgJ2xlZnQnO1xuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtY2hhbmdlLXR5cGUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy92aWV3cG9ydC1jaGFuZ2UtdHlwZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBWaWV3cG9ydENoYW5nZVR5cGUgPVxuICB8ICdpbml0aWFsJyAvLyBmaXJzdCBjaGFuZ2UsIHNldCBieSBsaWJyYXJ5XG4gIHwgJ2Fic29sdXRlJyAvLyBsYXRlciBhYnNvbHVlIHZhbHVlIGNoYW5nZXMsIHNldCBieSB1c2VyXG4gIHwgJ3JlbGF0aXZlJzsgLy8gbGF0ZXIgcmVsYXRpdmUgdmFsdWUgY2hhbmdlcywgc2V0IGJ5IHVzZXJcbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export function addNodesToEdges(nodes, edges) {
|
|
2
|
-
const nodesById = nodes.reduce((acc, n) => {
|
|
3
|
-
acc[n.rawNode.id] = n;
|
|
4
|
-
return acc;
|
|
5
|
-
}, {});
|
|
6
|
-
edges.forEach((e) => {
|
|
7
|
-
e.source.set(nodesById[e.edge.source]);
|
|
8
|
-
e.target.set(nodesById[e.edge.target]);
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW5vZGVzLXRvLWVkZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL2FkZC1ub2Rlcy10by1lZGdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWtCLEVBQUUsS0FBa0I7SUFDcEUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDNUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDVCxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQ0QsRUFBcUMsQ0FDdEMsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRnZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2VkZ2UubW9kZWwnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkTm9kZXNUb0VkZ2VzKG5vZGVzOiBOb2RlTW9kZWxbXSwgZWRnZXM6IEVkZ2VNb2RlbFtdKTogdm9pZCB7XG4gIGNvbnN0IG5vZGVzQnlJZCA9IG5vZGVzLnJlZHVjZShcbiAgICAoYWNjLCBuKSA9PiB7XG4gICAgICBhY2Nbbi5yYXdOb2RlLmlkXSA9IG47XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyB7IFtub2RlSWQ6IHN0cmluZ106IE5vZGVNb2RlbCB9LFxuICApO1xuXG4gIGVkZ2VzLmZvckVhY2goKGUpID0+IHtcbiAgICBlLnNvdXJjZS5zZXQobm9kZXNCeUlkW2UuZWRnZS5zb3VyY2VdKTtcbiAgICBlLnRhcmdldC5zZXQobm9kZXNCeUlkW2UuZWRnZS50YXJnZXRdKTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This function contains a hack-y behavior.
|
|
3
|
-
* If the handles are of the same type (source-source or target-target),
|
|
4
|
-
* it returns nodes where source === target and
|
|
5
|
-
* handles where sourceHandle === targetHandle
|
|
6
|
-
*
|
|
7
|
-
* This leads to that notSelfValidator returns false for these cases,
|
|
8
|
-
* exactly what we need for strict connection type
|
|
9
|
-
*/
|
|
10
|
-
export function adjustDirection(connection) {
|
|
11
|
-
const result = {};
|
|
12
|
-
if (connection.sourceHandle.rawHandle.type === 'source') {
|
|
13
|
-
result.source = connection.source;
|
|
14
|
-
result.sourceHandle = connection.sourceHandle;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
result.source = connection.target;
|
|
18
|
-
result.sourceHandle = connection.targetHandle;
|
|
19
|
-
}
|
|
20
|
-
if (connection.targetHandle.rawHandle.type === 'target') {
|
|
21
|
-
result.target = connection.target;
|
|
22
|
-
result.targetHandle = connection.targetHandle;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
result.target = connection.source;
|
|
26
|
-
result.targetHandle = connection.sourceHandle;
|
|
27
|
-
}
|
|
28
|
-
return result;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRqdXN0LWRpcmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy91dGlscy9hZGp1c3QtZGlyZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxVQUE4QjtJQUM1RCxNQUFNLE1BQU0sR0FBRyxFQUF3QixDQUFDO0lBRXhDLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUNsQyxNQUFNLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDaEQsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDbEMsTUFBTSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN4RCxNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDbEMsTUFBTSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO0lBQ2hELENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztJQUNoRCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3Rpb25JbnRlcm5hbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29ubmVjdGlvbi5pbnRlcm5hbC5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY29udGFpbnMgYSBoYWNrLXkgYmVoYXZpb3IuXG4gKiBJZiB0aGUgaGFuZGxlcyBhcmUgb2YgdGhlIHNhbWUgdHlwZSAoc291cmNlLXNvdXJjZSBvciB0YXJnZXQtdGFyZ2V0KSxcbiAqIGl0IHJldHVybnMgbm9kZXMgd2hlcmUgc291cmNlID09PSB0YXJnZXQgYW5kXG4gKiBoYW5kbGVzIHdoZXJlIHNvdXJjZUhhbmRsZSA9PT0gdGFyZ2V0SGFuZGxlXG4gKlxuICogVGhpcyBsZWFkcyB0byB0aGF0IG5vdFNlbGZWYWxpZGF0b3IgcmV0dXJucyBmYWxzZSBmb3IgdGhlc2UgY2FzZXMsXG4gKiBleGFjdGx5IHdoYXQgd2UgbmVlZCBmb3Igc3RyaWN0IGNvbm5lY3Rpb24gdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0RGlyZWN0aW9uKGNvbm5lY3Rpb246IENvbm5lY3Rpb25JbnRlcm5hbCk6IENvbm5lY3Rpb25JbnRlcm5hbCB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9IGFzIENvbm5lY3Rpb25JbnRlcm5hbDtcblxuICBpZiAoY29ubmVjdGlvbi5zb3VyY2VIYW5kbGUucmF3SGFuZGxlLnR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgcmVzdWx0LnNvdXJjZSA9IGNvbm5lY3Rpb24uc291cmNlO1xuICAgIHJlc3VsdC5zb3VyY2VIYW5kbGUgPSBjb25uZWN0aW9uLnNvdXJjZUhhbmRsZTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQuc291cmNlID0gY29ubmVjdGlvbi50YXJnZXQ7XG4gICAgcmVzdWx0LnNvdXJjZUhhbmRsZSA9IGNvbm5lY3Rpb24udGFyZ2V0SGFuZGxlO1xuICB9XG5cbiAgaWYgKGNvbm5lY3Rpb24udGFyZ2V0SGFuZGxlLnJhd0hhbmRsZS50eXBlID09PSAndGFyZ2V0Jykge1xuICAgIHJlc3VsdC50YXJnZXQgPSBjb25uZWN0aW9uLnRhcmdldDtcbiAgICByZXN1bHQudGFyZ2V0SGFuZGxlID0gY29ubmVjdGlvbi50YXJnZXRIYW5kbGU7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0LnRhcmdldCA9IGNvbm5lY3Rpb24uc291cmNlO1xuICAgIHJlc3VsdC50YXJnZXRIYW5kbGUgPSBjb25uZWN0aW9uLnNvdXJjZUhhbmRsZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export function align(num, constant) {
|
|
2
|
-
return Math.ceil(num / constant) * constant;
|
|
3
|
-
}
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24tbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL2FsaWduLW51bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsS0FBSyxDQUFDLEdBQVcsRUFBRSxRQUFnQjtJQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGFsaWduKG51bTogbnVtYmVyLCBjb25zdGFudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGguY2VpbChudW0gLyBjb25zdGFudCkgKiBjb25zdGFudDtcbn1cbiJdfQ==
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// MIT License
|
|
2
|
-
// Copyright (c) 2023 Chau Tran
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
// furnished to do so, subject to the following conditions:
|
|
9
|
-
// The above copyright notice and this permission notice shall be included in all
|
|
10
|
-
// copies or substantial portions of the Software.
|
|
11
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
12
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
13
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
14
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
15
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
16
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
17
|
-
// SOFTWARE.
|
|
18
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
19
|
-
import { Injector, assertInInjectionContext, inject, runInInjectionContext } from '@angular/core';
|
|
20
|
-
export function assertInjector(fn, injector, runner) {
|
|
21
|
-
!injector && assertInInjectionContext(fn);
|
|
22
|
-
const assertedInjector = injector ?? inject(Injector);
|
|
23
|
-
if (!runner)
|
|
24
|
-
return assertedInjector;
|
|
25
|
-
return runInInjectionContext(assertedInjector, runner);
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LWluamVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL2Fzc2VydC1pbmplY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBRWQsK0JBQStCO0FBRS9CLCtFQUErRTtBQUMvRSxnRkFBZ0Y7QUFDaEYsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSx3RUFBd0U7QUFDeEUsMkRBQTJEO0FBRTNELGlGQUFpRjtBQUNqRixrREFBa0Q7QUFFbEQsNkVBQTZFO0FBQzdFLDJFQUEyRTtBQUMzRSw4RUFBOEU7QUFDOUUseUVBQXlFO0FBQ3pFLGdGQUFnRjtBQUNoRixnRkFBZ0Y7QUFDaEYsWUFBWTtBQUVaLGlEQUFpRDtBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWlEbEcsTUFBTSxVQUFVLGNBQWMsQ0FBQyxFQUFZLEVBQUUsUUFBcUMsRUFBRSxNQUFrQjtJQUNwRyxDQUFDLFFBQVEsSUFBSSx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEQsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPLGdCQUFnQixDQUFDO0lBQ3JDLE9BQU8scUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE1JVCBMaWNlbnNlXG5cbi8vIENvcHlyaWdodCAoYykgMjAyMyBDaGF1IFRyYW5cblxuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbi8vIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbi8vIFNPRlRXQVJFLlxuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzICovXG5pbXBvcnQgeyBJbmplY3RvciwgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIGBhc3NlcnRJbmplY3RvcmAgZXh0ZW5kcyBgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0YCB3aXRoIGFuIG9wdGlvbmFsIGBJbmplY3RvcmBcbiAqIEFmdGVyIGFzc2VydGlvbiwgYGFzc2VydEluamVjdG9yYCBydW5zIHRoZSBgcnVubmVyYCBmdW5jdGlvbiB3aXRoIHRoZSBndWFyYW50ZWVkIGBJbmplY3RvcmBcbiAqIHdoZXRoZXIgaXQgaXMgdGhlIGRlZmF1bHQgYEluamVjdG9yYCB3aXRoaW4gdGhlIGN1cnJlbnQgKipJbmplY3Rpb24gQ29udGV4dCoqXG4gKiBvciB0aGUgY3VzdG9tIGBJbmplY3RvcmAgdGhhdCB3YXMgcGFzc2VkIGluLlxuICpcbiAqIEB0ZW1wbGF0ZSB7KCkgPT4gYW55fSBSdW5uZXIgLSBSdW5uZXIgaXMgYSBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gYW55dGhpbmdcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gdGhlIEZ1bmN0aW9uIHRvIHBhc3MgaW4gYGFzc2VydEluSW5qZWN0aW9uQ29udGV4dGBcbiAqIEBwYXJhbSB7SW5qZWN0b3IgfCB1bmRlZmluZWQgfCBudWxsfSBpbmplY3RvciAtIHRoZSBvcHRpb25hbCBcImN1c3RvbVwiIEluamVjdG9yXG4gKiBAcGFyYW0ge1J1bm5lcn0gcnVubmVyIC0gdGhlIHJ1bm5lciBmblxuICogQHJldHVybnMge1JldHVyblR5cGU8UnVubmVyPn0gcmVzdWx0IC0gcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBSdW5uZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGZ1bmN0aW9uIGluamVjdFZhbHVlKGluamVjdG9yPzogSW5qZWN0b3IpIHtcbiAqICByZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0VmFsdWUsIGluamVjdG9yLCAoKSA9PiAndmFsdWUnKTtcbiAqIH1cbiAqXG4gKiBpbmplY3RWYWx1ZSgpOyAvLyBzdHJpbmdcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SW5qZWN0b3I8UnVubmVyIGV4dGVuZHMgKCkgPT4gYW55PihcbiAgZm46IEZ1bmN0aW9uLFxuICBpbmplY3RvcjogSW5qZWN0b3IgfCB1bmRlZmluZWQgfCBudWxsLFxuICBydW5uZXI6IFJ1bm5lcixcbik6IFJldHVyblR5cGU8UnVubmVyPjtcbi8qKlxuICogYGFzc2VydEluamVjdG9yYCBleHRlbmRzIGBhc3NlcnRJbkluamVjdGlvbkNvbnRleHRgIHdpdGggYW4gb3B0aW9uYWwgYEluamVjdG9yYFxuICogQWZ0ZXIgYXNzZXJ0aW9uLCBgYXNzZXJ0SW5qZWN0b3JgIHJldHVybnMgYSBndWFyYW50ZWVkIGBJbmplY3RvcmAgd2hldGhlciBpdCBpcyB0aGUgZGVmYXVsdCBgSW5qZWN0b3JgXG4gKiB3aXRoaW4gdGhlIGN1cnJlbnQgKipJbmplY3Rpb24gQ29udGV4dCoqIG9yIHRoZSBjdXN0b20gYEluamVjdG9yYCB0aGF0IHdhcyBwYXNzZWQgaW4uXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgRnVuY3Rpb24gdG8gcGFzcyBpbiBgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0YFxuICogQHBhcmFtIHtJbmplY3RvciB8IHVuZGVmaW5lZCB8IG51bGx9IGluamVjdG9yIC0gdGhlIG9wdGlvbmFsIFwiY3VzdG9tXCIgSW5qZWN0b3JcbiAqIEByZXR1cm5zIEluamVjdG9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBmdW5jdGlvbiBpbmplY3REZXN0cm95KGluamVjdG9yPzogSW5qZWN0b3IpIHtcbiAqICBpbmplY3RvciA9IGFzc2VydEluamVjdG9yKGluamVjdERlc3Ryb3ksIGluamVjdG9yKTtcbiAqXG4gKiAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4ge1xuICogICAgLy8gY29kZVxuICogIH0pXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEluamVjdG9yKGZuOiBGdW5jdGlvbiwgaW5qZWN0b3I6IEluamVjdG9yIHwgdW5kZWZpbmVkIHwgbnVsbCk6IEluamVjdG9yO1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEluamVjdG9yKGZuOiBGdW5jdGlvbiwgaW5qZWN0b3I6IEluamVjdG9yIHwgdW5kZWZpbmVkIHwgbnVsbCwgcnVubmVyPzogKCkgPT4gYW55KSB7XG4gICFpbmplY3RvciAmJiBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoZm4pO1xuICBjb25zdCBhc3NlcnRlZEluamVjdG9yID0gaW5qZWN0b3IgPz8gaW5qZWN0KEluamVjdG9yKTtcblxuICBpZiAoIXJ1bm5lcikgcmV0dXJuIGFzc2VydGVkSW5qZWN0b3I7XG4gIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoYXNzZXJ0ZWRJbmplY3RvciwgcnVubmVyKTtcbn1cbiJdfQ==
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export function isTouchEvent(event) {
|
|
2
|
-
return window.TouchEvent && event instanceof TouchEvent;
|
|
3
|
-
}
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFZO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxLQUFLLFlBQVksVUFBVSxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNUb3VjaEV2ZW50KGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIFRvdWNoRXZlbnQge1xuICByZXR1cm4gd2luZG93LlRvdWNoRXZlbnQgJiYgZXZlbnQgaW5zdGFuY2VvZiBUb3VjaEV2ZW50O1xufVxuIl19
|
|
@@ -1,24 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL2dldC1vcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsS0FBSztJQUNuQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzRCxNQUFNLGNBQWMsR0FBRywyQ0FBMkMsQ0FBQztJQUNuRSxNQUFNLGdCQUFnQixHQUFHLDhCQUE4QixDQUFDO0lBQ3hELE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDO0lBRTNDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztJQUVkLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ25DLEVBQUUsR0FBRyxPQUFnQixDQUFDO0lBQ3hCLENBQUM7U0FBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxFQUFFLEdBQUcsS0FBYyxDQUFDO0lBQ3RCLENBQUM7U0FBTSxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzVDLEVBQUUsR0FBRyxTQUFrQixDQUFDO0lBQzFCLENBQUM7U0FBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxFQUFFLEdBQUcsU0FBa0IsQ0FBQztJQUMxQixDQUFDO1NBQU0sSUFBSSxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDMUMsRUFBRSxHQUFHLE9BQWdCLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRPUygpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgbWFjb3NQbGF0Zm9ybXMgPSAvKG1hY2ludG9zaHxtYWNpbnRlbHxtYWNwcGN8bWFjNjhrfG1hY29zKS9pO1xuICBjb25zdCB3aW5kb3dzUGxhdGZvcm1zID0gLyh3aW4zMnx3aW42NHx3aW5kb3dzfHdpbmNlKS9pO1xuICBjb25zdCBpb3NQbGF0Zm9ybXMgPSAvKGlwaG9uZXxpcGFkfGlwb2QpL2k7XG5cbiAgbGV0IG9zID0gbnVsbDtcblxuICBpZiAobWFjb3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpKSB7XG4gICAgb3MgPSAnbWFjb3MnIGFzIGNvbnN0O1xuICB9IGVsc2UgaWYgKGlvc1BsYXRmb3Jtcy50ZXN0KHVzZXJBZ2VudCkpIHtcbiAgICBvcyA9ICdpb3MnIGFzIGNvbnN0O1xuICB9IGVsc2UgaWYgKHdpbmRvd3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpKSB7XG4gICAgb3MgPSAnd2luZG93cycgYXMgY29uc3Q7XG4gIH0gZWxzZSBpZiAoL2FuZHJvaWQvLnRlc3QodXNlckFnZW50KSkge1xuICAgIG9zID0gJ2FuZHJvaWQnIGFzIGNvbnN0O1xuICB9IGVsc2UgaWYgKCFvcyAmJiAvbGludXgvLnRlc3QodXNlckFnZW50KSkge1xuICAgIG9zID0gJ2xpbnV4JyBhcyBjb25zdDtcbiAgfVxuXG4gIHJldHVybiBvcztcbn1cbiJdfQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export const getOverlappingArea = (rectA, rectB) => {
|
|
2
|
-
const xOverlap = Math.max(0, Math.min(rectA.x + rectA.width, rectB.x + rectB.width) - Math.max(rectA.x, rectB.x));
|
|
3
|
-
const yOverlap = Math.max(0, Math.min(rectA.y + rectA.height, rectB.y + rectB.height) - Math.max(rectA.y, rectB.y));
|
|
4
|
-
return Math.ceil(xOverlap * yOverlap);
|
|
5
|
-
};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW92ZXJsYXBwaW5nLWFyZWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvZ2V0LW92ZXJsYXBwaW5nLWFyZWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFXLEVBQUUsS0FBVyxFQUFVLEVBQUU7SUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVwSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3QnO1xuXG5leHBvcnQgY29uc3QgZ2V0T3ZlcmxhcHBpbmdBcmVhID0gKHJlY3RBOiBSZWN0LCByZWN0QjogUmVjdCk6IG51bWJlciA9PiB7XG4gIGNvbnN0IHhPdmVybGFwID0gTWF0aC5tYXgoMCwgTWF0aC5taW4ocmVjdEEueCArIHJlY3RBLndpZHRoLCByZWN0Qi54ICsgcmVjdEIud2lkdGgpIC0gTWF0aC5tYXgocmVjdEEueCwgcmVjdEIueCkpO1xuICBjb25zdCB5T3ZlcmxhcCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHJlY3RBLnkgKyByZWN0QS5oZWlnaHQsIHJlY3RCLnkgKyByZWN0Qi5oZWlnaHQpIC0gTWF0aC5tYXgocmVjdEEueSwgcmVjdEIueSkpO1xuXG4gIHJldHVybiBNYXRoLmNlaWwoeE92ZXJsYXAgKiB5T3ZlcmxhcCk7XG59O1xuIl19
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @todo handle regular nodes
|
|
3
|
-
*
|
|
4
|
-
* @param point global point in flow coordinates
|
|
5
|
-
* @param groups sorted array of groups
|
|
6
|
-
* @returns
|
|
7
|
-
*/
|
|
8
|
-
export function getSpacePoints(point, groups) {
|
|
9
|
-
const result = [];
|
|
10
|
-
for (const group of groups) {
|
|
11
|
-
const { x, y } = group.globalPoint();
|
|
12
|
-
if (point.x >= x && point.x <= x + group.width() && point.y >= y && point.y <= y + group.height()) {
|
|
13
|
-
result.push({
|
|
14
|
-
x: point.x - x,
|
|
15
|
-
y: point.y - y,
|
|
16
|
-
spaceNodeId: group.rawNode.id,
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
result.reverse();
|
|
21
|
-
// TODO: spread does not work, because the point is SVGPoint
|
|
22
|
-
result.push({ spaceNodeId: null, x: point.x, y: point.y });
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXNwYWNlLXBvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy91dGlscy9nZXQtc3BhY2UtcG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBWSxFQUFFLE1BQW1CO0lBQzlELE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUM7SUFFaEMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNsRyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2QsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDZCxXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2FBQzlCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRWpCLDREQUE0RDtJQUM1RCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFM0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNwYWNlUG9pbnQsIFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuXG4vKipcbiAqIEB0b2RvIGhhbmRsZSByZWd1bGFyIG5vZGVzXG4gKlxuICogQHBhcmFtIHBvaW50IGdsb2JhbCBwb2ludCBpbiBmbG93IGNvb3JkaW5hdGVzXG4gKiBAcGFyYW0gZ3JvdXBzIHNvcnRlZCBhcnJheSBvZiBncm91cHNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGFjZVBvaW50cyhwb2ludDogUG9pbnQsIGdyb3VwczogTm9kZU1vZGVsW10pOiBTcGFjZVBvaW50W10ge1xuICBjb25zdCByZXN1bHQ6IFNwYWNlUG9pbnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBncm91cC5nbG9iYWxQb2ludCgpO1xuXG4gICAgaWYgKHBvaW50LnggPj0geCAmJiBwb2ludC54IDw9IHggKyBncm91cC53aWR0aCgpICYmIHBvaW50LnkgPj0geSAmJiBwb2ludC55IDw9IHkgKyBncm91cC5oZWlnaHQoKSkge1xuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICB4OiBwb2ludC54IC0geCxcbiAgICAgICAgeTogcG9pbnQueSAtIHksXG4gICAgICAgIHNwYWNlTm9kZUlkOiBncm91cC5yYXdOb2RlLmlkLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdWx0LnJldmVyc2UoKTtcblxuICAvLyBUT0RPOiBzcHJlYWQgZG9lcyBub3Qgd29yaywgYmVjYXVzZSB0aGUgcG9pbnQgaXMgU1ZHUG9pbnRcbiAgcmVzdWx0LnB1c2goeyBzcGFjZU5vZGVJZDogbnVsbCwgeDogcG9pbnQueCwgeTogcG9pbnQueSB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export function hashCode(str) {
|
|
2
|
-
return str.split('').reduce((a, b) => {
|
|
3
|
-
a = (a << 5) - a + b.charCodeAt(0);
|
|
4
|
-
return a & a;
|
|
5
|
-
}, 0);
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy91dGlscy9oYXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBVztJQUNsQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25DLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGhhc2hDb2RlKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIHN0ci5zcGxpdCgnJykucmVkdWNlKChhLCBiKSA9PiB7XG4gICAgYSA9IChhIDw8IDUpIC0gYSArIGIuY2hhckNvZGVBdCgwKTtcblxuICAgIHJldHVybiBhICYgYTtcbiAgfSwgMCk7XG59XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export function id() {
|
|
2
|
-
const randomLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));
|
|
3
|
-
return randomLetter + Date.now();
|
|
4
|
-
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLEVBQUU7SUFDaEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU5RSxPQUFPLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpZCgpOiBzdHJpbmcge1xuICBjb25zdCByYW5kb21MZXR0ZXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjYpKTtcblxuICByZXR1cm4gcmFuZG9tTGV0dGVyICsgRGF0ZS5ub3coKTtcbn1cbiJdfQ==
|