@foblex/flow 18.2.1 → 18.4.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/AI.md +69 -0
- package/README.md +40 -3
- package/STYLING.md +35 -0
- package/domain/f-connection/create-connection-markers/create-connection-markers.d.ts +3 -2
- package/domain/f-connection/index.d.ts +1 -0
- package/domain/f-connection/providers.d.ts +2 -1
- package/domain/f-connection/redraw-connections/redraw-connections.d.ts +3 -0
- package/domain/f-connection/resolve-connection-endpoint-rotation-context/index.d.ts +2 -0
- package/domain/f-connection/resolve-connection-endpoint-rotation-context/resolve-connection-endpoint-rotation-context-request.d.ts +8 -0
- package/domain/f-connection/resolve-connection-endpoint-rotation-context/resolve-connection-endpoint-rotation-context.d.ts +10 -0
- package/domain/f-draggable/on-pointer-move/on-pointer-move-request.d.ts +1 -1
- package/domain/f-draggable/on-pointer-move/on-pointer-move.d.ts +1 -0
- package/domain/get-normalized-connector-rect/get-normalized-connector-rect.d.ts +8 -0
- package/domain/providers.d.ts +1 -1
- package/esm2022/domain/f-connection/create-connection-markers/create-connection-markers.mjs +33 -6
- package/esm2022/domain/f-connection/index.mjs +2 -1
- package/esm2022/domain/f-connection/providers.mjs +3 -1
- package/esm2022/domain/f-connection/redraw-connections/redraw-connections.mjs +51 -4
- package/esm2022/domain/f-connection/resolve-connection-endpoint-rotation-context/index.mjs +3 -0
- package/esm2022/domain/f-connection/resolve-connection-endpoint-rotation-context/resolve-connection-endpoint-rotation-context-request.mjs +8 -0
- package/esm2022/domain/f-connection/resolve-connection-endpoint-rotation-context/resolve-connection-endpoint-rotation-context.mjs +35 -0
- package/esm2022/domain/f-draggable/on-pointer-move/on-pointer-move-request.mjs +1 -1
- package/esm2022/domain/f-draggable/on-pointer-move/on-pointer-move.mjs +6 -2
- package/esm2022/domain/get-normalized-connector-rect/get-normalized-connector-rect.mjs +33 -3
- package/esm2022/f-auto-pan/f-auto-pan-base.mjs +11 -0
- package/esm2022/f-auto-pan/f-auto-pan.mjs +38 -0
- package/esm2022/f-auto-pan/index.mjs +4 -0
- package/esm2022/f-auto-pan/providers.mjs +3 -0
- package/esm2022/f-canvas/f-canvas.component.mjs +2 -2
- package/esm2022/f-connection/f-connection/f-connection.component.mjs +6 -6
- package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +6 -7
- package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +6 -7
- package/esm2022/f-connection/providers.mjs +8 -4
- package/esm2022/f-connection-v2/components/connection-content/f-connection-content.mjs +18 -4
- package/esm2022/f-connection-v2/components/connection-gradient/components/index.mjs +2 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/f-connection-gradient-renderer.mjs +17 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/index.mjs +3 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/models/f-connection-gradient-renderer-base.mjs +81 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/models/index.mjs +2 -0
- package/esm2022/f-connection-v2/components/connection-gradient/f-connection-gradient.mjs +14 -46
- package/esm2022/f-connection-v2/components/connection-gradient/index.mjs +2 -1
- package/esm2022/f-connection-v2/components/connection-gradient/models/f-connection-gradient-base.mjs +2 -3
- package/esm2022/f-connection-v2/components/connection-path/f-connection-path.mjs +11 -7
- package/esm2022/f-connection-v2/components/f-connection-base.mjs +13 -9
- package/esm2022/f-connection-v2/models/f-connection-components-parent.mjs +1 -1
- package/esm2022/f-connection-v2/utils/connection-behaviour/connection-behaviour-builder-request.mjs +6 -2
- package/esm2022/f-connection-v2/utils/connection-behaviour/connection-behaviour-builder.mjs +3 -1
- package/esm2022/f-connection-v2/utils/connection-behaviour/models/i-calculate-behavior-request.mjs +1 -1
- package/esm2022/f-connection-v2/utils/connection-behaviour/utils/floating-behavior.mjs +8 -8
- package/esm2022/f-connection-v2/utils/connection-behaviour/utils/get-rotated-rounded-rect-intersection.mjs +35 -0
- package/esm2022/f-connection-v2/utils/create-gradient-dom-identifier.mjs +3 -3
- package/esm2022/f-connection-v2/utils/create-gradient-dom-url.mjs +3 -3
- package/esm2022/f-connection-worker/features/calculate-connection-worker-payload-item/calculate-connection-worker-payload-item.mjs +13 -1
- package/esm2022/f-connection-worker/features/ensure-connection-worker/ensure-connection-worker.mjs +11 -4
- package/esm2022/f-connection-worker/features/is-connection-worker-enabled/is-connection-worker-enabled.mjs +3 -2
- package/esm2022/f-connection-worker/model/f-connection-worker.mjs +5 -1
- package/esm2022/f-connection-worker/model/i-f-connection-worker-rect.mjs +1 -1
- package/esm2022/f-connection-worker/model/i-f-connection-worker-request-item.mjs +1 -1
- package/esm2022/f-connection-worker/worker/connection-worker-runtime.mjs +247 -0
- package/esm2022/f-draggable/auto-pan/auto-pan.utils.mjs +58 -0
- package/esm2022/f-draggable/auto-pan/index.mjs +7 -0
- package/esm2022/f-draggable/auto-pan/providers.mjs +5 -0
- package/esm2022/f-draggable/auto-pan/run-auto-pan-frame/index.mjs +3 -0
- package/esm2022/f-draggable/auto-pan/run-auto-pan-frame/run-auto-pan-frame-request.mjs +4 -0
- package/esm2022/f-draggable/auto-pan/run-auto-pan-frame/run-auto-pan-frame.mjs +97 -0
- package/esm2022/f-draggable/auto-pan/stop-auto-pan/index.mjs +3 -0
- package/esm2022/f-draggable/auto-pan/stop-auto-pan/stop-auto-pan-request.mjs +4 -0
- package/esm2022/f-draggable/auto-pan/stop-auto-pan/stop-auto-pan.mjs +32 -0
- package/esm2022/f-draggable/auto-pan/stored-pointer-event.mjs +25 -0
- package/esm2022/f-draggable/auto-pan/sync-auto-pan/index.mjs +3 -0
- package/esm2022/f-draggable/auto-pan/sync-auto-pan/sync-auto-pan-request.mjs +4 -0
- package/esm2022/f-draggable/auto-pan/sync-auto-pan/sync-auto-pan.mjs +75 -0
- package/esm2022/f-draggable/connection/create-connection/create-connection-handler/create-connection-handler.mjs +7 -4
- package/esm2022/f-draggable/connection/reassign-connection/reassign-connection-handler/reassign-connection-source-handler.mjs +7 -4
- package/esm2022/f-draggable/connection/reassign-connection/reassign-connection-handler/reassign-connection-target-handler.mjs +7 -4
- package/esm2022/f-draggable/drag-canvas/drag-canvas-handler/drag-canvas-handler.mjs +6 -3
- package/esm2022/f-draggable/drag-node/drag-node-dependent-connection-handlers/drag-node-connection-handler-base.mjs +6 -3
- package/esm2022/f-draggable/f-draggable-data-context.mjs +14 -1
- package/esm2022/f-draggable/f-draggable.directive.mjs +4 -1
- package/esm2022/f-draggable/index.mjs +2 -1
- package/esm2022/f-draggable/providers.mjs +3 -1
- package/esm2022/f-draggable/resize-node/resize-node-handler/resize-node-dependent-connection-handlers/resize-node-connection-handler-base.mjs +6 -3
- package/esm2022/f-flow/f-flow.component.mjs +2 -2
- package/esm2022/f-flow.module.mjs +31 -26
- package/esm2022/f-storage/f-components-store.mjs +3 -1
- package/esm2022/f-zoom/f-zoom.directive.mjs +9 -11
- package/esm2022/f-zoom/wheel-zoom.utils.mjs +34 -0
- package/esm2022/public-api.mjs +2 -1
- package/f-auto-pan/f-auto-pan-base.d.ts +11 -0
- package/f-auto-pan/f-auto-pan.d.ts +13 -0
- package/f-auto-pan/index.d.ts +3 -0
- package/f-auto-pan/providers.d.ts +2 -0
- package/f-connection/f-connection/f-connection.component.d.ts +1 -1
- package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +1 -1
- package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +1 -1
- package/f-connection/providers.d.ts +3 -3
- package/f-connection-v2/components/connection-gradient/components/index.d.ts +1 -0
- package/f-connection-v2/components/connection-gradient/components/render/f-connection-gradient-renderer.d.ts +8 -0
- package/f-connection-v2/components/connection-gradient/components/render/index.d.ts +2 -0
- package/f-connection-v2/components/connection-gradient/components/render/models/f-connection-gradient-renderer-base.d.ts +25 -0
- package/f-connection-v2/components/connection-gradient/components/render/models/index.d.ts +1 -0
- package/f-connection-v2/components/connection-gradient/f-connection-gradient.d.ts +3 -11
- package/f-connection-v2/components/connection-gradient/index.d.ts +1 -0
- package/f-connection-v2/components/connection-gradient/models/f-connection-gradient-base.d.ts +3 -5
- package/f-connection-v2/components/connection-path/f-connection-path.d.ts +3 -2
- package/f-connection-v2/components/f-connection-base.d.ts +7 -4
- package/f-connection-v2/models/f-connection-components-parent.d.ts +0 -2
- package/f-connection-v2/utils/connection-behaviour/connection-behaviour-builder-request.d.ts +4 -1
- package/f-connection-v2/utils/connection-behaviour/models/i-calculate-behavior-request.d.ts +7 -1
- package/f-connection-v2/utils/connection-behaviour/utils/floating-behavior.d.ts +1 -1
- package/f-connection-v2/utils/connection-behaviour/utils/get-rotated-rounded-rect-intersection.d.ts +3 -0
- package/f-connection-v2/utils/create-gradient-dom-identifier.d.ts +1 -1
- package/f-connection-v2/utils/create-gradient-dom-url.d.ts +1 -1
- package/f-connection-worker/features/calculate-connection-worker-payload-item/calculate-connection-worker-payload-item.d.ts +1 -0
- package/f-connection-worker/model/f-connection-worker.d.ts +1 -0
- package/f-connection-worker/model/i-f-connection-worker-rect.d.ts +4 -0
- package/f-connection-worker/model/i-f-connection-worker-request-item.d.ts +2 -0
- package/f-connection-worker/worker/connection-worker-runtime.d.ts +11 -0
- package/f-draggable/auto-pan/auto-pan.utils.d.ts +6 -0
- package/f-draggable/auto-pan/index.d.ts +6 -0
- package/f-draggable/auto-pan/providers.d.ts +4 -0
- package/f-draggable/auto-pan/run-auto-pan-frame/index.d.ts +2 -0
- package/f-draggable/auto-pan/run-auto-pan-frame/run-auto-pan-frame-request.d.ts +3 -0
- package/f-draggable/auto-pan/run-auto-pan-frame/run-auto-pan-frame.d.ts +21 -0
- package/f-draggable/auto-pan/stop-auto-pan/index.d.ts +2 -0
- package/f-draggable/auto-pan/stop-auto-pan/stop-auto-pan-request.d.ts +3 -0
- package/f-draggable/auto-pan/stop-auto-pan/stop-auto-pan.d.ts +10 -0
- package/f-draggable/auto-pan/stored-pointer-event.d.ts +12 -0
- package/f-draggable/auto-pan/sync-auto-pan/index.d.ts +2 -0
- package/f-draggable/auto-pan/sync-auto-pan/sync-auto-pan-request.d.ts +3 -0
- package/f-draggable/auto-pan/sync-auto-pan/sync-auto-pan.d.ts +19 -0
- package/f-draggable/connection/create-connection/create-connection-handler/create-connection-handler.d.ts +1 -0
- package/f-draggable/connection/reassign-connection/reassign-connection-handler/reassign-connection-source-handler.d.ts +1 -0
- package/f-draggable/connection/reassign-connection/reassign-connection-handler/reassign-connection-target-handler.d.ts +1 -0
- package/f-draggable/drag-node/drag-node-dependent-connection-handlers/drag-node-connection-handler-base.d.ts +1 -0
- package/f-draggable/f-draggable-data-context.d.ts +7 -1
- package/f-draggable/index.d.ts +1 -0
- package/f-draggable/providers.d.ts +1 -1
- package/f-draggable/resize-node/resize-node-handler/resize-node-dependent-connection-handlers/resize-node-connection-handler-base.d.ts +1 -0
- package/f-flow.module.d.ts +29 -27
- package/f-storage/f-components-store.d.ts +2 -0
- package/f-zoom/f-zoom.directive.d.ts +0 -1
- package/f-zoom/wheel-zoom.utils.d.ts +3 -0
- package/fesm2022/foblex-flow.mjs +8048 -7134
- package/fesm2022/foblex-flow.mjs.map +1 -1
- package/package.json +7 -7
- package/public-api.d.ts +1 -0
- package/schematics/ng-add/index.js +63 -2
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/shared/foblex-dependencies.js +1 -1
- package/styles/_index.scss +31 -0
- package/styles/default.scss +4 -0
- package/styles/domains/_connection.scss +175 -0
- package/styles/domains/_connector.scss +150 -0
- package/styles/domains/_external-item.scss +44 -0
- package/styles/domains/_flow-canvas.scss +41 -0
- package/styles/domains/_node-group.scss +230 -0
- package/styles/domains/_plugins.scss +100 -0
- package/styles/tokens/_ff-aliases.scss +117 -0
- package/styles/tokens/_primitive.scss +86 -0
- package/styles/tokens/_semantic.scss +131 -0
|
@@ -7,6 +7,7 @@ import { CreateConnectionMarkersRequest } from '../create-connection-markers';
|
|
|
7
7
|
import { ConnectionBehaviourBuilder, ConnectionBehaviourBuilderRequest, } from '../../../f-connection-v2';
|
|
8
8
|
import { BrowserService } from '@foblex/platform';
|
|
9
9
|
import { CalculateConnectionsUsingConnectionWorkerRequest, ResolveConnectionWorkerConnectorsRequest, ResolveConnectionWorkerContextRequest, ShouldUseConnectionWorkerRequest, } from '../../../f-connection-worker';
|
|
10
|
+
import { ResolveConnectionEndpointRotationContextRequest, } from '../resolve-connection-endpoint-rotation-context';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
const CONNECTIONS_PER_SLICE_LIMIT = 500;
|
|
12
13
|
const SLICE_BUDGET_MS = 6;
|
|
@@ -22,6 +23,7 @@ let RedrawConnections = class RedrawConnections {
|
|
|
22
23
|
_browser = inject(BrowserService);
|
|
23
24
|
_renderTicket = 0;
|
|
24
25
|
_connectedInPreviousRender = new Set();
|
|
26
|
+
_connectionRenderCache = new WeakMap();
|
|
25
27
|
handle(_request) {
|
|
26
28
|
const renderTicket = ++this._renderTicket;
|
|
27
29
|
const nodesRevision = this._store.nodesRevision;
|
|
@@ -64,13 +66,19 @@ let RedrawConnections = class RedrawConnections {
|
|
|
64
66
|
target.setConnected(source);
|
|
65
67
|
this._connectedInPreviousRender.add(source);
|
|
66
68
|
this._connectedInPreviousRender.add(target);
|
|
67
|
-
this._createMarkers(connection);
|
|
69
|
+
const markersChanged = this._createMarkers(connection);
|
|
70
|
+
if (!markersChanged && !this._shouldRedrawConnection(connection, line)) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
68
73
|
connection.setLine(line);
|
|
69
74
|
connection.initialize();
|
|
70
75
|
connection.isSelected() ? connection.markAsSelected() : null;
|
|
71
76
|
}
|
|
72
77
|
_calculateConnectionLine(connection, context) {
|
|
73
|
-
return this._connectionBehaviour.handle(new ConnectionBehaviourBuilderRequest(context.sourceRect, context.targetRect, connection, context.source.fConnectableSide, context.target.fConnectableSide));
|
|
78
|
+
return this._connectionBehaviour.handle(new ConnectionBehaviourBuilderRequest(context.sourceRect, context.targetRect, connection, context.source.fConnectableSide, context.target.fConnectableSide, this._resolveRotationContext(context.source), this._resolveRotationContext(context.target)));
|
|
79
|
+
}
|
|
80
|
+
_resolveRotationContext(connector) {
|
|
81
|
+
return this._mediator.execute(new ResolveConnectionEndpointRotationContextRequest(connector));
|
|
74
82
|
}
|
|
75
83
|
_resolveConnectionConnectors(connection) {
|
|
76
84
|
return this._mediator.execute(new ResolveConnectionWorkerConnectorsRequest(connection));
|
|
@@ -79,7 +87,17 @@ let RedrawConnections = class RedrawConnections {
|
|
|
79
87
|
return this._mediator.execute(new ResolveConnectionWorkerContextRequest(connection, cache));
|
|
80
88
|
}
|
|
81
89
|
_createMarkers(connection) {
|
|
82
|
-
this._mediator.execute(new CreateConnectionMarkersRequest(connection));
|
|
90
|
+
return this._mediator.execute(new CreateConnectionMarkersRequest(connection));
|
|
91
|
+
}
|
|
92
|
+
_shouldRedrawConnection(connection, line) {
|
|
93
|
+
const pathElement = connection.fPath().hostElement;
|
|
94
|
+
const signature = createConnectionRenderSignature(connection, line);
|
|
95
|
+
const cached = this._connectionRenderCache.get(connection);
|
|
96
|
+
if (cached?.signature === signature && cached.pathElement === pathElement) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
this._connectionRenderCache.set(connection, { signature, pathElement });
|
|
100
|
+
return true;
|
|
83
101
|
}
|
|
84
102
|
_setupConnectionsUsingWorker(connections, connectorRectCache, renderTicket, nodesRevision) {
|
|
85
103
|
this._mediator
|
|
@@ -219,4 +237,33 @@ export { RedrawConnections };
|
|
|
219
237
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedrawConnections, decorators: [{
|
|
220
238
|
type: Injectable
|
|
221
239
|
}] });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcmF3LWNvbm5lY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZi1jb25uZWN0aW9uL3JlZHJhdy1jb25uZWN0aW9ucy9yZWRyYXctY29ubmVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLGlDQUFpQyxHQUdsQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsZ0RBQWdELEVBSWhELHdDQUF3QyxFQUN4QyxxQ0FBcUMsRUFDckMsZ0NBQWdDLEdBQ2pDLE1BQU0sOEJBQThCLENBQUM7O0FBRXRDLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUUxQjs7OztHQUlHO0FBR0ksSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBaUI7SUFDWCxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUMxRCxRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FB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b0IsRUFBRSxhQUFxQjtRQUN6RSxPQUFPLFlBQVksS0FBSyxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztJQUM1RixDQUFDO0lBRU8sc0JBQXNCLENBQUMsUUFBb0I7UUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3JELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLFFBQVEsRUFBRSxDQUFDO1lBRVgsT0FBTztRQUNULENBQUM7UUFFRCxTQUFTLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLElBQUk7UUFDVixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO1FBRXZFLE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsVUFBa0I7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxVQUFVLEdBQUcsZUFBZSxDQUFDO0lBQ3BELENBQUM7d0dBcldVLGlCQUFpQjs0R0FBakIsaUJBQWlCOztBQUFqQixpQkFBaUI7SUFEN0Isa0JBQWtCLENBQUMsd0JBQXdCLENBQUM7R0FDaEMsaUJBQWlCLENBc1c3Qjs7NEZBdFdZLGlCQUFpQjtrQkFGN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMaW5lLCBJUm91bmRlZFJlY3QgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0IH0gZnJvbSAnLi9yZWRyYXctY29ubmVjdGlvbnMtcmVxdWVzdCc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IEZDb25uZWN0b3JCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0b3JzJztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBDcmVhdGVDb25uZWN0aW9uTWFya2Vyc1JlcXVlc3QgfSBmcm9tICcuLi9jcmVhdGUtY29ubmVjdGlvbi1tYXJrZXJzJztcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25CZWhhdmlvdXJCdWlsZGVyLFxuICBDb25uZWN0aW9uQmVoYXZpb3VyQnVpbGRlclJlcXVlc3QsXG4gIEVGQ29ubmVjdGFibGVTaWRlLFxuICBGQ29ubmVjdGlvbkJhc2UsXG59IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdGlvbi12Mic7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJ0Bmb2JsZXgvcGxhdGZvcm0nO1xuaW1wb3J0IHtcbiAgQ2FsY3VsYXRlQ29ubmVjdGlvbnNVc2luZ0Nvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0LFxuICBJRkNvbm5lY3Rpb25Xb3JrZXJDb25uZWN0b3JzLFxuICBJRkNvbm5lY3Rpb25Xb3JrZXJDb250ZXh0LFxuICBJRkNvbm5lY3Rpb25Xb3JrZXJSZXN1bHRJdGVtLFxuICBSZXNvbHZlQ29ubmVjdGlvbldvcmtlckNvbm5lY3RvcnNSZXF1ZXN0LFxuICBSZXNvbHZlQ29ubmVjdGlvbldvcmtlckNvbnRleHRSZXF1ZXN0LFxuICBTaG91bGRVc2VDb25uZWN0aW9uV29ya2VyUmVxdWVzdCxcbn0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0aW9uLXdvcmtlcic7XG5cbmNvbnN0IENPTk5FQ1RJT05TX1BFUl9TTElDRV9MSU1JVCA9IDUwMDtcbmNvbnN0IFNMSUNFX0JVREdFVF9NUyA9IDY7XG5cbi8qKlxuICogRXhlY3V0aW9uIHRoYXQgcmVkcmF3cyBjb25uZWN0aW9ucyBpbiB0aGUgRkNvbXBvbmVudHNTdG9yZS5cbiAqIEl0IHJlc2V0cyBjb25uZWN0b3JzLCBzZXRzIG1hcmtlcnMgZm9yIHRlbXBvcmFyeSBhbmQgc25hcCBjb25uZWN0aW9ucyxcbiAqIGFuZCBzZXRzIHVwIGNvbm5lY3Rpb25zIGJhc2VkIG9uIHRoZSBzdG9yZWQgb3V0cHV0cyBhbmQgaW5wdXRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKFJlZHJhd0Nvbm5lY3Rpb25zUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBSZWRyYXdDb25uZWN0aW9ucyBpbXBsZW1lbnRzIElFeGVjdXRpb248UmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0LCB2b2lkPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb25uZWN0aW9uQmVoYXZpb3VyID0gaW5qZWN0KENvbm5lY3Rpb25CZWhhdmlvdXJCdWlsZGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJvd3NlciA9IGluamVjdChCcm93c2VyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfcmVuZGVyVGlja2V0ID0gMDtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29ubmVjdGVkSW5QcmV2aW91c1JlbmRlciA9IG5ldyBTZXQ8RkNvbm5lY3RvckJhc2U+KCk7XG5cbiAgcHVibGljIGhhbmRsZShfcmVxdWVzdDogUmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0KTogdm9pZCB7XG4gICAgY29uc3QgcmVuZGVyVGlja2V0ID0gKyt0aGlzLl9yZW5kZXJUaWNrZXQ7XG4gICAgY29uc3Qgbm9kZXNSZXZpc2lvbiA9IHRoaXMuX3N0b3JlLm5vZGVzUmV2aXNpb247XG4gICAgdGhpcy5fcmVzZXRDb25uZWN0ZWRDb25uZWN0b3JzKCk7XG5cbiAgICBjb25zdCBpbnN0YW5jZUZvckNyZWF0ZSA9IHRoaXMuX3N0b3JlLmNvbm5lY3Rpb25zLmdldEZvckNyZWF0ZSgpO1xuICAgIGlmIChpbnN0YW5jZUZvckNyZWF0ZSkge1xuICAgICAgdGhpcy5fY3JlYXRlTWFya2VycyhpbnN0YW5jZUZvckNyZWF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2VGb3JTbmFwID0gdGhpcy5fc3RvcmUuY29ubmVjdGlvbnMuZ2V0Rm9yU25hcCgpO1xuICAgIGlmIChpbnN0YW5jZUZvclNuYXApIHtcbiAgICAgIHRoaXMuX2NyZWF0ZU1hcmtlcnMoaW5zdGFuY2VGb3JTbmFwKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25uZWN0aW9ucyA9IFsuLi50aGlzLl9zdG9yZS5jb25uZWN0aW9ucy5nZXRBbGwoKV07XG4gICAgY29uc3QgY29ubmVjdG9yUmVjdENhY2hlID0gbmV3IE1hcDxzdHJpbmcsIElSb3VuZGVkUmVjdD4oKTtcblxuICAgIGlmICh0aGlzLl9zaG91bGRVc2VXb3JrZXIoY29ubmVjdGlvbnMubGVuZ3RoKSkge1xuICAgICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uc1VzaW5nV29ya2VyKFxuICAgICAgICBjb25uZWN0aW9ucyxcbiAgICAgICAgY29ubmVjdG9yUmVjdENhY2hlLFxuICAgICAgICByZW5kZXJUaWNrZXQsXG4gICAgICAgIG5vZGVzUmV2aXNpb24sXG4gICAgICApO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNDaHVua2VkKGNvbm5lY3Rpb25zLCBjb25uZWN0b3JSZWN0Q2FjaGUsIDAsIHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbik7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldENvbm5lY3RlZENvbm5lY3RvcnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0ZWRJblByZXZpb3VzUmVuZGVyLnNpemUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbm5lY3RvciBvZiB0aGlzLl9jb25uZWN0ZWRJblByZXZpb3VzUmVuZGVyKSB7XG4gICAgICBjb25uZWN0b3IucmVzZXRDb25uZWN0ZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25uZWN0ZWRJblByZXZpb3VzUmVuZGVyLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENvbm5lY3Rpb24oY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlLCBjYWNoZTogTWFwPHN0cmluZywgSVJvdW5kZWRSZWN0Pik6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9yZXNvbHZlQ29ubmVjdGlvbkNvbnRleHQoY29ubmVjdGlvbiwgY2FjaGUpO1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmUgPSB0aGlzLl9jYWxjdWxhdGVDb25uZWN0aW9uTGluZShjb25uZWN0aW9uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbldpdGhMaW5lKGNvbm5lY3Rpb24sIGNvbnRleHQuc291cmNlLCBjb250ZXh0LnRhcmdldCwgbGluZSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENvbm5lY3Rpb25XaXRoTGluZShcbiAgICBjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsXG4gICAgc291cmNlOiBGQ29ubmVjdG9yQmFzZSxcbiAgICB0YXJnZXQ6IEZDb25uZWN0b3JCYXNlLFxuICAgIGxpbmU6IElMaW5lLFxuICApOiB2b2lkIHtcbiAgICBzb3VyY2Uuc2V0Q29ubmVjdGVkKHRhcmdldCk7XG4gICAgdGFyZ2V0LnNldENvbm5lY3RlZChzb3VyY2UpO1xuICAgIHRoaXMuX2Nvbm5lY3RlZEluUHJldmlvdXNSZW5kZXIuYWRkKHNvdXJjZSk7XG4gICAgdGhpcy5fY29ubmVjdGVkSW5QcmV2aW91c1JlbmRlci5hZGQodGFyZ2V0KTtcblxuICAgIHRoaXMuX2NyZWF0ZU1hcmtlcnMoY29ubmVjdGlvbik7XG4gICAgY29ubmVjdGlvbi5zZXRMaW5lKGxpbmUpO1xuICAgIGNvbm5lY3Rpb24uaW5pdGlhbGl6ZSgpO1xuICAgIGNvbm5lY3Rpb24uaXNTZWxlY3RlZCgpID8gY29ubmVjdGlvbi5tYXJrQXNTZWxlY3RlZCgpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZUNvbm5lY3Rpb25MaW5lKFxuICAgIGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSxcbiAgICBjb250ZXh0OiBJRkNvbm5lY3Rpb25Xb3JrZXJDb250ZXh0LFxuICApOiBJTGluZSB7XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25CZWhhdmlvdXIuaGFuZGxlKFxuICAgICAgbmV3IENvbm5lY3Rpb25CZWhhdmlvdXJCdWlsZGVyUmVxdWVzdChcbiAgICAgICAgY29udGV4dC5zb3VyY2VSZWN0LFxuICAgICAgICBjb250ZXh0LnRhcmdldFJlY3QsXG4gICAgICAgIGNvbm5lY3Rpb24sXG4gICAgICAgIGNvbnRleHQuc291cmNlLmZDb25uZWN0YWJsZVNpZGUsXG4gICAgICAgIGNvbnRleHQudGFyZ2V0LmZDb25uZWN0YWJsZVNpZGUsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNvbHZlQ29ubmVjdGlvbkNvbm5lY3RvcnMoXG4gICAgY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlLFxuICApOiBJRkNvbm5lY3Rpb25Xb3JrZXJDb25uZWN0b3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGU8SUZDb25uZWN0aW9uV29ya2VyQ29ubmVjdG9ycyB8IG51bGw+KFxuICAgICAgbmV3IFJlc29sdmVDb25uZWN0aW9uV29ya2VyQ29ubmVjdG9yc1JlcXVlc3QoY29ubmVjdGlvbiksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc29sdmVDb25uZWN0aW9uQ29udGV4dChcbiAgICBjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsXG4gICAgY2FjaGU6IE1hcDxzdHJpbmcsIElSb3VuZGVkUmVjdD4sXG4gICk6IElGQ29ubmVjdGlvbldvcmtlckNvbnRleHQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTxJRkNvbm5lY3Rpb25Xb3JrZXJDb250ZXh0IHwgbnVsbD4oXG4gICAgICBuZXcgUmVzb2x2ZUNvbm5lY3Rpb25Xb3JrZXJDb250ZXh0UmVxdWVzdChjb25uZWN0aW9uLCBjYWNoZSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZU1hcmtlcnMoY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgQ3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0KGNvbm5lY3Rpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ29ubmVjdGlvbnNVc2luZ1dvcmtlcihcbiAgICBjb25uZWN0aW9uczogcmVhZG9ubHkgRkNvbm5lY3Rpb25CYXNlW10sXG4gICAgY29ubmVjdG9yUmVjdENhY2hlOiBNYXA8c3RyaW5nLCBJUm91bmRlZFJlY3Q+LFxuICAgIHJlbmRlclRpY2tldDogbnVtYmVyLFxuICAgIG5vZGVzUmV2aXNpb246IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3JcbiAgICAgIC5leGVjdXRlPFByb21pc2U8cmVhZG9ubHkgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbVtdIHwgbnVsbD4+KFxuICAgICAgICBuZXcgQ2FsY3VsYXRlQ29ubmVjdGlvbnNVc2luZ0Nvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0KGNvbm5lY3Rpb25zLCBjb25uZWN0b3JSZWN0Q2FjaGUpLFxuICAgICAgKVxuICAgICAgLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlc3VsdHMpIHtcbiAgICAgICAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb25zQ2h1bmtlZChcbiAgICAgICAgICAgIGNvbm5lY3Rpb25zLFxuICAgICAgICAgICAgY29ubmVjdG9yUmVjdENhY2hlLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgICAgIG5vZGVzUmV2aXNpb24sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdvcmtlclJlc3VsdHMgPSB0aGlzLl9hbGlnbldvcmtlclJlc3VsdHNUb0Nvbm5lY3Rpb25JbmRleGVzKFxuICAgICAgICAgIHJlc3VsdHMsXG4gICAgICAgICAgY29ubmVjdGlvbnMubGVuZ3RoLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2FwcGx5V29ya2VyUmVzdWx0c0NodW5rZWQoXG4gICAgICAgICAgY29ubmVjdGlvbnMsXG4gICAgICAgICAgd29ya2VyUmVzdWx0cyxcbiAgICAgICAgICBjb25uZWN0b3JSZWN0Q2FjaGUsXG4gICAgICAgICAgMCxcbiAgICAgICAgICByZW5kZXJUaWNrZXQsXG4gICAgICAgICAgbm9kZXNSZXZpc2lvbixcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNDaHVua2VkKFxuICAgICAgICAgIGNvbm5lY3Rpb25zLFxuICAgICAgICAgIGNvbm5lY3RvclJlY3RDYWNoZSxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgICBub2Rlc1JldmlzaW9uLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVdvcmtlclJlc3VsdHNDaHVua2VkKFxuICAgIGNvbm5lY3Rpb25zOiByZWFkb25seSBGQ29ubmVjdGlvbkJhc2VbXSxcbiAgICB3b3JrZXJSZXN1bHRzOiByZWFkb25seSAoSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSB8IHVuZGVmaW5lZClbXSxcbiAgICBjb25uZWN0b3JSZWN0Q2FjaGU6IE1hcDxzdHJpbmcsIElSb3VuZGVkUmVjdD4sXG4gICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgIHJlbmRlclRpY2tldDogbnVtYmVyLFxuICAgIG5vZGVzUmV2aXNpb246IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzbGljZVN0YXJ0ID0gdGhpcy5fbm93KCk7XG4gICAgbGV0IGVuZEluZGV4ID0gc3RhcnRJbmRleDtcbiAgICBsZXQgcHJvY2Vzc2VkID0gMDtcblxuICAgIHdoaWxlIChcbiAgICAgIGVuZEluZGV4IDwgY29ubmVjdGlvbnMubGVuZ3RoICYmXG4gICAgICBwcm9jZXNzZWQgPCBDT05ORUNUSU9OU19QRVJfU0xJQ0VfTElNSVQgJiZcbiAgICAgIHRoaXMuX2lzV2l0aGluU2xpY2VCdWRnZXQoc2xpY2VTdGFydClcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uc1tlbmRJbmRleF07XG4gICAgICBjb25zdCByZXN1bHQgPSB3b3JrZXJSZXN1bHRzW2VuZEluZGV4XTtcblxuICAgICAgaWYgKHRoaXMuX2lzV29ya2VyUmVzdWx0U3VwcG9ydGVkKHJlc3VsdCkpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdG9ycyA9IHRoaXMuX3Jlc29sdmVDb25uZWN0aW9uQ29ubmVjdG9ycyhjb25uZWN0aW9uKTtcbiAgICAgICAgaWYgKCFjb25uZWN0b3JzKSB7XG4gICAgICAgICAgZW5kSW5kZXgrKztcbiAgICAgICAgICBwcm9jZXNzZWQrKztcblxuICAgICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50UmVuZGVyQ29udGV4dChyZW5kZXJUaWNrZXQsIG5vZGVzUmV2aXNpb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25uZWN0aW9uLl9hcHBseVJlc29sdmVkU2lkZXNUb0Nvbm5lY3Rpb24oXG4gICAgICAgICAgICByZXN1bHQuc291cmNlU2lkZSBhcyBFRkNvbm5lY3RhYmxlU2lkZSxcbiAgICAgICAgICAgIHJlc3VsdC50YXJnZXRTaWRlIGFzIEVGQ29ubmVjdGFibGVTaWRlLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uV2l0aExpbmUoXG4gICAgICAgICAgICBjb25uZWN0aW9uLFxuICAgICAgICAgICAgY29ubmVjdG9ycy5zb3VyY2UsXG4gICAgICAgICAgICBjb25uZWN0b3JzLnRhcmdldCxcbiAgICAgICAgICAgIHJlc3VsdC5saW5lLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbihjb25uZWN0aW9uLCBjb25uZWN0b3JSZWN0Q2FjaGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb24oY29ubmVjdGlvbiwgY29ubmVjdG9yUmVjdENhY2hlKTtcbiAgICAgIH1cblxuICAgICAgZW5kSW5kZXgrKztcbiAgICAgIHByb2Nlc3NlZCsrO1xuXG4gICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVuZEluZGV4ID49IGNvbm5lY3Rpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PlxuICAgICAgdGhpcy5fYXBwbHlXb3JrZXJSZXN1bHRzQ2h1bmtlZChcbiAgICAgICAgY29ubmVjdGlvbnMsXG4gICAgICAgIHdvcmtlclJlc3VsdHMsXG4gICAgICAgIGNvbm5lY3RvclJlY3RDYWNoZSxcbiAgICAgICAgZW5kSW5kZXgsXG4gICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgbm9kZXNSZXZpc2lvbixcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FsaWduV29ya2VyUmVzdWx0c1RvQ29ubmVjdGlvbkluZGV4ZXMoXG4gICAgcmVzdWx0czogcmVhZG9ubHkgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbVtdLFxuICAgIGNvbm5lY3Rpb25Db3VudDogbnVtYmVyLFxuICApOiAoSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSB8IHVuZGVmaW5lZClbXSB7XG4gICAgY29uc3QgYWxpZ25lZDogKElGQ29ubmVjdGlvbldvcmtlclJlc3VsdEl0ZW0gfCB1bmRlZmluZWQpW10gPSBuZXcgQXJyYXkoY29ubmVjdGlvbkNvdW50KTtcblxuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gcmVzdWx0Lm9yaWdpbmFsSW5kZXg7XG4gICAgICBpZiAodHlwZW9mIGluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBjb25uZWN0aW9uQ291bnQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGFsaWduZWRbaW5kZXhdID0gcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiBhbGlnbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNXb3JrZXJSZXN1bHRTdXBwb3J0ZWQoXG4gICAgcmVzdWx0OiBJRkNvbm5lY3Rpb25Xb3JrZXJSZXN1bHRJdGVtIHwgdW5kZWZpbmVkLFxuICApOiByZXN1bHQgaXMgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSAmIHtcbiAgICBzb3VyY2VTaWRlOiBzdHJpbmc7XG4gICAgdGFyZ2V0U2lkZTogc3RyaW5nO1xuICAgIGxpbmU6IElMaW5lO1xuICB9IHtcbiAgICByZXR1cm4gISEocmVzdWx0Py5zdXBwb3J0ZWQgJiYgcmVzdWx0LnNvdXJjZVNpZGUgJiYgcmVzdWx0LnRhcmdldFNpZGUgJiYgcmVzdWx0LmxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBDb25uZWN0aW9uc0NodW5rZWQoXG4gICAgY29ubmVjdGlvbnM6IHJlYWRvbmx5IEZDb25uZWN0aW9uQmFzZVtdLFxuICAgIGNvbm5lY3RvclJlY3RDYWNoZTogTWFwPHN0cmluZywgSVJvdW5kZWRSZWN0PixcbiAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgcmVuZGVyVGlja2V0OiBudW1iZXIsXG4gICAgbm9kZXNSZXZpc2lvbjogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNsaWNlU3RhcnQgPSB0aGlzLl9ub3coKTtcbiAgICBsZXQgZW5kSW5kZXggPSBzdGFydEluZGV4O1xuICAgIGxldCBwcm9jZXNzZWQgPSAwO1xuXG4gICAgd2hpbGUgKFxuICAgICAgZW5kSW5kZXggPCBjb25uZWN0aW9ucy5sZW5ndGggJiZcbiAgICAgIHByb2Nlc3NlZCA8IENPTk5FQ1RJT05TX1BFUl9TTElDRV9MSU1JVCAmJlxuICAgICAgdGhpcy5faXNXaXRoaW5TbGljZUJ1ZGdldChzbGljZVN0YXJ0KVxuICAgICkge1xuICAgICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uKGNvbm5lY3Rpb25zW2VuZEluZGV4XSwgY29ubmVjdG9yUmVjdENhY2hlKTtcbiAgICAgIGVuZEluZGV4Kys7XG4gICAgICBwcm9jZXNzZWQrKztcblxuICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmRJbmRleCA+PSBjb25uZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT5cbiAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNDaHVua2VkKFxuICAgICAgICBjb25uZWN0aW9ucyxcbiAgICAgICAgY29ubmVjdG9yUmVjdENhY2hlLFxuICAgICAgICBlbmRJbmRleCxcbiAgICAgICAgcmVuZGVyVGlja2V0LFxuICAgICAgICBub2Rlc1JldmlzaW9uLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkVXNlV29ya2VyKGNvbm5lY3Rpb25Db3VudDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGU8Ym9vbGVhbj4obmV3IFNob3VsZFVzZUNvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0KGNvbm5lY3Rpb25Db3VudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNDdXJyZW50UmVuZGVyQ29udGV4dChyZW5kZXJUaWNrZXQ6IG51bWJlciwgbm9kZXNSZXZpc2lvbjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlbmRlclRpY2tldCA9PT0gdGhpcy5fcmVuZGVyVGlja2V0ICYmIG5vZGVzUmV2aXNpb24gPT09IHRoaXMuX3N0b3JlLm5vZGVzUmV2aXNpb247XG4gIH1cblxuICBwcml2YXRlIF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCB3aW5kb3dSZWYgPSB0aGlzLl9icm93c2VyLmRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIGlmICghd2luZG93UmVmKSB7XG4gICAgICBjYWxsYmFjaygpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2luZG93UmVmLnJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG4gIH1cblxuICBwcml2YXRlIF9ub3coKTogbnVtYmVyIHtcbiAgICBjb25zdCBwZXJmb3JtYW5jZVJlZiA9IHRoaXMuX2Jyb3dzZXIuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LnBlcmZvcm1hbmNlO1xuXG4gICAgcmV0dXJuIHBlcmZvcm1hbmNlUmVmID8gcGVyZm9ybWFuY2VSZWYubm93KCkgOiBEYXRlLm5vdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNXaXRoaW5TbGljZUJ1ZGdldChzbGljZVN0YXJ0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2Jyb3dzZXIuaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9ub3coKSAtIHNsaWNlU3RhcnQgPCBTTElDRV9CVURHRVRfTVM7XG4gIH1cbn1cbiJdfQ==
|
|
240
|
+
function createConnectionRenderSignature(connection, line) {
|
|
241
|
+
const { sourceSide, targetSide } = connection.getResolvedSides();
|
|
242
|
+
return [
|
|
243
|
+
connection.fBehavior,
|
|
244
|
+
connection.fType,
|
|
245
|
+
connection.fRadius,
|
|
246
|
+
connection.fOffset,
|
|
247
|
+
connection.fReassignableStart(),
|
|
248
|
+
serializeContents(connection.fContents() || []),
|
|
249
|
+
sourceSide,
|
|
250
|
+
targetSide,
|
|
251
|
+
serializePoint(line.point1),
|
|
252
|
+
serializePoint(line.point2),
|
|
253
|
+
serializeWaypoints(connection.fWaypoints()?.waypoints() || []),
|
|
254
|
+
].join('|');
|
|
255
|
+
}
|
|
256
|
+
function serializePoint(point) {
|
|
257
|
+
return `${point.x}:${point.y}`;
|
|
258
|
+
}
|
|
259
|
+
function serializeWaypoints(waypoints) {
|
|
260
|
+
return waypoints.map(serializePoint).join(';');
|
|
261
|
+
}
|
|
262
|
+
function serializeContents(contents) {
|
|
263
|
+
return contents
|
|
264
|
+
.map((content) => {
|
|
265
|
+
return [content.position(), content.offset(), content.align()].join(':');
|
|
266
|
+
})
|
|
267
|
+
.join(';');
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcmF3LWNvbm5lY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZi1jb25uZWN0aW9uL3JlZHJhdy1jb25uZWN0aW9ucy9yZWRyYXctY29ubmVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLGlDQUFpQyxHQUlsQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsZ0RBQWdELEVBSWhELHdDQUF3QyxFQUN4QyxxQ0FBcUMsRUFDckMsZ0NBQWdDLEdBQ2pDLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUNMLCtDQUErQyxHQUVoRCxNQUFNLGlEQUFpRCxDQUFDOztBQUV6RCxNQUFNLDJCQUEyQixHQUFHLEdBQUcsQ0FBQztBQUN4QyxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFFMUI7Ozs7R0FJRztBQUdJLElBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBQ1gsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLDBCQUEw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QUs7UUFDaEIsVUFBVSxDQUFDLE9BQU87UUFDbEIsVUFBVSxDQUFDLE9BQU87UUFDbEIsVUFBVSxDQUFDLGtCQUFrQixFQUFFO1FBQy9CLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDL0MsVUFBVTtRQUNWLFVBQVU7UUFDVixjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixrQkFBa0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO0tBQy9ELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQXNCO0lBQzVDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxTQUFxQztJQUMvRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLFFBQTJDO0lBQ3BFLE9BQU8sUUFBUTtTQUNaLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNFLENBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTGluZSwgSVJvdW5kZWRSZWN0IH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlZHJhd0Nvbm5lY3Rpb25zUmVxdWVzdCB9IGZyb20gJy4vcmVkcmF3LWNvbm5lY3Rpb25zLXJlcXVlc3QnO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGQ29ubmVjdG9yQmFzZSB9IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgQ3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0IH0gZnJvbSAnLi4vY3JlYXRlLWNvbm5lY3Rpb24tbWFya2Vycyc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uQmVoYXZpb3VyQnVpbGRlcixcbiAgQ29ubmVjdGlvbkJlaGF2aW91ckJ1aWxkZXJSZXF1ZXN0LFxuICBFRkNvbm5lY3RhYmxlU2lkZSxcbiAgRkNvbm5lY3Rpb25CYXNlLFxuICBGQ29ubmVjdGlvbkNvbnRlbnRCYXNlLFxufSBmcm9tICcuLi8uLi8uLi9mLWNvbm5lY3Rpb24tdjInO1xuaW1wb3J0IHsgQnJvd3NlclNlcnZpY2UgfSBmcm9tICdAZm9ibGV4L3BsYXRmb3JtJztcbmltcG9ydCB7XG4gIENhbGN1bGF0ZUNvbm5lY3Rpb25zVXNpbmdDb25uZWN0aW9uV29ya2VyUmVxdWVzdCxcbiAgSUZDb25uZWN0aW9uV29ya2VyQ29ubmVjdG9ycyxcbiAgSUZDb25uZWN0aW9uV29ya2VyQ29udGV4dCxcbiAgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSxcbiAgUmVzb2x2ZUNvbm5lY3Rpb25Xb3JrZXJDb25uZWN0b3JzUmVxdWVzdCxcbiAgUmVzb2x2ZUNvbm5lY3Rpb25Xb3JrZXJDb250ZXh0UmVxdWVzdCxcbiAgU2hvdWxkVXNlQ29ubmVjdGlvbldvcmtlclJlcXVlc3QsXG59IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdGlvbi13b3JrZXInO1xuaW1wb3J0IHtcbiAgUmVzb2x2ZUNvbm5lY3Rpb25FbmRwb2ludFJvdGF0aW9uQ29udGV4dFJlcXVlc3QsXG4gIFRSZXNvbHZlQ29ubmVjdGlvbkVuZHBvaW50Um90YXRpb25Db250ZXh0UmVzcG9uc2UsXG59IGZyb20gJy4uL3Jlc29sdmUtY29ubmVjdGlvbi1lbmRwb2ludC1yb3RhdGlvbi1jb250ZXh0JztcblxuY29uc3QgQ09OTkVDVElPTlNfUEVSX1NMSUNFX0xJTUlUID0gNTAwO1xuY29uc3QgU0xJQ0VfQlVER0VUX01TID0gNjtcblxuLyoqXG4gKiBFeGVjdXRpb24gdGhhdCByZWRyYXdzIGNvbm5lY3Rpb25zIGluIHRoZSBGQ29tcG9uZW50c1N0b3JlLlxuICogSXQgcmVzZXRzIGNvbm5lY3RvcnMsIHNldHMgbWFya2VycyBmb3IgdGVtcG9yYXJ5IGFuZCBzbmFwIGNvbm5lY3Rpb25zLFxuICogYW5kIHNldHMgdXAgY29ubmVjdGlvbnMgYmFzZWQgb24gdGhlIHN0b3JlZCBvdXRwdXRzIGFuZCBpbnB1dHMuXG4gKi9cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoUmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIFJlZHJhd0Nvbm5lY3Rpb25zIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxSZWRyYXdDb25uZWN0aW9uc1JlcXVlc3QsIHZvaWQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RvcmUgPSBpbmplY3QoRkNvbXBvbmVudHNTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Nvbm5lY3Rpb25CZWhhdmlvdXIgPSBpbmplY3QoQ29ubmVjdGlvbkJlaGF2aW91ckJ1aWxkZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9icm93c2VyID0gaW5qZWN0KEJyb3dzZXJTZXJ2aWNlKTtcblxuICBwcml2YXRlIF9yZW5kZXJUaWNrZXQgPSAwO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb25uZWN0ZWRJblByZXZpb3VzUmVuZGVyID0gbmV3IFNldDxGQ29ubmVjdG9yQmFzZT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29ubmVjdGlvblJlbmRlckNhY2hlID0gbmV3IFdlYWtNYXA8XG4gICAgRkNvbm5lY3Rpb25CYXNlLFxuICAgIHsgc2lnbmF0dXJlOiBzdHJpbmc7IHBhdGhFbGVtZW50OiBTVkdFbGVtZW50IH1cbiAgPigpO1xuXG4gIHB1YmxpYyBoYW5kbGUoX3JlcXVlc3Q6IFJlZHJhd0Nvbm5lY3Rpb25zUmVxdWVzdCk6IHZvaWQge1xuICAgIGNvbnN0IHJlbmRlclRpY2tldCA9ICsrdGhpcy5fcmVuZGVyVGlja2V0O1xuICAgIGNvbnN0IG5vZGVzUmV2aXNpb24gPSB0aGlzLl9zdG9yZS5ub2Rlc1JldmlzaW9uO1xuICAgIHRoaXMuX3Jlc2V0Q29ubmVjdGVkQ29ubmVjdG9ycygpO1xuXG4gICAgY29uc3QgaW5zdGFuY2VGb3JDcmVhdGUgPSB0aGlzLl9zdG9yZS5jb25uZWN0aW9ucy5nZXRGb3JDcmVhdGUoKTtcbiAgICBpZiAoaW5zdGFuY2VGb3JDcmVhdGUpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZU1hcmtlcnMoaW5zdGFuY2VGb3JDcmVhdGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlRm9yU25hcCA9IHRoaXMuX3N0b3JlLmNvbm5lY3Rpb25zLmdldEZvclNuYXAoKTtcbiAgICBpZiAoaW5zdGFuY2VGb3JTbmFwKSB7XG4gICAgICB0aGlzLl9jcmVhdGVNYXJrZXJzKGluc3RhbmNlRm9yU25hcCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29ubmVjdGlvbnMgPSBbLi4udGhpcy5fc3RvcmUuY29ubmVjdGlvbnMuZ2V0QWxsKCldO1xuICAgIGNvbnN0IGNvbm5lY3RvclJlY3RDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBJUm91bmRlZFJlY3Q+KCk7XG5cbiAgICBpZiAodGhpcy5fc2hvdWxkVXNlV29ya2VyKGNvbm5lY3Rpb25zLmxlbmd0aCkpIHtcbiAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNVc2luZ1dvcmtlcihcbiAgICAgICAgY29ubmVjdGlvbnMsXG4gICAgICAgIGNvbm5lY3RvclJlY3RDYWNoZSxcbiAgICAgICAgcmVuZGVyVGlja2V0LFxuICAgICAgICBub2Rlc1JldmlzaW9uLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb25zQ2h1bmtlZChjb25uZWN0aW9ucywgY29ubmVjdG9yUmVjdENhY2hlLCAwLCByZW5kZXJUaWNrZXQsIG5vZGVzUmV2aXNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRDb25uZWN0ZWRDb25uZWN0b3JzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29ubmVjdGVkSW5QcmV2aW91c1JlbmRlci5zaXplKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb25uZWN0b3Igb2YgdGhpcy5fY29ubmVjdGVkSW5QcmV2aW91c1JlbmRlcikge1xuICAgICAgY29ubmVjdG9yLnJlc2V0Q29ubmVjdGVkKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29ubmVjdGVkSW5QcmV2aW91c1JlbmRlci5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBDb25uZWN0aW9uKGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSwgY2FjaGU6IE1hcDxzdHJpbmcsIElSb3VuZGVkUmVjdD4pOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5fcmVzb2x2ZUNvbm5lY3Rpb25Db250ZXh0KGNvbm5lY3Rpb24sIGNhY2hlKTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lID0gdGhpcy5fY2FsY3VsYXRlQ29ubmVjdGlvbkxpbmUoY29ubmVjdGlvbiwgY29udGV4dCk7XG5cbiAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb25XaXRoTGluZShjb25uZWN0aW9uLCBjb250ZXh0LnNvdXJjZSwgY29udGV4dC50YXJnZXQsIGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBDb25uZWN0aW9uV2l0aExpbmUoXG4gICAgY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlLFxuICAgIHNvdXJjZTogRkNvbm5lY3RvckJhc2UsXG4gICAgdGFyZ2V0OiBGQ29ubmVjdG9yQmFzZSxcbiAgICBsaW5lOiBJTGluZSxcbiAgKTogdm9pZCB7XG4gICAgc291cmNlLnNldENvbm5lY3RlZCh0YXJnZXQpO1xuICAgIHRhcmdldC5zZXRDb25uZWN0ZWQoc291cmNlKTtcbiAgICB0aGlzLl9jb25uZWN0ZWRJblByZXZpb3VzUmVuZGVyLmFkZChzb3VyY2UpO1xuICAgIHRoaXMuX2Nvbm5lY3RlZEluUHJldmlvdXNSZW5kZXIuYWRkKHRhcmdldCk7XG5cbiAgICBjb25zdCBtYXJrZXJzQ2hhbmdlZCA9IHRoaXMuX2NyZWF0ZU1hcmtlcnMoY29ubmVjdGlvbik7XG4gICAgaWYgKCFtYXJrZXJzQ2hhbmdlZCAmJiAhdGhpcy5fc2hvdWxkUmVkcmF3Q29ubmVjdGlvbihjb25uZWN0aW9uLCBsaW5lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbm5lY3Rpb24uc2V0TGluZShsaW5lKTtcbiAgICBjb25uZWN0aW9uLmluaXRpYWxpemUoKTtcbiAgICBjb25uZWN0aW9uLmlzU2VsZWN0ZWQoKSA/IGNvbm5lY3Rpb24ubWFya0FzU2VsZWN0ZWQoKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjdWxhdGVDb25uZWN0aW9uTGluZShcbiAgICBjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsXG4gICAgY29udGV4dDogSUZDb25uZWN0aW9uV29ya2VyQ29udGV4dCxcbiAgKTogSUxpbmUge1xuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uQmVoYXZpb3VyLmhhbmRsZShcbiAgICAgIG5ldyBDb25uZWN0aW9uQmVoYXZpb3VyQnVpbGRlclJlcXVlc3QoXG4gICAgICAgIGNvbnRleHQuc291cmNlUmVjdCxcbiAgICAgICAgY29udGV4dC50YXJnZXRSZWN0LFxuICAgICAgICBjb25uZWN0aW9uLFxuICAgICAgICBjb250ZXh0LnNvdXJjZS5mQ29ubmVjdGFibGVTaWRlLFxuICAgICAgICBjb250ZXh0LnRhcmdldC5mQ29ubmVjdGFibGVTaWRlLFxuICAgICAgICB0aGlzLl9yZXNvbHZlUm90YXRpb25Db250ZXh0KGNvbnRleHQuc291cmNlKSxcbiAgICAgICAgdGhpcy5fcmVzb2x2ZVJvdGF0aW9uQ29udGV4dChjb250ZXh0LnRhcmdldCksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNvbHZlUm90YXRpb25Db250ZXh0KFxuICAgIGNvbm5lY3RvcjogSUZDb25uZWN0aW9uV29ya2VyQ29udGV4dFsnc291cmNlJ10sXG4gICk6IFRSZXNvbHZlQ29ubmVjdGlvbkVuZHBvaW50Um90YXRpb25Db250ZXh0UmVzcG9uc2Uge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlPFRSZXNvbHZlQ29ubmVjdGlvbkVuZHBvaW50Um90YXRpb25Db250ZXh0UmVzcG9uc2U+KFxuICAgICAgbmV3IFJlc29sdmVDb25uZWN0aW9uRW5kcG9pbnRSb3RhdGlvbkNvbnRleHRSZXF1ZXN0KGNvbm5lY3RvciksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc29sdmVDb25uZWN0aW9uQ29ubmVjdG9ycyhcbiAgICBjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsXG4gICk6IElGQ29ubmVjdGlvbldvcmtlckNvbm5lY3RvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTxJRkNvbm5lY3Rpb25Xb3JrZXJDb25uZWN0b3JzIHwgbnVsbD4oXG4gICAgICBuZXcgUmVzb2x2ZUNvbm5lY3Rpb25Xb3JrZXJDb25uZWN0b3JzUmVxdWVzdChjb25uZWN0aW9uKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzb2x2ZUNvbm5lY3Rpb25Db250ZXh0KFxuICAgIGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSxcbiAgICBjYWNoZTogTWFwPHN0cmluZywgSVJvdW5kZWRSZWN0PixcbiAgKTogSUZDb25uZWN0aW9uV29ya2VyQ29udGV4dCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlPElGQ29ubmVjdGlvbldvcmtlckNvbnRleHQgfCBudWxsPihcbiAgICAgIG5ldyBSZXNvbHZlQ29ubmVjdGlvbldvcmtlckNvbnRleHRSZXF1ZXN0KGNvbm5lY3Rpb24sIGNhY2hlKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlTWFya2Vycyhjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTxib29sZWFuPihuZXcgQ3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0KGNvbm5lY3Rpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Nob3VsZFJlZHJhd0Nvbm5lY3Rpb24oY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlLCBsaW5lOiBJTGluZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGhFbGVtZW50ID0gY29ubmVjdGlvbi5mUGF0aCgpLmhvc3RFbGVtZW50O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZUNvbm5lY3Rpb25SZW5kZXJTaWduYXR1cmUoY29ubmVjdGlvbiwgbGluZSk7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5fY29ubmVjdGlvblJlbmRlckNhY2hlLmdldChjb25uZWN0aW9uKTtcbiAgICBpZiAoY2FjaGVkPy5zaWduYXR1cmUgPT09IHNpZ25hdHVyZSAmJiBjYWNoZWQucGF0aEVsZW1lbnQgPT09IHBhdGhFbGVtZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5fY29ubmVjdGlvblJlbmRlckNhY2hlLnNldChjb25uZWN0aW9uLCB7IHNpZ25hdHVyZSwgcGF0aEVsZW1lbnQgfSk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ29ubmVjdGlvbnNVc2luZ1dvcmtlcihcbiAgICBjb25uZWN0aW9uczogcmVhZG9ubHkgRkNvbm5lY3Rpb25CYXNlW10sXG4gICAgY29ubmVjdG9yUmVjdENhY2hlOiBNYXA8c3RyaW5nLCBJUm91bmRlZFJlY3Q+LFxuICAgIHJlbmRlclRpY2tldDogbnVtYmVyLFxuICAgIG5vZGVzUmV2aXNpb246IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3JcbiAgICAgIC5leGVjdXRlPFByb21pc2U8cmVhZG9ubHkgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbVtdIHwgbnVsbD4+KFxuICAgICAgICBuZXcgQ2FsY3VsYXRlQ29ubmVjdGlvbnNVc2luZ0Nvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0KGNvbm5lY3Rpb25zLCBjb25uZWN0b3JSZWN0Q2FjaGUpLFxuICAgICAgKVxuICAgICAgLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlc3VsdHMpIHtcbiAgICAgICAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb25zQ2h1bmtlZChcbiAgICAgICAgICAgIGNvbm5lY3Rpb25zLFxuICAgICAgICAgICAgY29ubmVjdG9yUmVjdENhY2hlLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgICAgIG5vZGVzUmV2aXNpb24sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdvcmtlclJlc3VsdHMgPSB0aGlzLl9hbGlnbldvcmtlclJlc3VsdHNUb0Nvbm5lY3Rpb25JbmRleGVzKFxuICAgICAgICAgIHJlc3VsdHMsXG4gICAgICAgICAgY29ubmVjdGlvbnMubGVuZ3RoLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2FwcGx5V29ya2VyUmVzdWx0c0NodW5rZWQoXG4gICAgICAgICAgY29ubmVjdGlvbnMsXG4gICAgICAgICAgd29ya2VyUmVzdWx0cyxcbiAgICAgICAgICBjb25uZWN0b3JSZWN0Q2FjaGUsXG4gICAgICAgICAgMCxcbiAgICAgICAgICByZW5kZXJUaWNrZXQsXG4gICAgICAgICAgbm9kZXNSZXZpc2lvbixcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNDaHVua2VkKFxuICAgICAgICAgIGNvbm5lY3Rpb25zLFxuICAgICAgICAgIGNvbm5lY3RvclJlY3RDYWNoZSxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgICBub2Rlc1JldmlzaW9uLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVdvcmtlclJlc3VsdHNDaHVua2VkKFxuICAgIGNvbm5lY3Rpb25zOiByZWFkb25seSBGQ29ubmVjdGlvbkJhc2VbXSxcbiAgICB3b3JrZXJSZXN1bHRzOiByZWFkb25seSAoSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSB8IHVuZGVmaW5lZClbXSxcbiAgICBjb25uZWN0b3JSZWN0Q2FjaGU6IE1hcDxzdHJpbmcsIElSb3VuZGVkUmVjdD4sXG4gICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgIHJlbmRlclRpY2tldDogbnVtYmVyLFxuICAgIG5vZGVzUmV2aXNpb246IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzbGljZVN0YXJ0ID0gdGhpcy5fbm93KCk7XG4gICAgbGV0IGVuZEluZGV4ID0gc3RhcnRJbmRleDtcbiAgICBsZXQgcHJvY2Vzc2VkID0gMDtcblxuICAgIHdoaWxlIChcbiAgICAgIGVuZEluZGV4IDwgY29ubmVjdGlvbnMubGVuZ3RoICYmXG4gICAgICBwcm9jZXNzZWQgPCBDT05ORUNUSU9OU19QRVJfU0xJQ0VfTElNSVQgJiZcbiAgICAgIHRoaXMuX2lzV2l0aGluU2xpY2VCdWRnZXQoc2xpY2VTdGFydClcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBjb25uZWN0aW9uc1tlbmRJbmRleF07XG4gICAgICBjb25zdCByZXN1bHQgPSB3b3JrZXJSZXN1bHRzW2VuZEluZGV4XTtcblxuICAgICAgaWYgKHRoaXMuX2lzV29ya2VyUmVzdWx0U3VwcG9ydGVkKHJlc3VsdCkpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdG9ycyA9IHRoaXMuX3Jlc29sdmVDb25uZWN0aW9uQ29ubmVjdG9ycyhjb25uZWN0aW9uKTtcbiAgICAgICAgaWYgKCFjb25uZWN0b3JzKSB7XG4gICAgICAgICAgZW5kSW5kZXgrKztcbiAgICAgICAgICBwcm9jZXNzZWQrKztcblxuICAgICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50UmVuZGVyQ29udGV4dChyZW5kZXJUaWNrZXQsIG5vZGVzUmV2aXNpb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25uZWN0aW9uLl9hcHBseVJlc29sdmVkU2lkZXNUb0Nvbm5lY3Rpb24oXG4gICAgICAgICAgICByZXN1bHQuc291cmNlU2lkZSBhcyBFRkNvbm5lY3RhYmxlU2lkZSxcbiAgICAgICAgICAgIHJlc3VsdC50YXJnZXRTaWRlIGFzIEVGQ29ubmVjdGFibGVTaWRlLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uV2l0aExpbmUoXG4gICAgICAgICAgICBjb25uZWN0aW9uLFxuICAgICAgICAgICAgY29ubmVjdG9ycy5zb3VyY2UsXG4gICAgICAgICAgICBjb25uZWN0b3JzLnRhcmdldCxcbiAgICAgICAgICAgIHJlc3VsdC5saW5lLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbihjb25uZWN0aW9uLCBjb25uZWN0b3JSZWN0Q2FjaGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb24oY29ubmVjdGlvbiwgY29ubmVjdG9yUmVjdENhY2hlKTtcbiAgICAgIH1cblxuICAgICAgZW5kSW5kZXgrKztcbiAgICAgIHByb2Nlc3NlZCsrO1xuXG4gICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVuZEluZGV4ID49IGNvbm5lY3Rpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PlxuICAgICAgdGhpcy5fYXBwbHlXb3JrZXJSZXN1bHRzQ2h1bmtlZChcbiAgICAgICAgY29ubmVjdGlvbnMsXG4gICAgICAgIHdvcmtlclJlc3VsdHMsXG4gICAgICAgIGNvbm5lY3RvclJlY3RDYWNoZSxcbiAgICAgICAgZW5kSW5kZXgsXG4gICAgICAgIHJlbmRlclRpY2tldCxcbiAgICAgICAgbm9kZXNSZXZpc2lvbixcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FsaWduV29ya2VyUmVzdWx0c1RvQ29ubmVjdGlvbkluZGV4ZXMoXG4gICAgcmVzdWx0czogcmVhZG9ubHkgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbVtdLFxuICAgIGNvbm5lY3Rpb25Db3VudDogbnVtYmVyLFxuICApOiAoSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSB8IHVuZGVmaW5lZClbXSB7XG4gICAgY29uc3QgYWxpZ25lZDogKElGQ29ubmVjdGlvbldvcmtlclJlc3VsdEl0ZW0gfCB1bmRlZmluZWQpW10gPSBuZXcgQXJyYXkoY29ubmVjdGlvbkNvdW50KTtcblxuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gcmVzdWx0Lm9yaWdpbmFsSW5kZXg7XG4gICAgICBpZiAodHlwZW9mIGluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBjb25uZWN0aW9uQ291bnQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGFsaWduZWRbaW5kZXhdID0gcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiBhbGlnbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNXb3JrZXJSZXN1bHRTdXBwb3J0ZWQoXG4gICAgcmVzdWx0OiBJRkNvbm5lY3Rpb25Xb3JrZXJSZXN1bHRJdGVtIHwgdW5kZWZpbmVkLFxuICApOiByZXN1bHQgaXMgSUZDb25uZWN0aW9uV29ya2VyUmVzdWx0SXRlbSAmIHtcbiAgICBzb3VyY2VTaWRlOiBzdHJpbmc7XG4gICAgdGFyZ2V0U2lkZTogc3RyaW5nO1xuICAgIGxpbmU6IElMaW5lO1xuICB9IHtcbiAgICByZXR1cm4gISEocmVzdWx0Py5zdXBwb3J0ZWQgJiYgcmVzdWx0LnNvdXJjZVNpZGUgJiYgcmVzdWx0LnRhcmdldFNpZGUgJiYgcmVzdWx0LmxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBDb25uZWN0aW9uc0NodW5rZWQoXG4gICAgY29ubmVjdGlvbnM6IHJlYWRvbmx5IEZDb25uZWN0aW9uQmFzZVtdLFxuICAgIGNvbm5lY3RvclJlY3RDYWNoZTogTWFwPHN0cmluZywgSVJvdW5kZWRSZWN0PixcbiAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgcmVuZGVyVGlja2V0OiBudW1iZXIsXG4gICAgbm9kZXNSZXZpc2lvbjogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFJlbmRlckNvbnRleHQocmVuZGVyVGlja2V0LCBub2Rlc1JldmlzaW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNsaWNlU3RhcnQgPSB0aGlzLl9ub3coKTtcbiAgICBsZXQgZW5kSW5kZXggPSBzdGFydEluZGV4O1xuICAgIGxldCBwcm9jZXNzZWQgPSAwO1xuXG4gICAgd2hpbGUgKFxuICAgICAgZW5kSW5kZXggPCBjb25uZWN0aW9ucy5sZW5ndGggJiZcbiAgICAgIHByb2Nlc3NlZCA8IENPTk5FQ1RJT05TX1BFUl9TTElDRV9MSU1JVCAmJlxuICAgICAgdGhpcy5faXNXaXRoaW5TbGljZUJ1ZGdldChzbGljZVN0YXJ0KVxuICAgICkge1xuICAgICAgdGhpcy5fc2V0dXBDb25uZWN0aW9uKGNvbm5lY3Rpb25zW2VuZEluZGV4XSwgY29ubmVjdG9yUmVjdENhY2hlKTtcbiAgICAgIGVuZEluZGV4Kys7XG4gICAgICBwcm9jZXNzZWQrKztcblxuICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRSZW5kZXJDb250ZXh0KHJlbmRlclRpY2tldCwgbm9kZXNSZXZpc2lvbikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmRJbmRleCA+PSBjb25uZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT5cbiAgICAgIHRoaXMuX3NldHVwQ29ubmVjdGlvbnNDaHVua2VkKFxuICAgICAgICBjb25uZWN0aW9ucyxcbiAgICAgICAgY29ubmVjdG9yUmVjdENhY2hlLFxuICAgICAgICBlbmRJbmRleCxcbiAgICAgICAgcmVuZGVyVGlja2V0LFxuICAgICAgICBub2Rlc1JldmlzaW9uLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkVXNlV29ya2VyKGNvbm5lY3Rpb25Db3VudDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGU8Ym9vbGVhbj4obmV3IFNob3VsZFVzZUNvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0KGNvbm5lY3Rpb25Db3VudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNDdXJyZW50UmVuZGVyQ29udGV4dChyZW5kZXJUaWNrZXQ6IG51bWJlciwgbm9kZXNSZXZpc2lvbjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlbmRlclRpY2tldCA9PT0gdGhpcy5fcmVuZGVyVGlja2V0ICYmIG5vZGVzUmV2aXNpb24gPT09IHRoaXMuX3N0b3JlLm5vZGVzUmV2aXNpb247XG4gIH1cblxuICBwcml2YXRlIF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCB3aW5kb3dSZWYgPSB0aGlzLl9icm93c2VyLmRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIGlmICghd2luZG93UmVmKSB7XG4gICAgICBjYWxsYmFjaygpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2luZG93UmVmLnJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG4gIH1cblxuICBwcml2YXRlIF9ub3coKTogbnVtYmVyIHtcbiAgICBjb25zdCBwZXJmb3JtYW5jZVJlZiA9IHRoaXMuX2Jyb3dzZXIuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LnBlcmZvcm1hbmNlO1xuXG4gICAgcmV0dXJuIHBlcmZvcm1hbmNlUmVmID8gcGVyZm9ybWFuY2VSZWYubm93KCkgOiBEYXRlLm5vdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNXaXRoaW5TbGljZUJ1ZGdldChzbGljZVN0YXJ0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2Jyb3dzZXIuaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9ub3coKSAtIHNsaWNlU3RhcnQgPCBTTElDRV9CVURHRVRfTVM7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29ubmVjdGlvblJlbmRlclNpZ25hdHVyZShjb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UsIGxpbmU6IElMaW5lKTogc3RyaW5nIHtcbiAgY29uc3QgeyBzb3VyY2VTaWRlLCB0YXJnZXRTaWRlIH0gPSBjb25uZWN0aW9uLmdldFJlc29sdmVkU2lkZXMoKTtcblxuICByZXR1cm4gW1xuICAgIGNvbm5lY3Rpb24uZkJlaGF2aW9yLFxuICAgIGNvbm5lY3Rpb24uZlR5cGUsXG4gICAgY29ubmVjdGlvbi5mUmFkaXVzLFxuICAgIGNvbm5lY3Rpb24uZk9mZnNldCxcbiAgICBjb25uZWN0aW9uLmZSZWFzc2lnbmFibGVTdGFydCgpLFxuICAgIHNlcmlhbGl6ZUNvbnRlbnRzKGNvbm5lY3Rpb24uZkNvbnRlbnRzKCkgfHwgW10pLFxuICAgIHNvdXJjZVNpZGUsXG4gICAgdGFyZ2V0U2lkZSxcbiAgICBzZXJpYWxpemVQb2ludChsaW5lLnBvaW50MSksXG4gICAgc2VyaWFsaXplUG9pbnQobGluZS5wb2ludDIpLFxuICAgIHNlcmlhbGl6ZVdheXBvaW50cyhjb25uZWN0aW9uLmZXYXlwb2ludHMoKT8ud2F5cG9pbnRzKCkgfHwgW10pLFxuICBdLmpvaW4oJ3wnKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplUG9pbnQocG9pbnQ6IElMaW5lWydwb2ludDEnXSk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtwb2ludC54fToke3BvaW50Lnl9YDtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplV2F5cG9pbnRzKHdheXBvaW50czogcmVhZG9ubHkgSUxpbmVbJ3BvaW50MSddW10pOiBzdHJpbmcge1xuICByZXR1cm4gd2F5cG9pbnRzLm1hcChzZXJpYWxpemVQb2ludCkuam9pbignOycpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVDb250ZW50cyhjb250ZW50czogcmVhZG9ubHkgRkNvbm5lY3Rpb25Db250ZW50QmFzZVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbnRlbnRzXG4gICAgLm1hcCgoY29udGVudCkgPT4ge1xuICAgICAgcmV0dXJuIFtjb250ZW50LnBvc2l0aW9uKCksIGNvbnRlbnQub2Zmc2V0KCksIGNvbnRlbnQuYWxpZ24oKV0uam9pbignOicpO1xuICAgIH0pXG4gICAgLmpvaW4oJzsnKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './resolve-connection-endpoint-rotation-context';
|
|
2
|
+
export * from './resolve-connection-endpoint-rotation-context-request';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLWNvbm5lY3Rpb24vcmVzb2x2ZS1jb25uZWN0aW9uLWVuZHBvaW50LXJvdGF0aW9uLWNvbnRleHQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxjQUFjLHdEQUF3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXNvbHZlLWNvbm5lY3Rpb24tZW5kcG9pbnQtcm90YXRpb24tY29udGV4dCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcmVzb2x2ZS1jb25uZWN0aW9uLWVuZHBvaW50LXJvdGF0aW9uLWNvbnRleHQtcmVxdWVzdCc7XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export class ResolveConnectionEndpointRotationContextRequest {
|
|
2
|
+
connector;
|
|
3
|
+
static fToken = Symbol('ResolveConnectionEndpointRotationContextRequest');
|
|
4
|
+
constructor(connector) {
|
|
5
|
+
this.connector = connector;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1jb25uZWN0aW9uLWVuZHBvaW50LXJvdGF0aW9uLWNvbnRleHQtcmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2YtY29ubmVjdGlvbi9yZXNvbHZlLWNvbm5lY3Rpb24tZW5kcG9pbnQtcm90YXRpb24tY29udGV4dC9yZXNvbHZlLWNvbm5lY3Rpb24tZW5kcG9pbnQtcm90YXRpb24tY29udGV4dC1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTywrQ0FBK0M7SUFHOUI7SUFGNUIsTUFBTSxDQUFVLE1BQU0sR0FBRyxNQUFNLENBQUMsaURBQWlELENBQUMsQ0FBQztJQUVuRixZQUE0QixTQUEwQjtRQUExQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtJQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGQ29ubmVjdG9yQmFzZSB9IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBJQ29ubmVjdGlvbkVuZHBvaW50Um90YXRpb25Db250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0aW9uLXYyJztcblxuZXhwb3J0IGNsYXNzIFJlc29sdmVDb25uZWN0aW9uRW5kcG9pbnRSb3RhdGlvbkNvbnRleHRSZXF1ZXN0IHtcbiAgc3RhdGljIHJlYWRvbmx5IGZUb2tlbiA9IFN5bWJvbCgnUmVzb2x2ZUNvbm5lY3Rpb25FbmRwb2ludFJvdGF0aW9uQ29udGV4dFJlcXVlc3QnKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY29ubmVjdG9yPzogRkNvbm5lY3RvckJhc2UpIHt9XG59XG5cbmV4cG9ydCB0eXBlIFRSZXNvbHZlQ29ubmVjdGlvbkVuZHBvaW50Um90YXRpb25Db250ZXh0UmVzcG9uc2UgPVxuICB8IElDb25uZWN0aW9uRW5kcG9pbnRSb3RhdGlvbkNvbnRleHRcbiAgfCB1bmRlZmluZWQ7XG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { inject, Injectable } from '@angular/core';
|
|
3
|
+
import { FExecutionRegister, FMediator } from '@foblex/mediator';
|
|
4
|
+
import { FComponentsStore } from '../../../f-storage';
|
|
5
|
+
import { GetNormalizedElementRectRequest } from '../../get-normalized-element-rect';
|
|
6
|
+
import { ResolveConnectionEndpointRotationContextRequest, } from './resolve-connection-endpoint-rotation-context-request';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
let ResolveConnectionEndpointRotationContext = class ResolveConnectionEndpointRotationContext {
|
|
9
|
+
_store = inject(FComponentsStore);
|
|
10
|
+
_mediator = inject(FMediator);
|
|
11
|
+
handle({ connector, }) {
|
|
12
|
+
if (!connector) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const node = this._store.nodes.get(connector.fNodeId);
|
|
16
|
+
if (!node || !node._rotate) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const nodeRect = this._mediator.execute(new GetNormalizedElementRectRequest(node.hostElement));
|
|
20
|
+
return {
|
|
21
|
+
rotationDeg: node._rotate,
|
|
22
|
+
pivot: nodeRect.gravityCenter,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResolveConnectionEndpointRotationContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResolveConnectionEndpointRotationContext });
|
|
27
|
+
};
|
|
28
|
+
ResolveConnectionEndpointRotationContext = __decorate([
|
|
29
|
+
FExecutionRegister(ResolveConnectionEndpointRotationContextRequest)
|
|
30
|
+
], ResolveConnectionEndpointRotationContext);
|
|
31
|
+
export { ResolveConnectionEndpointRotationContext };
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResolveConnectionEndpointRotationContext, decorators: [{
|
|
33
|
+
type: Injectable
|
|
34
|
+
}] });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1jb25uZWN0aW9uLWVuZHBvaW50LXJvdGF0aW9uLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLWNvbm5lY3Rpb24vcmVzb2x2ZS1jb25uZWN0aW9uLWVuZHBvaW50LXJvdGF0aW9uLWNvbnRleHQvcmVzb2x2ZS1jb25uZWN0aW9uLWVuZHBvaW50LXJvdGF0aW9uLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQ0wsK0NBQStDLEdBRWhELE1BQU0sd0RBQXdELENBQUM7O0FBSXpELElBQU0sd0NBQXdDLEdBQTlDLE1BQU0sd0NBQXdDO0lBT2xDLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sQ0FBQyxFQUNaLFNBQVMsR0FDdUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3JDLElBQUksK0JBQStCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUN0RCxDQUFDO1FBRUYsT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTztZQUN6QixLQUFLLEVBQUUsUUFBUSxDQUFDLGFBQWE7U0FDOUIsQ0FBQztJQUNKLENBQUM7d0dBOUJVLHdDQUF3Qzs0R0FBeEMsd0NBQXdDOztBQUF4Qyx3Q0FBd0M7SUFEcEQsa0JBQWtCLENBQUMsK0NBQStDLENBQUM7R0FDdkQsd0NBQXdDLENBK0JwRDs7NEZBL0JZLHdDQUF3QztrQkFGcEQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElSZWN0IH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IEdldE5vcm1hbGl6ZWRFbGVtZW50UmVjdFJlcXVlc3QgfSBmcm9tICcuLi8uLi9nZXQtbm9ybWFsaXplZC1lbGVtZW50LXJlY3QnO1xuaW1wb3J0IHtcbiAgUmVzb2x2ZUNvbm5lY3Rpb25FbmRwb2ludFJvdGF0aW9uQ29udGV4dFJlcXVlc3QsXG4gIFRSZXNvbHZlQ29ubmVjdGlvbkVuZHBvaW50Um90YXRpb25Db250ZXh0UmVzcG9uc2UsXG59IGZyb20gJy4vcmVzb2x2ZS1jb25uZWN0aW9uLWVuZHBvaW50LXJvdGF0aW9uLWNvbnRleHQtcmVxdWVzdCc7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoUmVzb2x2ZUNvbm5lY3Rpb25FbmRwb2ludFJvdGF0aW9uQ29udGV4dFJlcXVlc3QpXG5leHBvcnQgY2xhc3MgUmVzb2x2ZUNvbm5lY3Rpb25FbmRwb2ludFJvdGF0aW9uQ29udGV4dFxuICBpbXBsZW1lbnRzXG4gICAgSUV4ZWN1dGlvbjxcbiAgICAgIFJlc29sdmVDb25uZWN0aW9uRW5kcG9pbnRSb3RhdGlvbkNvbnRleHRSZXF1ZXN0LFxuICAgICAgVFJlc29sdmVDb25uZWN0aW9uRW5kcG9pbnRSb3RhdGlvbkNvbnRleHRSZXNwb25zZVxuICAgID5cbntcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RvcmUgPSBpbmplY3QoRkNvbXBvbmVudHNTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG5cbiAgcHVibGljIGhhbmRsZSh7XG4gICAgY29ubmVjdG9yLFxuICB9OiBSZXNvbHZlQ29ubmVjdGlvbkVuZHBvaW50Um90YXRpb25Db250ZXh0UmVxdWVzdCk6IFRSZXNvbHZlQ29ubmVjdGlvbkVuZHBvaW50Um90YXRpb25Db250ZXh0UmVzcG9uc2Uge1xuICAgIGlmICghY29ubmVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLl9zdG9yZS5ub2Rlcy5nZXQoY29ubmVjdG9yLmZOb2RlSWQpO1xuICAgIGlmICghbm9kZSB8fCAhbm9kZS5fcm90YXRlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVSZWN0ID0gdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTxJUmVjdD4oXG4gICAgICBuZXcgR2V0Tm9ybWFsaXplZEVsZW1lbnRSZWN0UmVxdWVzdChub2RlLmhvc3RFbGVtZW50KSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJvdGF0aW9uRGVnOiBub2RlLl9yb3RhdGUsXG4gICAgICBwaXZvdDogbm9kZVJlY3QuZ3Jhdml0eUNlbnRlcixcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -5,4 +5,4 @@ export class OnPointerMoveRequest {
|
|
|
5
5
|
this.event = event;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib24tcG9pbnRlci1tb3ZlLXJlcXVlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLWRyYWdnYWJsZS9vbi1wb2ludGVyLW1vdmUvb24tcG9pbnRlci1tb3ZlLXJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLG9CQUFvQjtJQUdaO0lBRm5CLE1BQU0sQ0FBVSxNQUFNLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFeEQsWUFBbUIsS0FBb0I7UUFBcEIsVUFBSyxHQUFMLEtBQUssQ0FBZTtJQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUG9pbnRlckV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vZHJhZy10b29sa2l0JztcblxuZXhwb3J0IGNsYXNzIE9uUG9pbnRlck1vdmVSZXF1ZXN0IHtcbiAgc3RhdGljIHJlYWRvbmx5IGZUb2tlbiA9IFN5bWJvbCgnT25Qb2ludGVyTW92ZVJlcXVlc3QnKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXZlbnQ6IElQb2ludGVyRXZlbnQpIHt9XG59XG4iXX0=
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { inject, Injectable } from '@angular/core';
|
|
3
|
-
import { FExecutionRegister } from '@foblex/mediator';
|
|
3
|
+
import { FExecutionRegister, FMediator } from '@foblex/mediator';
|
|
4
4
|
import { OnPointerMoveRequest } from './on-pointer-move-request';
|
|
5
5
|
import { FDraggableDataContext } from '../../../f-draggable';
|
|
6
6
|
import { Point } from '@foblex/2d';
|
|
7
7
|
import { FComponentsStore } from '../../../f-storage';
|
|
8
|
+
import { SyncAutoPanRequest } from '../../../f-draggable/auto-pan';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
/**
|
|
10
11
|
* Execution that handles pointer move events during a drag operation.
|
|
@@ -12,13 +13,16 @@ import * as i0 from "@angular/core";
|
|
|
12
13
|
* when the drag started, and updates the draggable items accordingly.
|
|
13
14
|
*/
|
|
14
15
|
let OnPointerMove = class OnPointerMove {
|
|
16
|
+
_mediator = inject(FMediator);
|
|
15
17
|
_store = inject(FComponentsStore);
|
|
16
18
|
get _hostElement() {
|
|
17
19
|
return this._store.fDraggable?.hostElement;
|
|
18
20
|
}
|
|
19
21
|
_dragContext = inject(FDraggableDataContext);
|
|
20
22
|
handle({ event }) {
|
|
23
|
+
this._dragContext.rememberPointerEvent(event);
|
|
21
24
|
this._setDifferenceToDraggableItems(this._getDifferenceBetweenPointerAndPointerDown(event), event);
|
|
25
|
+
this._mediator.execute(new SyncAutoPanRequest());
|
|
22
26
|
}
|
|
23
27
|
_setDifferenceToDraggableItems(difference, event) {
|
|
24
28
|
this._dragContext.draggableItems.forEach((item) => {
|
|
@@ -43,4 +47,4 @@ export { OnPointerMove };
|
|
|
43
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OnPointerMove, decorators: [{
|
|
44
48
|
type: Injectable
|
|
45
49
|
}] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib24tcG9pbnRlci1tb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZi1kcmFnZ2FibGUvb24tcG9pbnRlci1tb3ZlL29uLXBvaW50ZXItbW92ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBVSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBRW5FOzs7O0dBSUc7QUFHSSxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFhO0lBQ1AsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFbkQsSUFBWSxZQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBMEIsQ0FBQztJQUM1RCxDQUFDO0lBRWdCLFlBQVksR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUV2RCxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQXdCO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLDhCQUE4QixDQUNqQyxJQUFJLENBQUMsMENBQTBDLENBQUMsS0FBSyxDQUFDLEVBQ3RELEtBQUssQ0FDTixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLDhCQUE4QixDQUFDLFVBQWtCLEVBQUUsS0FBb0I7UUFDN0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sMENBQTBDLENBQUMsS0FBb0I7UUFDckUsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDO2FBQzNDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO2FBQ3pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLDJCQUEyQixDQUFDLEtBQW9CO1FBQ3RELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEYsQ0FBQzt3R0FsQ1UsYUFBYTs0R0FBYixhQUFhOztBQUFiLGFBQWE7SUFEekIsa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7R0FDNUIsYUFBYSxDQW1DekI7OzRGQW5DWSxhQUFhO2tCQUZ6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgT25Qb2ludGVyTW92ZVJlcXVlc3QgfSBmcm9tICcuL29uLXBvaW50ZXItbW92ZS1yZXF1ZXN0JztcbmltcG9ydCB7IEZEcmFnZ2FibGVEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2YtZHJhZ2dhYmxlJztcbmltcG9ydCB7IElQb2ludCwgUG9pbnQgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IEZDb21wb25lbnRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgSVBvaW50ZXJFdmVudCB9IGZyb20gJy4uLy4uLy4uL2RyYWctdG9vbGtpdCc7XG5pbXBvcnQgeyBTeW5jQXV0b1BhblJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9mLWRyYWdnYWJsZS9hdXRvLXBhbic7XG5cbi8qKlxuICogRXhlY3V0aW9uIHRoYXQgaGFuZGxlcyBwb2ludGVyIG1vdmUgZXZlbnRzIGR1cmluZyBhIGRyYWcgb3BlcmF0aW9uLlxuICogSXQgY2FsY3VsYXRlcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHBvaW50ZXIgcG9zaXRpb24gYW5kIHRoZSBwb3NpdGlvblxuICogd2hlbiB0aGUgZHJhZyBzdGFydGVkLCBhbmQgdXBkYXRlcyB0aGUgZHJhZ2dhYmxlIGl0ZW1zIGFjY29yZGluZ2x5LlxuICovXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKE9uUG9pbnRlck1vdmVSZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIE9uUG9pbnRlck1vdmUgaW1wbGVtZW50cyBJRXhlY3V0aW9uPE9uUG9pbnRlck1vdmVSZXF1ZXN0LCB2b2lkPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuXG4gIHByaXZhdGUgZ2V0IF9ob3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlLmZEcmFnZ2FibGU/Lmhvc3RFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZHJhZ0NvbnRleHQgPSBpbmplY3QoRkRyYWdnYWJsZURhdGFDb250ZXh0KTtcblxuICBwdWJsaWMgaGFuZGxlKHsgZXZlbnQgfTogT25Qb2ludGVyTW92ZVJlcXVlc3QpOiB2b2lkIHtcbiAgICB0aGlzLl9kcmFnQ29udGV4dC5yZW1lbWJlclBvaW50ZXJFdmVudChldmVudCk7XG5cbiAgICB0aGlzLl9zZXREaWZmZXJlbmNlVG9EcmFnZ2FibGVJdGVtcyhcbiAgICAgIHRoaXMuX2dldERpZmZlcmVuY2VCZXR3ZWVuUG9pbnRlckFuZFBvaW50ZXJEb3duKGV2ZW50KSxcbiAgICAgIGV2ZW50LFxuICAgICk7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTx2b2lkPihuZXcgU3luY0F1dG9QYW5SZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RGlmZmVyZW5jZVRvRHJhZ2dhYmxlSXRlbXMoZGlmZmVyZW5jZTogSVBvaW50LCBldmVudDogSVBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2RyYWdDb250ZXh0LmRyYWdnYWJsZUl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0ub25Qb2ludGVyTW92ZSh7IC4uLmRpZmZlcmVuY2UgfSwgZXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGlmZmVyZW5jZUJldHdlZW5Qb2ludGVyQW5kUG9pbnRlckRvd24oZXZlbnQ6IElQb2ludGVyRXZlbnQpOiBJUG9pbnQge1xuICAgIHJldHVybiB0aGlzLl9nZXRQb2ludGVyUG9zaXRpb25JbkNhbnZhcyhldmVudClcbiAgICAgIC5kaXYodGhpcy5fZHJhZ0NvbnRleHQub25Qb2ludGVyRG93blNjYWxlKVxuICAgICAgLnN1Yih0aGlzLl9kcmFnQ29udGV4dC5vblBvaW50ZXJEb3duUG9zaXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UG9pbnRlclBvc2l0aW9uSW5DYW52YXMoZXZlbnQ6IElQb2ludGVyRXZlbnQpOiBQb2ludCB7XG4gICAgcmV0dXJuIFBvaW50LmZyb21Qb2ludChldmVudC5nZXRQb3NpdGlvbigpKS5lbGVtZW50VHJhbnNmb3JtKHRoaXMuX2hvc3RFbGVtZW50KTtcbiAgfVxufVxuIl19
|
|
@@ -38,7 +38,13 @@ let GetNormalizedConnectorRect = class GetNormalizedConnectorRect {
|
|
|
38
38
|
return this._getRoundedRect(RectExtensions.fromElement(element), element, this._getComputedStyle(element));
|
|
39
39
|
}
|
|
40
40
|
_getRoundedRect(rect, element, styles) {
|
|
41
|
-
|
|
41
|
+
const [radius1, radius2, radius3, radius4] = this._normalizeCircularBorderRadii(rect.width, rect.height, [
|
|
42
|
+
this._getSystemRadius(styles.borderTopLeftRadius, element, styles.fontSize),
|
|
43
|
+
this._getSystemRadius(styles.borderTopRightRadius, element, styles.fontSize),
|
|
44
|
+
this._getSystemRadius(styles.borderBottomRightRadius, element, styles.fontSize),
|
|
45
|
+
this._getSystemRadius(styles.borderBottomLeftRadius, element, styles.fontSize),
|
|
46
|
+
]);
|
|
47
|
+
return new RoundedRect(rect.x, rect.y, rect.width, rect.height, radius1, radius2, radius3, radius4);
|
|
42
48
|
}
|
|
43
49
|
_getComputedStyle(element) {
|
|
44
50
|
return this._browser.window.getComputedStyle(element);
|
|
@@ -46,6 +52,27 @@ let GetNormalizedConnectorRect = class GetNormalizedConnectorRect {
|
|
|
46
52
|
_toPixels(value, element, fontSize) {
|
|
47
53
|
return this._browser.toPixels(value, element.clientWidth, element.clientHeight, fontSize) || 0;
|
|
48
54
|
}
|
|
55
|
+
_getSystemRadius(value, element, fontSize) {
|
|
56
|
+
return this._toPixels(value, element, fontSize) * this._transform.scale;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Mirrors CSS border-radius normalization so oversized values like `999px`
|
|
60
|
+
* collapse to the largest valid circular radii for the current rect.
|
|
61
|
+
*/
|
|
62
|
+
_normalizeCircularBorderRadii(width, height, radii) {
|
|
63
|
+
const [topLeft, topRight, bottomRight, bottomLeft] = radii.map((value) => Math.max(0, value));
|
|
64
|
+
const scale = Math.min(1, this._getRadiusScaleFactor(width, topLeft + topRight), this._getRadiusScaleFactor(height, topRight + bottomRight), this._getRadiusScaleFactor(width, bottomRight + bottomLeft), this._getRadiusScaleFactor(height, bottomLeft + topLeft));
|
|
65
|
+
return [topLeft * scale, topRight * scale, bottomRight * scale, bottomLeft * scale];
|
|
66
|
+
}
|
|
67
|
+
_getRadiusScaleFactor(limit, sum) {
|
|
68
|
+
if (sum <= 0) {
|
|
69
|
+
return 1;
|
|
70
|
+
}
|
|
71
|
+
if (limit <= 0) {
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
return limit / sum;
|
|
75
|
+
}
|
|
49
76
|
_normalizePosition(rect) {
|
|
50
77
|
return calculatePointerInFlow(rect, this._store.flowHost, this._transform);
|
|
51
78
|
}
|
|
@@ -53,7 +80,10 @@ let GetNormalizedConnectorRect = class GetNormalizedConnectorRect {
|
|
|
53
80
|
return SizeExtensions.initialize(rect.width / this._transform.scale, rect.height / this._transform.scale);
|
|
54
81
|
}
|
|
55
82
|
_getUnscaledRect(position, size, rect) {
|
|
56
|
-
return new RoundedRect(position.x, position.y, size.width, size.height, rect.radius1, rect.radius2, rect.radius3, rect.radius4);
|
|
83
|
+
return new RoundedRect(position.x, position.y, size.width, size.height, this._unscaleRadius(rect.radius1), this._unscaleRadius(rect.radius2), this._unscaleRadius(rect.radius3), this._unscaleRadius(rect.radius4));
|
|
84
|
+
}
|
|
85
|
+
_unscaleRadius(radius) {
|
|
86
|
+
return radius / this._transform.scale;
|
|
57
87
|
}
|
|
58
88
|
_getOffsetSize(element, size) {
|
|
59
89
|
return SizeExtensions.offsetFromElement(element) || size;
|
|
@@ -68,4 +98,4 @@ export { GetNormalizedConnectorRect };
|
|
|
68
98
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetNormalizedConnectorRect, decorators: [{
|
|
69
99
|
type: Injectable
|
|
70
100
|
}] });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW5vcm1hbGl6ZWQtY29ubmVjdG9yLXJlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9nZXQtbm9ybWFsaXplZC1jb25uZWN0b3ItcmVjdC9nZXQtbm9ybWFsaXplZC1jb25uZWN0b3ItcmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFNTCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGNBQWMsR0FDZixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFckQ7Ozs7R0FJRztBQUdJLElBQU0sMEJBQTBCLEdBQWhDLE1BQU0sMEJBQTBCO0lBSXBCLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFbkQsSUFBWSxVQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQXFDO1FBQ2pF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RUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFnQixFQUFFLElBQVcsRUFBRSxJQUFrQjtRQUN4RSxPQUFPLElBQUksV0FBVyxDQUNwQixRQUFRLENBQUMsQ0FBQyxFQUNWLFFBQVEsQ0FBQyxDQUFDLEVBQ1YsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBaUMsRUFBRSxJQUFXO1FBQ25FLE9BQU8sY0FBYyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQztJQUMzRCxDQUFDO3dHQTdGVSwwQkFBMEI7NEdBQTFCLDBCQUEwQjs7QUFBMUIsMEJBQTBCO0lBRHRDLGtCQUFrQixDQUFDLGlDQUFpQyxDQUFDO0dBQ3pDLDBCQUEwQixDQThGdEM7OzRGQTlGWSwwQkFBMEI7a0JBRnRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdldE5vcm1hbGl6ZWRDb25uZWN0b3JSZWN0UmVxdWVzdCB9IGZyb20gJy4vZ2V0LW5vcm1hbGl6ZWQtY29ubmVjdG9yLXJlY3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQge1xuICBJUG9pbnQsXG4gIElSZWN0LFxuICBJUm91bmRlZFJlY3QsXG4gIElTaXplLFxuICBJVHJhbnNmb3JtTW9kZWwsXG4gIFJlY3RFeHRlbnNpb25zLFxuICBSb3VuZGVkUmVjdCxcbiAgU2l6ZUV4dGVuc2lvbnMsXG59IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgR2V0Q2FjaGVkRkNhY2hlUmVjdFJlcXVlc3QsIFVwZGF0ZUZDYWNoZVJlY3RCeUVsZW1lbnRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZi1jYWNoZSc7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJ0Bmb2JsZXgvcGxhdGZvcm0nO1xuaW1wb3J0IHsgY2FsY3VsYXRlUG9pbnRlckluRmxvdyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuLyoqXG4gKiBFeGVjdXRpb24gdGhhdCByZXRyaWV2ZXMgdGhlIG5vcm1hbGl6ZWQgcmVjdGFuZ2xlIG9mIGEgY29ubmVjdG9yLlxuICogSXQgY2FsY3VsYXRlcyB0aGUgcmVjdGFuZ2xlIGJhc2VkIG9uIHRoZSBlbGVtZW50J3MgcG9zaXRpb24gYW5kIHNpemUsXG4gKiBhZGp1c3RpbmcgZm9yIHRoZSBjYW52YXMgdHJhbnNmb3JtYXRpb24gYW5kIGVsZW1lbnQgb2Zmc2V0cy5cbiAqL1xuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihHZXROb3JtYWxpemVkQ29ubmVjdG9yUmVjdFJlcXVlc3QpXG5leHBvcnQgY2xhc3MgR2V0Tm9ybWFsaXplZENvbm5lY3RvclJlY3QgaW1wbGVtZW50cyBJRXhlY3V0aW9uPFxuICBHZXROb3JtYWxpemVkQ29ubmVjdG9yUmVjdFJlcXVlc3QsXG4gIElSb3VuZGVkUmVjdFxuPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9icm93c2VyID0gaW5qZWN0KEJyb3dzZXJTZXJ2aWNlKTtcblxuICBwcml2YXRlIGdldCBfdHJhbnNmb3JtKCk6IElUcmFuc2Zvcm1Nb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlLnRyYW5zZm9ybTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGUoeyBlbGVtZW50LCBjYWNoZSB9OiBHZXROb3JtYWxpemVkQ29ubmVjdG9yUmVjdFJlcXVlc3QpOiBJUm91bmRlZFJlY3Qge1xuICAgIGNvbnN0IGNhY2hlZFJlY3QgPSB0aGlzLl9tZWRpYXRvci5leGVjdXRlPElSb3VuZGVkUmVjdCB8IHVuZGVmaW5lZD4oXG4gICAgICBuZXcgR2V0Q2FjaGVkRkNhY2hlUmVjdFJlcXVlc3QoZWxlbWVudCksXG4gICAgKTtcbiAgICBpZiAoY2FjaGVkUmVjdCAmJiBjYWNoZSkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlY3Q7XG4gICAgfVxuXG4gICAgY29uc3Qgc3lzdGVtUmVjdCA9IHRoaXMuX2dldEVsZW1lbnRSb3VuZGVkUmVjdChlbGVtZW50KTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuX25vcm1hbGl6ZVBvc2l0aW9uKHN5c3RlbVJlY3QpO1xuICAgIGNvbnN0IHVuc2NhbGVkU2l6ZSA9IHRoaXMuX3Vuc2NhbGVTaXplKHN5c3RlbVJlY3QpO1xuICAgIGNvbnN0IHVuc2NhbGVkUmVjdCA9IHRoaXMuX2dldFVuc2NhbGVkUmVjdChwb3NpdGlvbiwgdW5zY2FsZWRTaXplLCBzeXN0ZW1SZWN0KTtcblxuICAgIGNvbnN0IG9mZnNldFNpemUgPSB0aGlzLl9nZXRPZmZzZXRTaXplKGVsZW1lbnQsIHVuc2NhbGVkU2l6ZSk7XG5cbiAgICBjb25zdCByZWN0ID0gUm91bmRlZFJlY3QuZnJvbUNlbnRlcih1bnNjYWxlZFJlY3QsIG9mZnNldFNpemUud2lkdGgsIG9mZnNldFNpemUuaGVpZ2h0KTtcblxuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IFVwZGF0ZUZDYWNoZVJlY3RCeUVsZW1lbnRSZXF1ZXN0KGVsZW1lbnQsIHJlY3QpKTtcblxuICAgIHJldHVybiByZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RWxlbWVudFJvdW5kZWRSZWN0KGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCk6IElSb3VuZGVkUmVjdCB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFJvdW5kZWRSZWN0KFxuICAgICAgUmVjdEV4dGVuc2lvbnMuZnJvbUVsZW1lbnQoZWxlbWVudCksXG4gICAgICBlbGVtZW50LFxuICAgICAgdGhpcy5fZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Um91bmRlZFJlY3QoXG4gICAgcmVjdDogSVJlY3QsXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50LFxuICAgIHN0eWxlczogQ1NTU3R5bGVEZWNsYXJhdGlvbixcbiAgKTogUm91bmRlZFJlY3Qge1xuICAgIHJldHVybiBuZXcgUm91bmRlZFJlY3QoXG4gICAgICByZWN0LngsXG4gICAgICByZWN0LnksXG4gICAgICByZWN0LndpZHRoLFxuICAgICAgcmVjdC5oZWlnaHQsXG4gICAgICB0aGlzLl90b1BpeGVscyhzdHlsZXMuYm9yZGVyVG9wTGVmdFJhZGl1cywgZWxlbWVudCwgc3R5bGVzLmZvbnRTaXplKSxcbiAgICAgIHRoaXMuX3RvUGl4ZWxzKHN0eWxlcy5ib3JkZXJUb3BSaWdodFJhZGl1cywgZWxlbWVudCwgc3R5bGVzLmZvbnRTaXplKSxcbiAgICAgIHRoaXMuX3RvUGl4ZWxzKHN0eWxlcy5ib3JkZXJCb3R0b21SaWdodFJhZGl1cywgZWxlbWVudCwgc3R5bGVzLmZvbnRTaXplKSxcbiAgICAgIHRoaXMuX3RvUGl4ZWxzKHN0eWxlcy5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBlbGVtZW50LCBzdHlsZXMuZm9udFNpemUpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCk6IENTU1N0eWxlRGVjbGFyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyLndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdG9QaXhlbHModmFsdWU6IHN0cmluZywgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50LCBmb250U2l6ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlci50b1BpeGVscyh2YWx1ZSwgZWxlbWVudC5jbGllbnRXaWR0aCwgZWxlbWVudC5jbGllbnRIZWlnaHQsIGZvbnRTaXplKSB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBfbm9ybWFsaXplUG9zaXRpb24ocmVjdDogSVJvdW5kZWRSZWN0KTogSVBvaW50IHtcbiAgICByZXR1cm4gY2FsY3VsYXRlUG9pbnRlckluRmxvdyhyZWN0LCB0aGlzLl9zdG9yZS5mbG93SG9zdCwgdGhpcy5fdHJhbnNmb3JtKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Vuc2NhbGVTaXplKHJlY3Q6IElSb3VuZGVkUmVjdCk6IElTaXplIHtcbiAgICByZXR1cm4gU2l6ZUV4dGVuc2lvbnMuaW5pdGlhbGl6ZShcbiAgICAgIHJlY3Qud2lkdGggLyB0aGlzLl90cmFuc2Zvcm0uc2NhbGUsXG4gICAgICByZWN0LmhlaWdodCAvIHRoaXMuX3RyYW5zZm9ybS5zY2FsZSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VW5zY2FsZWRSZWN0KHBvc2l0aW9uOiBJUG9pbnQsIHNpemU6IElTaXplLCByZWN0OiBJUm91bmRlZFJlY3QpOiBJUm91bmRlZFJlY3Qge1xuICAgIHJldHVybiBuZXcgUm91bmRlZFJlY3QoXG4gICAgICBwb3NpdGlvbi54LFxuICAgICAgcG9zaXRpb24ueSxcbiAgICAgIHNpemUud2lkdGgsXG4gICAgICBzaXplLmhlaWdodCxcbiAgICAgIHJlY3QucmFkaXVzMSxcbiAgICAgIHJlY3QucmFkaXVzMixcbiAgICAgIHJlY3QucmFkaXVzMyxcbiAgICAgIHJlY3QucmFkaXVzNCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0T2Zmc2V0U2l6ZShlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQsIHNpemU6IElTaXplKTogSVNpemUge1xuICAgIHJldHVybiBTaXplRXh0ZW5zaW9ucy5vZmZzZXRGcm9tRWxlbWVudChlbGVtZW50KSB8fCBzaXplO1xuICB9XG59XG4iXX0=
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW5vcm1hbGl6ZWQtY29ubmVjdG9yLXJlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9nZXQtbm9ybWFsaXplZC1jb25uZWN0b3ItcmVjdC9nZXQtbm9ybWFsaXplZC1jb25uZWN0b3ItcmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFNTCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGNBQWMsR0FDZixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFckQ7Ozs7R0FJRztBQUdJLElBQU0sMEJBQTBCLEdBQWhDLE1BQU0sMEJBQTBCO0lBR3BCLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFbkQsSUFBWSxVQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQXFDO1FBQ2pF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MEI7SUFEdEMsa0JBQWtCLENBQUMsaUNBQWlDLENBQUM7R0FDekMsMEJBQTBCLENBd0p0Qzs7NEZBeEpZLDBCQUEwQjtrQkFGdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2V0Tm9ybWFsaXplZENvbm5lY3RvclJlY3RSZXF1ZXN0IH0gZnJvbSAnLi9nZXQtbm9ybWFsaXplZC1jb25uZWN0b3ItcmVjdC1yZXF1ZXN0JztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7XG4gIElQb2ludCxcbiAgSVJlY3QsXG4gIElSb3VuZGVkUmVjdCxcbiAgSVNpemUsXG4gIElUcmFuc2Zvcm1Nb2RlbCxcbiAgUmVjdEV4dGVuc2lvbnMsXG4gIFJvdW5kZWRSZWN0LFxuICBTaXplRXh0ZW5zaW9ucyxcbn0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBHZXRDYWNoZWRGQ2FjaGVSZWN0UmVxdWVzdCwgVXBkYXRlRkNhY2hlUmVjdEJ5RWxlbWVudFJlcXVlc3QgfSBmcm9tICcuLi8uLi9mLWNhY2hlJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnQGZvYmxleC9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBjYWxjdWxhdGVQb2ludGVySW5GbG93IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG4vKipcbiAqIEV4ZWN1dGlvbiB0aGF0IHJldHJpZXZlcyB0aGUgbm9ybWFsaXplZCByZWN0YW5nbGUgb2YgYSBjb25uZWN0b3IuXG4gKiBJdCBjYWxjdWxhdGVzIHRoZSByZWN0YW5nbGUgYmFzZWQgb24gdGhlIGVsZW1lbnQncyBwb3NpdGlvbiBhbmQgc2l6ZSxcbiAqIGFkanVzdGluZyBmb3IgdGhlIGNhbnZhcyB0cmFuc2Zvcm1hdGlvbiBhbmQgZWxlbWVudCBvZmZzZXRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKEdldE5vcm1hbGl6ZWRDb25uZWN0b3JSZWN0UmVxdWVzdClcbmV4cG9ydCBjbGFzcyBHZXROb3JtYWxpemVkQ29ubmVjdG9yUmVjdFxuICBpbXBsZW1lbnRzIElFeGVjdXRpb248R2V0Tm9ybWFsaXplZENvbm5lY3RvclJlY3RSZXF1ZXN0LCBJUm91bmRlZFJlY3Q+XG57XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9icm93c2VyID0gaW5qZWN0KEJyb3dzZXJTZXJ2aWNlKTtcblxuICBwcml2YXRlIGdldCBfdHJhbnNmb3JtKCk6IElUcmFuc2Zvcm1Nb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlLnRyYW5zZm9ybTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGUoeyBlbGVtZW50LCBjYWNoZSB9OiBHZXROb3JtYWxpemVkQ29ubmVjdG9yUmVjdFJlcXVlc3QpOiBJUm91bmRlZFJlY3Qge1xuICAgIGNvbnN0IGNhY2hlZFJlY3QgPSB0aGlzLl9tZWRpYXRvci5leGVjdXRlPElSb3VuZGVkUmVjdCB8IHVuZGVmaW5lZD4oXG4gICAgICBuZXcgR2V0Q2FjaGVkRkNhY2hlUmVjdFJlcXVlc3QoZWxlbWVudCksXG4gICAgKTtcbiAgICBpZiAoY2FjaGVkUmVjdCAmJiBjYWNoZSkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlY3Q7XG4gICAgfVxuXG4gICAgY29uc3Qgc3lzdGVtUmVjdCA9IHRoaXMuX2dldEVsZW1lbnRSb3VuZGVkUmVjdChlbGVtZW50KTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuX25vcm1hbGl6ZVBvc2l0aW9uKHN5c3RlbVJlY3QpO1xuICAgIGNvbnN0IHVuc2NhbGVkU2l6ZSA9IHRoaXMuX3Vuc2NhbGVTaXplKHN5c3RlbVJlY3QpO1xuICAgIGNvbnN0IHVuc2NhbGVkUmVjdCA9IHRoaXMuX2dldFVuc2NhbGVkUmVjdChwb3NpdGlvbiwgdW5zY2FsZWRTaXplLCBzeXN0ZW1SZWN0KTtcblxuICAgIGNvbnN0IG9mZnNldFNpemUgPSB0aGlzLl9nZXRPZmZzZXRTaXplKGVsZW1lbnQsIHVuc2NhbGVkU2l6ZSk7XG5cbiAgICBjb25zdCByZWN0ID0gUm91bmRlZFJlY3QuZnJvbUNlbnRlcih1bnNjYWxlZFJlY3QsIG9mZnNldFNpemUud2lkdGgsIG9mZnNldFNpemUuaGVpZ2h0KTtcblxuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IFVwZGF0ZUZDYWNoZVJlY3RCeUVsZW1lbnRSZXF1ZXN0KGVsZW1lbnQsIHJlY3QpKTtcblxuICAgIHJldHVybiByZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RWxlbWVudFJvdW5kZWRSZWN0KGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCk6IElSb3VuZGVkUmVjdCB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFJvdW5kZWRSZWN0KFxuICAgICAgUmVjdEV4dGVuc2lvbnMuZnJvbUVsZW1lbnQoZWxlbWVudCksXG4gICAgICBlbGVtZW50LFxuICAgICAgdGhpcy5fZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Um91bmRlZFJlY3QoXG4gICAgcmVjdDogSVJlY3QsXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50LFxuICAgIHN0eWxlczogQ1NTU3R5bGVEZWNsYXJhdGlvbixcbiAgKTogUm91bmRlZFJlY3Qge1xuICAgIGNvbnN0IFtyYWRpdXMxLCByYWRpdXMyLCByYWRpdXMzLCByYWRpdXM0XSA9IHRoaXMuX25vcm1hbGl6ZUNpcmN1bGFyQm9yZGVyUmFkaWkoXG4gICAgICByZWN0LndpZHRoLFxuICAgICAgcmVjdC5oZWlnaHQsXG4gICAgICBbXG4gICAgICAgIHRoaXMuX2dldFN5c3RlbVJhZGl1cyhzdHlsZXMuYm9yZGVyVG9wTGVmdFJhZGl1cywgZWxlbWVudCwgc3R5bGVzLmZvbnRTaXplKSxcbiAgICAgICAgdGhpcy5fZ2V0U3lzdGVtUmFkaXVzKHN0eWxlcy5ib3JkZXJUb3BSaWdodFJhZGl1cywgZWxlbWVudCwgc3R5bGVzLmZvbnRTaXplKSxcbiAgICAgICAgdGhpcy5fZ2V0U3lzdGVtUmFkaXVzKHN0eWxlcy5ib3JkZXJCb3R0b21SaWdodFJhZGl1cywgZWxlbWVudCwgc3R5bGVzLmZvbnRTaXplKSxcbiAgICAgICAgdGhpcy5fZ2V0U3lzdGVtUmFkaXVzKHN0eWxlcy5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBlbGVtZW50LCBzdHlsZXMuZm9udFNpemUpLFxuICAgICAgXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBSb3VuZGVkUmVjdChcbiAgICAgIHJlY3QueCxcbiAgICAgIHJlY3QueSxcbiAgICAgIHJlY3Qud2lkdGgsXG4gICAgICByZWN0LmhlaWdodCxcbiAgICAgIHJhZGl1czEsXG4gICAgICByYWRpdXMyLFxuICAgICAgcmFkaXVzMyxcbiAgICAgIHJhZGl1czQsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldENvbXB1dGVkU3R5bGUoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50KTogQ1NTU3R5bGVEZWNsYXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXIud2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF90b1BpeGVscyh2YWx1ZTogc3RyaW5nLCBlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQsIGZvbnRTaXplOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyLnRvUGl4ZWxzKHZhbHVlLCBlbGVtZW50LmNsaWVudFdpZHRoLCBlbGVtZW50LmNsaWVudEhlaWdodCwgZm9udFNpemUpIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRTeXN0ZW1SYWRpdXMoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQsXG4gICAgZm9udFNpemU6IHN0cmluZyxcbiAgKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG9QaXhlbHModmFsdWUsIGVsZW1lbnQsIGZvbnRTaXplKSAqIHRoaXMuX3RyYW5zZm9ybS5zY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNaXJyb3JzIENTUyBib3JkZXItcmFkaXVzIG5vcm1hbGl6YXRpb24gc28gb3ZlcnNpemVkIHZhbHVlcyBsaWtlIGA5OTlweGBcbiAgICogY29sbGFwc2UgdG8gdGhlIGxhcmdlc3QgdmFsaWQgY2lyY3VsYXIgcmFkaWkgZm9yIHRoZSBjdXJyZW50IHJlY3QuXG4gICAqL1xuICBwcml2YXRlIF9ub3JtYWxpemVDaXJjdWxhckJvcmRlclJhZGlpKFxuICAgIHdpZHRoOiBudW1iZXIsXG4gICAgaGVpZ2h0OiBudW1iZXIsXG4gICAgcmFkaWk6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdLFxuICApOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gICAgY29uc3QgW3RvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21SaWdodCwgYm90dG9tTGVmdF0gPSByYWRpaS5tYXAoKHZhbHVlKSA9PlxuICAgICAgTWF0aC5tYXgoMCwgdmFsdWUpLFxuICAgICkgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbiAgICBjb25zdCBzY2FsZSA9IE1hdGgubWluKFxuICAgICAgMSxcbiAgICAgIHRoaXMuX2dldFJhZGl1c1NjYWxlRmFjdG9yKHdpZHRoLCB0b3BMZWZ0ICsgdG9wUmlnaHQpLFxuICAgICAgdGhpcy5fZ2V0UmFkaXVzU2NhbGVGYWN0b3IoaGVpZ2h0LCB0b3BSaWdodCArIGJvdHRvbVJpZ2h0KSxcbiAgICAgIHRoaXMuX2dldFJhZGl1c1NjYWxlRmFjdG9yKHdpZHRoLCBib3R0b21SaWdodCArIGJvdHRvbUxlZnQpLFxuICAgICAgdGhpcy5fZ2V0UmFkaXVzU2NhbGVGYWN0b3IoaGVpZ2h0LCBib3R0b21MZWZ0ICsgdG9wTGVmdCksXG4gICAgKTtcblxuICAgIHJldHVybiBbdG9wTGVmdCAqIHNjYWxlLCB0b3BSaWdodCAqIHNjYWxlLCBib3R0b21SaWdodCAqIHNjYWxlLCBib3R0b21MZWZ0ICogc2NhbGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmFkaXVzU2NhbGVGYWN0b3IobGltaXQ6IG51bWJlciwgc3VtOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChzdW0gPD0gMCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKGxpbWl0IDw9IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBsaW1pdCAvIHN1bTtcbiAgfVxuXG4gIHByaXZhdGUgX25vcm1hbGl6ZVBvc2l0aW9uKHJlY3Q6IElSb3VuZGVkUmVjdCk6IElQb2ludCB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZVBvaW50ZXJJbkZsb3cocmVjdCwgdGhpcy5fc3RvcmUuZmxvd0hvc3QsIHRoaXMuX3RyYW5zZm9ybSk7XG4gIH1cblxuICBwcml2YXRlIF91bnNjYWxlU2l6ZShyZWN0OiBJUm91bmRlZFJlY3QpOiBJU2l6ZSB7XG4gICAgcmV0dXJuIFNpemVFeHRlbnNpb25zLmluaXRpYWxpemUoXG4gICAgICByZWN0LndpZHRoIC8gdGhpcy5fdHJhbnNmb3JtLnNjYWxlLFxuICAgICAgcmVjdC5oZWlnaHQgLyB0aGlzLl90cmFuc2Zvcm0uc2NhbGUsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFVuc2NhbGVkUmVjdChwb3NpdGlvbjogSVBvaW50LCBzaXplOiBJU2l6ZSwgcmVjdDogSVJvdW5kZWRSZWN0KTogSVJvdW5kZWRSZWN0IHtcbiAgICByZXR1cm4gbmV3IFJvdW5kZWRSZWN0KFxuICAgICAgcG9zaXRpb24ueCxcbiAgICAgIHBvc2l0aW9uLnksXG4gICAgICBzaXplLndpZHRoLFxuICAgICAgc2l6ZS5oZWlnaHQsXG4gICAgICB0aGlzLl91bnNjYWxlUmFkaXVzKHJlY3QucmFkaXVzMSksXG4gICAgICB0aGlzLl91bnNjYWxlUmFkaXVzKHJlY3QucmFkaXVzMiksXG4gICAgICB0aGlzLl91bnNjYWxlUmFkaXVzKHJlY3QucmFkaXVzMyksXG4gICAgICB0aGlzLl91bnNjYWxlUmFkaXVzKHJlY3QucmFkaXVzNCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Vuc2NhbGVSYWRpdXMocmFkaXVzOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiByYWRpdXMgLyB0aGlzLl90cmFuc2Zvcm0uc2NhbGU7XG4gIH1cblxuICBwcml2YXRlIF9nZXRPZmZzZXRTaXplKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCwgc2l6ZTogSVNpemUpOiBJU2l6ZSB7XG4gICAgcmV0dXJuIFNpemVFeHRlbnNpb25zLm9mZnNldEZyb21FbGVtZW50KGVsZW1lbnQpIHx8IHNpemU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Directive, ElementRef, inject } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class FAutoPanBase {
|
|
4
|
+
hostElement = inject((ElementRef)).nativeElement;
|
|
5
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FAutoPanBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FAutoPanBase, ngImport: i0 });
|
|
7
|
+
}
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FAutoPanBase, decorators: [{
|
|
9
|
+
type: Directive
|
|
10
|
+
}] });
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1hdXRvLXBhbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWF1dG8tcGFuL2YtYXV0by1wYW4tYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQTRCLE1BQU0sZUFBZSxDQUFDOztBQUl4RixNQUFNLE9BQWdCLFlBQVk7SUFDaEIsV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDLGFBQWEsQ0FBQzt3R0FEeEQsWUFBWTs0RkFBWixZQUFZOzs0RkFBWixZQUFZO2tCQURqQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUhhc0hvc3RFbGVtZW50IH0gZnJvbSAnLi4vaS1oYXMtaG9zdC1lbGVtZW50JztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRkF1dG9QYW5CYXNlIGltcGxlbWVudHMgSUhhc0hvc3RFbGVtZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGhvc3RFbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KS5uYXRpdmVFbGVtZW50O1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmRWRnZVRocmVzaG9sZDogSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPG51bWJlciwgdW5rbm93bj47XG5cbiAgcHVibGljIGFic3RyYWN0IGZTcGVlZDogSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPG51bWJlciwgdW5rbm93bj47XG5cbiAgcHVibGljIGFic3RyYWN0IGZBY2NlbGVyYXRpb246IElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybTxib29sZWFuLCB1bmtub3duPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { booleanAttribute, Component, inject, numberAttribute, input, } from '@angular/core';
|
|
2
|
+
import { FMediator } from '@foblex/mediator';
|
|
3
|
+
import { FAutoPanBase } from './f-auto-pan-base';
|
|
4
|
+
import { INSTANCES, RegisterPluginInstanceRequest, RemovePluginInstanceRequest, } from '../f-storage';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class FAutoPan extends FAutoPanBase {
|
|
7
|
+
_mediator = inject(FMediator);
|
|
8
|
+
fEdgeThreshold = input(20, {
|
|
9
|
+
transform: (value) => numberAttribute(value, 20),
|
|
10
|
+
});
|
|
11
|
+
fSpeed = input(8, {
|
|
12
|
+
transform: (value) => numberAttribute(value, 8),
|
|
13
|
+
});
|
|
14
|
+
fAcceleration = input(false, {
|
|
15
|
+
transform: (value) => booleanAttribute(value),
|
|
16
|
+
});
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
this._mediator.execute(new RegisterPluginInstanceRequest(INSTANCES.AUTO_PAN, this));
|
|
19
|
+
}
|
|
20
|
+
ngOnDestroy() {
|
|
21
|
+
this._mediator.execute(new RemovePluginInstanceRequest(INSTANCES.AUTO_PAN));
|
|
22
|
+
}
|
|
23
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FAutoPan, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
24
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: FAutoPan, isStandalone: true, selector: "f-auto-pan", inputs: { fEdgeThreshold: { classPropertyName: "fEdgeThreshold", publicName: "fEdgeThreshold", isSignal: true, isRequired: false, transformFunction: null }, fSpeed: { classPropertyName: "fSpeed", publicName: "fSpeed", isSignal: true, isRequired: false, transformFunction: null }, fAcceleration: { classPropertyName: "fAcceleration", publicName: "fAcceleration", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: none;", classAttribute: "f-auto-pan f-component" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true });
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FAutoPan, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{
|
|
29
|
+
selector: 'f-auto-pan',
|
|
30
|
+
template: ``,
|
|
31
|
+
standalone: true,
|
|
32
|
+
host: {
|
|
33
|
+
class: 'f-auto-pan f-component',
|
|
34
|
+
style: 'display: none;',
|
|
35
|
+
},
|
|
36
|
+
}]
|
|
37
|
+
}] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1hdXRvLXBhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1hdXRvLXBhbi9mLWF1dG8tcGFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULE1BQU0sRUFDTixlQUFlLEVBR2YsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUNMLFNBQVMsRUFDVCw2QkFBNkIsRUFDN0IsMkJBQTJCLEdBQzVCLE1BQU0sY0FBYyxDQUFDOztBQVd0QixNQUFNLE9BQU8sUUFBUyxTQUFRLFlBQVk7SUFDdkIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUvQixjQUFjLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUN6QyxTQUFTLEVBQUUsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO0tBQzFELENBQUMsQ0FBQztJQUVhLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQ2hDLFNBQVMsRUFBRSxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDekQsQ0FBQyxDQUFDO0lBRWEsYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUU7UUFDM0MsU0FBUyxFQUFFLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7S0FDdkQsQ0FBQyxDQUFDO0lBRUksUUFBUTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksNkJBQTZCLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksMkJBQTJCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQzt3R0FyQlUsUUFBUTs0RkFBUixRQUFRLDZsQkFQVCxFQUFFOzs0RkFPRCxRQUFRO2tCQVRwQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSx3QkFBd0I7d0JBQy9CLEtBQUssRUFBRSxnQkFBZ0I7cUJBQ3hCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ29tcG9uZW50LFxuICBpbmplY3QsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZNZWRpYXRvciB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRkF1dG9QYW5CYXNlIH0gZnJvbSAnLi9mLWF1dG8tcGFuLWJhc2UnO1xuaW1wb3J0IHtcbiAgSU5TVEFOQ0VTLFxuICBSZWdpc3RlclBsdWdpbkluc3RhbmNlUmVxdWVzdCxcbiAgUmVtb3ZlUGx1Z2luSW5zdGFuY2VSZXF1ZXN0LFxufSBmcm9tICcuLi9mLXN0b3JhZ2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmLWF1dG8tcGFuJyxcbiAgdGVtcGxhdGU6IGBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdmLWF1dG8tcGFuIGYtY29tcG9uZW50JyxcbiAgICBzdHlsZTogJ2Rpc3BsYXk6IG5vbmU7JyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgRkF1dG9QYW4gZXh0ZW5kcyBGQXV0b1BhbkJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZFZGdlVGhyZXNob2xkID0gaW5wdXQoMjAsIHtcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZTogdW5rbm93bikgPT4gbnVtYmVyQXR0cmlidXRlKHZhbHVlLCAyMCksXG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBmU3BlZWQgPSBpbnB1dCg4LCB7XG4gICAgdHJhbnNmb3JtOiAodmFsdWU6IHVua25vd24pID0+IG51bWJlckF0dHJpYnV0ZSh2YWx1ZSwgOCksXG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBmQWNjZWxlcmF0aW9uID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZTogdW5rbm93bikgPT4gYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSksXG4gIH0pO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBSZWdpc3RlclBsdWdpbkluc3RhbmNlUmVxdWVzdChJTlNUQU5DRVMuQVVUT19QQU4sIHRoaXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBSZW1vdmVQbHVnaW5JbnN0YW5jZVJlcXVlc3QoSU5TVEFOQ0VTLkFVVE9fUEFOKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './f-auto-pan';
|
|
2
|
+
export * from './f-auto-pan-base';
|
|
3
|
+
export * from './providers';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtYXV0by1wYW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFFN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUVsQyxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZi1hdXRvLXBhbic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZi1hdXRvLXBhbi1iYXNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlcnMnO1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { FAutoPan } from './f-auto-pan';
|
|
2
|
+
export const F_AUTO_PAN_PROVIDERS = [FAutoPan];
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWF1dG8tcGFuL3Byb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGQXV0b1BhbiB9IGZyb20gJy4vZi1hdXRvLXBhbic7XG5cbmV4cG9ydCBjb25zdCBGX0FVVE9fUEFOX1BST1ZJREVSUyA9IFtGQXV0b1Bhbl07XG4iXX0=
|
|
@@ -141,12 +141,12 @@ export class FCanvasComponent extends FCanvasBase {
|
|
|
141
141
|
.listen(this.destroyRef, callback);
|
|
142
142
|
}
|
|
143
143
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCanvasComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
144
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: FCanvasComponent, isStandalone: true, selector: "f-canvas", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fCanvasChange: "fCanvasChange" }, host: { classAttribute: "f-component f-canvas" }, providers: [{ provide: F_CANVAS, useExisting: FCanvasComponent }], viewQueries: [{ propertyName: "fGroupsContainer", first: true, predicate: ["fGroupsContainer"], descendants: true, isSignal: true }, { propertyName: "fNodesContainer", first: true, predicate: ["fNodesContainer"], descendants: true, isSignal: true }, { propertyName: "fConnectionsContainer", first: true, predicate: ["fConnectionsContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup], [fGroups]\" />\n </div>\n <div #fConnectionsContainer class=\"f-connections-container\">\n <ng-content select=\"f-snap-connection\" />\n <ng-content select=\"f-connection, [fConnections]\" />\n <ng-content select=\"f-connection-for-create\" />\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode], [fNodes]\" />\n </div>\n</ng-container>\n", styles: [":host{position:absolute;overflow:visible;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host.canvas-dragging{transform:translateZ(0)}.f-connections-container{position:absolute;z-index:2}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
144
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: FCanvasComponent, isStandalone: true, selector: "f-canvas", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fCanvasChange: "fCanvasChange" }, host: { classAttribute: "f-component f-canvas" }, providers: [{ provide: F_CANVAS, useExisting: FCanvasComponent }], viewQueries: [{ propertyName: "fGroupsContainer", first: true, predicate: ["fGroupsContainer"], descendants: true, isSignal: true }, { propertyName: "fNodesContainer", first: true, predicate: ["fNodesContainer"], descendants: true, isSignal: true }, { propertyName: "fConnectionsContainer", first: true, predicate: ["fConnectionsContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup], [fGroups]\" />\n </div>\n <div #fConnectionsContainer class=\"f-connections-container\">\n <ng-content select=\"f-snap-connection\" />\n <ng-content select=\"f-connection, [fConnections]\" />\n <ng-content select=\"f-connection-for-create\" />\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode], [fNodes]\" />\n </div>\n</ng-container>\n", styles: [":host{position:absolute;overflow:visible;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host.f-canvas-dragging,:host.canvas-dragging{transform:translateZ(0)}.f-connections-container{position:absolute;z-index:2}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
145
145
|
}
|
|
146
146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCanvasComponent, decorators: [{
|
|
147
147
|
type: Component,
|
|
148
148
|
args: [{ selector: 'f-canvas', standalone: true, host: {
|
|
149
149
|
'class': 'f-component f-canvas',
|
|
150
|
-
}, providers: [{ provide: F_CANVAS, useExisting: FCanvasComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup], [fGroups]\" />\n </div>\n <div #fConnectionsContainer class=\"f-connections-container\">\n <ng-content select=\"f-snap-connection\" />\n <ng-content select=\"f-connection, [fConnections]\" />\n <ng-content select=\"f-connection-for-create\" />\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode], [fNodes]\" />\n </div>\n</ng-container>\n", styles: [":host{position:absolute;overflow:visible;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host.canvas-dragging{transform:translateZ(0)}.f-connections-container{position:absolute;z-index:2}\n"] }]
|
|
150
|
+
}, providers: [{ provide: F_CANVAS, useExisting: FCanvasComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup], [fGroups]\" />\n </div>\n <div #fConnectionsContainer class=\"f-connections-container\">\n <ng-content select=\"f-snap-connection\" />\n <ng-content select=\"f-connection, [fConnections]\" />\n <ng-content select=\"f-connection-for-create\" />\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode], [fNodes]\" />\n </div>\n</ng-container>\n", styles: [":host{position:absolute;overflow:visible;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host.f-canvas-dragging,:host.canvas-dragging{transform:translateZ(0)}.f-connections-container{position:absolute;z-index:2}\n"] }]
|
|
151
151
|
}] });
|
|
152
152
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jYW52YXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNhbnZhcy9mLWNhbnZhcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY2FudmFzL2YtY2FudmFzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxlQUFlLEVBR2YsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBVSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsMEJBQTBCLEVBQzFCLHVCQUF1QixFQUN2QixRQUFRLEVBQ1IsNEJBQTRCLEVBQzVCLDBCQUEwQixFQUMxQixpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLGFBQWEsRUFDYixrQkFBa0IsR0FDbkIsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQiwrQkFBK0IsRUFDL0IsNkJBQTZCLEdBQzlCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBZSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXJEOzs7Ozs7OztHQVFHO0FBWUgsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFdBQVc7SUFDOUIsU0FBUyxHQUFHLE1B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S0FBSyxDQUFDLENBQUM7YUFDaEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQzt3R0EvSlUsZ0JBQWdCOzRGQUFoQixnQkFBZ0Isd2lCQUhoQixDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyw2YUM1RG5FLGtjQWNBOzs0RkRpRGEsZ0JBQWdCO2tCQVg1QixTQUFTOytCQUNFLFVBQVUsY0FHUixJQUFJLFFBQ1Y7d0JBQ0osT0FBTyxFQUFFLHNCQUFzQjtxQkFDaEMsYUFDVSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLGtCQUFrQixFQUFFLENBQUMsbUJBQ2hELHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIGlucHV0LFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBvdXRwdXQsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGX0NBTlZBUywgRkNhbnZhc0Jhc2UgfSBmcm9tICcuL2YtY2FudmFzLWJhc2UnO1xuaW1wb3J0IHsgSVBvaW50LCBQb2ludEV4dGVuc2lvbnMsIFRyYW5zZm9ybU1vZGVsRXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgRkNhbnZhc0NoYW5nZUV2ZW50IH0gZnJvbSAnLi9kb21haW4nO1xuaW1wb3J0IHsgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQge1xuICBBZGRDYW52YXNUb1N0b3JlUmVxdWVzdCxcbiAgQ2VudGVyR3JvdXBPck5vZGVSZXF1ZXN0LFxuICBGaXRUb0Zsb3dSZXF1ZXN0LFxuICBHZXRGbG93UmVxdWVzdCxcbiAgSW5wdXRDYW52YXNQb3NpdGlvblJlcXVlc3QsXG4gIElucHV0Q2FudmFzU2NhbGVSZXF1ZXN0LFxuICBpc01vYmlsZSxcbiAgUmVtb3ZlQ2FudmFzRnJvbVN0b3JlUmVxdWVzdCxcbiAgUmVzZXRTY2FsZUFuZENlbnRlclJlcXVlc3QsXG4gIFJlc2V0U2NhbGVSZXF1ZXN0LFxuICBTZXRCYWNrZ3JvdW5kVHJhbnNmb3JtUmVxdWVzdCxcbiAgdHJhbnNpdGlvbkVuZCxcbiAgVXBkYXRlU2NhbGVSZXF1ZXN0LFxufSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHtcbiAgRkNvbXBvbmVudHNTdG9yZSxcbiAgTGlzdGVuQ29ubmVjdGlvbnNDaGFuZ2VzUmVxdWVzdCxcbiAgTm90aWZ5VHJhbnNmb3JtQ2hhbmdlZFJlcXVlc3QsXG59IGZyb20gJy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGRmxvd0Jhc2UgfSBmcm9tICcuLi9mLWZsb3cnO1xuaW1wb3J0IHsgRkNoYW5uZWxIdWIsIHRha2VPbmUgfSBmcm9tICcuLi9yZWFjdGl2aXR5JztcblxuLyoqXG4gKiBDb21wb25lbnQgcmVwcmVzZW50aW5nIGEgY2FudmFzIGluIHRoZSBGLUZsb3cgZnJhbWV3b3JrLlxuICogSXQgaGFuZGxlcyB0aGUgcmVuZGVyaW5nIG9mIG5vZGVzLCBjb25uZWN0aW9ucywgYW5kIGdyb3VwcyxcbiAqIGFzIHdlbGwgYXMgdXNlciBpbnRlcmFjdGlvbnMgc3VjaCBhcyB6b29taW5nIGFuZCBwYW5uaW5nLlxuICogSXQgZXh0ZW5kcyB0aGUgRkNhbnZhc0Jhc2UgY2xhc3MgYW5kIGltcGxlbWVudHMgT25Jbml0IGFuZCBPbkRlc3Ryb3kgbGlmZWN5Y2xlIGhvb2tzLlxuICogSXQgcHJvdmlkZXMgbWV0aG9kcyB0byBtYW5pcHVsYXRlIHRoZSBjYW52YXMsIHN1Y2ggYXMgY2VudGVyaW5nIG5vZGVzIG9yIGdyb3VwcyxcbiAqIGZpdHRpbmcgdGhlIGNhbnZhcyB0byB0aGUgc2NyZWVuLCBhbmQgcmVzZXR0aW5nIHRoZSBzY2FsZS5cbiAqIEl0IGFsc28gZW1pdHMgZXZlbnRzIHdoZW4gdGhlIGNhbnZhcyBjaGFuZ2VzLCBhbGxvd2luZyBvdGhlciBjb21wb25lbnRzIHRvIHJlYWN0IHRvIHRoZXNlIGNoYW5nZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2YtY2FudmFzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2YtY2FudmFzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZi1jYW52YXMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdmLWNvbXBvbmVudCBmLWNhbnZhcycsXG4gIH0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRl9DQU5WQVMsIHVzZUV4aXN0aW5nOiBGQ2FudmFzQ29tcG9uZW50IH1dLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRkNhbnZhc0NvbXBvbmVudCBleHRlbmRzIEZDYW52YXNCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wb25lbnRzU3RvcmUgPSBpbmplY3QoRkNvbXBvbmVudHNTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWZlcmVuY2UgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBwcml2YXRlIF9mbG93SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZkNhbnZhc0NoYW5nZSA9IG91dHB1dDxGQ2FudmFzQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8SVBvaW50LCBJUG9pbnQgfCBudWxsIHwgdW5kZWZpbmVkPihcbiAgICBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpLFxuICAgIHsgdHJhbnNmb3JtOiBQb2ludEV4dGVuc2lvbnMuY2FzdFRvUG9pbnQgfSxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHNjYWxlID0gaW5wdXQ8bnVtYmVyLCB1bmtub3duPigxLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVib3VuY2VUaW1lID0gaW5wdXQ8bnVtYmVyLCB1bmtub3duPigwLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuICBwdWJsaWMgb3ZlcnJpZGUgZGVib3VuY2UgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5kZWJvdW5jZVRpbWUoKSA8IDAgPyAwIDogdGhpcy5kZWJvdW5jZVRpbWUoKSkpO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgaG9zdEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZkdyb3Vwc0NvbnRhaW5lciA9XG4gICAgdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignZkdyb3Vwc0NvbnRhaW5lcicpO1xuICBwdWJsaWMgb3ZlcnJpZGUgZk5vZGVzQ29udGFpbmVyID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignZk5vZGVzQ29udGFpbmVyJyk7XG4gIHB1YmxpYyBvdmVycmlkZSBmQ29ubmVjdGlvbnNDb250YWluZXIgPVxuICAgIHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ2ZDb25uZWN0aW9uc0NvbnRhaW5lcicpO1xuXG4gIHB1YmxpYyBnZXQgZmxvd0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Zsb3dJZCB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mbG93SWQgPSB0aGlzLl9tZWRpYXRvci5leGVjdXRlPEZGbG93QmFzZT4obmV3IEdldEZsb3dSZXF1ZXN0KCkpLmZJZCgpO1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IEFkZENhbnZhc1RvU3RvcmVSZXF1ZXN0KHRoaXMpKTtcbiAgICB0aGlzLl9wb3NpdGlvbkNoYW5nZSgpO1xuICAgIHRoaXMuX3NjYWxlQ2hhbmdlKCk7XG4gICAgc3VwZXIuc3Vic2NyaWJlT25DYW52YXNDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Bvc2l0aW9uQ2hhbmdlKCk6IHZvaWQge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgSW5wdXRDYW52YXNQb3NpdGlvblJlcXVlc3QodGhpcy50cmFuc2Zvcm0sIHRoaXMucG9zaXRpb24oKSkpO1xuICAgICAgfSxcbiAgICAgIHsgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NjYWxlQ2hhbmdlKCk6IHZvaWQge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgSW5wdXRDYW52YXNTY2FsZVJlcXVlc3QodGhpcy50cmFuc2Zvcm0sIHRoaXMuc2NhbGUoKSkpO1xuICAgICAgfSxcbiAgICAgIHsgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWRyYXdzIHRoZSBjYW52YXMgYnkgYXBwbHlpbmcgdGhlIGN1cnJlbnQgdHJhbnNmb3JtYXRpb24uXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVkcmF3KCk6IHZvaWQge1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IFNldEJhY2tncm91bmRUcmFuc2Zvcm1SZXF1ZXN0KHRoaXMudHJhbnNmb3JtKSk7XG4gICAgdGhpcy5ob3N0RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgndHJhbnNpdGlvbicpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gVHJhbnNmb3JtTW9kZWxFeHRlbnNpb25zLnRvU3RyaW5nKHRoaXMudHJhbnNmb3JtKTtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBOb3RpZnlUcmFuc2Zvcm1DaGFuZ2VkUmVxdWVzdCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWRyYXdzIHRoZSBjYW52YXMgd2l0aCBhbiBhbmltYXRpb24gZWZmZWN0LlxuICAgKiBUaGlzIG1ldGhvZCBhcHBsaWVzIGEgQ1NTIHRyYW5zaXRpb24gdG8gdGhlIGNhbnZhcyBlbGVtZW50LFxuICAgKiBhbGxvd2luZyBmb3IgYSBzbW9vdGggdmlzdWFsIHVwZGF0ZSBvZiB0aGUgY2FudmFzJ3MgdHJhbnNmb3JtYXRpb24uXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVkcmF3V2l0aEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBTZXRCYWNrZ3JvdW5kVHJhbnNmb3JtUmVxdWVzdCh0aGlzLnRyYW5zZm9ybSkpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc3R5bGUudHJhbnNpdGlvbiA9IGB0cmFuc2Zvcm0gJHtpc01vYmlsZSgpID8gODAgOiAxNTB9bXMgZWFzZS1pbi1vdXRgO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gVHJhbnNmb3JtTW9kZWxFeHRlbnNpb25zLnRvU3RyaW5nKHRoaXMudHJhbnNmb3JtKTtcbiAgICB0cmFuc2l0aW9uRW5kKHRoaXMuaG9zdEVsZW1lbnQsICgpID0+IHRoaXMucmVkcmF3KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENlbnRlcnMgdGhlIHNwZWNpZmllZCBncm91cCBvciBub2RlIG9uIHRoZSBjYW52YXMuXG4gICAqIEBwYXJhbSBncm91cE9yTm9kZUlkIC0gVGhlIElEIG9mIHRoZSBncm91cCBvciBub2RlIHRvIGNlbnRlci5cbiAgICogQHBhcmFtIGFuaW1hdGVkIC0gSWYgdHJ1ZSwgdGhlIGNlbnRlcmluZyB3aWxsIGJlIGFuaW1hdGVkOyBvdGhlcndpc2UsIGl0IHdpbGwgYmUgaW5zdGFudGFuZW91cy5cbiAgICovXG4gIHB1YmxpYyBjZW50ZXJHcm91cE9yTm9kZShncm91cE9yTm9kZUlkOiBzdHJpbmcsIGFuaW1hdGVkOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuX2FmdGVyUmVkcmF3KCgpID0+IHtcbiAgICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IENlbnRlckdyb3VwT3JOb2RlUmVxdWVzdChncm91cE9yTm9kZUlkLCBhbmltYXRlZCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpdHMgdGhlIGNhbnZhcyB0byB0aGUgc2NyZWVuIGJ5IGFkanVzdGluZyB0aGUgc2NhbGUgYW5kIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gcGFkZGluZyAtIHBhZGRpbmdzIGZyb20gdGhlIGJvdW5kcyBvZiB0aGUgY2FudmFzXG4gICAqIEBwYXJhbSBhbmltYXRlZCAtIElmIHRydWUsIHRoZSBmaXQgd2lsbCBiZSBhbmltYXRlZDsgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGluc3RhbnRhbmVvdXMuXG4gICAqL1xuICBwdWJsaWMgZml0VG9TY3JlZW4oXG4gICAgcGFkZGluZzogSVBvaW50ID0gUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoKSxcbiAgICBhbmltYXRlZDogYm9vbGVhbiA9IHRydWUsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuX2FmdGVyUmVkcmF3KCgpID0+IHtcbiAgICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IEZpdFRvRmxvd1JlcXVlc3QocGFkZGluZywgYW5pbWF0ZWQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIHNjYWxlIGFuZCBjZW50ZXIgYWxsIG5vZGVzIGFuZCBncm91cHMgb24gdGhlIGNhbnZhcy5cbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byByZXN0b3JlIHRoZSBjYW52YXMgdG8gaXRzIGRlZmF1bHQgc2NhbGUgYW5kIHBvc2l0aW9uLFxuICAgKiBhbGxvd2luZyB1c2VycyB0byBxdWlja2x5IHJldHVybiB0byBhIHN0YW5kYXJkIHZpZXcgb2YgdGhlIGNhbnZhcyBjb250ZW50LlxuICAgKiBAcGFyYW0gYW5pbWF0ZWQgLSBJZiB0cnVlLCB0aGUgcmVzZXQgd2lsbCBiZSBhbmltYXRlZDsgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGluc3RhbnRhbmVvdXMuXG4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciBwcm92aWRpbmcgYSBzbW9vdGggdXNlciBleHBlcmllbmNlIHdoZW4gcmVzZXR0aW5nIHRoZSB2aWV3LlxuICAgKi9cbiAgcHVibGljIHJlc2V0U2NhbGVBbmRDZW50ZXIoYW5pbWF0ZWQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5fYWZ0ZXJSZWRyYXcoKCkgPT4ge1xuICAgICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgUmVzZXRTY2FsZUFuZENlbnRlclJlcXVlc3QoYW5pbWF0ZWQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgR2V0cyB0aGUgY3VycmVudCBzY2FsZSBvZiB0aGUgY2FudmFzLlxuICAgKi9cbiAgcHVibGljIGdldFNjYWxlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtLnNjYWxlIHx8IDE7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2NhbGUgb2YgdGhlIGNhbnZhcyB0byBhIHNwZWNpZmllZCB2YWx1ZS5cbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byB6b29tIGluIG9yIG91dCBvZiB0aGUgY2FudmFzLFxuICAgKiBhbGxvd2luZyB1c2VycyB0byBhZGp1c3QgdGhlIHZpZXcgb2YgdGhlIGNhbnZhcyBjb250ZW50LlxuICAgKiBAcGFyYW0gc2NhbGUgLSBUaGUgc2NhbGUgZmFjdG9yIHRvIHNldCBmb3IgdGhlIGNhbnZhcy5cbiAgICogQHBhcmFtIHRvUG9zaXRpb24gLSBUaGUgcG9zaXRpb24gdG8gd2hpY2ggdGhlIGNhbnZhcyBzaG91bGQgYmUgY2VudGVyZWQgYWZ0ZXIgc2NhbGluZy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBzZXRTY2FsZShzY2FsZTogbnVtYmVyLCB0b1Bvc2l0aW9uOiBJUG9pbnQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgVXBkYXRlU2NhbGVSZXF1ZXN0KHNjYWxlLCB0b1Bvc2l0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBzY2FsZSBvZiB0aGUgY2FudmFzIHRvIGl0cyBkZWZhdWx0IHZhbHVlLlxuICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHJlc3RvcmUgdGhlIGNhbnZhcyB0byBpdHMgb3JpZ2luYWwgc2NhbGUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVzZXRTY2FsZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBSZXNldFNjYWxlUmVxdWVzdCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBSZW1vdmVDYW52YXNGcm9tU3RvcmVSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWZ0ZXJSZWRyYXcoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29tcG9uZW50c1N0b3JlLmNvbm5lY3Rpb25zUmV2aXNpb24gPiAwKSB7XG4gICAgICBhZnRlck5leHRSZW5kZXIoY2FsbGJhY2ssIHsgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWVkaWF0b3JcbiAgICAgIC5leGVjdXRlPEZDaGFubmVsSHViPihuZXcgTGlzdGVuQ29ubmVjdGlvbnNDaGFuZ2VzUmVxdWVzdChmYWxzZSkpXG4gICAgICAucGlwZSh0YWtlT25lKCkpXG4gICAgICAubGlzdGVuKHRoaXMuZGVzdHJveVJlZiwgY2FsbGJhY2spO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyPlxuICA8ZGl2ICNmR3JvdXBzQ29udGFpbmVyPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmR3JvdXBdLCBbZkdyb3Vwc11cIiAvPlxuICA8L2Rpdj5cbiAgPGRpdiAjZkNvbm5lY3Rpb25zQ29udGFpbmVyIGNsYXNzPVwiZi1jb25uZWN0aW9ucy1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmLXNuYXAtY29ubmVjdGlvblwiIC8+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZi1jb25uZWN0aW9uLCBbZkNvbm5lY3Rpb25zXVwiIC8+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZi1jb25uZWN0aW9uLWZvci1jcmVhdGVcIiAvPlxuICA8L2Rpdj5cblxuICA8ZGl2ICNmTm9kZXNDb250YWluZXI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZOb2RlXSwgW2ZOb2Rlc11cIiAvPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|