ngx-vflow 1.15.0 → 1.16.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/alignment-helper/alignment-helper.component.mjs +103 -0
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +8 -5
- package/esm2022/lib/vflow/interfaces/alignment-helper-settings.interface.mjs +2 -0
- package/esm2022/lib/vflow/interfaces/rect.mjs +10 -2
- package/esm2022/lib/vflow/services/draggable.service.mjs +7 -1
- package/esm2022/lib/vflow/services/flow-status.service.mjs +13 -1
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/testing/component-mocks/vflow-mock.component.mjs +4 -3
- package/fesm2022/ngx-vflow-testing.mjs +3 -2
- package/fesm2022/ngx-vflow-testing.mjs.map +1 -1
- package/fesm2022/ngx-vflow.mjs +160 -38
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/components/alignment-helper/alignment-helper.component.d.ts +21 -0
- package/lib/vflow/components/vflow/vflow.component.d.ts +3 -1
- package/lib/vflow/interfaces/alignment-helper-settings.interface.d.ts +4 -0
- package/lib/vflow/interfaces/rect.d.ts +7 -0
- package/lib/vflow/services/draggable.service.d.ts +1 -0
- package/lib/vflow/services/flow-status.service.d.ts +17 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/testing/component-mocks/vflow-mock.component.d.ts +3 -2
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';
|
|
2
|
+
import { nodeToRect } from '../../utils/nodes';
|
|
3
|
+
import { FlowStatusService, isNodeDragEndStatus, isNodeDragStartStatus } from '../../services/flow-status.service';
|
|
4
|
+
import { rectToRectWithSides } from '../../interfaces/rect';
|
|
5
|
+
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
6
|
+
import { filter, map, tap } from 'rxjs';
|
|
7
|
+
import { extendedComputed } from '../../utils/signals/extended-computed';
|
|
8
|
+
import { NodeRenderingService } from '../../services/node-rendering.service';
|
|
9
|
+
import { getSpacePoints } from '../../utils/get-space-points';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class AlignmentHelperComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.nodeRenderingService = inject(NodeRenderingService);
|
|
14
|
+
this.flowStatus = inject(FlowStatusService);
|
|
15
|
+
this.tolerance = input(10);
|
|
16
|
+
this.lineColor = input('#1b262c');
|
|
17
|
+
this.isNodeDragging = computed(() => isNodeDragStartStatus(this.flowStatus.status()));
|
|
18
|
+
this.intersections = extendedComputed((lastValue) => {
|
|
19
|
+
const status = this.flowStatus.status();
|
|
20
|
+
if (isNodeDragStartStatus(status)) {
|
|
21
|
+
const node = status.payload.node;
|
|
22
|
+
const d = rectToRectWithSides(nodeToRect(node));
|
|
23
|
+
const otherRects = this.nodeRenderingService
|
|
24
|
+
.viewportNodes()
|
|
25
|
+
.filter((n) => n !== node)
|
|
26
|
+
// do not check children of the dragged node
|
|
27
|
+
.filter((n) => !node.children().includes(n))
|
|
28
|
+
.map((n) => rectToRectWithSides(nodeToRect(n)));
|
|
29
|
+
const lines = [];
|
|
30
|
+
let snappedX = d.x;
|
|
31
|
+
let snappedY = d.y;
|
|
32
|
+
let closestXDiff = Infinity;
|
|
33
|
+
let closestYDiff = Infinity;
|
|
34
|
+
otherRects.forEach((o) => {
|
|
35
|
+
const dCenterX = d.left + d.width / 2;
|
|
36
|
+
const oCenterX = o.left + o.width / 2;
|
|
37
|
+
for (const [dX, oX, snapX, isCenter] of [
|
|
38
|
+
// center check
|
|
39
|
+
[dCenterX, oCenterX, oCenterX - d.width / 2, true],
|
|
40
|
+
[d.left, o.left, o.left, false],
|
|
41
|
+
[d.left, o.right, o.right, false],
|
|
42
|
+
[d.right, o.left, o.left - d.width, false],
|
|
43
|
+
[d.right, o.right, o.right - d.width, false],
|
|
44
|
+
]) {
|
|
45
|
+
const diff = Math.abs(dX - oX);
|
|
46
|
+
if (diff <= this.tolerance()) {
|
|
47
|
+
const y = Math.min(d.top, o.top);
|
|
48
|
+
const y2 = Math.max(d.bottom, o.bottom);
|
|
49
|
+
lines.push({ x: oX, y, x2: oX, y2, isCenter });
|
|
50
|
+
if (diff < closestXDiff) {
|
|
51
|
+
closestXDiff = diff;
|
|
52
|
+
snappedX = snapX;
|
|
53
|
+
}
|
|
54
|
+
if (isCenter)
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const dCenterY = d.top + d.height / 2;
|
|
59
|
+
const oCenterY = o.top + o.height / 2;
|
|
60
|
+
for (const [dY, oY, snapY, isCenter] of [
|
|
61
|
+
// center check
|
|
62
|
+
[dCenterY, oCenterY, oCenterY - d.height / 2, true],
|
|
63
|
+
[d.top, o.top, o.top, false],
|
|
64
|
+
[d.top, o.bottom, o.bottom, false],
|
|
65
|
+
[d.bottom, o.top, o.top - d.height, false],
|
|
66
|
+
[d.bottom, o.bottom, o.bottom - d.height, false],
|
|
67
|
+
]) {
|
|
68
|
+
const diff = Math.abs(dY - oY);
|
|
69
|
+
if (diff <= this.tolerance()) {
|
|
70
|
+
const x = Math.min(d.left, o.left);
|
|
71
|
+
const x2 = Math.max(d.right, o.right);
|
|
72
|
+
lines.push({ x, y: oY, x2, y2: oY, isCenter });
|
|
73
|
+
if (diff < closestYDiff) {
|
|
74
|
+
closestYDiff = diff;
|
|
75
|
+
snappedY = snapY;
|
|
76
|
+
}
|
|
77
|
+
if (isCenter)
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return { lines, snappedX, snappedY };
|
|
83
|
+
}
|
|
84
|
+
return lastValue;
|
|
85
|
+
});
|
|
86
|
+
toObservable(this.flowStatus.status)
|
|
87
|
+
.pipe(filter(isNodeDragEndStatus), map((status) => status.payload.node), map((node) => [node, this.intersections()]), tap(([node, intersections]) => {
|
|
88
|
+
if (intersections) {
|
|
89
|
+
const snapped = { x: intersections.snappedX, y: intersections.snappedY };
|
|
90
|
+
const parentIfExists = node.parent() ? [node.parent()] : [];
|
|
91
|
+
node.setPoint(getSpacePoints(snapped, parentIfExists)[0]);
|
|
92
|
+
}
|
|
93
|
+
}), takeUntilDestroyed())
|
|
94
|
+
.subscribe();
|
|
95
|
+
}
|
|
96
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AlignmentHelperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
97
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AlignmentHelperComponent, isStandalone: true, selector: "g[alignmentHelper]", inputs: { tolerance: { classPropertyName: "tolerance", publicName: "tolerance", isSignal: true, isRequired: false, transformFunction: null }, lineColor: { classPropertyName: "lineColor", publicName: "lineColor", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (isNodeDragging()) {\n @if (intersections(); as intersections) {\n @for (intersection of intersections.lines; track $index) {\n <svg:line\n [attr.stroke]=\"lineColor()\"\n [attr.stroke-dasharray]=\"intersection.isCenter ? 4 : null\"\n [attr.x1]=\"intersection.x\"\n [attr.y1]=\"intersection.y\"\n [attr.x2]=\"intersection.x2\"\n [attr.y2]=\"intersection.y2\" />\n }\n }\n}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
98
|
+
}
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AlignmentHelperComponent, decorators: [{
|
|
100
|
+
type: Component,
|
|
101
|
+
args: [{ selector: 'g[alignmentHelper]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "@if (isNodeDragging()) {\n @if (intersections(); as intersections) {\n @for (intersection of intersections.lines; track $index) {\n <svg:line\n [attr.stroke]=\"lineColor()\"\n [attr.stroke-dasharray]=\"intersection.isCenter ? 4 : null\"\n [attr.x1]=\"intersection.x\"\n [attr.y1]=\"intersection.y\"\n [attr.x2]=\"intersection.x2\"\n [attr.y2]=\"intersection.y2\" />\n }\n }\n}\n" }]
|
|
102
|
+
}], ctorParameters: () => [] });
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ25tZW50LWhlbHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvY29tcG9uZW50cy9hbGlnbm1lbnQtaGVscGVyL2FsaWdubWVudC1oZWxwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvYWxpZ25tZW50LWhlbHBlci9hbGlnbm1lbnQtaGVscGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25ILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQWM5RCxNQUFNLE9BQU8sd0JBQXdCO0lBOEZuQztRQTdGUSx5QkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMs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U3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG5vZGVUb1JlY3QgfSBmcm9tICcuLi8uLi91dGlscy9ub2Rlcyc7XG5pbXBvcnQgeyBGbG93U3RhdHVzU2VydmljZSwgaXNOb2RlRHJhZ0VuZFN0YXR1cywgaXNOb2RlRHJhZ1N0YXJ0U3RhdHVzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyByZWN0VG9SZWN0V2l0aFNpZGVzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZWN0JztcbmltcG9ydCB7IEJveCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYm94JztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZXh0ZW5kZWRDb21wdXRlZCB9IGZyb20gJy4uLy4uL3V0aWxzL3NpZ25hbHMvZXh0ZW5kZWQtY29tcHV0ZWQnO1xuaW1wb3J0IHsgTm9kZVJlbmRlcmluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub2RlLXJlbmRlcmluZy5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFNwYWNlUG9pbnRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LXNwYWNlLXBvaW50cyc7XG5cbmludGVyZmFjZSBJbnRlcnNlY3Rpb24ge1xuICBsaW5lczogKEJveCAmIHsgaXNDZW50ZXI6IGJvb2xlYW4gfSlbXTtcbiAgc25hcHBlZFg6IG51bWJlcjtcbiAgc25hcHBlZFk6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ1thbGlnbm1lbnRIZWxwZXJdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsaWdubWVudC1oZWxwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQWxpZ25tZW50SGVscGVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBub2RlUmVuZGVyaW5nU2VydmljZSA9IGluamVjdChOb2RlUmVuZGVyaW5nU2VydmljZSk7XG4gIHByaXZhdGUgZmxvd1N0YXR1cyA9IGluamVjdChGbG93U3RhdHVzU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgdG9sZXJhbmNlID0gaW5wdXQoMTApO1xuICByZWFkb25seSBsaW5lQ29sb3IgPSBpbnB1dCgnIzFiMjYyYycpO1xuXG4gIHByb3RlY3RlZCBpc05vZGVEcmFnZ2luZyA9IGNvbXB1dGVkKCgpID0+IGlzTm9kZURyYWdTdGFydFN0YXR1cyh0aGlzLmZsb3dTdGF0dXMuc3RhdHVzKCkpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW50ZXJzZWN0aW9ucyA9IGV4dGVuZGVkQ29tcHV0ZWQ8SW50ZXJzZWN0aW9uPigobGFzdFZhbHVlKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5mbG93U3RhdHVzLnN0YXR1cygpO1xuXG4gICAgaWYgKGlzTm9kZURyYWdTdGFydFN0YXR1cyhzdGF0dXMpKSB7XG4gICAgICBjb25zdCBub2RlID0gc3RhdHVzLnBheWxvYWQubm9kZTtcblxuICAgICAgY29uc3QgZCA9IHJlY3RUb1JlY3RXaXRoU2lkZXMobm9kZVRvUmVjdChub2RlKSk7XG4gICAgICBjb25zdCBvdGhlclJlY3RzID0gdGhpcy5ub2RlUmVuZGVyaW5nU2VydmljZVxuICAgICAgICAudmlld3BvcnROb2RlcygpXG4gICAgICAgIC5maWx0ZXIoKG4pID0+IG4gIT09IG5vZGUpXG4gICAgICAgIC8vIGRvIG5vdCBjaGVjayBjaGlsZHJlbiBvZiB0aGUgZHJhZ2dlZCBub2RlXG4gICAgICAgIC5maWx0ZXIoKG4pID0+ICFub2RlLmNoaWxkcmVuKCkuaW5jbHVkZXMobikpXG4gICAgICAgIC5tYXAoKG4pID0+IHJlY3RUb1JlY3RXaXRoU2lkZXMobm9kZVRvUmVjdChuKSkpO1xuXG4gICAgICBjb25zdCBsaW5lczogSW50ZXJzZWN0aW9uWydsaW5lcyddID0gW107XG5cbiAgICAgIGxldCBzbmFwcGVkWCA9IGQueDtcbiAgICAgIGxldCBzbmFwcGVkWSA9IGQueTtcbiAgICAgIGxldCBjbG9zZXN0WERpZmYgPSBJbmZpbml0eTtcbiAgICAgIGxldCBjbG9zZXN0WURpZmYgPSBJbmZpbml0eTtcblxuICAgICAgb3RoZXJSZWN0cy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgIGNvbnN0IGRDZW50ZXJYID0gZC5sZWZ0ICsgZC53aWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IG9DZW50ZXJYID0gby5sZWZ0ICsgby53aWR0aCAvIDI7XG5cbiAgICAgICAgZm9yIChjb25zdCBbZFgsIG9YLCBzbmFwWCwgaXNDZW50ZXJdIG9mIFtcbiAgICAgICAgICAvLyBjZW50ZXIgY2hlY2tcbiAgICAgICAgICBbZENlbnRlclgsIG9DZW50ZXJYLCBvQ2VudGVyWCAtIGQud2lkdGggLyAyLCB0cnVlXSBhcyBjb25zdCxcbiAgICAgICAgICBbZC5sZWZ0LCBvLmxlZnQsIG8ubGVmdCwgZmFsc2VdIGFzIGNvbnN0LFxuICAgICAgICAgIFtkLmxlZnQsIG8ucmlnaHQsIG8ucmlnaHQsIGZhbHNlXSBhcyBjb25zdCxcbiAgICAgICAgICBbZC5yaWdodCwgby5sZWZ0LCBvLmxlZnQgLSBkLndpZHRoLCBmYWxzZV0gYXMgY29uc3QsXG4gICAgICAgICAgW2QucmlnaHQsIG8ucmlnaHQsIG8ucmlnaHQgLSBkLndpZHRoLCBmYWxzZV0gYXMgY29uc3QsXG4gICAgICAgIF0pIHtcbiAgICAgICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoZFggLSBvWCk7XG5cbiAgICAgICAgICBpZiAoZGlmZiA8PSB0aGlzLnRvbGVyYW5jZSgpKSB7XG4gICAgICAgICAgICBjb25zdCB5ID0gTWF0aC5taW4oZC50b3AsIG8udG9wKTtcbiAgICAgICAgICAgIGNvbnN0IHkyID0gTWF0aC5tYXgoZC5ib3R0b20sIG8uYm90dG9tKTtcblxuICAgICAgICAgICAgbGluZXMucHVzaCh7IHg6IG9YLCB5LCB4Mjogb1gsIHkyLCBpc0NlbnRlciB9KTtcblxuICAgICAgICAgICAgaWYgKGRpZmYgPCBjbG9zZXN0WERpZmYpIHtcbiAgICAgICAgICAgICAgY2xvc2VzdFhEaWZmID0gZGlmZjtcbiAgICAgICAgICAgICAgc25hcHBlZFggPSBzbmFwWDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzQ2VudGVyKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkQ2VudGVyWSA9IGQudG9wICsgZC5oZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBvQ2VudGVyWSA9IG8udG9wICsgby5oZWlnaHQgLyAyO1xuXG4gICAgICAgIGZvciAoY29uc3QgW2RZLCBvWSwgc25hcFksIGlzQ2VudGVyXSBvZiBbXG4gICAgICAgICAgLy8gY2VudGVyIGNoZWNrXG4gICAgICAgICAgW2RDZW50ZXJZLCBvQ2VudGVyWSwgb0NlbnRlclkgLSBkLmhlaWdodCAvIDIsIHRydWVdIGFzIGNvbnN0LFxuICAgICAgICAgIFtkLnRvcCwgby50b3AsIG8udG9wLCBmYWxzZV0gYXMgY29uc3QsXG4gICAgICAgICAgW2QudG9wLCBvLmJvdHRvbSwgby5ib3R0b20sIGZhbHNlXSBhcyBjb25zdCxcbiAgICAgICAgICBbZC5ib3R0b20sIG8udG9wLCBvLnRvcCAtIGQuaGVpZ2h0LCBmYWxzZV0gYXMgY29uc3QsXG4gICAgICAgICAgW2QuYm90dG9tLCBvLmJvdHRvbSwgby5ib3R0b20gLSBkLmhlaWdodCwgZmFsc2VdIGFzIGNvbnN0LFxuICAgICAgICBdKSB7XG4gICAgICAgICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKGRZIC0gb1kpO1xuXG4gICAgICAgICAgaWYgKGRpZmYgPD0gdGhpcy50b2xlcmFuY2UoKSkge1xuICAgICAgICAgICAgY29uc3QgeCA9IE1hdGgubWluKGQubGVmdCwgby5sZWZ0KTtcbiAgICAgICAgICAgIGNvbnN0IHgyID0gTWF0aC5tYXgoZC5yaWdodCwgby5yaWdodCk7XG5cbiAgICAgICAgICAgIGxpbmVzLnB1c2goeyB4LCB5OiBvWSwgeDIsIHkyOiBvWSwgaXNDZW50ZXIgfSk7XG5cbiAgICAgICAgICAgIGlmIChkaWZmIDwgY2xvc2VzdFlEaWZmKSB7XG4gICAgICAgICAgICAgIGNsb3Nlc3RZRGlmZiA9IGRpZmY7XG4gICAgICAgICAgICAgIHNuYXBwZWRZID0gc25hcFk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc0NlbnRlcikgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgbGluZXMsIHNuYXBwZWRYLCBzbmFwcGVkWSB9O1xuICAgIH1cblxuICAgIHJldHVybiBsYXN0VmFsdWU7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmZsb3dTdGF0dXMuc3RhdHVzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihpc05vZGVEcmFnRW5kU3RhdHVzKSxcbiAgICAgICAgbWFwKChzdGF0dXMpID0+IHN0YXR1cy5wYXlsb2FkLm5vZGUpLFxuICAgICAgICBtYXAoKG5vZGUpID0+IFtub2RlLCB0aGlzLmludGVyc2VjdGlvbnMoKV0gYXMgY29uc3QpLFxuICAgICAgICB0YXAoKFtub2RlLCBpbnRlcnNlY3Rpb25zXSkgPT4ge1xuICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBzbmFwcGVkID0geyB4OiBpbnRlcnNlY3Rpb25zLnNuYXBwZWRYLCB5OiBpbnRlcnNlY3Rpb25zLnNuYXBwZWRZIH07XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRJZkV4aXN0cyA9IG5vZGUucGFyZW50KCkgPyBbbm9kZS5wYXJlbnQoKSFdIDogW107XG5cbiAgICAgICAgICAgIG5vZGUuc2V0UG9pbnQoZ2V0U3BhY2VQb2ludHMoc25hcHBlZCwgcGFyZW50SWZFeGlzdHMpWzBdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiQGlmIChpc05vZGVEcmFnZ2luZygpKSB7XG4gIEBpZiAoaW50ZXJzZWN0aW9ucygpOyBhcyBpbnRlcnNlY3Rpb25zKSB7XG4gICAgQGZvciAoaW50ZXJzZWN0aW9uIG9mIGludGVyc2VjdGlvbnMubGluZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgPHN2ZzpsaW5lXG4gICAgICAgIFthdHRyLnN0cm9rZV09XCJsaW5lQ29sb3IoKVwiXG4gICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwiaW50ZXJzZWN0aW9uLmlzQ2VudGVyID8gNCA6IG51bGxcIlxuICAgICAgICBbYXR0ci54MV09XCJpbnRlcnNlY3Rpb24ueFwiXG4gICAgICAgIFthdHRyLnkxXT1cImludGVyc2VjdGlvbi55XCJcbiAgICAgICAgW2F0dHIueDJdPVwiaW50ZXJzZWN0aW9uLngyXCJcbiAgICAgICAgW2F0dHIueTJdPVwiaW50ZXJzZWN0aW9uLnkyXCIgLz5cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Injector, Input, inject, runInInjectionContext, contentChild, viewChild, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Injector, Input, inject, runInInjectionContext, contentChild, viewChild, input, } from '@angular/core';
|
|
2
2
|
import { MapContextDirective } from '../../directives/map-context.directive';
|
|
3
3
|
import { DraggableService } from '../../services/draggable.service';
|
|
4
4
|
import { ViewportService } from '../../services/viewport.service';
|
|
@@ -38,6 +38,7 @@ import { PreviewFlowComponent } from '../preview-flow/preview-flow.component';
|
|
|
38
38
|
import { PreviewFlowRenderStrategyService, ViewportPreviewFlowRenderStrategyService, } from '../../services/preview-flow-render-strategy.service';
|
|
39
39
|
import { toLazySignal } from '../../utils/signals/to-lazy-signal';
|
|
40
40
|
import { FlowRenderingService } from '../../services/flow-rendering.service';
|
|
41
|
+
import { AlignmentHelperComponent } from '../alignment-helper/alignment-helper.component';
|
|
41
42
|
import * as i0 from "@angular/core";
|
|
42
43
|
import * as i1 from "../../directives/changes-controller.directive";
|
|
43
44
|
const changesControllerHostDirective = {
|
|
@@ -88,6 +89,7 @@ export class VflowComponent {
|
|
|
88
89
|
this.keyboardService = inject(KeyboardService);
|
|
89
90
|
this.injector = inject(Injector);
|
|
90
91
|
this.flowRenderingService = inject(FlowRenderingService);
|
|
92
|
+
this.alignmentHelper = input(false);
|
|
91
93
|
this.nodeModels = this.nodeRenderingService.nodes;
|
|
92
94
|
this.groups = this.nodeRenderingService.groups;
|
|
93
95
|
this.nonGroups = this.nodeRenderingService.nonGroups;
|
|
@@ -349,7 +351,7 @@ export class VflowComponent {
|
|
|
349
351
|
return edge;
|
|
350
352
|
}
|
|
351
353
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VflowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
352
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: VflowComponent, isStandalone: true, selector: "vflow", inputs: { view: "view", minZoom: "minZoom", maxZoom: "maxZoom", background: "background", optimization: "optimization", entitiesSelectable: "entitiesSelectable", keyboardShortcuts: "keyboardShortcuts", connection:
|
|
354
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: VflowComponent, isStandalone: true, selector: "vflow", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: false, isRequired: false, transformFunction: null }, minZoom: { classPropertyName: "minZoom", publicName: "minZoom", isSignal: false, isRequired: false, transformFunction: null }, maxZoom: { classPropertyName: "maxZoom", publicName: "maxZoom", isSignal: false, isRequired: false, transformFunction: null }, background: { classPropertyName: "background", publicName: "background", isSignal: false, isRequired: false, transformFunction: null }, optimization: { classPropertyName: "optimization", publicName: "optimization", isSignal: false, isRequired: false, transformFunction: null }, entitiesSelectable: { classPropertyName: "entitiesSelectable", publicName: "entitiesSelectable", isSignal: false, isRequired: false, transformFunction: null }, keyboardShortcuts: { classPropertyName: "keyboardShortcuts", publicName: "keyboardShortcuts", isSignal: false, isRequired: false, transformFunction: null }, connection: { classPropertyName: "connection", publicName: "connection", isSignal: false, isRequired: false, transformFunction: (settings) => new ConnectionModel(settings) }, snapGrid: { classPropertyName: "snapGrid", publicName: "snapGrid", isSignal: false, isRequired: false, transformFunction: null }, elevateNodesOnSelect: { classPropertyName: "elevateNodesOnSelect", publicName: "elevateNodesOnSelect", isSignal: false, isRequired: false, transformFunction: null }, elevateEdgesOnSelect: { classPropertyName: "elevateEdgesOnSelect", publicName: "elevateEdgesOnSelect", isSignal: false, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: false, isRequired: true, transformFunction: null }, alignmentHelper: { classPropertyName: "alignmentHelper", publicName: "alignmentHelper", isSignal: true, isRequired: false, transformFunction: null }, edges: { classPropertyName: "edges", publicName: "edges", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onComponentNodeEvent: "onComponentNodeEvent" }, providers: [
|
|
353
355
|
DraggableService,
|
|
354
356
|
ViewportService,
|
|
355
357
|
FlowStatusService,
|
|
@@ -365,7 +367,7 @@ export class VflowComponent {
|
|
|
365
367
|
OverlaysService,
|
|
366
368
|
{ provide: PreviewFlowRenderStrategyService, useClass: ViewportPreviewFlowRenderStrategyService },
|
|
367
369
|
FlowRenderingService,
|
|
368
|
-
], queries: [{ propertyName: "nodeTemplateDirective", first: true, predicate: NodeHtmlTemplateDirective, descendants: true, isSignal: true }, { propertyName: "nodeSvgTemplateDirective", first: true, predicate: NodeSvgTemplateDirective, descendants: true, isSignal: true }, { propertyName: "groupNodeTemplateDirective", first: true, predicate: GroupNodeTemplateDirective, descendants: true, isSignal: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateDirective, descendants: true, isSignal: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateDirective, descendants: true, isSignal: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "mapContext", first: true, predicate: MapContextDirective, descendants: true, isSignal: true }, { propertyName: "spacePointContext", first: true, predicate: SpacePointContextDirective, descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.ChangesControllerDirective, outputs: ["onNodesChange", "onNodesChange", "onNodesChange.position", "onNodesChange.position", "onNodesChange.position.single", "onNodesChange.position.single", "onNodesChange.position.many", "onNodesChange.position.many", "onNodesChange.size", "onNodesChange.size", "onNodesChange.size.single", "onNodesChange.size.single", "onNodesChange.size.many", "onNodesChange.size.many", "onNodesChange.add", "onNodesChange.add", "onNodesChange.add.single", "onNodesChange.add.single", "onNodesChange.add.many", "onNodesChange.add.many", "onNodesChange.remove", "onNodesChange.remove", "onNodesChange.remove.single", "onNodesChange.remove.single", "onNodesChange.remove.many", "onNodesChange.remove.many", "onNodesChange.select", "onNodesChange.select", "onNodesChange.select.single", "onNodesChange.select.single", "onNodesChange.select.many", "onNodesChange.select.many", "onEdgesChange", "onEdgesChange", "onEdgesChange.detached", "onEdgesChange.detached", "onEdgesChange.detached.single", "onEdgesChange.detached.single", "onEdgesChange.detached.many", "onEdgesChange.detached.many", "onEdgesChange.add", "onEdgesChange.add", "onEdgesChange.add.single", "onEdgesChange.add.single", "onEdgesChange.add.many", "onEdgesChange.add.many", "onEdgesChange.remove", "onEdgesChange.remove", "onEdgesChange.remove.single", "onEdgesChange.remove.single", "onEdgesChange.remove.many", "onEdgesChange.remove.many", "onEdgesChange.select", "onEdgesChange.select", "onEdgesChange.select.single", "onEdgesChange.select.single", "onEdgesChange.select.many", "onEdgesChange.select.many"] }], ngImport: i0, template: "<svg:svg #flow rootSvgRef rootSvgContext rootPointer flowSizeController class=\"root-svg\">\n <defs flowDefs [markers]=\"markers()\" />\n\n <g background />\n\n <svg:g mapContext spacePointContext>\n <!-- Connection -->\n <svg:g connection [model]=\"connection\" [template]=\"connectionTemplateDirective()?.templateRef\" />\n\n @if (flowOptimization().detachedGroupsLayer) {\n <!-- Groups -->\n @for (model of groups(); track trackNodes($index, model)) {\n <svg:g\n node\n [model]=\"model\"\n [groupNodeTemplate]=\"groupNodeTemplateDirective()?.templateRef\"\n [attr.transform]=\"model.pointTransform()\" />\n }\n <!-- Edges -->\n @for (model of edgeModels(); track trackEdges($index, model)) {\n <svg:g\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective()?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective()?.templateRef\" />\n }\n <!-- Nodes -->\n @for (model of nonGroups(); track trackNodes($index, model)) {\n <svg:g\n node\n [model]=\"model\"\n [nodeTemplate]=\"nodeTemplateDirective()?.templateRef\"\n [nodeSvgTemplate]=\"nodeSvgTemplateDirective()?.templateRef\"\n [attr.transform]=\"model.pointTransform()\" />\n }\n }\n\n @if (!flowOptimization().detachedGroupsLayer) {\n <!-- Edges -->\n @for (model of edgeModels(); track trackEdges($index, model)) {\n <svg:g\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective()?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective()?.templateRef\" />\n }\n\n @for (model of nodeModels(); track trackNodes($index, model)) {\n <svg:g\n node\n [model]=\"model\"\n [nodeTemplate]=\"nodeTemplateDirective()?.templateRef\"\n [nodeSvgTemplate]=\"nodeSvgTemplateDirective()?.templateRef\"\n [groupNodeTemplate]=\"groupNodeTemplateDirective()?.templateRef\"\n [attr.transform]=\"model.pointTransform()\" />\n }\n }\n </svg:g>\n\n <!-- Minimap -->\n @if (minimap(); as minimap) {\n <ng-container [ngTemplateOutlet]=\"minimap.template()\" />\n }\n</svg:svg>\n\n@if (flowOptimization().virtualization) {\n <canvas previewFlow class=\"preview-flow\" [width]=\"flowWidth()\" [height]=\"flowHeight()\"></canvas>\n}\n", styles: [":host{display:grid;grid-template-columns:1fr;width:100%;height:100%;-webkit-user-select:none;user-select:none}:host ::ng-deep *{box-sizing:border-box}.root-svg{grid-row-start:1;grid-column-start:1}.preview-flow{pointer-events:none;grid-row-start:1;grid-column-start:1}\n"], dependencies: [{ kind: "directive", type: RootSvgReferenceDirective, selector: "svg[rootSvgRef]" }, { kind: "directive", type: RootSvgContextDirective, selector: "svg[rootSvgContext]" }, { kind: "directive", type: RootPointerDirective, selector: "svg[rootPointer]" }, { kind: "directive", type: FlowSizeControllerDirective, selector: "svg[flowSizeController]" }, { kind: "component", type: DefsComponent, selector: "defs[flowDefs]", inputs: ["markers"] }, { kind: "component", type: BackgroundComponent, selector: "g[background]" }, { kind: "directive", type: MapContextDirective, selector: "g[mapContext]" }, { kind: "directive", type: SpacePointContextDirective, selector: "g[spacePointContext]" }, { kind: "component", type: ConnectionComponent, selector: "g[connection]", inputs: ["model", "template"] }, { kind: "component", type: NodeComponent, selector: "g[node]", inputs: ["model", "nodeTemplate", "nodeSvgTemplate", "groupNodeTemplate"] }, { kind: "component", type: EdgeComponent, selector: "g[edge]", inputs: ["model", "edgeTemplate", "edgeLabelHtmlTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PreviewFlowComponent, selector: "canvas[previewFlow]", inputs: ["width", "height"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
370
|
+
], queries: [{ propertyName: "nodeTemplateDirective", first: true, predicate: NodeHtmlTemplateDirective, descendants: true, isSignal: true }, { propertyName: "nodeSvgTemplateDirective", first: true, predicate: NodeSvgTemplateDirective, descendants: true, isSignal: true }, { propertyName: "groupNodeTemplateDirective", first: true, predicate: GroupNodeTemplateDirective, descendants: true, isSignal: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateDirective, descendants: true, isSignal: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateDirective, descendants: true, isSignal: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "mapContext", first: true, predicate: MapContextDirective, descendants: true, isSignal: true }, { propertyName: "spacePointContext", first: true, predicate: SpacePointContextDirective, descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.ChangesControllerDirective, outputs: ["onNodesChange", "onNodesChange", "onNodesChange.position", "onNodesChange.position", "onNodesChange.position.single", "onNodesChange.position.single", "onNodesChange.position.many", "onNodesChange.position.many", "onNodesChange.size", "onNodesChange.size", "onNodesChange.size.single", "onNodesChange.size.single", "onNodesChange.size.many", "onNodesChange.size.many", "onNodesChange.add", "onNodesChange.add", "onNodesChange.add.single", "onNodesChange.add.single", "onNodesChange.add.many", "onNodesChange.add.many", "onNodesChange.remove", "onNodesChange.remove", "onNodesChange.remove.single", "onNodesChange.remove.single", "onNodesChange.remove.many", "onNodesChange.remove.many", "onNodesChange.select", "onNodesChange.select", "onNodesChange.select.single", "onNodesChange.select.single", "onNodesChange.select.many", "onNodesChange.select.many", "onEdgesChange", "onEdgesChange", "onEdgesChange.detached", "onEdgesChange.detached", "onEdgesChange.detached.single", "onEdgesChange.detached.single", "onEdgesChange.detached.many", "onEdgesChange.detached.many", "onEdgesChange.add", "onEdgesChange.add", "onEdgesChange.add.single", "onEdgesChange.add.single", "onEdgesChange.add.many", "onEdgesChange.add.many", "onEdgesChange.remove", "onEdgesChange.remove", "onEdgesChange.remove.single", "onEdgesChange.remove.single", "onEdgesChange.remove.many", "onEdgesChange.remove.many", "onEdgesChange.select", "onEdgesChange.select", "onEdgesChange.select.single", "onEdgesChange.select.single", "onEdgesChange.select.many", "onEdgesChange.select.many"] }], ngImport: i0, template: "<svg:svg #flow rootSvgRef rootSvgContext rootPointer flowSizeController class=\"root-svg\">\n <defs flowDefs [markers]=\"markers()\" />\n\n <g background />\n\n <svg:g mapContext spacePointContext>\n @if (alignmentHelper(); as alignmentHelper) {\n @if (alignmentHelper === true) {\n <svg:g alignmentHelper />\n } @else {\n <svg:g alignmentHelper [tolerance]=\"alignmentHelper.tolerance\" [lineColor]=\"alignmentHelper.lineColor\" />\n }\n }\n\n <!-- Connection -->\n <svg:g connection [model]=\"connection\" [template]=\"connectionTemplateDirective()?.templateRef\" />\n\n @if (flowOptimization().detachedGroupsLayer) {\n <!-- Groups -->\n @for (model of groups(); track trackNodes($index, model)) {\n <svg:g\n node\n [model]=\"model\"\n [groupNodeTemplate]=\"groupNodeTemplateDirective()?.templateRef\"\n [attr.transform]=\"model.pointTransform()\" />\n }\n <!-- Edges -->\n @for (model of edgeModels(); track trackEdges($index, model)) {\n <svg:g\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective()?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective()?.templateRef\" />\n }\n <!-- Nodes -->\n @for (model of nonGroups(); track trackNodes($index, model)) {\n <svg:g\n node\n [model]=\"model\"\n [nodeTemplate]=\"nodeTemplateDirective()?.templateRef\"\n [nodeSvgTemplate]=\"nodeSvgTemplateDirective()?.templateRef\"\n [attr.transform]=\"model.pointTransform()\" />\n }\n }\n\n @if (!flowOptimization().detachedGroupsLayer) {\n <!-- Edges -->\n @for (model of edgeModels(); track trackEdges($index, model)) {\n <svg:g\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective()?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective()?.templateRef\" />\n }\n\n @for (model of nodeModels(); track trackNodes($index, model)) {\n <svg:g\n node\n [model]=\"model\"\n [nodeTemplate]=\"nodeTemplateDirective()?.templateRef\"\n [nodeSvgTemplate]=\"nodeSvgTemplateDirective()?.templateRef\"\n [groupNodeTemplate]=\"groupNodeTemplateDirective()?.templateRef\"\n [attr.transform]=\"model.pointTransform()\" />\n }\n }\n </svg:g>\n\n <!-- Minimap -->\n @if (minimap(); as minimap) {\n <ng-container [ngTemplateOutlet]=\"minimap.template()\" />\n }\n</svg:svg>\n\n@if (flowOptimization().virtualization) {\n <canvas previewFlow class=\"preview-flow\" [width]=\"flowWidth()\" [height]=\"flowHeight()\"></canvas>\n}\n", styles: [":host{display:grid;grid-template-columns:1fr;width:100%;height:100%;-webkit-user-select:none;user-select:none}:host ::ng-deep *{box-sizing:border-box}.root-svg{grid-row-start:1;grid-column-start:1}.preview-flow{pointer-events:none;grid-row-start:1;grid-column-start:1}\n"], dependencies: [{ kind: "directive", type: RootSvgReferenceDirective, selector: "svg[rootSvgRef]" }, { kind: "directive", type: RootSvgContextDirective, selector: "svg[rootSvgContext]" }, { kind: "directive", type: RootPointerDirective, selector: "svg[rootPointer]" }, { kind: "directive", type: FlowSizeControllerDirective, selector: "svg[flowSizeController]" }, { kind: "component", type: DefsComponent, selector: "defs[flowDefs]", inputs: ["markers"] }, { kind: "component", type: BackgroundComponent, selector: "g[background]" }, { kind: "directive", type: MapContextDirective, selector: "g[mapContext]" }, { kind: "directive", type: SpacePointContextDirective, selector: "g[spacePointContext]" }, { kind: "component", type: ConnectionComponent, selector: "g[connection]", inputs: ["model", "template"] }, { kind: "component", type: NodeComponent, selector: "g[node]", inputs: ["model", "nodeTemplate", "nodeSvgTemplate", "groupNodeTemplate"] }, { kind: "component", type: EdgeComponent, selector: "g[edge]", inputs: ["model", "edgeTemplate", "edgeLabelHtmlTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PreviewFlowComponent, selector: "canvas[previewFlow]", inputs: ["width", "height"] }, { kind: "component", type: AlignmentHelperComponent, selector: "g[alignmentHelper]", inputs: ["tolerance", "lineColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
369
371
|
}
|
|
370
372
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VflowComponent, decorators: [{
|
|
371
373
|
type: Component,
|
|
@@ -399,7 +401,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
399
401
|
EdgeComponent,
|
|
400
402
|
NgTemplateOutlet,
|
|
401
403
|
PreviewFlowComponent,
|
|
402
|
-
|
|
404
|
+
AlignmentHelperComponent,
|
|
405
|
+
], template: "<svg:svg #flow rootSvgRef rootSvgContext rootPointer flowSizeController class=\"root-svg\">\n <defs flowDefs [markers]=\"markers()\" />\n\n <g background />\n\n <svg:g mapContext spacePointContext>\n @if (alignmentHelper(); as alignmentHelper) {\n @if (alignmentHelper === true) {\n <svg:g alignmentHelper />\n } @else {\n <svg:g alignmentHelper [tolerance]=\"alignmentHelper.tolerance\" [lineColor]=\"alignmentHelper.lineColor\" />\n }\n }\n\n <!-- Connection -->\n <svg:g connection [model]=\"connection\" [template]=\"connectionTemplateDirective()?.templateRef\" />\n\n @if (flowOptimization().detachedGroupsLayer) {\n <!-- Groups -->\n @for (model of groups(); track trackNodes($index, model)) {\n <svg:g\n node\n [model]=\"model\"\n [groupNodeTemplate]=\"groupNodeTemplateDirective()?.templateRef\"\n [attr.transform]=\"model.pointTransform()\" />\n }\n <!-- Edges -->\n @for (model of edgeModels(); track trackEdges($index, model)) {\n <svg:g\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective()?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective()?.templateRef\" />\n }\n <!-- Nodes -->\n @for (model of nonGroups(); track trackNodes($index, model)) {\n <svg:g\n node\n [model]=\"model\"\n [nodeTemplate]=\"nodeTemplateDirective()?.templateRef\"\n [nodeSvgTemplate]=\"nodeSvgTemplateDirective()?.templateRef\"\n [attr.transform]=\"model.pointTransform()\" />\n }\n }\n\n @if (!flowOptimization().detachedGroupsLayer) {\n <!-- Edges -->\n @for (model of edgeModels(); track trackEdges($index, model)) {\n <svg:g\n edge\n [model]=\"model\"\n [edgeTemplate]=\"edgeTemplateDirective()?.templateRef\"\n [edgeLabelHtmlTemplate]=\"edgeLabelHtmlDirective()?.templateRef\" />\n }\n\n @for (model of nodeModels(); track trackNodes($index, model)) {\n <svg:g\n node\n [model]=\"model\"\n [nodeTemplate]=\"nodeTemplateDirective()?.templateRef\"\n [nodeSvgTemplate]=\"nodeSvgTemplateDirective()?.templateRef\"\n [groupNodeTemplate]=\"groupNodeTemplateDirective()?.templateRef\"\n [attr.transform]=\"model.pointTransform()\" />\n }\n }\n </svg:g>\n\n <!-- Minimap -->\n @if (minimap(); as minimap) {\n <ng-container [ngTemplateOutlet]=\"minimap.template()\" />\n }\n</svg:svg>\n\n@if (flowOptimization().virtualization) {\n <canvas previewFlow class=\"preview-flow\" [width]=\"flowWidth()\" [height]=\"flowHeight()\"></canvas>\n}\n", styles: [":host{display:grid;grid-template-columns:1fr;width:100%;height:100%;-webkit-user-select:none;user-select:none}:host ::ng-deep *{box-sizing:border-box}.root-svg{grid-row-start:1;grid-column-start:1}.preview-flow{pointer-events:none;grid-row-start:1;grid-column-start:1}\n"] }]
|
|
403
406
|
}], propDecorators: { view: [{
|
|
404
407
|
type: Input
|
|
405
408
|
}], minZoom: [{
|
|
@@ -431,4 +434,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
431
434
|
}], edges: [{
|
|
432
435
|
type: Input
|
|
433
436
|
}] } });
|
|
434
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdoRixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLDhCQUE4QixFQUM5QixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6Qix3QkFBd0IsR0FDekIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFF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RTtnQkF1QmQsS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBpbmplY3QsXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbiAgY29udGVudENoaWxkLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY05vZGUsIE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1hcENvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL21hcC1jb250ZXh0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcmFnZ2FibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIG91dHB1dEZyb21PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRWRnZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWRnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRWRnZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VkZ2UubW9kZWwnO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlLFxuICBFZGdlTGFiZWxIdG1sVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEVkZ2VUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgR3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUsXG4gIE5vZGVIdG1sVGVtcGxhdGVEaXJlY3RpdmUsXG4gIE5vZGVTdmdUZW1wbGF0ZURpcmVjdGl2ZSxcbn0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgYWRkTm9kZXNUb0VkZ2VzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYWRkLW5vZGVzLXRvLWVkZ2VzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNwYWNlUG9pbnQsIFBvaW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVmlld3BvcnRTdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsb3dTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29ubmVjdGlvbi1zZXR0aW5ncy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVmZXJlbmNlSWRlbnRpdHlDaGVja2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvaWRlbnRpdHktY2hlY2tlci9yZWZlcmVuY2UtaWRlbnRpdHktY2hlY2tlcic7XG5pbXBvcnQgeyBOb2Rlc0NoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub2RlLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQgeyBFZGdlQ2hhbmdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGdlLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvbm9kZS1jaGFuZ2UudHlwZSc7XG5pbXBvcnQgeyBDaGFuZ2VzQ29udHJvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY2hhbmdlcy1jb250cm9sbGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFZGdlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvZWRnZS1jaGFuZ2UudHlwZSc7XG5pbXBvcnQgeyBOb2RlUmVuZGVyaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGUtcmVuZGVyaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50RXZlbnRCdXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tcG9uZW50LWV2ZW50LWJ1cy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhY2tncm91bmQgfSBmcm9tICcuLi8uLi90eXBlcy9iYWNrZ3JvdW5kLnR5cGUnO1xuaW1wb3J0IHsgU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3NwYWNlLXBvaW50LWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZpdFZpZXdPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9maXQtdmlldy1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPcHRpbWl6YXRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL29wdGltaXphdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dHMgfSBmcm9tICcuLi8uLi90eXBlcy9rZXlib2FyZC1hY3Rpb24udHlwZSc7XG5pbXBvcnQgeyBLZXlib2FyZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9rZXlib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IHRyYW5zZm9ybUJhY2tncm91bmQgfSBmcm9tICcuLi8uLi91dGlscy90cmFuc2Zvcm0tYmFja2dyb3VuZCc7XG5pbXBvcnQgeyBPdmVybGF5c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vdmVybGF5cy5zZXJ2aWNlJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRWRnZUNvbXBvbmVudCB9IGZyb20gJy4uL2VkZ2UvZWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL25vZGUvbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nvbm5lY3Rpb24vY29ubmVjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFja2dyb3VuZENvbXBvbmVudCB9IGZyb20gJy4uL2JhY2tncm91bmQvYmFja2dyb3VuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVmc0NvbXBvbmVudCB9IGZyb20gJy4uL2RlZnMvZGVmcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxvd1NpemVDb250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mbG93LXNpemUtY29udHJvbGxlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUm9vdFBvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3Jvb3QtcG9pbnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUm9vdFN2Z0NvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3Jvb3Qtc3ZnLWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3JlZmVyZW5jZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWRnZVJlbmRlcmluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGdlLXJlbmRlcmluZy5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFNwYWNlUG9pbnRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LXNwYWNlLXBvaW50cyc7XG5pbXBvcnQgeyBnZXRJbnRlc2VjdGluZ05vZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvbm9kZXMnO1xuaW1wb3J0IHsgSW50ZXJzZWN0aW5nTm9kZXNPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pbnRlcnNlY3Rpbmctbm9kZXMtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJldmlld0Zsb3dDb21wb25lbnQgfSBmcm9tICcuLi9wcmV2aWV3LWZsb3cvcHJldmlldy1mbG93LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBQcmV2aWV3Rmxvd1JlbmRlclN0cmF0ZWd5U2VydmljZSxcbiAgVmlld3BvcnRQcmV2aWV3Rmxvd1JlbmRlclN0cmF0ZWd5U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJldmlldy1mbG93LXJlbmRlci1zdHJhdGVneS5zZXJ2aWNlJztcbmltcG9ydCB7IHRvTGF6eVNpZ25hbCB9IGZyb20gJy4uLy4uL3V0aWxzL3NpZ25hbHMvdG8tbGF6eS1zaWduYWwnO1xuaW1wb3J0IHsgRmxvd1JlbmRlcmluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LXJlbmRlcmluZy5zZXJ2aWNlJztcblxuY29uc3QgY2hhbmdlc0NvbnRyb2xsZXJIb3N0RGlyZWN0aXZlID0ge1xuICBkaXJlY3RpdmU6IENoYW5nZXNDb250cm9sbGVyRGlyZWN0aXZlLFxuICBvdXRwdXRzOiBbXG4gICAgJ29uTm9kZXNDaGFuZ2UnLFxuICAgICdvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uJyxcbiAgICAnb25Ob2Rlc0NoYW5nZS5wb3NpdGlvbi5zaW5nbGUnLFxuICAgICdvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uLm1hbnknLFxuICAgICdvbk5vZGVzQ2hhbmdlLnNpemUnLFxuICAgICdvbk5vZGVzQ2hhbmdlLnNpemUuc2luZ2xlJyxcbiAgICAnb25Ob2Rlc0NoYW5nZS5zaXplLm1hbnknLFxuICAgICdvbk5vZGVzQ2hhbmdlLmFkZCcsXG4gICAgJ29uTm9kZXNDaGFuZ2UuYWRkLnNpbmdsZScsXG4gICAgJ29uTm9kZXNDaGFuZ2UuYWRkLm1hbnknLFxuICAgICdvbk5vZGVzQ2hhbmdlLnJlbW92ZScsXG4gICAgJ29uTm9kZXNDaGFuZ2UucmVtb3ZlLnNpbmdsZScsXG4gICAgJ29uTm9kZXNDaGFuZ2UucmVtb3ZlLm1hbnknLFxuICAgICdvbk5vZGVzQ2hhbmdlLnNlbGVjdCcsXG4gICAgJ29uTm9kZXNDaGFuZ2Uuc2VsZWN0LnNpbmdsZScsXG4gICAgJ29uTm9kZXNDaGFuZ2Uuc2VsZWN0Lm1hbnknLFxuICAgICdvbkVkZ2VzQ2hhbmdlJyxcbiAgICAnb25FZGdlc0NoYW5nZS5kZXRhY2hlZCcsXG4gICAgJ29uRWRnZXNDaGFuZ2UuZGV0YWNoZWQuc2luZ2xlJyxcbiAgICAnb25FZGdlc0NoYW5nZS5kZXRhY2hlZC5tYW55JyxcbiAgICAnb25FZGdlc0NoYW5nZS5hZGQnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLmFkZC5zaW5nbGUnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLmFkZC5tYW55JyxcbiAgICAnb25FZGdlc0NoYW5nZS5yZW1vdmUnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLnJlbW92ZS5zaW5nbGUnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLnJlbW92ZS5tYW55JyxcbiAgICAnb25FZGdlc0NoYW5nZS5zZWxlY3QnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLnNlbGVjdC5zaW5nbGUnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLnNlbGVjdC5tYW55JyxcbiAgXSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3ZmbG93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZmbG93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmZsb3cuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIERyYWdnYWJsZVNlcnZpY2UsXG4gICAgVmlld3BvcnRTZXJ2aWNlLFxuICAgIEZsb3dTdGF0dXNTZXJ2aWNlLFxuICAgIEZsb3dFbnRpdGllc1NlcnZpY2UsXG4gICAgTm9kZXNDaGFuZ2VTZXJ2aWNlLFxuICAgIEVkZ2VDaGFuZ2VzU2VydmljZSxcbiAgICBOb2RlUmVuZGVyaW5nU2VydmljZSxcbiAgICBFZGdlUmVuZGVyaW5nU2VydmljZSxcbiAgICBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIEZsb3dTZXR0aW5nc1NlcnZpY2UsXG4gICAgQ29tcG9uZW50RXZlbnRCdXNTZXJ2aWNlLFxuICAgIEtleWJvYXJkU2VydmljZSxcbiAgICBPdmVybGF5c1NlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBQcmV2aWV3Rmxvd1JlbmRlclN0cmF0ZWd5U2VydmljZSwgdXNlQ2xhc3M6IFZpZXdwb3J0UHJldmlld0Zsb3dSZW5kZXJTdHJhdGVneVNlcnZpY2UgfSxcbiAgICBGbG93UmVuZGVyaW5nU2VydmljZSxcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtjaGFuZ2VzQ29udHJvbGxlckhvc3REaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbXG4gICAgUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSxcbiAgICBSb290U3ZnQ29udGV4dERpcmVjdGl2ZSxcbiAgICBSb290UG9pbnRlckRpcmVjdGl2ZSxcbiAgICBGbG93U2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUsXG4gICAgRGVmc0NvbXBvbmVudCxcbiAgICBCYWNrZ3JvdW5kQ29tcG9uZW50LFxuICAgIE1hcENvbnRleHREaXJlY3RpdmUsXG4gICAgU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUsXG4gICAgQ29ubmVjdGlvbkNvbXBvbmVudCxcbiAgICBOb2RlQ29tcG9uZW50LFxuICAgIEVkZ2VDb21wb25lbnQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBQcmV2aWV3Rmxvd0NvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmZsb3dDb21wb25lbnQge1xuICAvLyAjcmVnaW9uIERJXG4gIHByaXZhdGUgdmlld3BvcnRTZXJ2aWNlID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSk7XG4gIHByaXZhdGUgZmxvd0VudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBub2Rlc0NoYW5nZVNlcnZpY2UgPSBpbmplY3QoTm9kZXNDaGFuZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlZGdlc0NoYW5nZVNlcnZpY2UgPSBpbmplY3QoRWRnZUNoYW5nZXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBub2RlUmVuZGVyaW5nU2VydmljZSA9IGluamVjdChOb2RlUmVuZGVyaW5nU2VydmljZSk7XG4gIHByaXZhdGUgZWRnZVJlbmRlcmluZ1NlcnZpY2UgPSBpbmplY3QoRWRnZVJlbmRlcmluZ1NlcnZpY2UpO1xuICBwcml2YXRlIGZsb3dTZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoRmxvd1NldHRpbmdzU2VydmljZSk7XG4gIHByaXZhdGUgY29tcG9uZW50RXZlbnRCdXNTZXJ2aWNlID0gaW5qZWN0KENvbXBvbmVudEV2ZW50QnVzU2VydmljZSk7XG4gIHByaXZhdGUga2V5Ym9hcmRTZXJ2aWNlID0gaW5qZWN0KEtleWJvYXJkU2VydmljZSk7XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIGZsb3dSZW5kZXJpbmdTZXJ2aWNlID0gaW5qZWN0KEZsb3dSZW5kZXJpbmdTZXJ2aWNlKTtcblxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBTRVRUSU5HU1xuXG4gIC8qKlxuICAgKiBTaXplIGZvciBmbG93IHZpZXdcbiAgICpcbiAgICogYWNjZXB0c1xuICAgKiAtIGFic29sdXRlIHNpemUgaW4gZm9ybWF0IFt3aWR0aCwgaGVpZ2h0XSBvclxuICAgKiAtICdhdXRvJyB0byBjb21wdXRlIHNpemUgYmFzZWQgb24gcGFyZW50IGVsZW1lbnQgc2l6ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2aWV3KHZpZXc6IFtudW1iZXIsIG51bWJlcl0gfCAnYXV0bycpIHtcbiAgICB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2Uudmlldy5zZXQodmlldyk7XG4gIH1cblxuICAvKipcbiAgICogTWluaW11bSB6b29tIHZhbHVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pblpvb20odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5taW5ab29tLnNldCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWF4aW11bSB6b29tIHZhbHVlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heFpvb20odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5tYXhab29tLnNldCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQmFja2dyb3VuZCBmb3IgZmxvd1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBiYWNrZ3JvdW5kKHZhbHVlOiBCYWNrZ3JvdW5kIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmJhY2tncm91bmQuc2V0KHRyYW5zZm9ybUJhY2tncm91bmQodmFsdWUpKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgb3B0aW1pemF0aW9uKG5ld09wdGltaXphdGlvbjogT3B0aW1pemF0aW9uKSB7XG4gICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLm9wdGltaXphdGlvbi51cGRhdGUoKG9wdGltaXphdGlvbikgPT4gKHtcbiAgICAgIC4uLm9wdGltaXphdGlvbixcbiAgICAgIC4uLm5ld09wdGltaXphdGlvbixcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogR2xvYmFsIHJ1bGUgaWYgeW91IGNhbiBvciBjYW4ndCBzZWxlY3QgZW50aXRpZXNcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW50aXRpZXNTZWxlY3RhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmVudGl0aWVzU2VsZWN0YWJsZS5zZXQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBrZXlib2FyZFNob3J0Y3V0cyh2YWx1ZTogS2V5Ym9hcmRTaG9ydGN1dHMpIHtcbiAgICB0aGlzLmtleWJvYXJkU2VydmljZS5zZXRTaG9ydGN1dHModmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHRpbmdzIGZvciBjb25uZWN0aW9uIChpdCByZW5kZXJzIHdoZW4gdXNlciB0cmllcyB0byBjcmVhdGUgZWRnZSBiZXR3ZWVuIG5vZGVzKVxuICAgKlxuICAgKiBZb3UgbmVlZCB0byBwYXNzIGBDb25uZWN0aW9uU2V0dGluZ3NgIGluIHRoaXMgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoe1xuICAgIHRyYW5zZm9ybTogKHNldHRpbmdzOiBDb25uZWN0aW9uU2V0dGluZ3MpID0+IG5ldyBDb25uZWN0aW9uTW9kZWwoc2V0dGluZ3MpLFxuICB9KVxuICBwdWJsaWMgc2V0IGNvbm5lY3Rpb24oY29ubmVjdGlvbjogQ29ubmVjdGlvbk1vZGVsKSB7XG4gICAgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmNvbm5lY3Rpb24uc2V0KGNvbm5lY3Rpb24pO1xuICB9XG5cbiAgcHVibGljIGdldCBjb25uZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuY29ubmVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNuYXAgZ3JpZCBmb3Igbm9kZSBtb3ZlbWVudC4gUGFzc2VzIGFzIFt4LCB5XVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzbmFwR3JpZCh2YWx1ZTogW251bWJlciwgbnVtYmVyXSkge1xuICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5zbmFwR3JpZC5zZXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJhaXppbmcgei1pbmRleCBmb3Igc2VsZWN0ZWQgbm9kZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBlbGV2YXRlTm9kZXNPblNlbGVjdCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5lbGV2YXRlTm9kZXNPblNlbGVjdC5zZXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJhaXppbmcgei1pbmRleCBmb3Igc2VsZWN0ZWQgZWRnZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBlbGV2YXRlRWRnZXNPblNlbGVjdCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5lbGV2YXRlRWRnZXNPblNlbGVjdC5zZXQodmFsdWUpO1xuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIE1BSU5fSU5QVVRTXG4gIC8qKlxuICAgKiBOb2RlcyB0byByZW5kZXJcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBzZXQgbm9kZXMobmV3Tm9kZXM6IE5vZGVbXSB8IER5bmFtaWNOb2RlW10pIHtcbiAgICBjb25zdCBtb2RlbHMgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT5cbiAgICAgIFJlZmVyZW5jZUlkZW50aXR5Q2hlY2tlci5ub2RlcyhuZXdOb2RlcywgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLm5vZGVzKCkpLFxuICAgICk7XG5cbiAgICAvLyBUT0RPOiBjb25zaWRlciBjYWxsaW5nIG9ubHkgZm8gbmV3IG5vZGVzXG4gICAgLy8gcXVpY2sgYW5kIGRpcnR5IGJpbmRpbmcgbm9kZXMgdG8gZWRnZXNcbiAgICBhZGROb2Rlc1RvRWRnZXMobW9kZWxzLCB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuZWRnZXMoKSk7XG5cbiAgICB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2Uubm9kZXMuc2V0KG1vZGVscyk7XG5cbiAgICBtb2RlbHMuZm9yRWFjaCgobW9kZWwpID0+IHRoaXMubm9kZVJlbmRlcmluZ1NlcnZpY2UucHVsbE5vZGUobW9kZWwpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBub2RlTW9kZWxzID0gdGhpcy5ub2RlUmVuZGVyaW5nU2VydmljZS5ub2RlcztcbiAgcHJvdGVjdGVkIGdyb3VwcyA9IHRoaXMubm9kZVJlbmRlcmluZ1NlcnZpY2UuZ3JvdXBzO1xuICBwcm90ZWN0ZWQgbm9uR3JvdXBzID0gdGhpcy5ub2RlUmVuZGVyaW5nU2VydmljZS5ub25Hcm91cHM7XG5cbiAgLyoqXG4gICAqIEVkZ2VzIHRvIHJlbmRlclxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBlZGdlcyhuZXdFZGdlczogRWRnZVtdKSB7XG4gICAgY29uc3QgbmV3TW9kZWxzID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+XG4gICAgICBSZWZlcmVuY2VJZGVudGl0eUNoZWNrZXIuZWRnZXMobmV3RWRnZXMsIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5lZGdlcygpKSxcbiAgICApO1xuXG4gICAgLy8gcXVpY2sgYW5kIGRpcnR5IGJpbmRpbmcgbm9kZXMgdG8gZWRnZXNcbiAgICBhZGROb2Rlc1RvRWRnZXModGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLm5vZGVzKCksIG5ld01vZGVscyk7XG5cbiAgICB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuZWRnZXMuc2V0KG5ld01vZGVscyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZWRnZU1vZGVscyA9IHRoaXMuZWRnZVJlbmRlcmluZ1NlcnZpY2UuZWRnZXM7XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIE9VVFBVVFNcbiAgLyoqXG4gICAqIEV2ZW50IHRoYXQgYWNjdW11bGF0ZXMgYWxsIGN1c3RvbSBub2RlIGV2ZW50c1xuICAgKlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25Db21wb25lbnROb2RlRXZlbnQgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZTxhbnk+KHRoaXMuY29tcG9uZW50RXZlbnRCdXNTZXJ2aWNlLmV2ZW50JCk7IC8vIFRPRE86IHJlc2VhcmNoIGhvdyB0byByZW1vdmUgYW55XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFRFTVBMQVRFU1xuICBwcm90ZWN0ZWQgbm9kZVRlbXBsYXRlRGlyZWN0aXZlID0gY29udGVudENoaWxkKE5vZGVIdG1sVGVtcGxhdGVEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBub2RlU3ZnVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoTm9kZVN2Z1RlbXBsYXRlRGlyZWN0aXZlKTtcblxuICBwcm90ZWN0ZWQgZ3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoR3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBlZGdlVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoRWRnZVRlbXBsYXRlRGlyZWN0aXZlKTtcblxuICBwcm90ZWN0ZWQgZWRnZUxhYmVsSHRtbERpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChFZGdlTGFiZWxIdG1sVGVtcGxhdGVEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBjb25uZWN0aW9uVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoQ29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlKTtcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gRElSRUNUSVZFU1xuICBwcm90ZWN0ZWQgbWFwQ29udGV4dCA9IHZpZXdDaGlsZChNYXBDb250ZXh0RGlyZWN0aXZlKTtcblxuICBwcm90ZWN0ZWQgc3BhY2VQb2ludENvbnRleHQgPSB2aWV3Q2hpbGQucmVxdWlyZWQoU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUpO1xuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBTSUdOQUxfQVBJXG4gIC8qKlxuICAgKiBTaWduYWwgZm9yIHJlYWRpbmcgdmlld3BvcnQgY2hhbmdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmlld3BvcnQgPSB0aGlzLnZpZXdwb3J0U2VydmljZS5yZWFkYWJsZVZpZXdwb3J0LmFzUmVhZG9ubHkoKTtcblxuICAvKipcbiAgICogU2lnbmFsIGZvciByZWFkaW5nIG5vZGVzIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5vZGVzQ2hhbmdlID0gdG9MYXp5U2lnbmFsKHRoaXMubm9kZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkLCB7XG4gICAgaW5pdGlhbFZhbHVlOiBbXSBhcyBOb2RlQ2hhbmdlW10sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBTaWduYWwgdG8gcmVhZGluZyBlZGdlcyBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlZGdlc0NoYW5nZSA9IHRvTGF6eVNpZ25hbCh0aGlzLmVkZ2VzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJCwge1xuICAgIGluaXRpYWxWYWx1ZTogW10gYXMgRWRnZUNoYW5nZVtdLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaW5pdGlhbGl6ZWQgPSB0aGlzLmZsb3dSZW5kZXJpbmdTZXJ2aWNlLmZsb3dJbml0aWFsaXplZC5hc1JlYWRvbmx5KCk7XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFJYX0FQSVxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB3aXRoIHZpZXdwb3J0IGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZpZXdwb3J0Q2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnZpZXdwb3J0U2VydmljZS5yZWFkYWJsZVZpZXdwb3J0KS5waXBlKHNraXAoMSkpOyAvLyBza2lwIGRlZmF1bHQgdmFsdWUgdGhhdCBzZXQgYnkgc2lnbmFsXG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgd2l0aCBub2RlcyBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBub2Rlc0NoYW5nZSQgPSB0aGlzLm5vZGVzQ2hhbmdlU2VydmljZS5jaGFuZ2VzJDtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB3aXRoIGVkZ2VzIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVkZ2VzQ2hhbmdlJCA9IHRoaXMuZWRnZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkO1xuXG4gIHB1YmxpYyByZWFkb25seSBpbml0aWFsaXplZCQgPSB0b09ic2VydmFibGUodGhpcy5mbG93UmVuZGVyaW5nU2VydmljZS5mbG93SW5pdGlhbGl6ZWQpO1xuICAvLyAjZW5kcmVnaW9uXG5cbiAgcHJvdGVjdGVkIG1hcmtlcnMgPSB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UubWFya2VycztcbiAgcHJvdGVjdGVkIG1pbmltYXAgPSB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UubWluaW1hcDtcblxuICBwcm90ZWN0ZWQgZmxvd09wdGltaXphdGlvbiA9IHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5vcHRpbWl6YXRpb247XG4gIHByb3RlY3RlZCBmbG93V2lkdGggPSB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93V2lkdGg7XG4gIHByb3RlY3RlZCBmbG93SGVpZ2h0ID0gdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmNvbXB1dGVkRmxvd0hlaWdodDtcblxuICAvLyAjcmVnaW9uIE1FVEhPRFNfQVBJXG4gIC8qKlxuICAgKiBDaGFuZ2Ugdmlld3BvcnQgdG8gc3BlY2lmaWVkIHN0YXRlXG4gICAqXG4gICAqIEBwYXJhbSB2aWV3cG9ydCB2aWV3cG9ydCBzdGF0ZVxuICAgKi9cbiAgcHVibGljIHZpZXdwb3J0VG8odmlld3BvcnQ6IFZpZXdwb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS53cml0YWJsZVZpZXdwb3J0LnNldCh7XG4gICAgICBjaGFuZ2VUeXBlOiAnYWJzb2x1dGUnLFxuICAgICAgc3RhdGU6IHZpZXdwb3J0LFxuICAgICAgZHVyYXRpb246IDAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHpvb21cbiAgICpcbiAgICogQHBhcmFtIHpvb20gem9vbSB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHpvb21Ubyh6b29tOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS53cml0YWJsZVZpZXdwb3J0LnNldCh7XG4gICAgICBjaGFuZ2VUeXBlOiAnYWJzb2x1dGUnLFxuICAgICAgc3RhdGU6IHsgem9vbSB9LFxuICAgICAgZHVyYXRpb246IDAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSB0byBzcGVjaWZpZWQgY29vcmRpbmF0ZVxuICAgKlxuICAgKiBAcGFyYW0gcG9pbnQgcG9pbnQgd2hlcmUgdG8gbW92ZVxuICAgKi9cbiAgcHVibGljIHBhblRvKHBvaW50OiBQb2ludCk6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLndyaXRhYmxlVmlld3BvcnQuc2V0KHtcbiAgICAgIGNoYW5nZVR5cGU6ICdhYnNvbHV0ZScsXG4gICAgICBzdGF0ZTogcG9pbnQsXG4gICAgICBkdXJhdGlvbjogMCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmaXRWaWV3KG9wdGlvbnM/OiBGaXRWaWV3T3B0aW9ucykge1xuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLmZpdFZpZXcob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG5vZGUgYnkgaWRcbiAgICpcbiAgICogQHBhcmFtIGlkIG5vZGUgaWRcbiAgICovXG4gIHB1YmxpYyBnZXROb2RlPFQgPSB1bmtub3duPihpZDogc3RyaW5nKTogTm9kZTxUPiB8IER5bmFtaWNOb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmdldE5vZGU8VD4oaWQpPy5yYXdOb2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bmMgbWV0aG9kIHRvIGdldCBkZXRhY2hlZCBlZGdlc1xuICAgKi9cbiAgcHVibGljIGdldERldGFjaGVkRWRnZXMoKTogRWRnZVtdIHtcbiAgICByZXR1cm4gdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmdldERldGFjaGVkRWRnZXMoKS5tYXAoKGUpID0+IGUuZWRnZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBwb2ludCByZWNlaXZlZCBmcm9tIGRvY3VtZW50IHRvIHBvaW50IG9uIHRoZSBmbG93XG4gICAqL1xuICBwdWJsaWMgZG9jdW1lbnRQb2ludFRvRmxvd1BvaW50KHBvaW50OiBQb2ludCk6IFBvaW50O1xuICBwdWJsaWMgZG9jdW1lbnRQb2ludFRvRmxvd1BvaW50KHBvaW50OiBQb2ludCwgb3B0aW9ucz86IHsgc3BhY2VzOiBmYWxzZSB9KTogUG9pbnQ7XG4gIC8qKlxuICAgKiBDb252ZXJ0IHBvaW50IHJlY2VpdmVkIGZyb20gZG9jdW1lbnQgdG8gYSBzdGFjayBvZiBzcGFjZSBwb2ludHMgb24gdGhlIGZsb3dcbiAgICogU3BhY2UgcG9pbnQgaGFzIGEgc3BhY2VOb2RlSWQsIGNvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0byB0aGlzIG5vZGVcbiAgICovXG4gIHB1YmxpYyBkb2N1bWVudFBvaW50VG9GbG93UG9pbnQocG9pbnQ6IFBvaW50LCBvcHRpb25zPzogeyBzcGFjZXM6IHRydWUgfSk6IFNwYWNlUG9pbnRbXTtcbiAgcHVibGljIGRvY3VtZW50UG9pbnRUb0Zsb3dQb2ludChwb2ludDogUG9pbnQsIG9wdGlvbnM/OiB7IHNwYWNlczogYm9vbGVhbiB9KTogdW5rbm93biB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRQb2ludCA9IHRoaXMuc3BhY2VQb2ludENvbnRleHQoKS5kb2N1bWVudFBvaW50VG9GbG93UG9pbnQocG9pbnQpO1xuXG4gICAgaWYgKG9wdGlvbnM/LnNwYWNlcykge1xuICAgICAgcmV0dXJuIGdldFNwYWNlUG9pbnRzKHRyYW5zZm9ybWVkUG9pbnQsIHRoaXMubm9kZVJlbmRlcmluZ1NlcnZpY2UuZ3JvdXBzKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFBvaW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgbm9kZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIG5vZGVcbiAgICpcbiAgICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZXNcbiAgICogQHBhcmFtIG5vZGVJZCAtIFRoZSBJRCBvZiB0aGUgbm9kZSB0byBjaGVjayBpbnRlcnNlY3Rpb25zIGZvclxuICAgKiBAcGFyYW0gb3B0aW9ucy5wYXJ0aWFsbHkgLSBJZiB0cnVlLCByZXR1cm5zIG5vZGVzIHRoYXQgcGFydGlhbGx5IGludGVyc2VjdC4gSWYgZmFsc2UsIG9ubHkgcmV0dXJucyBmdWxseSBpbnRlcnNlY3Rpbmcgbm9kZXNcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2Ygbm9kZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIG5vZGVcbiAgICovXG4gIHB1YmxpYyBnZXRJbnRlc2VjdGluZ05vZGVzPFQ+KFxuICAgIG5vZGVJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEludGVyc2VjdGluZ05vZGVzT3B0aW9ucyA9IHsgcGFydGlhbGx5OiB0cnVlIH0sXG4gICk6IE5vZGU8VD5bXSB8IER5bmFtaWNOb2RlPFQ+W10ge1xuICAgIHJldHVybiBnZXRJbnRlc2VjdGluZ05vZGVzKG5vZGVJZCwgdGhpcy5ub2RlTW9kZWxzKCksIG9wdGlvbnMpLm1hcCgobikgPT4gbi5yYXdOb2RlKSBhc1xuICAgICAgfCBOb2RlPFQ+W11cbiAgICAgIHwgRHluYW1pY05vZGU8VD5bXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIG5vZGUncyBwb3NpdGlvbiB0byB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiBhbm90aGVyIG5vZGVcbiAgICpcbiAgICogQHBhcmFtIG5vZGVJZCAtIFRoZSBJRCBvZiB0aGUgbm9kZSB3aG9zZSBwb3NpdGlvbiBzaG91bGQgYmUgY29udmVydGVkXG4gICAqIEBwYXJhbSBzcGFjZU5vZGVJZCAtIFRoZSBJRCBvZiB0aGUgbm9kZSB0aGF0IGRlZmluZXMgdGhlIHRhcmdldCBjb29yZGluYXRlIHNwYWNlLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICBJZiBudWxsLCByZXR1cm5zIHRoZSBwb3NpdGlvbiBpbiBnbG9iYWwgY29vcmRpbmF0ZXNcbiAgICogQHJldHVybnMge1BvaW50fSBUaGUgY29udmVydGVkIHBvc2l0aW9uLiBSZXR1cm5zIHt4OiBJbmZpbml0eSwgeTogSW5maW5pdHl9IGlmIGVpdGhlciBub2RlIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgcHVibGljIHRvTm9kZVNwYWNlKG5vZGVJZDogc3RyaW5nLCBzcGFjZU5vZGVJZDogc3RyaW5nIHwgbnVsbCk6IFBvaW50IHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlTW9kZWxzKCkuZmluZCgobikgPT4gbi5yYXdOb2RlLmlkID09PSBub2RlSWQpO1xuXG4gICAgaWYgKCFub2RlKSByZXR1cm4geyB4OiBJbmZpbml0eSwgeTogSW5maW5pdHkgfTtcblxuICAgIGlmIChzcGFjZU5vZGVJZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5vZGUuZ2xvYmFsUG9pbnQoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb29yZGluYXRlU3BhY2VOb2RlID0gdGhpcy5ub2RlTW9kZWxzKCkuZmluZCgobikgPT4gbi5yYXdOb2RlLmlkID09PSBzcGFjZU5vZGVJZCk7XG5cbiAgICBpZiAoIWNvb3JkaW5hdGVTcGFjZU5vZGUpIHJldHVybiB7IHg6IEluZmluaXR5LCB5OiBJbmZpbml0eSB9O1xuXG4gICAgcmV0dXJuIGdldFNwYWNlUG9pbnRzKG5vZGUuZ2xvYmFsUG9pbnQoKSwgW2Nvb3JkaW5hdGVTcGFjZU5vZGVdKVswXTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgcHJvdGVjdGVkIHRyYWNrTm9kZXMoaWR4OiBudW1iZXIsIHsgcmF3Tm9kZTogbm9kZSB9OiBOb2RlTW9kZWwpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja0VkZ2VzKGlkeDogbnVtYmVyLCB7IGVkZ2UgfTogRWRnZU1vZGVsKSB7XG4gICAgcmV0dXJuIGVkZ2U7XG4gIH1cbn1cbiIsIjxzdmc6c3ZnICNmbG93IHJvb3RTdmdSZWYgcm9vdFN2Z0NvbnRleHQgcm9vdFBvaW50ZXIgZmxvd1NpemVDb250cm9sbGVyIGNsYXNzPVwicm9vdC1zdmdcIj5cbiAgPGRlZnMgZmxvd0RlZnMgW21hcmtlcnNdPVwibWFya2VycygpXCIgLz5cblxuICA8ZyBiYWNrZ3JvdW5kIC8+XG5cbiAgPHN2ZzpnIG1hcENvbnRleHQgc3BhY2VQb2ludENvbnRleHQ+XG4gICAgPCEtLSBDb25uZWN0aW9uIC0tPlxuICAgIDxzdmc6ZyBjb25uZWN0aW9uIFttb2RlbF09XCJjb25uZWN0aW9uXCIgW3RlbXBsYXRlXT1cImNvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZlwiIC8+XG5cbiAgICBAaWYgKGZsb3dPcHRpbWl6YXRpb24oKS5kZXRhY2hlZEdyb3Vwc0xheWVyKSB7XG4gICAgICA8IS0tIEdyb3VwcyAtLT5cbiAgICAgIEBmb3IgKG1vZGVsIG9mIGdyb3VwcygpOyB0cmFjayB0cmFja05vZGVzKCRpbmRleCwgbW9kZWwpKSB7XG4gICAgICAgIDxzdmc6Z1xuICAgICAgICAgIG5vZGVcbiAgICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgICAgICAgIFtncm91cE5vZGVUZW1wbGF0ZV09XCJncm91cE5vZGVUZW1wbGF0ZURpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIm1vZGVsLnBvaW50VHJhbnNmb3JtKClcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLSBFZGdlcyAgLS0+XG4gICAgICBAZm9yIChtb2RlbCBvZiBlZGdlTW9kZWxzKCk7IHRyYWNrIHRyYWNrRWRnZXMoJGluZGV4LCBtb2RlbCkpIHtcbiAgICAgICAgPHN2ZzpnXG4gICAgICAgICAgZWRnZVxuICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgICAgW2VkZ2VUZW1wbGF0ZV09XCJlZGdlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtlZGdlTGFiZWxIdG1sVGVtcGxhdGVdPVwiZWRnZUxhYmVsSHRtbERpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZlwiIC8+XG4gICAgICB9XG4gICAgICA8IS0tIE5vZGVzIC0tPlxuICAgICAgQGZvciAobW9kZWwgb2Ygbm9uR3JvdXBzKCk7IHRyYWNrIHRyYWNrTm9kZXMoJGluZGV4LCBtb2RlbCkpIHtcbiAgICAgICAgPHN2ZzpnXG4gICAgICAgICAgbm9kZVxuICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgICAgW25vZGVUZW1wbGF0ZV09XCJub2RlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtub2RlU3ZnVGVtcGxhdGVdPVwibm9kZVN2Z1RlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwibW9kZWwucG9pbnRUcmFuc2Zvcm0oKVwiIC8+XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICghZmxvd09wdGltaXphdGlvbigpLmRldGFjaGVkR3JvdXBzTGF5ZXIpIHtcbiAgICAgIDwhLS0gRWRnZXMgIC0tPlxuICAgICAgQGZvciAobW9kZWwgb2YgZWRnZU1vZGVscygpOyB0cmFjayB0cmFja0VkZ2VzKCRpbmRleCwgbW9kZWwpKSB7XG4gICAgICAgIDxzdmc6Z1xuICAgICAgICAgIGVkZ2VcbiAgICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgICAgICAgIFtlZGdlVGVtcGxhdGVdPVwiZWRnZVRlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICBbZWRnZUxhYmVsSHRtbFRlbXBsYXRlXT1cImVkZ2VMYWJlbEh0bWxEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWZcIiAvPlxuICAgICAgfVxuXG4gICAgICBAZm9yIChtb2RlbCBvZiBub2RlTW9kZWxzKCk7IHRyYWNrIHRyYWNrTm9kZXMoJGluZGV4LCBtb2RlbCkpIHtcbiAgICAgICAgPHN2ZzpnXG4gICAgICAgICAgbm9kZVxuICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgICAgW25vZGVUZW1wbGF0ZV09XCJub2RlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtub2RlU3ZnVGVtcGxhdGVdPVwibm9kZVN2Z1RlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICBbZ3JvdXBOb2RlVGVtcGxhdGVdPVwiZ3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJtb2RlbC5wb2ludFRyYW5zZm9ybSgpXCIgLz5cbiAgICAgIH1cbiAgICB9XG4gIDwvc3ZnOmc+XG5cbiAgPCEtLSBNaW5pbWFwIC0tPlxuICBAaWYgKG1pbmltYXAoKTsgYXMgbWluaW1hcCkge1xuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibWluaW1hcC50ZW1wbGF0ZSgpXCIgLz5cbiAgfVxuPC9zdmc6c3ZnPlxuXG5AaWYgKGZsb3dPcHRpbWl6YXRpb24oKS52aXJ0dWFsaXphdGlvbikge1xuICA8Y2FudmFzIHByZXZpZXdGbG93IGNsYXNzPVwicHJldmlldy1mbG93XCIgW3dpZHRoXT1cImZsb3dXaWR0aCgpXCIgW2hlaWdodF09XCJmbG93SGVpZ2h0KClcIj48L2NhbnZhcz5cbn1cbiJdfQ==
|
|
437
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEYsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw4QkFBOEIsRUFDOUIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsd0JBQXdCLEdBQ3pCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFM0UsT0FBTyxFQUFF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QzNFO2dCQWFVLFFBQVE7c0JBRGxCLEtBQUs7Z0JBU0ssb0JBQW9CO3NCQUQ5QixLQUFLO2dCQVNLLG9CQUFvQjtzQkFEOUIsS0FBSztnQkFXSyxLQUFLO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQXlCZCxLQUFLO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIGluamVjdCxcbiAgcnVuSW5JbmplY3Rpb25Db250ZXh0LFxuICBjb250ZW50Q2hpbGQsXG4gIHZpZXdDaGlsZCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY05vZGUsIE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1hcENvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL21hcC1jb250ZXh0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcmFnZ2FibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIG91dHB1dEZyb21PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRWRnZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWRnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRWRnZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VkZ2UubW9kZWwnO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlLFxuICBFZGdlTGFiZWxIdG1sVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEVkZ2VUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgR3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUsXG4gIE5vZGVIdG1sVGVtcGxhdGVEaXJlY3RpdmUsXG4gIE5vZGVTdmdUZW1wbGF0ZURpcmVjdGl2ZSxcbn0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgYWRkTm9kZXNUb0VkZ2VzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYWRkLW5vZGVzLXRvLWVkZ2VzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNwYWNlUG9pbnQsIFBvaW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVmlld3BvcnRTdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsb3dTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29ubmVjdGlvbi1zZXR0aW5ncy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVmZXJlbmNlSWRlbnRpdHlDaGVja2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvaWRlbnRpdHktY2hlY2tlci9yZWZlcmVuY2UtaWRlbnRpdHktY2hlY2tlcic7XG5pbXBvcnQgeyBOb2Rlc0NoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub2RlLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQgeyBFZGdlQ2hhbmdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGdlLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvbm9kZS1jaGFuZ2UudHlwZSc7XG5pbXBvcnQgeyBDaGFuZ2VzQ29udHJvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY2hhbmdlcy1jb250cm9sbGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFZGdlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvZWRnZS1jaGFuZ2UudHlwZSc7XG5pbXBvcnQgeyBOb2RlUmVuZGVyaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGUtcmVuZGVyaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50RXZlbnRCdXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tcG9uZW50LWV2ZW50LWJ1cy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhY2tncm91bmQgfSBmcm9tICcuLi8uLi90eXBlcy9iYWNrZ3JvdW5kLnR5cGUnO1xuaW1wb3J0IHsgU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3NwYWNlLXBvaW50LWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZpdFZpZXdPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9maXQtdmlldy1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPcHRpbWl6YXRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL29wdGltaXphdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dHMgfSBmcm9tICcuLi8uLi90eXBlcy9rZXlib2FyZC1hY3Rpb24udHlwZSc7XG5pbXBvcnQgeyBLZXlib2FyZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9rZXlib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IHRyYW5zZm9ybUJhY2tncm91bmQgfSBmcm9tICcuLi8uLi91dGlscy90cmFuc2Zvcm0tYmFja2dyb3VuZCc7XG5pbXBvcnQgeyBPdmVybGF5c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vdmVybGF5cy5zZXJ2aWNlJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRWRnZUNvbXBvbmVudCB9IGZyb20gJy4uL2VkZ2UvZWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uL25vZGUvbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nvbm5lY3Rpb24vY29ubmVjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFja2dyb3VuZENvbXBvbmVudCB9IGZyb20gJy4uL2JhY2tncm91bmQvYmFja2dyb3VuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVmc0NvbXBvbmVudCB9IGZyb20gJy4uL2RlZnMvZGVmcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxvd1NpemVDb250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mbG93LXNpemUtY29udHJvbGxlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUm9vdFBvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3Jvb3QtcG9pbnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUm9vdFN2Z0NvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3Jvb3Qtc3ZnLWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3JlZmVyZW5jZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWRnZVJlbmRlcmluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGdlLXJlbmRlcmluZy5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFNwYWNlUG9pbnRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LXNwYWNlLXBvaW50cyc7XG5pbXBvcnQgeyBnZXRJbnRlc2VjdGluZ05vZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvbm9kZXMnO1xuaW1wb3J0IHsgSW50ZXJzZWN0aW5nTm9kZXNPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pbnRlcnNlY3Rpbmctbm9kZXMtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJldmlld0Zsb3dDb21wb25lbnQgfSBmcm9tICcuLi9wcmV2aWV3LWZsb3cvcHJldmlldy1mbG93LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBQcmV2aWV3Rmxvd1JlbmRlclN0cmF0ZWd5U2VydmljZSxcbiAgVmlld3BvcnRQcmV2aWV3Rmxvd1JlbmRlclN0cmF0ZWd5U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJldmlldy1mbG93LXJlbmRlci1zdHJhdGVneS5zZXJ2aWNlJztcbmltcG9ydCB7IHRvTGF6eVNpZ25hbCB9IGZyb20gJy4uLy4uL3V0aWxzL3NpZ25hbHMvdG8tbGF6eS1zaWduYWwnO1xuaW1wb3J0IHsgRmxvd1JlbmRlcmluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LXJlbmRlcmluZy5zZXJ2aWNlJztcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlckNvbXBvbmVudCB9IGZyb20gJy4uL2FsaWdubWVudC1oZWxwZXIvYWxpZ25tZW50LWhlbHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxpZ25tZW50SGVscGVyU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FsaWdubWVudC1oZWxwZXItc2V0dGluZ3MuaW50ZXJmYWNlJztcblxuY29uc3QgY2hhbmdlc0NvbnRyb2xsZXJIb3N0RGlyZWN0aXZlID0ge1xuICBkaXJlY3RpdmU6IENoYW5nZXNDb250cm9sbGVyRGlyZWN0aXZlLFxuICBvdXRwdXRzOiBbXG4gICAgJ29uTm9kZXNDaGFuZ2UnLFxuICAgICdvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uJyxcbiAgICAnb25Ob2Rlc0NoYW5nZS5wb3NpdGlvbi5zaW5nbGUnLFxuICAgICdvbk5vZGVzQ2hhbmdlLnBvc2l0aW9uLm1hbnknLFxuICAgICdvbk5vZGVzQ2hhbmdlLnNpemUnLFxuICAgICdvbk5vZGVzQ2hhbmdlLnNpemUuc2luZ2xlJyxcbiAgICAnb25Ob2Rlc0NoYW5nZS5zaXplLm1hbnknLFxuICAgICdvbk5vZGVzQ2hhbmdlLmFkZCcsXG4gICAgJ29uTm9kZXNDaGFuZ2UuYWRkLnNpbmdsZScsXG4gICAgJ29uTm9kZXNDaGFuZ2UuYWRkLm1hbnknLFxuICAgICdvbk5vZGVzQ2hhbmdlLnJlbW92ZScsXG4gICAgJ29uTm9kZXNDaGFuZ2UucmVtb3ZlLnNpbmdsZScsXG4gICAgJ29uTm9kZXNDaGFuZ2UucmVtb3ZlLm1hbnknLFxuICAgICdvbk5vZGVzQ2hhbmdlLnNlbGVjdCcsXG4gICAgJ29uTm9kZXNDaGFuZ2Uuc2VsZWN0LnNpbmdsZScsXG4gICAgJ29uTm9kZXNDaGFuZ2Uuc2VsZWN0Lm1hbnknLFxuICAgICdvbkVkZ2VzQ2hhbmdlJyxcbiAgICAnb25FZGdlc0NoYW5nZS5kZXRhY2hlZCcsXG4gICAgJ29uRWRnZXNDaGFuZ2UuZGV0YWNoZWQuc2luZ2xlJyxcbiAgICAnb25FZGdlc0NoYW5nZS5kZXRhY2hlZC5tYW55JyxcbiAgICAnb25FZGdlc0NoYW5nZS5hZGQnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLmFkZC5zaW5nbGUnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLmFkZC5tYW55JyxcbiAgICAnb25FZGdlc0NoYW5nZS5yZW1vdmUnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLnJlbW92ZS5zaW5nbGUnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLnJlbW92ZS5tYW55JyxcbiAgICAnb25FZGdlc0NoYW5nZS5zZWxlY3QnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLnNlbGVjdC5zaW5nbGUnLFxuICAgICdvbkVkZ2VzQ2hhbmdlLnNlbGVjdC5tYW55JyxcbiAgXSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3ZmbG93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZmbG93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmZsb3cuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIERyYWdnYWJsZVNlcnZpY2UsXG4gICAgVmlld3BvcnRTZXJ2aWNlLFxuICAgIEZsb3dTdGF0dXNTZXJ2aWNlLFxuICAgIEZsb3dFbnRpdGllc1NlcnZpY2UsXG4gICAgTm9kZXNDaGFuZ2VTZXJ2aWNlLFxuICAgIEVkZ2VDaGFuZ2VzU2VydmljZSxcbiAgICBOb2RlUmVuZGVyaW5nU2VydmljZSxcbiAgICBFZGdlUmVuZGVyaW5nU2VydmljZSxcbiAgICBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIEZsb3dTZXR0aW5nc1NlcnZpY2UsXG4gICAgQ29tcG9uZW50RXZlbnRCdXNTZXJ2aWNlLFxuICAgIEtleWJvYXJkU2VydmljZSxcbiAgICBPdmVybGF5c1NlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBQcmV2aWV3Rmxvd1JlbmRlclN0cmF0ZWd5U2VydmljZSwgdXNlQ2xhc3M6IFZpZXdwb3J0UHJldmlld0Zsb3dSZW5kZXJTdHJhdGVneVNlcnZpY2UgfSxcbiAgICBGbG93UmVuZGVyaW5nU2VydmljZSxcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtjaGFuZ2VzQ29udHJvbGxlckhvc3REaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbXG4gICAgUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSxcbiAgICBSb290U3ZnQ29udGV4dERpcmVjdGl2ZSxcbiAgICBSb290UG9pbnRlckRpcmVjdGl2ZSxcbiAgICBGbG93U2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUsXG4gICAgRGVmc0NvbXBvbmVudCxcbiAgICBCYWNrZ3JvdW5kQ29tcG9uZW50LFxuICAgIE1hcENvbnRleHREaXJlY3RpdmUsXG4gICAgU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUsXG4gICAgQ29ubmVjdGlvbkNvbXBvbmVudCxcbiAgICBOb2RlQ29tcG9uZW50LFxuICAgIEVkZ2VDb21wb25lbnQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBQcmV2aWV3Rmxvd0NvbXBvbmVudCxcbiAgICBBbGlnbm1lbnRIZWxwZXJDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFZmbG93Q29tcG9uZW50IHtcbiAgLy8gI3JlZ2lvbiBESVxuICBwcml2YXRlIHZpZXdwb3J0U2VydmljZSA9IGluamVjdChWaWV3cG9ydFNlcnZpY2UpO1xuICBwcml2YXRlIGZsb3dFbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG4gIHByaXZhdGUgbm9kZXNDaGFuZ2VTZXJ2aWNlID0gaW5qZWN0KE5vZGVzQ2hhbmdlU2VydmljZSk7XG4gIHByaXZhdGUgZWRnZXNDaGFuZ2VTZXJ2aWNlID0gaW5qZWN0KEVkZ2VDaGFuZ2VzU2VydmljZSk7XG4gIHByaXZhdGUgbm9kZVJlbmRlcmluZ1NlcnZpY2UgPSBpbmplY3QoTm9kZVJlbmRlcmluZ1NlcnZpY2UpO1xuICBwcml2YXRlIGVkZ2VSZW5kZXJpbmdTZXJ2aWNlID0gaW5qZWN0KEVkZ2VSZW5kZXJpbmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmbG93U2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpO1xuICBwcml2YXRlIGNvbXBvbmVudEV2ZW50QnVzU2VydmljZSA9IGluamVjdChDb21wb25lbnRFdmVudEJ1c1NlcnZpY2UpO1xuICBwcml2YXRlIGtleWJvYXJkU2VydmljZSA9IGluamVjdChLZXlib2FyZFNlcnZpY2UpO1xuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSBmbG93UmVuZGVyaW5nU2VydmljZSA9IGluamVjdChGbG93UmVuZGVyaW5nU2VydmljZSk7XG5cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gU0VUVElOR1NcblxuICAvKipcbiAgICogU2l6ZSBmb3IgZmxvdyB2aWV3XG4gICAqXG4gICAqIGFjY2VwdHNcbiAgICogLSBhYnNvbHV0ZSBzaXplIGluIGZvcm1hdCBbd2lkdGgsIGhlaWdodF0gb3JcbiAgICogLSAnYXV0bycgdG8gY29tcHV0ZSBzaXplIGJhc2VkIG9uIHBhcmVudCBlbGVtZW50IHNpemVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmlldyh2aWV3OiBbbnVtYmVyLCBudW1iZXJdIHwgJ2F1dG8nKSB7XG4gICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLnZpZXcuc2V0KHZpZXcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gem9vbSB2YWx1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtaW5ab29tKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UubWluWm9vbS5zZXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1heGltdW0gem9vbSB2YWx1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtYXhab29tKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UubWF4Wm9vbS5zZXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJhY2tncm91bmQgZm9yIGZsb3dcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYmFja2dyb3VuZCh2YWx1ZTogQmFja2dyb3VuZCB8IHN0cmluZykge1xuICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5iYWNrZ3JvdW5kLnNldCh0cmFuc2Zvcm1CYWNrZ3JvdW5kKHZhbHVlKSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG9wdGltaXphdGlvbihuZXdPcHRpbWl6YXRpb246IE9wdGltaXphdGlvbikge1xuICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5vcHRpbWl6YXRpb24udXBkYXRlKChvcHRpbWl6YXRpb24pID0+ICh7XG4gICAgICAuLi5vcHRpbWl6YXRpb24sXG4gICAgICAuLi5uZXdPcHRpbWl6YXRpb24sXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdsb2JhbCBydWxlIGlmIHlvdSBjYW4gb3IgY2FuJ3Qgc2VsZWN0IGVudGl0aWVzXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVudGl0aWVzU2VsZWN0YWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5lbnRpdGllc1NlbGVjdGFibGUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQga2V5Ym9hcmRTaG9ydGN1dHModmFsdWU6IEtleWJvYXJkU2hvcnRjdXRzKSB7XG4gICAgdGhpcy5rZXlib2FyZFNlcnZpY2Uuc2V0U2hvcnRjdXRzKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXR0aW5ncyBmb3IgY29ubmVjdGlvbiAoaXQgcmVuZGVycyB3aGVuIHVzZXIgdHJpZXMgdG8gY3JlYXRlIGVkZ2UgYmV0d2VlbiBub2RlcylcbiAgICpcbiAgICogWW91IG5lZWQgdG8gcGFzcyBgQ29ubmVjdGlvblNldHRpbmdzYCBpbiB0aGlzIGlucHV0LlxuICAgKi9cbiAgQElucHV0KHtcbiAgICB0cmFuc2Zvcm06IChzZXR0aW5nczogQ29ubmVjdGlvblNldHRpbmdzKSA9PiBuZXcgQ29ubmVjdGlvbk1vZGVsKHNldHRpbmdzKSxcbiAgfSlcbiAgcHVibGljIHNldCBjb25uZWN0aW9uKGNvbm5lY3Rpb246IENvbm5lY3Rpb25Nb2RlbCkge1xuICAgIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5jb25uZWN0aW9uLnNldChjb25uZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29ubmVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmNvbm5lY3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTbmFwIGdyaWQgZm9yIG5vZGUgbW92ZW1lbnQuIFBhc3NlcyBhcyBbeCwgeV1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc25hcEdyaWQodmFsdWU6IFtudW1iZXIsIG51bWJlcl0pIHtcbiAgICB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2Uuc25hcEdyaWQuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSYWl6aW5nIHotaW5kZXggZm9yIHNlbGVjdGVkIG5vZGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZWxldmF0ZU5vZGVzT25TZWxlY3QodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuZWxldmF0ZU5vZGVzT25TZWxlY3Quc2V0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSYWl6aW5nIHotaW5kZXggZm9yIHNlbGVjdGVkIGVkZ2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZWxldmF0ZUVkZ2VzT25TZWxlY3QodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuZWxldmF0ZUVkZ2VzT25TZWxlY3Quc2V0KHZhbHVlKTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBNQUlOX0lOUFVUU1xuICAvKipcbiAgICogTm9kZXMgdG8gcmVuZGVyXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgc2V0IG5vZGVzKG5ld05vZGVzOiBOb2RlW10gfCBEeW5hbWljTm9kZVtdKSB7XG4gICAgY29uc3QgbW9kZWxzID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+XG4gICAgICBSZWZlcmVuY2VJZGVudGl0eUNoZWNrZXIubm9kZXMobmV3Tm9kZXMsIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5ub2RlcygpKSxcbiAgICApO1xuXG4gICAgLy8gVE9ETzogY29uc2lkZXIgY2FsbGluZyBvbmx5IGZvIG5ldyBub2Rlc1xuICAgIC8vIHF1aWNrIGFuZCBkaXJ0eSBiaW5kaW5nIG5vZGVzIHRvIGVkZ2VzXG4gICAgYWRkTm9kZXNUb0VkZ2VzKG1vZGVscywgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmVkZ2VzKCkpO1xuXG4gICAgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLm5vZGVzLnNldChtb2RlbHMpO1xuXG4gICAgbW9kZWxzLmZvckVhY2goKG1vZGVsKSA9PiB0aGlzLm5vZGVSZW5kZXJpbmdTZXJ2aWNlLnB1bGxOb2RlKG1vZGVsKSk7XG4gIH1cblxuICBwdWJsaWMgYWxpZ25tZW50SGVscGVyID0gaW5wdXQ8QWxpZ25tZW50SGVscGVyU2V0dGluZ3MgfCBib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIG5vZGVNb2RlbHMgPSB0aGlzLm5vZGVSZW5kZXJpbmdTZXJ2aWNlLm5vZGVzO1xuICBwcm90ZWN0ZWQgZ3JvdXBzID0gdGhpcy5ub2RlUmVuZGVyaW5nU2VydmljZS5ncm91cHM7XG4gIHByb3RlY3RlZCBub25Hcm91cHMgPSB0aGlzLm5vZGVSZW5kZXJpbmdTZXJ2aWNlLm5vbkdyb3VwcztcblxuICAvKipcbiAgICogRWRnZXMgdG8gcmVuZGVyXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVkZ2VzKG5ld0VkZ2VzOiBFZGdlW10pIHtcbiAgICBjb25zdCBuZXdNb2RlbHMgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT5cbiAgICAgIFJlZmVyZW5jZUlkZW50aXR5Q2hlY2tlci5lZGdlcyhuZXdFZGdlcywgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmVkZ2VzKCkpLFxuICAgICk7XG5cbiAgICAvLyBxdWljayBhbmQgZGlydHkgYmluZGluZyBub2RlcyB0byBlZGdlc1xuICAgIGFkZE5vZGVzVG9FZGdlcyh0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2Uubm9kZXMoKSwgbmV3TW9kZWxzKTtcblxuICAgIHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5lZGdlcy5zZXQobmV3TW9kZWxzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlZGdlTW9kZWxzID0gdGhpcy5lZGdlUmVuZGVyaW5nU2VydmljZS5lZGdlcztcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gT1VUUFVUU1xuICAvKipcbiAgICogRXZlbnQgdGhhdCBhY2N1bXVsYXRlcyBhbGwgY3VzdG9tIG5vZGUgZXZlbnRzXG4gICAqXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvbkNvbXBvbmVudE5vZGVFdmVudCA9IG91dHB1dEZyb21PYnNlcnZhYmxlPGFueT4odGhpcy5jb21wb25lbnRFdmVudEJ1c1NlcnZpY2UuZXZlbnQkKTsgLy8gVE9ETzogcmVzZWFyY2ggaG93IHRvIHJlbW92ZSBhbnlcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gVEVNUExBVEVTXG4gIHByb3RlY3RlZCBub2RlVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoTm9kZUh0bWxUZW1wbGF0ZURpcmVjdGl2ZSk7XG5cbiAgcHJvdGVjdGVkIG5vZGVTdmdUZW1wbGF0ZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChOb2RlU3ZnVGVtcGxhdGVEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBncm91cE5vZGVUZW1wbGF0ZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChHcm91cE5vZGVUZW1wbGF0ZURpcmVjdGl2ZSk7XG5cbiAgcHJvdGVjdGVkIGVkZ2VUZW1wbGF0ZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChFZGdlVGVtcGxhdGVEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBlZGdlTGFiZWxIdG1sRGlyZWN0aXZlID0gY29udGVudENoaWxkKEVkZ2VMYWJlbEh0bWxUZW1wbGF0ZURpcmVjdGl2ZSk7XG5cbiAgcHJvdGVjdGVkIGNvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChDb25uZWN0aW9uVGVtcGxhdGVEaXJlY3RpdmUpO1xuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBESVJFQ1RJVkVTXG4gIHByb3RlY3RlZCBtYXBDb250ZXh0ID0gdmlld0NoaWxkKE1hcENvbnRleHREaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBzcGFjZVBvaW50Q29udGV4dCA9IHZpZXdDaGlsZC5yZXF1aXJlZChTcGFjZVBvaW50Q29udGV4dERpcmVjdGl2ZSk7XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFNJR05BTF9BUElcbiAgLyoqXG4gICAqIFNpZ25hbCBmb3IgcmVhZGluZyB2aWV3cG9ydCBjaGFuZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQuYXNSZWFkb25seSgpO1xuXG4gIC8qKlxuICAgKiBTaWduYWwgZm9yIHJlYWRpbmcgbm9kZXMgY2hhbmdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbm9kZXNDaGFuZ2UgPSB0b0xhenlTaWduYWwodGhpcy5ub2Rlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQsIHtcbiAgICBpbml0aWFsVmFsdWU6IFtdIGFzIE5vZGVDaGFuZ2VbXSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFNpZ25hbCB0byByZWFkaW5nIGVkZ2VzIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVkZ2VzQ2hhbmdlID0gdG9MYXp5U2lnbmFsKHRoaXMuZWRnZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkLCB7XG4gICAgaW5pdGlhbFZhbHVlOiBbXSBhcyBFZGdlQ2hhbmdlW10sXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBpbml0aWFsaXplZCA9IHRoaXMuZmxvd1JlbmRlcmluZ1NlcnZpY2UuZmxvd0luaXRpYWxpemVkLmFzUmVhZG9ubHkoKTtcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gUlhfQVBJXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHdpdGggdmlld3BvcnQgY2hhbmdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmlld3BvcnRDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQpLnBpcGUoc2tpcCgxKSk7IC8vIHNraXAgZGVmYXVsdCB2YWx1ZSB0aGF0IHNldCBieSBzaWduYWxcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB3aXRoIG5vZGVzIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5vZGVzQ2hhbmdlJCA9IHRoaXMubm9kZXNDaGFuZ2VTZXJ2aWNlLmNoYW5nZXMkO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHdpdGggZWRnZXMgY2hhbmdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZWRnZXNDaGFuZ2UkID0gdGhpcy5lZGdlc0NoYW5nZVNlcnZpY2UuY2hhbmdlcyQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IGluaXRpYWxpemVkJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmZsb3dSZW5kZXJpbmdTZXJ2aWNlLmZsb3dJbml0aWFsaXplZCk7XG4gIC8vICNlbmRyZWdpb25cblxuICBwcm90ZWN0ZWQgbWFya2VycyA9IHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5tYXJrZXJzO1xuICBwcm90ZWN0ZWQgbWluaW1hcCA9IHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5taW5pbWFwO1xuXG4gIHByb3RlY3RlZCBmbG93T3B0aW1pemF0aW9uID0gdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLm9wdGltaXphdGlvbjtcbiAgcHJvdGVjdGVkIGZsb3dXaWR0aCA9IHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5jb21wdXRlZEZsb3dXaWR0aDtcbiAgcHJvdGVjdGVkIGZsb3dIZWlnaHQgPSB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93SGVpZ2h0O1xuXG4gIC8vICNyZWdpb24gTUVUSE9EU19BUElcbiAgLyoqXG4gICAqIENoYW5nZSB2aWV3cG9ydCB0byBzcGVjaWZpZWQgc3RhdGVcbiAgICpcbiAgICogQHBhcmFtIHZpZXdwb3J0IHZpZXdwb3J0IHN0YXRlXG4gICAqL1xuICBwdWJsaWMgdmlld3BvcnRUbyh2aWV3cG9ydDogVmlld3BvcnRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLndyaXRhYmxlVmlld3BvcnQuc2V0KHtcbiAgICAgIGNoYW5nZVR5cGU6ICdhYnNvbHV0ZScsXG4gICAgICBzdGF0ZTogdmlld3BvcnQsXG4gICAgICBkdXJhdGlvbjogMCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2Ugem9vbVxuICAgKlxuICAgKiBAcGFyYW0gem9vbSB6b29tIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgem9vbVRvKHpvb206IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLndyaXRhYmxlVmlld3BvcnQuc2V0KHtcbiAgICAgIGNoYW5nZVR5cGU6ICdhYnNvbHV0ZScsXG4gICAgICBzdGF0ZTogeyB6b29tIH0sXG4gICAgICBkdXJhdGlvbjogMCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIHRvIHNwZWNpZmllZCBjb29yZGluYXRlXG4gICAqXG4gICAqIEBwYXJhbSBwb2ludCBwb2ludCB3aGVyZSB0byBtb3ZlXG4gICAqL1xuICBwdWJsaWMgcGFuVG8ocG9pbnQ6IFBvaW50KTogdm9pZCB7XG4gICAgdGhpcy52aWV3cG9ydFNlcnZpY2Uud3JpdGFibGVWaWV3cG9ydC5zZXQoe1xuICAgICAgY2hhbmdlVHlwZTogJ2Fic29sdXRlJyxcbiAgICAgIHN0YXRlOiBwb2ludCxcbiAgICAgIGR1cmF0aW9uOiAwLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZpdFZpZXcob3B0aW9ucz86IEZpdFZpZXdPcHRpb25zKSB7XG4gICAgdGhpcy52aWV3cG9ydFNlcnZpY2UuZml0VmlldyhvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbm9kZSBieSBpZFxuICAgKlxuICAgKiBAcGFyYW0gaWQgbm9kZSBpZFxuICAgKi9cbiAgcHVibGljIGdldE5vZGU8VCA9IHVua25vd24+KGlkOiBzdHJpbmcpOiBOb2RlPFQ+IHwgRHluYW1pY05vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuZ2V0Tm9kZTxUPihpZCk/LnJhd05vZGU7XG4gIH1cblxuICAvKipcbiAgICogU3luYyBtZXRob2QgdG8gZ2V0IGRldGFjaGVkIGVkZ2VzXG4gICAqL1xuICBwdWJsaWMgZ2V0RGV0YWNoZWRFZGdlcygpOiBFZGdlW10ge1xuICAgIHJldHVybiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UuZ2V0RGV0YWNoZWRFZGdlcygpLm1hcCgoZSkgPT4gZS5lZGdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHBvaW50IHJlY2VpdmVkIGZyb20gZG9jdW1lbnQgdG8gcG9pbnQgb24gdGhlIGZsb3dcbiAgICovXG4gIHB1YmxpYyBkb2N1bWVudFBvaW50VG9GbG93UG9pbnQocG9pbnQ6IFBvaW50KTogUG9pbnQ7XG4gIHB1YmxpYyBkb2N1bWVudFBvaW50VG9GbG93UG9pbnQocG9pbnQ6IFBvaW50LCBvcHRpb25zPzogeyBzcGFjZXM6IGZhbHNlIH0pOiBQb2ludDtcbiAgLyoqXG4gICAqIENvbnZlcnQgcG9pbnQgcmVjZWl2ZWQgZnJvbSBkb2N1bWVudCB0byBhIHN0YWNrIG9mIHNwYWNlIHBvaW50cyBvbiB0aGUgZmxvd1xuICAgKiBTcGFjZSBwb2ludCBoYXMgYSBzcGFjZU5vZGVJZCwgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgbm9kZVxuICAgKi9cbiAgcHVibGljIGRvY3VtZW50UG9pbnRUb0Zsb3dQb2ludChwb2ludDogUG9pbnQsIG9wdGlvbnM/OiB7IHNwYWNlczogdHJ1ZSB9KTogU3BhY2VQb2ludFtdO1xuICBwdWJsaWMgZG9jdW1lbnRQb2ludFRvRmxvd1BvaW50KHBvaW50OiBQb2ludCwgb3B0aW9ucz86IHsgc3BhY2VzOiBib29sZWFuIH0pOiB1bmtub3duIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFBvaW50ID0gdGhpcy5zcGFjZVBvaW50Q29udGV4dCgpLmRvY3VtZW50UG9pbnRUb0Zsb3dQb2ludChwb2ludCk7XG5cbiAgICBpZiAob3B0aW9ucz8uc3BhY2VzKSB7XG4gICAgICByZXR1cm4gZ2V0U3BhY2VQb2ludHModHJhbnNmb3JtZWRQb2ludCwgdGhpcy5ub2RlUmVuZGVyaW5nU2VydmljZS5ncm91cHMoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkUG9pbnQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBub2RlcyB0aGF0IGludGVyc2VjdCB3aXRoIHRoZSBzcGVjaWZpZWQgbm9kZVxuICAgKlxuICAgKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBub2Rlc1xuICAgKiBAcGFyYW0gbm9kZUlkIC0gVGhlIElEIG9mIHRoZSBub2RlIHRvIGNoZWNrIGludGVyc2VjdGlvbnMgZm9yXG4gICAqIEBwYXJhbSBvcHRpb25zLnBhcnRpYWxseSAtIElmIHRydWUsIHJldHVybnMgbm9kZXMgdGhhdCBwYXJ0aWFsbHkgaW50ZXJzZWN0LiBJZiBmYWxzZSwgb25seSByZXR1cm5zIGZ1bGx5IGludGVyc2VjdGluZyBub2Rlc1xuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBub2RlcyB0aGF0IGludGVyc2VjdCB3aXRoIHRoZSBzcGVjaWZpZWQgbm9kZVxuICAgKi9cbiAgcHVibGljIGdldEludGVzZWN0aW5nTm9kZXM8VD4oXG4gICAgbm9kZUlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczogSW50ZXJzZWN0aW5nTm9kZXNPcHRpb25zID0geyBwYXJ0aWFsbHk6IHRydWUgfSxcbiAgKTogTm9kZTxUPltdIHwgRHluYW1pY05vZGU8VD5bXSB7XG4gICAgcmV0dXJuIGdldEludGVzZWN0aW5nTm9kZXMobm9kZUlkLCB0aGlzLm5vZGVNb2RlbHMoKSwgb3B0aW9ucykubWFwKChuKSA9PiBuLnJhd05vZGUpIGFzXG4gICAgICB8IE5vZGU8VD5bXVxuICAgICAgfCBEeW5hbWljTm9kZTxUPltdO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgbm9kZSdzIHBvc2l0aW9uIHRvIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIGFub3RoZXIgbm9kZVxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlkIC0gVGhlIElEIG9mIHRoZSBub2RlIHdob3NlIHBvc2l0aW9uIHNob3VsZCBiZSBjb252ZXJ0ZWRcbiAgICogQHBhcmFtIHNwYWNlTm9kZUlkIC0gVGhlIElEIG9mIHRoZSBub2RlIHRoYXQgZGVmaW5lcyB0aGUgdGFyZ2V0IGNvb3JkaW5hdGUgc3BhY2UuXG4gICAqICAgICAgICAgICAgICAgICAgICAgIElmIG51bGwsIHJldHVybnMgdGhlIHBvc2l0aW9uIGluIGdsb2JhbCBjb29yZGluYXRlc1xuICAgKiBAcmV0dXJucyB7UG9pbnR9IFRoZSBjb252ZXJ0ZWQgcG9zaXRpb24uIFJldHVybnMge3g6IEluZmluaXR5LCB5OiBJbmZpbml0eX0gaWYgZWl0aGVyIG5vZGUgaXMgbm90IGZvdW5kXG4gICAqL1xuICBwdWJsaWMgdG9Ob2RlU3BhY2Uobm9kZUlkOiBzdHJpbmcsIHNwYWNlTm9kZUlkOiBzdHJpbmcgfCBudWxsKTogUG9pbnQge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGVNb2RlbHMoKS5maW5kKChuKSA9PiBuLnJhd05vZGUuaWQgPT09IG5vZGVJZCk7XG5cbiAgICBpZiAoIW5vZGUpIHJldHVybiB7IHg6IEluZmluaXR5LCB5OiBJbmZpbml0eSB9O1xuXG4gICAgaWYgKHNwYWNlTm9kZUlkID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbm9kZS5nbG9iYWxQb2ludCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvb3JkaW5hdGVTcGFjZU5vZGUgPSB0aGlzLm5vZGVNb2RlbHMoKS5maW5kKChuKSA9PiBuLnJhd05vZGUuaWQgPT09IHNwYWNlTm9kZUlkKTtcblxuICAgIGlmICghY29vcmRpbmF0ZVNwYWNlTm9kZSkgcmV0dXJuIHsgeDogSW5maW5pdHksIHk6IEluZmluaXR5IH07XG5cbiAgICByZXR1cm4gZ2V0U3BhY2VQb2ludHMobm9kZS5nbG9iYWxQb2ludCgpLCBbY29vcmRpbmF0ZVNwYWNlTm9kZV0pWzBdO1xuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICBwcm90ZWN0ZWQgdHJhY2tOb2RlcyhpZHg6IG51bWJlciwgeyByYXdOb2RlOiBub2RlIH06IE5vZGVNb2RlbCkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrRWRnZXMoaWR4OiBudW1iZXIsIHsgZWRnZSB9OiBFZGdlTW9kZWwpIHtcbiAgICByZXR1cm4gZWRnZTtcbiAgfVxufVxuIiwiPHN2ZzpzdmcgI2Zsb3cgcm9vdFN2Z1JlZiByb290U3ZnQ29udGV4dCByb290UG9pbnRlciBmbG93U2l6ZUNvbnRyb2xsZXIgY2xhc3M9XCJyb290LXN2Z1wiPlxuICA8ZGVmcyBmbG93RGVmcyBbbWFya2Vyc109XCJtYXJrZXJzKClcIiAvPlxuXG4gIDxnIGJhY2tncm91bmQgLz5cblxuICA8c3ZnOmcgbWFwQ29udGV4dCBzcGFjZVBvaW50Q29udGV4dD5cbiAgICBAaWYgKGFsaWdubWVudEhlbHBlcigpOyBhcyBhbGlnbm1lbnRIZWxwZXIpIHtcbiAgICAgIEBpZiAoYWxpZ25tZW50SGVscGVyID09PSB0cnVlKSB7XG4gICAgICAgIDxzdmc6ZyBhbGlnbm1lbnRIZWxwZXIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c3ZnOmcgYWxpZ25tZW50SGVscGVyIFt0b2xlcmFuY2VdPVwiYWxpZ25tZW50SGVscGVyLnRvbGVyYW5jZVwiIFtsaW5lQ29sb3JdPVwiYWxpZ25tZW50SGVscGVyLmxpbmVDb2xvclwiIC8+XG4gICAgICB9XG4gICAgfVxuXG4gICAgPCEtLSBDb25uZWN0aW9uIC0tPlxuICAgIDxzdmc6ZyBjb25uZWN0aW9uIFttb2RlbF09XCJjb25uZWN0aW9uXCIgW3RlbXBsYXRlXT1cImNvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZlwiIC8+XG5cbiAgICBAaWYgKGZsb3dPcHRpbWl6YXRpb24oKS5kZXRhY2hlZEdyb3Vwc0xheWVyKSB7XG4gICAgICA8IS0tIEdyb3VwcyAtLT5cbiAgICAgIEBmb3IgKG1vZGVsIG9mIGdyb3VwcygpOyB0cmFjayB0cmFja05vZGVzKCRpbmRleCwgbW9kZWwpKSB7XG4gICAgICAgIDxzdmc6Z1xuICAgICAgICAgIG5vZGVcbiAgICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgICAgICAgIFtncm91cE5vZGVUZW1wbGF0ZV09XCJncm91cE5vZGVUZW1wbGF0ZURpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIm1vZGVsLnBvaW50VHJhbnNmb3JtKClcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLSBFZGdlcyAgLS0+XG4gICAgICBAZm9yIChtb2RlbCBvZiBlZGdlTW9kZWxzKCk7IHRyYWNrIHRyYWNrRWRnZXMoJGluZGV4LCBtb2RlbCkpIHtcbiAgICAgICAgPHN2ZzpnXG4gICAgICAgICAgZWRnZVxuICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgICAgW2VkZ2VUZW1wbGF0ZV09XCJlZGdlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtlZGdlTGFiZWxIdG1sVGVtcGxhdGVdPVwiZWRnZUxhYmVsSHRtbERpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZlwiIC8+XG4gICAgICB9XG4gICAgICA8IS0tIE5vZGVzIC0tPlxuICAgICAgQGZvciAobW9kZWwgb2Ygbm9uR3JvdXBzKCk7IHRyYWNrIHRyYWNrTm9kZXMoJGluZGV4LCBtb2RlbCkpIHtcbiAgICAgICAgPHN2ZzpnXG4gICAgICAgICAgbm9kZVxuICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgICAgW25vZGVUZW1wbGF0ZV09XCJub2RlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtub2RlU3ZnVGVtcGxhdGVdPVwibm9kZVN2Z1RlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwibW9kZWwucG9pbnRUcmFuc2Zvcm0oKVwiIC8+XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICghZmxvd09wdGltaXphdGlvbigpLmRldGFjaGVkR3JvdXBzTGF5ZXIpIHtcbiAgICAgIDwhLS0gRWRnZXMgIC0tPlxuICAgICAgQGZvciAobW9kZWwgb2YgZWRnZU1vZGVscygpOyB0cmFjayB0cmFja0VkZ2VzKCRpbmRleCwgbW9kZWwpKSB7XG4gICAgICAgIDxzdmc6Z1xuICAgICAgICAgIGVkZ2VcbiAgICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgICAgICAgIFtlZGdlVGVtcGxhdGVdPVwiZWRnZVRlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICBbZWRnZUxhYmVsSHRtbFRlbXBsYXRlXT1cImVkZ2VMYWJlbEh0bWxEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWZcIiAvPlxuICAgICAgfVxuXG4gICAgICBAZm9yIChtb2RlbCBvZiBub2RlTW9kZWxzKCk7IHRyYWNrIHRyYWNrTm9kZXMoJGluZGV4LCBtb2RlbCkpIHtcbiAgICAgICAgPHN2ZzpnXG4gICAgICAgICAgbm9kZVxuICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgICAgW25vZGVUZW1wbGF0ZV09XCJub2RlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtub2RlU3ZnVGVtcGxhdGVdPVwibm9kZVN2Z1RlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICBbZ3JvdXBOb2RlVGVtcGxhdGVdPVwiZ3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJtb2RlbC5wb2ludFRyYW5zZm9ybSgpXCIgLz5cbiAgICAgIH1cbiAgICB9XG4gIDwvc3ZnOmc+XG5cbiAgPCEtLSBNaW5pbWFwIC0tPlxuICBAaWYgKG1pbmltYXAoKTsgYXMgbWluaW1hcCkge1xuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibWluaW1hcC50ZW1wbGF0ZSgpXCIgLz5cbiAgfVxuPC9zdmc6c3ZnPlxuXG5AaWYgKGZsb3dPcHRpbWl6YXRpb24oKS52aXJ0dWFsaXphdGlvbikge1xuICA8Y2FudmFzIHByZXZpZXdGbG93IGNsYXNzPVwicHJldmlldy1mbG93XCIgW3dpZHRoXT1cImZsb3dXaWR0aCgpXCIgW2hlaWdodF09XCJmbG93SGVpZ2h0KClcIj48L2NhbnZhcz5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ25tZW50LWhlbHBlci1zZXR0aW5ncy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy9hbGlnbm1lbnQtaGVscGVyLXNldHRpbmdzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBbGlnbm1lbnRIZWxwZXJTZXR0aW5ncyB7XG4gIHRvbGVyYW5jZTogbnVtYmVyO1xuICBsaW5lQ29sb3I6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
1
|
+
export function rectToRectWithSides(rect) {
|
|
2
|
+
return {
|
|
3
|
+
...rect,
|
|
4
|
+
left: rect.x,
|
|
5
|
+
right: rect.x + rect.width,
|
|
6
|
+
top: rect.y,
|
|
7
|
+
bottom: rect.y + rect.height,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9pbnRlcmZhY2VzL3JlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0EsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVU7SUFDNUMsT0FBTztRQUNMLEdBQUcsSUFBSTtRQUNQLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNaLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLO1FBQzFCLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNO0tBQzdCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBSZWN0IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY3RXaXRoU2lkZXMgZXh0ZW5kcyBSZWN0IHtcbiAgbGVmdDogbnVtYmVyO1xuICByaWdodDogbnVtYmVyO1xuICB0b3A6IG51bWJlcjtcbiAgYm90dG9tOiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWN0VG9SZWN0V2l0aFNpZGVzKHJlY3Q6IFJlY3QpOiBSZWN0V2l0aFNpZGVzIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5yZWN0LFxuICAgIGxlZnQ6IHJlY3QueCxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0LFxuICB9O1xufVxuIl19
|
|
@@ -5,11 +5,13 @@ import { round } from '../utils/round';
|
|
|
5
5
|
import { FlowEntitiesService } from './flow-entities.service';
|
|
6
6
|
import { FlowSettingsService } from './flow-settings.service';
|
|
7
7
|
import { align } from '../utils/align-number';
|
|
8
|
+
import { FlowStatusService } from './flow-status.service';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export class DraggableService {
|
|
10
11
|
constructor() {
|
|
11
12
|
this.entitiesService = inject(FlowEntitiesService);
|
|
12
13
|
this.settingsService = inject(FlowSettingsService);
|
|
14
|
+
this.flowStatusService = inject(FlowStatusService);
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
17
|
* Enable draggable behavior for element.
|
|
@@ -57,6 +59,7 @@ export class DraggableService {
|
|
|
57
59
|
.filter(filterCondition)
|
|
58
60
|
.on('start', (event) => {
|
|
59
61
|
dragNodes = this.getDragNodes(model);
|
|
62
|
+
this.flowStatusService.setNodeDragStartStatus(model);
|
|
60
63
|
initialPositions = dragNodes.map((node) => ({
|
|
61
64
|
x: node.point().x - event.x,
|
|
62
65
|
y: node.point().y - event.y,
|
|
@@ -70,6 +73,9 @@ export class DraggableService {
|
|
|
70
73
|
};
|
|
71
74
|
this.moveNode(model, point);
|
|
72
75
|
});
|
|
76
|
+
})
|
|
77
|
+
.on('end', () => {
|
|
78
|
+
this.flowStatusService.setNodeDragEndStatus(model);
|
|
73
79
|
});
|
|
74
80
|
}
|
|
75
81
|
getDragNodes(model) {
|
|
@@ -115,4 +121,4 @@ export class DraggableService {
|
|
|
115
121
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DraggableService, decorators: [{
|
|
116
122
|
type: Injectable
|
|
117
123
|
}] });
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQWUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBSzlDLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFVSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzlDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FzSHZEO0lBcEhDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE9BQWdCLEVBQUUsS0FBZ0I7UUFDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTyxDQUFDLE9BQWdCO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7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QUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFL0IsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVcsQ0FBQyxLQUFZO1FBQzlCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV2RCxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2QsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOytHQXZIVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCB7IEQzRHJhZ0V2ZW50LCBkcmFnIH0gZnJvbSAnZDMtZHJhZyc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gJy4uL3V0aWxzL3JvdW5kJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctZW50aXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBhbGlnbiB9IGZyb20gJy4uL3V0aWxzL2FsaWduLW51bWJlcic7XG5cbnR5cGUgRHJhZ0V2ZW50ID0gRDNEcmFnRXZlbnQ8RWxlbWVudCwgdW5rbm93biwgdW5rbm93bj47XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEcmFnZ2FibGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG4gIHByaXZhdGUgc2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgZHJhZ2dhYmxlIGJlaGF2aW9yIGZvciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCB0YXJnZXQgZWxlbWVudCBmb3IgdG9nZ2xpbmcgZHJhZ2dhYmxlXG4gICAqIEBwYXJhbSBtb2RlbCBtb2RlbCB3aXRoIGRhdGEgZm9yIHRoaXMgZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGVuYWJsZShlbGVtZW50OiBFbGVtZW50LCBtb2RlbDogTm9kZU1vZGVsKSB7XG4gICAgc2VsZWN0KGVsZW1lbnQpLmNhbGwodGhpcy5nZXREcmFnQmVoYXZpb3IobW9kZWwpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGRyYWdnYWJsZSBiZWhhdmlvciBmb3IgZWxlbWVudC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgdGFyZ2V0IGVsZW1lbnQgZm9yIHRvZ2dsaW5nIGRyYWdnYWJsZVxuICAgKiBAcGFyYW0gbW9kZWwgbW9kZWwgd2l0aCBkYXRhIGZvciB0aGlzIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBkaXNhYmxlKGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBzZWxlY3QoZWxlbWVudCkuY2FsbChkcmFnKCkub24oJ2RyYWcnLCBudWxsKSk7XG4gIH1cblxuICAvKipcbiAgICogVE9ETzogbm90IHNodXJlIGlmIHRoaXMgd29yaywgbmVlZCB0byBjaGVja1xuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koZWxlbWVudDogRWxlbWVudCkge1xuICAgIHNlbGVjdChlbGVtZW50KS5vbignLmRyYWcnLCBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb2RlIGRyYWcgYmVoYXZpb3IuIFVwZGF0ZWQgbm9kZSdzIGNvb3JkaW5hdGUgYWNjb3JkaW5nIHRvIGRyYWdnaW5nXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXREcmFnQmVoYXZpb3IobW9kZWw6IE5vZGVNb2RlbCkge1xuICAgIGxldCBkcmFnTm9kZXM6IE5vZGVNb2RlbFtdID0gW107XG4gICAgbGV0IGluaXRpYWxQb3NpdGlvbnM6IFBvaW50W10gPSBbXTtcblxuICAgIGNvbnN0IGZpbHRlckNvbmRpdGlvbiA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIC8vIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBkcmFnIGhhbmRsZSwgd2Ugc2hvdWxkIGNoZWNrIGlmIHdlIGFyZSBkcmFnZ2luZyBpdFxuICAgICAgaWYgKG1vZGVsLmRyYWdIYW5kbGVzQ291bnQoKSkge1xuICAgICAgICByZXR1cm4gISEoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmNsb3Nlc3QoJy52Zmxvdy1kcmFnLWhhbmRsZScpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRyYWcoKVxuICAgICAgLmZpbHRlcihmaWx0ZXJDb25kaXRpb24pXG4gICAgICAub24oJ3N0YXJ0JywgKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgZHJhZ05vZGVzID0gdGhpcy5nZXREcmFnTm9kZXMobW9kZWwpO1xuXG4gICAgICAgIGluaXRpYWxQb3NpdGlvbnMgPSBkcmFnTm9kZXMubWFwKChub2RlKSA9PiAoe1xuICAgICAgICAgIHg6IG5vZGUucG9pbnQoKS54IC0gZXZlbnQueCxcbiAgICAgICAgICB5OiBub2RlLnBvaW50KCkueSAtIGV2ZW50LnksXG4gICAgICAgIH0pKTtcbiAgICAgIH0pXG5cbiAgICAgIC5vbignZHJhZycsIChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgIGRyYWdOb2Rlcy5mb3JFYWNoKChtb2RlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBwb2ludCA9IHtcbiAgICAgICAgICAgIHg6IHJvdW5kKGV2ZW50LnggKyBpbml0aWFsUG9zaXRpb25zW2luZGV4XS54KSxcbiAgICAgICAgICAgIHk6IHJvdW5kKGV2ZW50LnkgKyBpbml0aWFsUG9zaXRpb25zW2luZGV4XS55KSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgdGhpcy5tb3ZlTm9kZShtb2RlbCwgcG9pbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREcmFnTm9kZXMobW9kZWw6IE5vZGVNb2RlbCkge1xuICAgIHJldHVybiBtb2RlbC5zZWxlY3RlZCgpXG4gICAgICA/IHRoaXMuZW50aXRpZXNTZXJ2aWNlXG4gICAgICAgICAgLm5vZGVzKClcbiAgICAgICAgICAvLyBzZWxlY3RlZCBkcmFnZ2FibGUgbm9kZXMgKHdpdGggY3VycmVudCBub2RlKVxuICAgICAgICAgIC5maWx0ZXIoKG5vZGUpID0+IG5vZGUuc2VsZWN0ZWQoKSAmJiBub2RlLmRyYWdnYWJsZSgpKVxuICAgICAgOiAvLyB3ZSBvbmx5IGNhbiBtb3ZlIGN1cnJlbnQgbm9kZSBpZiBpdCdzIG5vdCBzZWxlY3RlZFxuICAgICAgICBbbW9kZWxdO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIG1ha2UgaXQgdW5pdCB0ZXN0YWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBtb3ZlTm9kZShtb2RlbDogTm9kZU1vZGVsLCBwb2ludDogUG9pbnQpIHtcbiAgICBwb2ludCA9IHRoaXMuYWxpZ25Ub0dyaWQocG9pbnQpO1xuXG4gICAgY29uc3QgcGFyZW50ID0gbW9kZWwucGFyZW50KCk7XG4gICAgLy8ga2VlcCBub2RlIGluIGJvdW5kcyBvZiBwYXJlbnRcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBwb2ludC54ID0gTWF0aC5taW4ocGFyZW50LndpZHRoKCkgLSBtb2RlbC53aWR0aCgpLCBwb2ludC54KTtcbiAgICAgIHBvaW50LnggPSBNYXRoLm1heCgwLCBwb2ludC54KTtcblxuICAgICAgcG9pbnQueSA9IE1hdGgubWluKHBhcmVudC5oZWlnaHQoKSAtIG1vZGVsLmhlaWdodCgpLCBwb2ludC55KTtcbiAgICAgIHBvaW50LnkgPSBNYXRoLm1heCgwLCBwb2ludC55KTtcbiAgICB9XG5cbiAgICBtb2RlbC5zZXRQb2ludChwb2ludCk7XG4gIH1cblxuICAvKipcbiAgICogQHRvZG8gbWFrZSBpdCB1bml0IHRlc3RhYmxlXG4gICAqL1xuICBwcml2YXRlIGFsaWduVG9HcmlkKHBvaW50OiBQb2ludCkge1xuICAgIGNvbnN0IFtzbmFwWCwgc25hcFldID0gdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc25hcEdyaWQoKTtcblxuICAgIGlmIChzbmFwWCA+IDEpIHtcbiAgICAgIHBvaW50LnggPSBhbGlnbihwb2ludC54LCBzbmFwWCk7XG4gICAgfVxuXG4gICAgaWYgKHNuYXBZID4gMSkge1xuICAgICAgcG9pbnQueSA9IGFsaWduKHBvaW50LnksIHNuYXBZKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9pbnQ7XG4gIH1cbn1cbiJdfQ==
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQWUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBSzFELE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFVSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzlDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDOUMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0E0SHZEO0lBMUhDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE9BQWdCLEVBQUUsS0FBZ0I7UUFDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTyxDQUFDLE9BQWdCO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLENB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QztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0E5SFUsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNlbGVjdCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5pbXBvcnQgeyBEM0RyYWdFdmVudCwgZHJhZyB9IGZyb20gJ2QzLWRyYWcnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tICcuLi91dGlscy9yb3VuZCc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgYWxpZ24gfSBmcm9tICcuLi91dGlscy9hbGlnbi1udW1iZXInO1xuaW1wb3J0IHsgRmxvd1N0YXR1c1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctc3RhdHVzLnNlcnZpY2UnO1xuXG50eXBlIERyYWdFdmVudCA9IEQzRHJhZ0V2ZW50PEVsZW1lbnQsIHVua25vd24sIHVua25vd24+O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJhZ2dhYmxlU2VydmljZSB7XG4gIHByaXZhdGUgZW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpO1xuICBwcml2YXRlIHNldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmbG93U3RhdHVzU2VydmljZSA9IGluamVjdChGbG93U3RhdHVzU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBkcmFnZ2FibGUgYmVoYXZpb3IgZm9yIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IHRhcmdldCBlbGVtZW50IGZvciB0b2dnbGluZyBkcmFnZ2FibGVcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHdpdGggZGF0YSBmb3IgdGhpcyBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZW5hYmxlKGVsZW1lbnQ6IEVsZW1lbnQsIG1vZGVsOiBOb2RlTW9kZWwpIHtcbiAgICBzZWxlY3QoZWxlbWVudCkuY2FsbCh0aGlzLmdldERyYWdCZWhhdmlvcihtb2RlbCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgZHJhZ2dhYmxlIGJlaGF2aW9yIGZvciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCB0YXJnZXQgZWxlbWVudCBmb3IgdG9nZ2xpbmcgZHJhZ2dhYmxlXG4gICAqIEBwYXJhbSBtb2RlbCBtb2RlbCB3aXRoIGRhdGEgZm9yIHRoaXMgZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGRpc2FibGUoZWxlbWVudDogRWxlbWVudCkge1xuICAgIHNlbGVjdChlbGVtZW50KS5jYWxsKGRyYWcoKS5vbignZHJhZycsIG51bGwpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPOiBub3Qgc2h1cmUgaWYgdGhpcyB3b3JrLCBuZWVkIHRvIGNoZWNrXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZGVzdHJveShlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgc2VsZWN0KGVsZW1lbnQpLm9uKCcuZHJhZycsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vZGUgZHJhZyBiZWhhdmlvci4gVXBkYXRlZCBub2RlJ3MgY29vcmRpbmF0ZSBhY2NvcmRpbmcgdG8gZHJhZ2dpbmdcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIGdldERyYWdCZWhhdmlvcihtb2RlbDogTm9kZU1vZGVsKSB7XG4gICAgbGV0IGRyYWdOb2RlczogTm9kZU1vZGVsW10gPSBbXTtcbiAgICBsZXQgaW5pdGlhbFBvc2l0aW9uczogUG9pbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgZmlsdGVyQ29uZGl0aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgLy8gaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGRyYWcgaGFuZGxlLCB3ZSBzaG91bGQgY2hlY2sgaWYgd2UgYXJlIGRyYWdnaW5nIGl0XG4gICAgICBpZiAobW9kZWwuZHJhZ0hhbmRsZXNDb3VudCgpKSB7XG4gICAgICAgIHJldHVybiAhIShldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnLnZmbG93LWRyYWctaGFuZGxlJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICByZXR1cm4gZHJhZygpXG4gICAgICAuZmlsdGVyKGZpbHRlckNvbmRpdGlvbilcbiAgICAgIC5vbignc3RhcnQnLCAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICBkcmFnTm9kZXMgPSB0aGlzLmdldERyYWdOb2Rlcyhtb2RlbCk7XG5cbiAgICAgICAgdGhpcy5mbG93U3RhdHVzU2VydmljZS5zZXROb2RlRHJhZ1N0YXJ0U3RhdHVzKG1vZGVsKTtcblxuICAgICAgICBpbml0aWFsUG9zaXRpb25zID0gZHJhZ05vZGVzLm1hcCgobm9kZSkgPT4gKHtcbiAgICAgICAgICB4OiBub2RlLnBvaW50KCkueCAtIGV2ZW50LngsXG4gICAgICAgICAgeTogbm9kZS5wb2ludCgpLnkgLSBldmVudC55LFxuICAgICAgICB9KSk7XG4gICAgICB9KVxuXG4gICAgICAub24oJ2RyYWcnLCAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICBkcmFnTm9kZXMuZm9yRWFjaCgobW9kZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcG9pbnQgPSB7XG4gICAgICAgICAgICB4OiByb3VuZChldmVudC54ICsgaW5pdGlhbFBvc2l0aW9uc1tpbmRleF0ueCksXG4gICAgICAgICAgICB5OiByb3VuZChldmVudC55ICsgaW5pdGlhbFBvc2l0aW9uc1tpbmRleF0ueSksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHRoaXMubW92ZU5vZGUobW9kZWwsIHBvaW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuXG4gICAgICAub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5mbG93U3RhdHVzU2VydmljZS5zZXROb2RlRHJhZ0VuZFN0YXR1cyhtb2RlbCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RHJhZ05vZGVzKG1vZGVsOiBOb2RlTW9kZWwpIHtcbiAgICByZXR1cm4gbW9kZWwuc2VsZWN0ZWQoKVxuICAgICAgPyB0aGlzLmVudGl0aWVzU2VydmljZVxuICAgICAgICAgIC5ub2RlcygpXG4gICAgICAgICAgLy8gc2VsZWN0ZWQgZHJhZ2dhYmxlIG5vZGVzICh3aXRoIGN1cnJlbnQgbm9kZSlcbiAgICAgICAgICAuZmlsdGVyKChub2RlKSA9PiBub2RlLnNlbGVjdGVkKCkgJiYgbm9kZS5kcmFnZ2FibGUoKSlcbiAgICAgIDogLy8gd2Ugb25seSBjYW4gbW92ZSBjdXJyZW50IG5vZGUgaWYgaXQncyBub3Qgc2VsZWN0ZWRcbiAgICAgICAgW21vZGVsXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBtYWtlIGl0IHVuaXQgdGVzdGFibGVcbiAgICovXG4gIHByaXZhdGUgbW92ZU5vZGUobW9kZWw6IE5vZGVNb2RlbCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgcG9pbnQgPSB0aGlzLmFsaWduVG9HcmlkKHBvaW50KTtcblxuICAgIGNvbnN0IHBhcmVudCA9IG1vZGVsLnBhcmVudCgpO1xuICAgIC8vIGtlZXAgbm9kZSBpbiBib3VuZHMgb2YgcGFyZW50XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcG9pbnQueCA9IE1hdGgubWluKHBhcmVudC53aWR0aCgpIC0gbW9kZWwud2lkdGgoKSwgcG9pbnQueCk7XG4gICAgICBwb2ludC54ID0gTWF0aC5tYXgoMCwgcG9pbnQueCk7XG5cbiAgICAgIHBvaW50LnkgPSBNYXRoLm1pbihwYXJlbnQuaGVpZ2h0KCkgLSBtb2RlbC5oZWlnaHQoKSwgcG9pbnQueSk7XG4gICAgICBwb2ludC55ID0gTWF0aC5tYXgoMCwgcG9pbnQueSk7XG4gICAgfVxuXG4gICAgbW9kZWwuc2V0UG9pbnQocG9pbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIG1ha2UgaXQgdW5pdCB0ZXN0YWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBhbGlnblRvR3JpZChwb2ludDogUG9pbnQpIHtcbiAgICBjb25zdCBbc25hcFgsIHNuYXBZXSA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNuYXBHcmlkKCk7XG5cbiAgICBpZiAoc25hcFggPiAxKSB7XG4gICAgICBwb2ludC54ID0gYWxpZ24ocG9pbnQueCwgc25hcFgpO1xuICAgIH1cblxuICAgIGlmIChzbmFwWSA+IDEpIHtcbiAgICAgIHBvaW50LnkgPSBhbGlnbihwb2ludC55LCBzbmFwWSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvaW50O1xuICB9XG59XG4iXX0=
|
|
@@ -28,10 +28,22 @@ export class FlowStatusService {
|
|
|
28
28
|
setReconnectionEndStatus(source, target, sourceHandle, targetHandle, oldEdge) {
|
|
29
29
|
this.status.set({ state: 'reconnection-end', payload: { source, target, sourceHandle, targetHandle, oldEdge } });
|
|
30
30
|
}
|
|
31
|
+
setNodeDragStartStatus(node) {
|
|
32
|
+
this.status.set({ state: 'node-drag-start', payload: { node } });
|
|
33
|
+
}
|
|
34
|
+
setNodeDragEndStatus(node) {
|
|
35
|
+
this.status.set({ state: 'node-drag-end', payload: { node } });
|
|
36
|
+
}
|
|
31
37
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowStatusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32
38
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowStatusService }); }
|
|
33
39
|
}
|
|
34
40
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowStatusService, decorators: [{
|
|
35
41
|
type: Injectable
|
|
36
42
|
}] });
|
|
37
|
-
|
|
43
|
+
export function isNodeDragStartStatus(params) {
|
|
44
|
+
return params.state === 'node-drag-start';
|
|
45
|
+
}
|
|
46
|
+
export function isNodeDragEndStatus(params) {
|
|
47
|
+
return params.state === 'node-drag-end';
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0dXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9mbG93LXN0YXR1cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQTRFbkQsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVrQixXQUFNLEdBQUcsTUFBTSxDQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQWdFL0U7SUE5RFEsYUFBYTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLHdCQUF3QixDQUFDLE1BQWlCLEVBQUUsWUFBeUI7UUFDMUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU0sMEJBQTBCLENBQUMsTUFBaUIsRUFBRSxZQUF5QixFQUFFLE9BQWtCO1FBQ2hHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFTSw2QkFBNkIsQ0FDbEMsS0FBYyxFQUNkLE1BQWlCLEVBQ2pCLE1BQWlCLEVBQ2pCLFlBQXlCLEVBQ3pCLFlBQXlCO1FBRXpCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEgsQ0FBQztJQUVNLCtCQUErQixDQUNwQyxLQUFjLEVBQ2QsTUFBaUIsRUFDakIsTUFBaUIsRUFDakIsWUFBeUIsRUFDekIsWUFBeUIsRUFDekIsT0FBa0I7UUFFbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDZCxLQUFLLEVBQUUseUJBQXlCO1lBQ2hDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1NBQ3hFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxzQkFBc0IsQ0FDM0IsTUFBaUIsRUFDakIsTUFBaUIsRUFDakIsWUFBeUIsRUFDekIsWUFBeUI7UUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFTSx3QkFBd0IsQ0FDN0IsTUFBaUIsRUFDakIsTUFBaUIsRUFDakIsWUFBeUIsRUFDekIsWUFBeUIsRUFDekIsT0FBa0I7UUFFbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRU0sc0JBQXNCLENBQUMsSUFBZTtRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLG9CQUFvQixDQUFDLElBQWU7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOytHQWhFVSxpQkFBaUI7bUhBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7QUFvRVgsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE1BQWtCO0lBQ3RELE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxpQkFBaUIsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQWtCO0lBQ3BELE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IENvbm5lY3Rpb25JbnRlcm5hbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29ubmVjdGlvbi5pbnRlcm5hbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRWRnZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2VkZ2UubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGF0dXNJZGxlIHtcbiAgc3RhdGU6ICdpZGxlJztcbiAgcGF5bG9hZDogbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzQ29ubmVjdGlvblN0YXJ0IHtcbiAgc3RhdGU6ICdjb25uZWN0aW9uLXN0YXJ0JztcbiAgcGF5bG9hZDogT21pdDxDb25uZWN0aW9uSW50ZXJuYWwsICd0YXJnZXQnIHwgJ3RhcmdldEhhbmRsZSc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGF0dXNDb25uZWN0aW9uVmFsaWRhdGlvbiB7XG4gIHN0YXRlOiAnY29ubmVjdGlvbi12YWxpZGF0aW9uJztcbiAgcGF5bG9hZDogQ29ubmVjdGlvbkludGVybmFsICYge1xuICAgIHZhbGlkOiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGF0dXNDb25uZWN0aW9uRW5kIHtcbiAgc3RhdGU6ICdjb25uZWN0aW9uLWVuZCc7XG4gIHBheWxvYWQ6IENvbm5lY3Rpb25JbnRlcm5hbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzUmVjb25uZWN0aW9uU3RhcnQge1xuICBzdGF0ZTogJ3JlY29ubmVjdGlvbi1zdGFydCc7XG4gIHBheWxvYWQ6IE9taXQ8Q29ubmVjdGlvbkludGVybmFsLCAndGFyZ2V0JyB8ICd0YXJnZXRIYW5kbGUnPiAmIHtcbiAgICBvbGRFZGdlOiBFZGdlTW9kZWw7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N0YXR1c1JlY29ubmVjdGlvblZhbGlkYXRpb24ge1xuICBzdGF0ZTogJ3JlY29ubmVjdGlvbi12YWxpZGF0aW9uJztcbiAgcGF5bG9hZDogQ29ubmVjdGlvbkludGVybmFsICYge1xuICAgIHZhbGlkOiBib29sZWFuO1xuICAgIG9sZEVkZ2U6IEVkZ2VNb2RlbDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzUmVjb25uZWN0aW9uRW5kIHtcbiAgc3RhdGU6ICdyZWNvbm5lY3Rpb24tZW5kJztcbiAgcGF5bG9hZDogQ29ubmVjdGlvbkludGVybmFsICYge1xuICAgIG9sZEVkZ2U6IEVkZ2VNb2RlbDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzTm9kZURyYWdTdGFydCB7XG4gIHN0YXRlOiAnbm9kZS1kcmFnLXN0YXJ0JztcbiAgcGF5bG9hZDoge1xuICAgIG5vZGU6IE5vZGVNb2RlbDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzTm9kZURyYWdFbmQge1xuICBzdGF0ZTogJ25vZGUtZHJhZy1lbmQnO1xuICBwYXlsb2FkOiB7XG4gICAgbm9kZTogTm9kZU1vZGVsO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBGbG93U3RhdHVzID1cbiAgfCBGbG93U3RhdHVzSWRsZVxuICB8IEZsb3dTdGF0dXNDb25uZWN0aW9uU3RhcnRcbiAgfCBGbG93U3RhdHVzQ29ubmVjdGlvblZhbGlkYXRpb25cbiAgfCBGbG93U3RhdHVzQ29ubmVjdGlvbkVuZFxuICB8IEZsb3dTdGF0dXNSZWNvbm5lY3Rpb25TdGFydFxuICB8IEZsb3dTdGF0dXNSZWNvbm5lY3Rpb25WYWxpZGF0aW9uXG4gIHwgRmxvd1N0YXR1c1JlY29ubmVjdGlvbkVuZFxuICB8IEZsb3dTdGF0dXNOb2RlRHJhZ1N0YXJ0XG4gIHwgRmxvd1N0YXR1c05vZGVEcmFnRW5kO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvd1N0YXR1c1NlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzID0gc2lnbmFsPEZsb3dTdGF0dXM+KHsgc3RhdGU6ICdpZGxlJywgcGF5bG9hZDogbnVsbCB9KTtcblxuICBwdWJsaWMgc2V0SWRsZVN0YXR1cygpIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ2lkbGUnLCBwYXlsb2FkOiBudWxsIH0pO1xuICB9XG5cbiAgcHVibGljIHNldENvbm5lY3Rpb25TdGFydFN0YXR1cyhzb3VyY2U6IE5vZGVNb2RlbCwgc291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCkge1xuICAgIHRoaXMuc3RhdHVzLnNldCh7IHN0YXRlOiAnY29ubmVjdGlvbi1zdGFydCcsIHBheWxvYWQ6IHsgc291cmNlLCBzb3VyY2VIYW5kbGUgfSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSZWNvbm5lY3Rpb25TdGFydFN0YXR1cyhzb3VyY2U6IE5vZGVNb2RlbCwgc291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCwgb2xkRWRnZTogRWRnZU1vZGVsKSB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHsgc3RhdGU6ICdyZWNvbm5lY3Rpb24tc3RhcnQnLCBwYXlsb2FkOiB7IHNvdXJjZSwgc291cmNlSGFuZGxlLCBvbGRFZGdlIH0gfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29ubmVjdGlvblZhbGlkYXRpb25TdGF0dXMoXG4gICAgdmFsaWQ6IGJvb2xlYW4sXG4gICAgc291cmNlOiBOb2RlTW9kZWwsXG4gICAgdGFyZ2V0OiBOb2RlTW9kZWwsXG4gICAgc291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCxcbiAgICB0YXJnZXRIYW5kbGU6IEhhbmRsZU1vZGVsLFxuICApIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ2Nvbm5lY3Rpb24tdmFsaWRhdGlvbicsIHBheWxvYWQ6IHsgc291cmNlLCB0YXJnZXQsIHNvdXJjZUhhbmRsZSwgdGFyZ2V0SGFuZGxlLCB2YWxpZCB9IH0pO1xuICB9XG5cbiAgcHVibGljIHNldFJlY29ubmVjdGlvblZhbGlkYXRpb25TdGF0dXMoXG4gICAgdmFsaWQ6IGJvb2xlYW4sXG4gICAgc291cmNlOiBOb2RlTW9kZWwsXG4gICAgdGFyZ2V0OiBOb2RlTW9kZWwsXG4gICAgc291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCxcbiAgICB0YXJnZXRIYW5kbGU6IEhhbmRsZU1vZGVsLFxuICAgIG9sZEVkZ2U6IEVkZ2VNb2RlbCxcbiAgKSB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHtcbiAgICAgIHN0YXRlOiAncmVjb25uZWN0aW9uLXZhbGlkYXRpb24nLFxuICAgICAgcGF5bG9hZDogeyBzb3VyY2UsIHRhcmdldCwgc291cmNlSGFuZGxlLCB0YXJnZXRIYW5kbGUsIHZhbGlkLCBvbGRFZGdlIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29ubmVjdGlvbkVuZFN0YXR1cyhcbiAgICBzb3VyY2U6IE5vZGVNb2RlbCxcbiAgICB0YXJnZXQ6IE5vZGVNb2RlbCxcbiAgICBzb3VyY2VIYW5kbGU6IEhhbmRsZU1vZGVsLFxuICAgIHRhcmdldEhhbmRsZTogSGFuZGxlTW9kZWwsXG4gICkge1xuICAgIHRoaXMuc3RhdHVzLnNldCh7IHN0YXRlOiAnY29ubmVjdGlvbi1lbmQnLCBwYXlsb2FkOiB7IHNvdXJjZSwgdGFyZ2V0LCBzb3VyY2VIYW5kbGUsIHRhcmdldEhhbmRsZSB9IH0pO1xuICB9XG5cbiAgcHVibGljIHNldFJlY29ubmVjdGlvbkVuZFN0YXR1cyhcbiAgICBzb3VyY2U6IE5vZGVNb2RlbCxcbiAgICB0YXJnZXQ6IE5vZGVNb2RlbCxcbiAgICBzb3VyY2VIYW5kbGU6IEhhbmRsZU1vZGVsLFxuICAgIHRhcmdldEhhbmRsZTogSGFuZGxlTW9kZWwsXG4gICAgb2xkRWRnZTogRWRnZU1vZGVsLFxuICApIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ3JlY29ubmVjdGlvbi1lbmQnLCBwYXlsb2FkOiB7IHNvdXJjZSwgdGFyZ2V0LCBzb3VyY2VIYW5kbGUsIHRhcmdldEhhbmRsZSwgb2xkRWRnZSB9IH0pO1xuICB9XG5cbiAgcHVibGljIHNldE5vZGVEcmFnU3RhcnRTdGF0dXMobm9kZTogTm9kZU1vZGVsKSB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHsgc3RhdGU6ICdub2RlLWRyYWctc3RhcnQnLCBwYXlsb2FkOiB7IG5vZGUgfSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXROb2RlRHJhZ0VuZFN0YXR1cyhub2RlOiBOb2RlTW9kZWwpIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ25vZGUtZHJhZy1lbmQnLCBwYXlsb2FkOiB7IG5vZGUgfSB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlRHJhZ1N0YXJ0U3RhdHVzKHBhcmFtczogRmxvd1N0YXR1cyk6IHBhcmFtcyBpcyBGbG93U3RhdHVzTm9kZURyYWdTdGFydCB7XG4gIHJldHVybiBwYXJhbXMuc3RhdGUgPT09ICdub2RlLWRyYWctc3RhcnQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlRHJhZ0VuZFN0YXR1cyhwYXJhbXM6IEZsb3dTdGF0dXMpOiBwYXJhbXMgaXMgRmxvd1N0YXR1c05vZGVEcmFnRW5kIHtcbiAgcmV0dXJuIHBhcmFtcy5zdGF0ZSA9PT0gJ25vZGUtZHJhZy1lbmQnO1xufVxuIl19
|