@foblex/flow 18.2.0 → 18.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -1
- package/domain/f-connection/create-connection-markers/create-connection-markers.d.ts +3 -2
- package/domain/f-connection/redraw-connections/redraw-connections.d.ts +2 -0
- package/esm2022/domain/f-connection/create-connection-markers/create-connection-markers.mjs +33 -6
- package/esm2022/domain/f-connection/redraw-connections/redraw-connections.mjs +46 -3
- 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-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/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/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/worker/connection-worker-runtime.mjs +235 -0
- package/esm2022/f-flow/f-flow.component.mjs +8 -5
- package/esm2022/f-flow.module.mjs +37 -36
- package/esm2022/f-storage/f-components-store.mjs +17 -1
- package/esm2022/f-virtual/f-virtual-for.mjs +33 -3
- 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/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/model/f-connection-worker.d.ts +1 -0
- package/f-connection-worker/worker/connection-worker-runtime.d.ts +11 -0
- package/f-flow/f-flow.component.d.ts +1 -0
- package/f-flow.module.d.ts +38 -37
- package/f-storage/f-components-store.d.ts +5 -0
- package/f-virtual/f-virtual-for.d.ts +8 -2
- package/fesm2022/foblex-flow.mjs +509 -75
- package/fesm2022/foblex-flow.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -2,4 +2,4 @@ import { InjectionToken } from '@angular/core';
|
|
|
2
2
|
export const F_CONNECTION_COMPONENTS_PARENT = new InjectionToken('F_CONNECTION_COMPONENTS_PARENT');
|
|
3
3
|
export class FConnectionComponentsParent {
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWNvbXBvbmVudHMtcGFyZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24tdjIvbW9kZWxzL2YtY29ubmVjdGlvbi1jb21wb25lbnRzLXBhcmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSXZELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUM5RCxnQ0FBZ0MsQ0FDakMsQ0FBQztBQUVGLE1BQU0sT0FBZ0IsMkJBQTJCO0NBaUJoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVGQ29ubmVjdGFibGVTaWRlIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgRUZDb25uZWN0aW9uQmVoYXZpb3IsIEVGQ29ubmVjdGlvbkNvbm5lY3RhYmxlU2lkZSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IEZfQ09OTkVDVElPTl9DT01QT05FTlRTX1BBUkVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGQ29ubmVjdGlvbkNvbXBvbmVudHNQYXJlbnQ+KFxuICAnRl9DT05ORUNUSU9OX0NPTVBPTkVOVFNfUEFSRU5UJyxcbik7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGQ29ubmVjdGlvbkNvbXBvbmVudHNQYXJlbnQge1xuICBwdWJsaWMgYWJzdHJhY3QgZklkOiBTaWduYWw8c3RyaW5nPjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZk91dHB1dElkOiBTaWduYWw8c3RyaW5nPjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZklucHV0SWQ6IFNpZ25hbDxzdHJpbmc+O1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmQmVoYXZpb3I6IEVGQ29ubmVjdGlvbkJlaGF2aW9yO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBfYXBwbHlSZXNvbHZlZFNpZGVzVG9Db25uZWN0aW9uKFxuICAgIHNvdXJjZVNpZGU6IEVGQ29ubmVjdGFibGVTaWRlLFxuICAgIHRhcmdldFNpZGU6IEVGQ29ubmVjdGFibGVTaWRlLFxuICApOiB2b2lkO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmSW5wdXRTaWRlOiBTaWduYWw8RUZDb25uZWN0aW9uQ29ubmVjdGFibGVTaWRlPjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZk91dHB1dFNpZGU6IFNpZ25hbDxFRkNvbm5lY3Rpb25Db25uZWN0YWJsZVNpZGU+O1xufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { normalizeDomElementId } from '@foblex/utils';
|
|
2
|
-
export function createGradientDomIdentifier(componentId
|
|
3
|
-
return normalizeDomElementId('connection_gradient_' + componentId
|
|
2
|
+
export function createGradientDomIdentifier(componentId) {
|
|
3
|
+
return normalizeDomElementId('connection_gradient_' + componentId);
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWdyYWRpZW50LWRvbS1pZGVudGlmaWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24tdjIvdXRpbHMvY3JlYXRlLWdyYWRpZW50LWRvbS1pZGVudGlmaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsV0FBbUI7SUFDN0QsT0FBTyxxQkFBcUIsQ0FBQyxzQkFBc0IsR0FBRyxXQUFXLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplRG9tRWxlbWVudElkIH0gZnJvbSAnQGZvYmxleC91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHcmFkaWVudERvbUlkZW50aWZpZXIoY29tcG9uZW50SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBub3JtYWxpemVEb21FbGVtZW50SWQoJ2Nvbm5lY3Rpb25fZ3JhZGllbnRfJyArIGNvbXBvbmVudElkKTtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createGradientDomIdentifier } from './create-gradient-dom-identifier';
|
|
2
|
-
export function createGradientDomUrl(componentId
|
|
3
|
-
return `url(#${createGradientDomIdentifier(componentId
|
|
2
|
+
export function createGradientDomUrl(componentId) {
|
|
3
|
+
return `url(#${createGradientDomIdentifier(componentId)})`;
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWdyYWRpZW50LWRvbS11cmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi12Mi91dGlscy9jcmVhdGUtZ3JhZGllbnQtZG9tLXVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUvRSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsV0FBbUI7SUFDdEQsT0FBTyxRQUFRLDJCQUEyQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUdyYWRpZW50RG9tSWRlbnRpZmllciB9IGZyb20gJy4vY3JlYXRlLWdyYWRpZW50LWRvbS1pZGVudGlmaWVyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyYWRpZW50RG9tVXJsKGNvbXBvbmVudElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYHVybCgjJHtjcmVhdGVHcmFkaWVudERvbUlkZW50aWZpZXIoY29tcG9uZW50SWQpfSlgO1xufVxuIl19
|
package/esm2022/f-connection-worker/features/ensure-connection-worker/ensure-connection-worker.mjs
CHANGED
|
@@ -7,6 +7,7 @@ import { HandleConnectionWorkerMessageRequest } from '../handle-connection-worke
|
|
|
7
7
|
import { FConnectionWorker } from '../../model';
|
|
8
8
|
import { EnsureConnectionWorkerRequest } from './ensure-connection-worker-request';
|
|
9
9
|
import { ResetConnectionWorkerRuntimeRequest } from '../reset-connection-worker-runtime';
|
|
10
|
+
import { createConnectionWorkerUrl, isConnectionWorkerRuntimeSupported, resolveConnectionWorkerRuntime, revokeConnectionWorkerUrl, } from '../../worker/connection-worker-runtime';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
let EnsureConnectionWorker = class EnsureConnectionWorker {
|
|
12
13
|
_browser = inject(BrowserService);
|
|
@@ -17,12 +18,16 @@ let EnsureConnectionWorker = class EnsureConnectionWorker {
|
|
|
17
18
|
return this._state.worker;
|
|
18
19
|
}
|
|
19
20
|
const windowRef = this._browser.document.defaultView;
|
|
20
|
-
if (!windowRef
|
|
21
|
+
if (!isConnectionWorkerRuntimeSupported(windowRef)) {
|
|
21
22
|
return null;
|
|
22
23
|
}
|
|
24
|
+
const runtime = resolveConnectionWorkerRuntime(windowRef);
|
|
25
|
+
if (!runtime) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const workerUrl = createConnectionWorkerUrl(runtime);
|
|
23
29
|
try {
|
|
24
|
-
const worker = new
|
|
25
|
-
type: 'module',
|
|
30
|
+
const worker = new runtime.workerCtor(workerUrl, {
|
|
26
31
|
name: 'f-flow-connection-worker',
|
|
27
32
|
});
|
|
28
33
|
worker.onmessage = (event) => {
|
|
@@ -34,10 +39,12 @@ let EnsureConnectionWorker = class EnsureConnectionWorker {
|
|
|
34
39
|
worker.onmessageerror = () => {
|
|
35
40
|
this._resetWorkerAfterRuntimeError(new Error('Connection worker message deserialization error.'));
|
|
36
41
|
};
|
|
42
|
+
this._state.workerUrl = workerUrl;
|
|
37
43
|
this._state.worker = worker;
|
|
38
44
|
return worker;
|
|
39
45
|
}
|
|
40
46
|
catch (error) {
|
|
47
|
+
revokeConnectionWorkerUrl(workerUrl, runtime.urlApi);
|
|
41
48
|
this._disableWorker(error instanceof Error ? error : new Error('Connection worker initialization failed.'));
|
|
42
49
|
return null;
|
|
43
50
|
}
|
|
@@ -58,4 +65,4 @@ export { EnsureConnectionWorker };
|
|
|
58
65
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EnsureConnectionWorker, decorators: [{
|
|
59
66
|
type: Injectable
|
|
60
67
|
}] });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5zdXJlLWNvbm5lY3Rpb24td29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24td29ya2VyL2ZlYXR1cmVzL2Vuc3VyZS1jb25uZWN0aW9uLXdvcmtlci9lbnN1cmUtY29ubmVjdGlvbi13b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUE4QixNQUFNLGFBQWEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RixPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGtDQUFrQyxFQUNsQyw4QkFBOEIsRUFDOUIseUJBQXlCLEdBQzFCLE1BQU0sd0NBQXdDLENBQUM7O0FBSXpDLElBQU0sc0JBQXNCLEdBQTVCLE1BQU0sc0JBQXNCO0lBR2hCLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25DLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFeEMsTUFBTSxDQUFDLENBQWdDO1FBQzVDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDckQsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsOEJBQThCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtnQkFDL0MsSUFBSSxFQUFFLDBCQUEwQjthQUNqQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBK0MsRUFBRSxFQUFFO2dCQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLG9DQUFvQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQy9FLENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO2dCQUNwQixJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFO2dCQUMzQixJQUFJLENBQUMsNkJBQTZCLENBQ2hDLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQzlELENBQUM7WUFDSixDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBRTVCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YseUJBQXlCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxDQUNqQixLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQ3ZGLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQVk7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxLQUFZO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO3dHQTdEVSxzQkFBc0I7NEdBQXRCLHNCQUFzQjs7QUFBdEIsc0JBQXNCO0lBRGxDLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDO0dBQ3JDLHNCQUFzQixDQThEbEM7OzRGQTlEWSxzQkFBc0I7a0JBRmxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnQGZvYmxleC9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRGlzYWJsZUNvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0IH0gZnJvbSAnLi4vZGlzYWJsZS1jb25uZWN0aW9uLXdvcmtlcic7XG5pbXBvcnQgeyBIYW5kbGVDb25uZWN0aW9uV29ya2VyTWVzc2FnZVJlcXVlc3QgfSBmcm9tICcuLi9oYW5kbGUtY29ubmVjdGlvbi13b3JrZXItbWVzc2FnZSc7XG5pbXBvcnQgeyBGQ29ubmVjdGlvbldvcmtlciwgSUZDb25uZWN0aW9uV29ya2VyUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbCc7XG5pbXBvcnQgeyBFbnN1cmVDb25uZWN0aW9uV29ya2VyUmVxdWVzdCB9IGZyb20gJy4vZW5zdXJlLWNvbm5lY3Rpb24td29ya2VyLXJlcXVlc3QnO1xuaW1wb3J0IHsgUmVzZXRDb25uZWN0aW9uV29ya2VyUnVudGltZVJlcXVlc3QgfSBmcm9tICcuLi9yZXNldC1jb25uZWN0aW9uLXdvcmtlci1ydW50aW1lJztcbmltcG9ydCB7XG4gIGNyZWF0ZUNvbm5lY3Rpb25Xb3JrZXJVcmwsXG4gIGlzQ29ubmVjdGlvbldvcmtlclJ1bnRpbWVTdXBwb3J0ZWQsXG4gIHJlc29sdmVDb25uZWN0aW9uV29ya2VyUnVudGltZSxcbiAgcmV2b2tlQ29ubmVjdGlvbldvcmtlclVybCxcbn0gZnJvbSAnLi4vLi4vd29ya2VyL2Nvbm5lY3Rpb24td29ya2VyLXJ1bnRpbWUnO1xuXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKEVuc3VyZUNvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIEVuc3VyZUNvbm5lY3Rpb25Xb3JrZXJcbiAgaW1wbGVtZW50cyBJRXhlY3V0aW9uPEVuc3VyZUNvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0LCBXb3JrZXIgfCBudWxsPlxue1xuICBwcml2YXRlIHJlYWRvbmx5IF9icm93c2VyID0gaW5qZWN0KEJyb3dzZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGUgPSBpbmplY3QoRkNvbm5lY3Rpb25Xb3JrZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuXG4gIHB1YmxpYyBoYW5kbGUoXzogRW5zdXJlQ29ubmVjdGlvbldvcmtlclJlcXVlc3QpOiBXb3JrZXIgfCBudWxsIHtcbiAgICBpZiAodGhpcy5fc3RhdGUud29ya2VyKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdGUud29ya2VyO1xuICAgIH1cblxuICAgIGNvbnN0IHdpbmRvd1JlZiA9IHRoaXMuX2Jyb3dzZXIuZG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gICAgaWYgKCFpc0Nvbm5lY3Rpb25Xb3JrZXJSdW50aW1lU3VwcG9ydGVkKHdpbmRvd1JlZikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bnRpbWUgPSByZXNvbHZlQ29ubmVjdGlvbldvcmtlclJ1bnRpbWUod2luZG93UmVmKTtcbiAgICBpZiAoIXJ1bnRpbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHdvcmtlclVybCA9IGNyZWF0ZUNvbm5lY3Rpb25Xb3JrZXJVcmwocnVudGltZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgd29ya2VyID0gbmV3IHJ1bnRpbWUud29ya2VyQ3Rvcih3b3JrZXJVcmwsIHtcbiAgICAgICAgbmFtZTogJ2YtZmxvdy1jb25uZWN0aW9uLXdvcmtlcicsXG4gICAgICB9KTtcblxuICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50PElGQ29ubmVjdGlvbldvcmtlclJlc3BvbnNlPikgPT4ge1xuICAgICAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBIYW5kbGVDb25uZWN0aW9uV29ya2VyTWVzc2FnZVJlcXVlc3QoZXZlbnQuZGF0YSkpO1xuICAgICAgfTtcbiAgICAgIHdvcmtlci5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZXNldFdvcmtlckFmdGVyUnVudGltZUVycm9yKG5ldyBFcnJvcignQ29ubmVjdGlvbiB3b3JrZXIgcnVudGltZSBlcnJvci4nKSk7XG4gICAgICB9O1xuICAgICAgd29ya2VyLm9ubWVzc2FnZWVycm9yID0gKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZXNldFdvcmtlckFmdGVyUnVudGltZUVycm9yKFxuICAgICAgICAgIG5ldyBFcnJvcignQ29ubmVjdGlvbiB3b3JrZXIgbWVzc2FnZSBkZXNlcmlhbGl6YXRpb24gZXJyb3IuJyksXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9zdGF0ZS53b3JrZXJVcmwgPSB3b3JrZXJVcmw7XG4gICAgICB0aGlzLl9zdGF0ZS53b3JrZXIgPSB3b3JrZXI7XG5cbiAgICAgIHJldHVybiB3b3JrZXI7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldm9rZUNvbm5lY3Rpb25Xb3JrZXJVcmwod29ya2VyVXJsLCBydW50aW1lLnVybEFwaSk7XG4gICAgICB0aGlzLl9kaXNhYmxlV29ya2VyKFxuICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoJ0Nvbm5lY3Rpb24gd29ya2VyIGluaXRpYWxpemF0aW9uIGZhaWxlZC4nKSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVXb3JrZXIoZXJyb3I6IEVycm9yKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgRGlzYWJsZUNvbm5lY3Rpb25Xb3JrZXJSZXF1ZXN0KGVycm9yKSk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldFdvcmtlckFmdGVyUnVudGltZUVycm9yKGVycm9yOiBFcnJvcik6IHZvaWQge1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IFJlc2V0Q29ubmVjdGlvbldvcmtlclJ1bnRpbWVSZXF1ZXN0KGVycm9yKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,6 +4,7 @@ import { BrowserService } from '@foblex/platform';
|
|
|
4
4
|
import { FExecutionRegister } from '@foblex/mediator';
|
|
5
5
|
import { FConnectionWorker } from '../../model';
|
|
6
6
|
import { IsConnectionWorkerEnabledRequest } from './is-connection-worker-enabled-request';
|
|
7
|
+
import { isConnectionWorkerRuntimeSupported } from '../../worker/connection-worker-runtime';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
let IsConnectionWorkerEnabled = class IsConnectionWorkerEnabled {
|
|
9
10
|
_browser = inject(BrowserService);
|
|
@@ -16,7 +17,7 @@ let IsConnectionWorkerEnabled = class IsConnectionWorkerEnabled {
|
|
|
16
17
|
return false;
|
|
17
18
|
}
|
|
18
19
|
const windowRef = this._browser.document.defaultView;
|
|
19
|
-
return
|
|
20
|
+
return isConnectionWorkerRuntimeSupported(windowRef);
|
|
20
21
|
}
|
|
21
22
|
_isWorkerAvailable() {
|
|
22
23
|
return this._browser.isBrowser();
|
|
@@ -31,4 +32,4 @@ export { IsConnectionWorkerEnabled };
|
|
|
31
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IsConnectionWorkerEnabled, decorators: [{
|
|
32
33
|
type: Injectable
|
|
33
34
|
}] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtY29ubmVjdGlvbi13b3JrZXItZW5hYmxlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uLXdvcmtlci9mZWF0dXJlcy9pcy1jb25uZWN0aW9uLXdvcmtlci1lbmFibGVkL2lzLWNvbm5lY3Rpb24td29ya2VyLWVuYWJsZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBSXJGLElBQU0seUJBQXlCLEdBQS9CLE1BQU0seUJBQXlCO0lBR25CLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTdDLE1BQU0sQ0FBQyxDQUFtQztRQUMvQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDL0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBRXJELE9BQU8sa0NBQWtDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkMsQ0FBQzt3R0F0QlUseUJBQXlCOzRHQUF6Qix5QkFBeUI7O0FBQXpCLHlCQUF5QjtJQURyQyxrQkFBa0IsQ0FBQyxnQ0FBZ0MsQ0FBQztHQUN4Qyx5QkFBeUIsQ0F1QnJDOzs0RkF2QlkseUJBQXlCO2tCQUZyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJ0Bmb2JsZXgvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRkV4ZWN1dGlvblJlZ2lzdGVyLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGQ29ubmVjdGlvbldvcmtlciB9IGZyb20gJy4uLy4uL21vZGVsJztcbmltcG9ydCB7IElzQ29ubmVjdGlvbldvcmtlckVuYWJsZWRSZXF1ZXN0IH0gZnJvbSAnLi9pcy1jb25uZWN0aW9uLXdvcmtlci1lbmFibGVkLXJlcXVlc3QnO1xuaW1wb3J0IHsgaXNDb25uZWN0aW9uV29ya2VyUnVudGltZVN1cHBvcnRlZCB9IGZyb20gJy4uLy4uL3dvcmtlci9jb25uZWN0aW9uLXdvcmtlci1ydW50aW1lJztcblxuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihJc0Nvbm5lY3Rpb25Xb3JrZXJFbmFibGVkUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBJc0Nvbm5lY3Rpb25Xb3JrZXJFbmFibGVkXG4gIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxJc0Nvbm5lY3Rpb25Xb3JrZXJFbmFibGVkUmVxdWVzdCwgYm9vbGVhbj5cbntcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJvd3NlciA9IGluamVjdChCcm93c2VyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlID0gaW5qZWN0KEZDb25uZWN0aW9uV29ya2VyKTtcblxuICBwdWJsaWMgaGFuZGxlKF86IElzQ29ubmVjdGlvbldvcmtlckVuYWJsZWRSZXF1ZXN0KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlLmlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2lzV29ya2VyQXZhaWxhYmxlKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB3aW5kb3dSZWYgPSB0aGlzLl9icm93c2VyLmRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXG4gICAgcmV0dXJuIGlzQ29ubmVjdGlvbldvcmtlclJ1bnRpbWVTdXBwb3J0ZWQod2luZG93UmVmKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzV29ya2VyQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyLmlzQnJvd3NlcigpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { revokeConnectionWorkerUrl } from '../worker/connection-worker-runtime';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export class FConnectionWorker {
|
|
4
5
|
worker = null;
|
|
6
|
+
workerUrl = null;
|
|
5
7
|
nextRequestId = 0;
|
|
6
8
|
isDisabled = false;
|
|
7
9
|
pending = new Map();
|
|
@@ -10,6 +12,8 @@ export class FConnectionWorker {
|
|
|
10
12
|
this.pending.clear();
|
|
11
13
|
this.worker?.terminate();
|
|
12
14
|
this.worker = null;
|
|
15
|
+
revokeConnectionWorkerUrl(this.workerUrl);
|
|
16
|
+
this.workerUrl = null;
|
|
13
17
|
}
|
|
14
18
|
dispose() {
|
|
15
19
|
this.resetRuntime(new Error('Connection worker was destroyed.'));
|
|
@@ -20,4 +24,4 @@ export class FConnectionWorker {
|
|
|
20
24
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionWorker, decorators: [{
|
|
21
25
|
type: Injectable
|
|
22
26
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uLXdvcmtlci9tb2RlbC9mLWNvbm5lY3Rpb24td29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBR2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFDckIsTUFBTSxHQUFrQixJQUFJLENBQUM7SUFDN0IsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFaEMsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUNsQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRVYsT0FBTyxHQUFHLElBQUksR0FBRyxFQUE0QyxDQUFDO0lBRXZFLFlBQVksQ0FBQyxLQUFZO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBRW5CLHlCQUF5QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7d0dBdEJVLGlCQUFpQjs0R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVEZDb25uZWN0aW9uV29ya2VyUGVuZGluZ1JlcXVlc3QgfSBmcm9tICcuL3QtZi1jb25uZWN0aW9uLXdvcmtlci1wZW5kaW5nLXJlcXVlc3QnO1xuaW1wb3J0IHsgcmV2b2tlQ29ubmVjdGlvbldvcmtlclVybCB9IGZyb20gJy4uL3dvcmtlci9jb25uZWN0aW9uLXdvcmtlci1ydW50aW1lJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZDb25uZWN0aW9uV29ya2VyIHtcbiAgcHVibGljIHdvcmtlcjogV29ya2VyIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyB3b3JrZXJVcmw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBuZXh0UmVxdWVzdElkID0gMDtcbiAgcHVibGljIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcGVuZGluZyA9IG5ldyBNYXA8bnVtYmVyLCBURkNvbm5lY3Rpb25Xb3JrZXJQZW5kaW5nUmVxdWVzdD4oKTtcblxuICBwdWJsaWMgcmVzZXRSdW50aW1lKGVycm9yOiBFcnJvcik6IHZvaWQge1xuICAgIHRoaXMucGVuZGluZy5mb3JFYWNoKChyZXF1ZXN0KSA9PiByZXF1ZXN0LnJlamVjdChlcnJvcikpO1xuICAgIHRoaXMucGVuZGluZy5jbGVhcigpO1xuXG4gICAgdGhpcy53b3JrZXI/LnRlcm1pbmF0ZSgpO1xuICAgIHRoaXMud29ya2VyID0gbnVsbDtcblxuICAgIHJldm9rZUNvbm5lY3Rpb25Xb3JrZXJVcmwodGhpcy53b3JrZXJVcmwpO1xuICAgIHRoaXMud29ya2VyVXJsID0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRSdW50aW1lKG5ldyBFcnJvcignQ29ubmVjdGlvbiB3b3JrZXIgd2FzIGRlc3Ryb3llZC4nKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
const F_CONNECTION_WORKER_SOURCE = String.raw `
|
|
2
|
+
const EPSILON = 0.5;
|
|
3
|
+
|
|
4
|
+
addEventListener('message', (event) => {
|
|
5
|
+
const data = event?.data;
|
|
6
|
+
const requestId = data?.requestId;
|
|
7
|
+
const items = Array.isArray(data?.items) ? data.items : [];
|
|
8
|
+
|
|
9
|
+
try {
|
|
10
|
+
const results = items.map((item) => calculateItem(item));
|
|
11
|
+
postMessage({ requestId, results });
|
|
12
|
+
} catch (error) {
|
|
13
|
+
const message = error instanceof Error ? error.message : 'Connection worker failed.';
|
|
14
|
+
postMessage({ requestId, error: message });
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
function calculateItem(item) {
|
|
19
|
+
const sourceCenterX = item.sourceRect.x + item.sourceRect.width / 2;
|
|
20
|
+
const sourceCenterY = item.sourceRect.y + item.sourceRect.height / 2;
|
|
21
|
+
const targetCenterX = item.targetRect.x + item.targetRect.width / 2;
|
|
22
|
+
const targetCenterY = item.targetRect.y + item.targetRect.height / 2;
|
|
23
|
+
|
|
24
|
+
const sourceSide = resolveConnectableSide(
|
|
25
|
+
item.outputSide,
|
|
26
|
+
targetCenterX - sourceCenterX,
|
|
27
|
+
targetCenterY - sourceCenterY,
|
|
28
|
+
item.sourceConnectableSide,
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
const targetSide = resolveConnectableSide(
|
|
32
|
+
item.inputSide,
|
|
33
|
+
sourceCenterX - targetCenterX,
|
|
34
|
+
sourceCenterY - targetCenterY,
|
|
35
|
+
item.targetConnectableSide,
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
if (item.behavior === 'fixed_center') {
|
|
39
|
+
return {
|
|
40
|
+
originalIndex: item.originalIndex,
|
|
41
|
+
supported: true,
|
|
42
|
+
sourceSide,
|
|
43
|
+
targetSide,
|
|
44
|
+
line: {
|
|
45
|
+
point1: { x: sourceCenterX, y: sourceCenterY },
|
|
46
|
+
point2: { x: targetCenterX, y: targetCenterY },
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (item.behavior !== 'fixed') {
|
|
52
|
+
if (item.behavior !== 'floating') {
|
|
53
|
+
return { originalIndex: item.originalIndex, supported: false };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
originalIndex: item.originalIndex,
|
|
58
|
+
supported: true,
|
|
59
|
+
sourceSide,
|
|
60
|
+
targetSide,
|
|
61
|
+
line: buildFloatingLine(item.sourceRect, item.targetRect),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const line = buildFixedLine(item.sourceRect, item.targetRect, sourceSide, targetSide);
|
|
66
|
+
if (!line) {
|
|
67
|
+
return { originalIndex: item.originalIndex, supported: false };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return {
|
|
71
|
+
originalIndex: item.originalIndex,
|
|
72
|
+
supported: true,
|
|
73
|
+
sourceSide,
|
|
74
|
+
targetSide,
|
|
75
|
+
line,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function resolveConnectableSide(requestedSide, deltaX, deltaY, fallbackSide) {
|
|
80
|
+
if (requestedSide === 'default') {
|
|
81
|
+
return fallbackSide;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const absX = Math.abs(deltaX);
|
|
85
|
+
const absY = Math.abs(deltaY);
|
|
86
|
+
const nearZero = absX < EPSILON && absY < EPSILON;
|
|
87
|
+
|
|
88
|
+
if (nearZero) {
|
|
89
|
+
return fallbackSide;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const horizontalDominant = absX >= absY;
|
|
93
|
+
|
|
94
|
+
switch (requestedSide) {
|
|
95
|
+
case 'calculate':
|
|
96
|
+
return horizontalDominant ? (deltaX >= 0 ? 'right' : 'left') : deltaY >= 0 ? 'bottom' : 'top';
|
|
97
|
+
|
|
98
|
+
case 'calculate_horizontal':
|
|
99
|
+
if (absX < EPSILON) {
|
|
100
|
+
return fallbackSide;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return deltaX >= 0 ? 'right' : 'left';
|
|
104
|
+
|
|
105
|
+
case 'calculate_vertical':
|
|
106
|
+
if (absY < EPSILON) {
|
|
107
|
+
return fallbackSide;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return deltaY >= 0 ? 'bottom' : 'top';
|
|
111
|
+
|
|
112
|
+
case 'top':
|
|
113
|
+
case 'bottom':
|
|
114
|
+
case 'left':
|
|
115
|
+
case 'right':
|
|
116
|
+
return requestedSide;
|
|
117
|
+
|
|
118
|
+
default:
|
|
119
|
+
return fallbackSide;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function buildFixedLine(sourceRect, targetRect, sourceSide, targetSide) {
|
|
124
|
+
const sourceAnchor = sourceSide === 'auto' ? 'bottom' : sourceSide;
|
|
125
|
+
const targetAnchor = targetSide === 'auto' ? 'top' : targetSide;
|
|
126
|
+
|
|
127
|
+
const point1 = getSidePoint(sourceRect, sourceAnchor);
|
|
128
|
+
const point2 = getSidePoint(targetRect, targetAnchor);
|
|
129
|
+
|
|
130
|
+
if (!point1 || !point2) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return { point1, point2 };
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function buildFloatingLine(sourceRect, targetRect) {
|
|
138
|
+
const sourceCenter = getRectCenter(sourceRect);
|
|
139
|
+
const targetCenter = getRectCenter(targetRect);
|
|
140
|
+
|
|
141
|
+
return {
|
|
142
|
+
point1: getRectBorderIntersection(sourceRect, sourceCenter, targetCenter),
|
|
143
|
+
point2: getRectBorderIntersection(targetRect, targetCenter, sourceCenter),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function getRectCenter(rect) {
|
|
148
|
+
return {
|
|
149
|
+
x: rect.x + rect.width / 2,
|
|
150
|
+
y: rect.y + rect.height / 2,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function getRectBorderIntersection(rect, from, to) {
|
|
155
|
+
const halfWidth = rect.width / 2;
|
|
156
|
+
const halfHeight = rect.height / 2;
|
|
157
|
+
const center = getRectCenter(rect);
|
|
158
|
+
|
|
159
|
+
const dx = to.x - from.x;
|
|
160
|
+
const dy = to.y - from.y;
|
|
161
|
+
|
|
162
|
+
if (Math.abs(dx) < EPSILON && Math.abs(dy) < EPSILON) {
|
|
163
|
+
return center;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const scaleX = Math.abs(dx) < EPSILON ? Number.POSITIVE_INFINITY : halfWidth / Math.abs(dx);
|
|
167
|
+
const scaleY = Math.abs(dy) < EPSILON ? Number.POSITIVE_INFINITY : halfHeight / Math.abs(dy);
|
|
168
|
+
const scale = Math.min(scaleX, scaleY);
|
|
169
|
+
|
|
170
|
+
return {
|
|
171
|
+
x: center.x + dx * scale,
|
|
172
|
+
y: center.y + dy * scale,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function getSidePoint(rect, side) {
|
|
177
|
+
const centerX = rect.x + rect.width / 2;
|
|
178
|
+
const centerY = rect.y + rect.height / 2;
|
|
179
|
+
|
|
180
|
+
switch (side) {
|
|
181
|
+
case 'top':
|
|
182
|
+
return { x: centerX, y: rect.y };
|
|
183
|
+
|
|
184
|
+
case 'right':
|
|
185
|
+
return { x: rect.x + rect.width, y: centerY };
|
|
186
|
+
|
|
187
|
+
case 'bottom':
|
|
188
|
+
return { x: centerX, y: rect.y + rect.height };
|
|
189
|
+
|
|
190
|
+
case 'left':
|
|
191
|
+
return { x: rect.x, y: centerY };
|
|
192
|
+
|
|
193
|
+
default:
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
`.trim();
|
|
198
|
+
export function isConnectionWorkerRuntimeSupported(windowRef) {
|
|
199
|
+
return !!resolveConnectionWorkerRuntime(windowRef);
|
|
200
|
+
}
|
|
201
|
+
export function resolveConnectionWorkerRuntime(windowRef) {
|
|
202
|
+
const runtimeWindow = windowRef;
|
|
203
|
+
const blobCtor = runtimeWindow?.Blob;
|
|
204
|
+
const workerCtor = runtimeWindow?.Worker;
|
|
205
|
+
const urlApi = runtimeWindow?.URL;
|
|
206
|
+
if (!blobCtor || !workerCtor) {
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
if (typeof urlApi?.createObjectURL !== 'function' ||
|
|
210
|
+
typeof urlApi.revokeObjectURL !== 'function') {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
blobCtor,
|
|
215
|
+
workerCtor,
|
|
216
|
+
urlApi,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
export function createConnectionWorkerUrl(runtime) {
|
|
220
|
+
const blob = new runtime.blobCtor([F_CONNECTION_WORKER_SOURCE], {
|
|
221
|
+
type: 'text/javascript',
|
|
222
|
+
});
|
|
223
|
+
return runtime.urlApi.createObjectURL(blob);
|
|
224
|
+
}
|
|
225
|
+
export function revokeConnectionWorkerUrl(workerUrl, urlApi) {
|
|
226
|
+
if (!workerUrl) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const resolvedUrlApi = urlApi ?? (typeof URL === 'undefined' ? null : URL);
|
|
230
|
+
if (typeof resolvedUrlApi?.revokeObjectURL !== 'function') {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
resolvedUrlApi.revokeObjectURL(workerUrl);
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi13b3JrZXItcnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uLXdvcmtlci93b3JrZXIvY29ubmVjdGlvbi13b3JrZXItcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLDBCQUEwQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvTTVDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFFVCxNQUFNLFVBQVUsa0NBQWtDLENBQUMsU0FBb0M7SUFDckYsT0FBTyxDQUFDLENBQUMsOEJBQThCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsU0FBb0M7SUFFcEMsTUFBTSxhQUFhLEdBQUcsU0FBbUUsQ0FBQztJQUMxRixNQUFNLFFBQVEsR0FBRyxhQUFhLEVBQUUsSUFBSSxDQUFDO0lBQ3JDLE1BQU0sVUFBVSxHQUFHLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDekMsTUFBTSxNQUFNLEdBQUcsYUFBYSxFQUFFLEdBQUcsQ0FBQztJQUNsQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFDRSxPQUFPLE1BQU0sRUFBRSxlQUFlLEtBQUssVUFBVTtRQUM3QyxPQUFPLE1BQU0sQ0FBQyxlQUFlLEtBQUssVUFBVSxFQUM1QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTztRQUNMLFFBQVE7UUFDUixVQUFVO1FBQ1YsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE9BQWlDO0lBQ3pFLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEVBQUU7UUFDOUQsSUFBSSxFQUFFLGlCQUFpQjtLQUN4QixDQUFDLENBQUM7SUFFSCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLFNBQW9DLEVBQ3BDLE1BQW1EO0lBRW5ELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNFLElBQUksT0FBTyxjQUFjLEVBQUUsZUFBZSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFELE9BQU87SUFDVCxDQUFDO0lBRUQsY0FBYyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBUQ29ubmVjdGlvbldvcmtlclVybEFwaSA9IFBpY2s8dHlwZW9mIFVSTCwgJ2NyZWF0ZU9iamVjdFVSTCcgfCAncmV2b2tlT2JqZWN0VVJMJz47XG5cbnR5cGUgVENvbm5lY3Rpb25Xb3JrZXJSdW50aW1lID0ge1xuICBibG9iQ3RvcjogdHlwZW9mIEJsb2I7XG4gIHdvcmtlckN0b3I6IHR5cGVvZiBXb3JrZXI7XG4gIHVybEFwaTogVENvbm5lY3Rpb25Xb3JrZXJVcmxBcGk7XG59O1xuXG5jb25zdCBGX0NPTk5FQ1RJT05fV09SS0VSX1NPVVJDRSA9IFN0cmluZy5yYXdgXG5jb25zdCBFUFNJTE9OID0gMC41O1xuXG5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGV2ZW50KSA9PiB7XG4gIGNvbnN0IGRhdGEgPSBldmVudD8uZGF0YTtcbiAgY29uc3QgcmVxdWVzdElkID0gZGF0YT8ucmVxdWVzdElkO1xuICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkoZGF0YT8uaXRlbXMpID8gZGF0YS5pdGVtcyA6IFtdO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGl0ZW1zLm1hcCgoaXRlbSkgPT4gY2FsY3VsYXRlSXRlbShpdGVtKSk7XG4gICAgcG9zdE1lc3NhZ2UoeyByZXF1ZXN0SWQsIHJlc3VsdHMgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0Nvbm5lY3Rpb24gd29ya2VyIGZhaWxlZC4nO1xuICAgIHBvc3RNZXNzYWdlKHsgcmVxdWVzdElkLCBlcnJvcjogbWVzc2FnZSB9KTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUl0ZW0oaXRlbSkge1xuICBjb25zdCBzb3VyY2VDZW50ZXJYID0gaXRlbS5zb3VyY2VSZWN0LnggKyBpdGVtLnNvdXJjZVJlY3Qud2lkdGggLyAyO1xuICBjb25zdCBzb3VyY2VDZW50ZXJZID0gaXRlbS5zb3VyY2VSZWN0LnkgKyBpdGVtLnNvdXJjZVJlY3QuaGVpZ2h0IC8gMjtcbiAgY29uc3QgdGFyZ2V0Q2VudGVyWCA9IGl0ZW0udGFyZ2V0UmVjdC54ICsgaXRlbS50YXJnZXRSZWN0LndpZHRoIC8gMjtcbiAgY29uc3QgdGFyZ2V0Q2VudGVyWSA9IGl0ZW0udGFyZ2V0UmVjdC55ICsgaXRlbS50YXJnZXRSZWN0LmhlaWdodCAvIDI7XG5cbiAgY29uc3Qgc291cmNlU2lkZSA9IHJlc29sdmVDb25uZWN0YWJsZVNpZGUoXG4gICAgaXRlbS5vdXRwdXRTaWRlLFxuICAgIHRhcmdldENlbnRlclggLSBzb3VyY2VDZW50ZXJYLFxuICAgIHRhcmdldENlbnRlclkgLSBzb3VyY2VDZW50ZXJZLFxuICAgIGl0ZW0uc291cmNlQ29ubmVjdGFibGVTaWRlLFxuICApO1xuXG4gIGNvbnN0IHRhcmdldFNpZGUgPSByZXNvbHZlQ29ubmVjdGFibGVTaWRlKFxuICAgIGl0ZW0uaW5wdXRTaWRlLFxuICAgIHNvdXJjZUNlbnRlclggLSB0YXJnZXRDZW50ZXJYLFxuICAgIHNvdXJjZUNlbnRlclkgLSB0YXJnZXRDZW50ZXJZLFxuICAgIGl0ZW0udGFyZ2V0Q29ubmVjdGFibGVTaWRlLFxuICApO1xuXG4gIGlmIChpdGVtLmJlaGF2aW9yID09PSAnZml4ZWRfY2VudGVyJykge1xuICAgIHJldHVybiB7XG4gICAgICBvcmlnaW5hbEluZGV4OiBpdGVtLm9yaWdpbmFsSW5kZXgsXG4gICAgICBzdXBwb3J0ZWQ6IHRydWUsXG4gICAgICBzb3VyY2VTaWRlLFxuICAgICAgdGFyZ2V0U2lkZSxcbiAgICAgIGxpbmU6IHtcbiAgICAgICAgcG9pbnQxOiB7IHg6IHNvdXJjZUNlbnRlclgsIHk6IHNvdXJjZUNlbnRlclkgfSxcbiAgICAgICAgcG9pbnQyOiB7IHg6IHRhcmdldENlbnRlclgsIHk6IHRhcmdldENlbnRlclkgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGlmIChpdGVtLmJlaGF2aW9yICE9PSAnZml4ZWQnKSB7XG4gICAgaWYgKGl0ZW0uYmVoYXZpb3IgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHJldHVybiB7IG9yaWdpbmFsSW5kZXg6IGl0ZW0ub3JpZ2luYWxJbmRleCwgc3VwcG9ydGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBvcmlnaW5hbEluZGV4OiBpdGVtLm9yaWdpbmFsSW5kZXgsXG4gICAgICBzdXBwb3J0ZWQ6IHRydWUsXG4gICAgICBzb3VyY2VTaWRlLFxuICAgICAgdGFyZ2V0U2lkZSxcbiAgICAgIGxpbmU6IGJ1aWxkRmxvYXRpbmdMaW5lKGl0ZW0uc291cmNlUmVjdCwgaXRlbS50YXJnZXRSZWN0KSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbGluZSA9IGJ1aWxkRml4ZWRMaW5lKGl0ZW0uc291cmNlUmVjdCwgaXRlbS50YXJnZXRSZWN0LCBzb3VyY2VTaWRlLCB0YXJnZXRTaWRlKTtcbiAgaWYgKCFsaW5lKSB7XG4gICAgcmV0dXJuIHsgb3JpZ2luYWxJbmRleDogaXRlbS5vcmlnaW5hbEluZGV4LCBzdXBwb3J0ZWQ6IGZhbHNlIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG9yaWdpbmFsSW5kZXg6IGl0ZW0ub3JpZ2luYWxJbmRleCxcbiAgICBzdXBwb3J0ZWQ6IHRydWUsXG4gICAgc291cmNlU2lkZSxcbiAgICB0YXJnZXRTaWRlLFxuICAgIGxpbmUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb25uZWN0YWJsZVNpZGUocmVxdWVzdGVkU2lkZSwgZGVsdGFYLCBkZWx0YVksIGZhbGxiYWNrU2lkZSkge1xuICBpZiAocmVxdWVzdGVkU2lkZSA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgcmV0dXJuIGZhbGxiYWNrU2lkZTtcbiAgfVxuXG4gIGNvbnN0IGFic1ggPSBNYXRoLmFicyhkZWx0YVgpO1xuICBjb25zdCBhYnNZID0gTWF0aC5hYnMoZGVsdGFZKTtcbiAgY29uc3QgbmVhclplcm8gPSBhYnNYIDwgRVBTSUxPTiAmJiBhYnNZIDwgRVBTSUxPTjtcblxuICBpZiAobmVhclplcm8pIHtcbiAgICByZXR1cm4gZmFsbGJhY2tTaWRlO1xuICB9XG5cbiAgY29uc3QgaG9yaXpvbnRhbERvbWluYW50ID0gYWJzWCA+PSBhYnNZO1xuXG4gIHN3aXRjaCAocmVxdWVzdGVkU2lkZSkge1xuICAgIGNhc2UgJ2NhbGN1bGF0ZSc6XG4gICAgICByZXR1cm4gaG9yaXpvbnRhbERvbWluYW50ID8gKGRlbHRhWCA+PSAwID8gJ3JpZ2h0JyA6ICdsZWZ0JykgOiBkZWx0YVkgPj0gMCA/ICdib3R0b20nIDogJ3RvcCc7XG5cbiAgICBjYXNlICdjYWxjdWxhdGVfaG9yaXpvbnRhbCc6XG4gICAgICBpZiAoYWJzWCA8IEVQU0lMT04pIHtcbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrU2lkZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRlbHRhWCA+PSAwID8gJ3JpZ2h0JyA6ICdsZWZ0JztcblxuICAgIGNhc2UgJ2NhbGN1bGF0ZV92ZXJ0aWNhbCc6XG4gICAgICBpZiAoYWJzWSA8IEVQU0lMT04pIHtcbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrU2lkZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRlbHRhWSA+PSAwID8gJ2JvdHRvbScgOiAndG9wJztcblxuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gcmVxdWVzdGVkU2lkZTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsbGJhY2tTaWRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRml4ZWRMaW5lKHNvdXJjZVJlY3QsIHRhcmdldFJlY3QsIHNvdXJjZVNpZGUsIHRhcmdldFNpZGUpIHtcbiAgY29uc3Qgc291cmNlQW5jaG9yID0gc291cmNlU2lkZSA9PT0gJ2F1dG8nID8gJ2JvdHRvbScgOiBzb3VyY2VTaWRlO1xuICBjb25zdCB0YXJnZXRBbmNob3IgPSB0YXJnZXRTaWRlID09PSAnYXV0bycgPyAndG9wJyA6IHRhcmdldFNpZGU7XG5cbiAgY29uc3QgcG9pbnQxID0gZ2V0U2lkZVBvaW50KHNvdXJjZVJlY3QsIHNvdXJjZUFuY2hvcik7XG4gIGNvbnN0IHBvaW50MiA9IGdldFNpZGVQb2ludCh0YXJnZXRSZWN0LCB0YXJnZXRBbmNob3IpO1xuXG4gIGlmICghcG9pbnQxIHx8ICFwb2ludDIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7IHBvaW50MSwgcG9pbnQyIH07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRmxvYXRpbmdMaW5lKHNvdXJjZVJlY3QsIHRhcmdldFJlY3QpIHtcbiAgY29uc3Qgc291cmNlQ2VudGVyID0gZ2V0UmVjdENlbnRlcihzb3VyY2VSZWN0KTtcbiAgY29uc3QgdGFyZ2V0Q2VudGVyID0gZ2V0UmVjdENlbnRlcih0YXJnZXRSZWN0KTtcblxuICByZXR1cm4ge1xuICAgIHBvaW50MTogZ2V0UmVjdEJvcmRlckludGVyc2VjdGlvbihzb3VyY2VSZWN0LCBzb3VyY2VDZW50ZXIsIHRhcmdldENlbnRlciksXG4gICAgcG9pbnQyOiBnZXRSZWN0Qm9yZGVySW50ZXJzZWN0aW9uKHRhcmdldFJlY3QsIHRhcmdldENlbnRlciwgc291cmNlQ2VudGVyKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVjdENlbnRlcihyZWN0KSB7XG4gIHJldHVybiB7XG4gICAgeDogcmVjdC54ICsgcmVjdC53aWR0aCAvIDIsXG4gICAgeTogcmVjdC55ICsgcmVjdC5oZWlnaHQgLyAyLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0Qm9yZGVySW50ZXJzZWN0aW9uKHJlY3QsIGZyb20sIHRvKSB7XG4gIGNvbnN0IGhhbGZXaWR0aCA9IHJlY3Qud2lkdGggLyAyO1xuICBjb25zdCBoYWxmSGVpZ2h0ID0gcmVjdC5oZWlnaHQgLyAyO1xuICBjb25zdCBjZW50ZXIgPSBnZXRSZWN0Q2VudGVyKHJlY3QpO1xuXG4gIGNvbnN0IGR4ID0gdG8ueCAtIGZyb20ueDtcbiAgY29uc3QgZHkgPSB0by55IC0gZnJvbS55O1xuXG4gIGlmIChNYXRoLmFicyhkeCkgPCBFUFNJTE9OICYmIE1hdGguYWJzKGR5KSA8IEVQU0lMT04pIHtcbiAgICByZXR1cm4gY2VudGVyO1xuICB9XG5cbiAgY29uc3Qgc2NhbGVYID0gTWF0aC5hYnMoZHgpIDwgRVBTSUxPTiA/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA6IGhhbGZXaWR0aCAvIE1hdGguYWJzKGR4KTtcbiAgY29uc3Qgc2NhbGVZID0gTWF0aC5hYnMoZHkpIDwgRVBTSUxPTiA/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA6IGhhbGZIZWlnaHQgLyBNYXRoLmFicyhkeSk7XG4gIGNvbnN0IHNjYWxlID0gTWF0aC5taW4oc2NhbGVYLCBzY2FsZVkpO1xuXG4gIHJldHVybiB7XG4gICAgeDogY2VudGVyLnggKyBkeCAqIHNjYWxlLFxuICAgIHk6IGNlbnRlci55ICsgZHkgKiBzY2FsZSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2lkZVBvaW50KHJlY3QsIHNpZGUpIHtcbiAgY29uc3QgY2VudGVyWCA9IHJlY3QueCArIHJlY3Qud2lkdGggLyAyO1xuICBjb25zdCBjZW50ZXJZID0gcmVjdC55ICsgcmVjdC5oZWlnaHQgLyAyO1xuXG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICByZXR1cm4geyB4OiBjZW50ZXJYLCB5OiByZWN0LnkgfTtcblxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiB7IHg6IHJlY3QueCArIHJlY3Qud2lkdGgsIHk6IGNlbnRlclkgfTtcblxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICByZXR1cm4geyB4OiBjZW50ZXJYLCB5OiByZWN0LnkgKyByZWN0LmhlaWdodCB9O1xuXG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICByZXR1cm4geyB4OiByZWN0LngsIHk6IGNlbnRlclkgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuYC50cmltKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Nvbm5lY3Rpb25Xb3JrZXJSdW50aW1lU3VwcG9ydGVkKHdpbmRvd1JlZjogV2luZG93IHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gISFyZXNvbHZlQ29ubmVjdGlvbldvcmtlclJ1bnRpbWUod2luZG93UmVmKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb25uZWN0aW9uV29ya2VyUnVudGltZShcbiAgd2luZG93UmVmOiBXaW5kb3cgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogVENvbm5lY3Rpb25Xb3JrZXJSdW50aW1lIHwgbnVsbCB7XG4gIGNvbnN0IHJ1bnRpbWVXaW5kb3cgPSB3aW5kb3dSZWYgYXMgUGFydGlhbDxXaW5kb3cgJiB0eXBlb2YgZ2xvYmFsVGhpcz4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjb25zdCBibG9iQ3RvciA9IHJ1bnRpbWVXaW5kb3c/LkJsb2I7XG4gIGNvbnN0IHdvcmtlckN0b3IgPSBydW50aW1lV2luZG93Py5Xb3JrZXI7XG4gIGNvbnN0IHVybEFwaSA9IHJ1bnRpbWVXaW5kb3c/LlVSTDtcbiAgaWYgKCFibG9iQ3RvciB8fCAhd29ya2VyQ3Rvcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiB1cmxBcGk/LmNyZWF0ZU9iamVjdFVSTCAhPT0gJ2Z1bmN0aW9uJyB8fFxuICAgIHR5cGVvZiB1cmxBcGkucmV2b2tlT2JqZWN0VVJMICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBibG9iQ3RvcixcbiAgICB3b3JrZXJDdG9yLFxuICAgIHVybEFwaSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbm5lY3Rpb25Xb3JrZXJVcmwocnVudGltZTogVENvbm5lY3Rpb25Xb3JrZXJSdW50aW1lKTogc3RyaW5nIHtcbiAgY29uc3QgYmxvYiA9IG5ldyBydW50aW1lLmJsb2JDdG9yKFtGX0NPTk5FQ1RJT05fV09SS0VSX1NPVVJDRV0sIHtcbiAgICB0eXBlOiAndGV4dC9qYXZhc2NyaXB0JyxcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bnRpbWUudXJsQXBpLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldm9rZUNvbm5lY3Rpb25Xb3JrZXJVcmwoXG4gIHdvcmtlclVybDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgdXJsQXBpPzogUGljazx0eXBlb2YgVVJMLCAncmV2b2tlT2JqZWN0VVJMJz4gfCBudWxsLFxuKTogdm9pZCB7XG4gIGlmICghd29ya2VyVXJsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRVcmxBcGkgPSB1cmxBcGkgPz8gKHR5cGVvZiBVUkwgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IFVSTCk7XG4gIGlmICh0eXBlb2YgcmVzb2x2ZWRVcmxBcGk/LnJldm9rZU9iamVjdFVSTCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJlc29sdmVkVXJsQXBpLnJldm9rZU9iamVjdFVSTCh3b3JrZXJVcmwpO1xufVxuIl19
|
|
@@ -3,9 +3,9 @@ import { F_FLOW, FFlowBase } from './f-flow-base';
|
|
|
3
3
|
import { AddFlowToStoreRequest, CalculateFlowStateRequest, CalculateNodesBoundingBoxNormalizedPositionRequest, ClearSelectionRequest, COMMON_PROVIDERS, GetCurrentSelectionRequest, GetNormalizedPointRequest, IsDragStartedRequest, RedrawConnectionsRequest, RemoveFlowFromStoreRequest, SelectAllRequest, SelectRequest, SortItemLayersRequest, } from '../domain';
|
|
4
4
|
import { FMediator } from '@foblex/mediator';
|
|
5
5
|
import { F_DRAGGABLE_PROVIDERS, FDraggableDataContext } from '../f-draggable';
|
|
6
|
-
import { EmitConnectionsChangesRequest, F_STORAGE_PROVIDERS, ListenConnectionsChangesRequest,
|
|
6
|
+
import { EmitConnectionsChangesRequest, FComponentsStore, F_STORAGE_PROVIDERS, ListenConnectionsChangesRequest, } from '../f-storage';
|
|
7
7
|
import { BrowserService } from '@foblex/platform';
|
|
8
|
-
import { afterNextPaint, debounceTime, notifyOnStart, takeOne } from '../reactivity';
|
|
8
|
+
import { afterNextPaint, debounceTime, FChannelHub, notifyOnStart, takeOne } from '../reactivity';
|
|
9
9
|
import { ConnectionBehaviourBuilder, ConnectionLineBuilder } from '../f-connection-v2';
|
|
10
10
|
import { F_CACHE_OPTIONS } from '../f-cache';
|
|
11
11
|
import { F_CONNECTION_WORKER_FEATURES, FConnectionWorker } from '../f-connection-worker';
|
|
@@ -16,6 +16,7 @@ export class FFlowComponent extends FFlowBase {
|
|
|
16
16
|
_destroyRef = inject(DestroyRef);
|
|
17
17
|
_mediator = inject(FMediator);
|
|
18
18
|
_browser = inject(BrowserService);
|
|
19
|
+
_componentsStore = inject(FComponentsStore);
|
|
19
20
|
_cache = inject(F_CACHE_OPTIONS);
|
|
20
21
|
_injector = inject(Injector);
|
|
21
22
|
_worker = inject(FConnectionWorker);
|
|
@@ -41,13 +42,15 @@ export class FFlowComponent extends FFlowBase {
|
|
|
41
42
|
}, { injector: this._injector });
|
|
42
43
|
}
|
|
43
44
|
_listenNodesChanges() {
|
|
44
|
-
this.
|
|
45
|
-
.execute(new ListenNodesChangesRequest())
|
|
45
|
+
new FChannelHub(this._componentsStore.nodesChanges$, this._componentsStore.progressiveRenderChanges$)
|
|
46
46
|
.pipe(notifyOnStart(), debounceTime(SORT_ITEM_LAYERS_DEBOUNCE_MS), afterNextPaint())
|
|
47
47
|
.listen(this._destroyRef, () => {
|
|
48
48
|
if (this._mediator.execute(new IsDragStartedRequest())) {
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
|
+
if (this._componentsStore.hasPendingProgressiveRender) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
51
54
|
this._mediator.execute(new SortItemLayersRequest());
|
|
52
55
|
this._mediator.execute(new EmitConnectionsChangesRequest());
|
|
53
56
|
this._emitLoaded();
|
|
@@ -153,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
153
156
|
{ provide: F_FLOW, useExisting: FFlowComponent },
|
|
154
157
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\n <ng-content select=\"[fDefinitions]\"/>\n\n <ng-content select=\"f-background\"/>\n\n <ng-content select=\"f-line-alignment\"/>\n\n <ng-content select=\"f-canvas\"/>\n\n <ng-content select=\"f-selection-area\"/>\n\n <ng-content/>\n</ng-container>\n", styles: [":host{display:block;position:relative;width:100%;height:100%;overflow:hidden;pointer-events:all;-webkit-user-select:none;user-select:none;touch-action:none}::ng-deep .f-connection-content{position:absolute;left:0;top:0;pointer-events:all;transform-origin:50% 50%}::ng-deep .f-node,::ng-deep .f-group{position:absolute!important;transform-origin:center;-webkit-user-select:none;user-select:none;pointer-events:all;left:0!important;top:0!important}::ng-deep .f-group{z-index:1}::ng-deep .f-connection-content{z-index:3}::ng-deep .f-node{z-index:4}.hidden{opacity:0}\n"] }]
|
|
155
158
|
}] });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1mbG93L2YtZmxvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZmxvdy9mLWZsb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6QixrREFBa0QsRUFDbEQscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBR3pCLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IscUJBQXFCLEdBQ3RCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLG1CQUFtQixFQUNuQiwrQkFBK0IsRUFDL0IseUJBQXlCLEdBQzFCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBZSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FB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WUFDMUIsR0FBRyxnQkFBZ0I7WUFDbkIscUJBQXFCO1lBQ3JCLEdBQUcscUJBQXFCO1lBQ3hCLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFO1NBQ2pELGlEQ3RFSCxpUkFhQTs7NEZENERhLGNBQWM7a0JBdEIxQixTQUFTOytCQUNFLFFBQVEsY0FHTixJQUFJLFFBQ1Y7d0JBQ0osV0FBVyxFQUFFLE9BQU87d0JBQ3BCLEtBQUssRUFBRSxvQkFBb0I7cUJBQzVCLGFBQ1U7d0JBQ1QsU0FBUzt3QkFDVCxHQUFHLG1CQUFtQjt3QkFDdEIsR0FBRyw0QkFBNEI7d0JBQy9CLHFCQUFxQjt3QkFDckIsMEJBQTBCO3dCQUMxQixHQUFHLGdCQUFnQjt3QkFDbkIscUJBQXFCO3dCQUNyQixHQUFHLHFCQUFxQjt3QkFDeEIsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsZ0JBQWdCLEVBQUU7cUJBQ2pELG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIG91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGX0ZMT1csIEZGbG93QmFzZSB9IGZyb20gJy4vZi1mbG93LWJhc2UnO1xuaW1wb3J0IHtcbiAgQWRkRmxvd1RvU3RvcmVSZXF1ZXN0LFxuICBDYWxjdWxhdGVGbG93U3RhdGVSZXF1ZXN0LFxuICBDYWxjdWxhdGVOb2Rlc0JvdW5kaW5nQm94Tm9ybWFsaXplZFBvc2l0aW9uUmVxdWVzdCxcbiAgQ2xlYXJTZWxlY3Rpb25SZXF1ZXN0LFxuICBDT01NT05fUFJPVklERVJTLFxuICBHZXRDdXJyZW50U2VsZWN0aW9uUmVxdWVzdCxcbiAgR2V0Tm9ybWFsaXplZFBvaW50UmVxdWVzdCxcbiAgSUN1cnJlbnRTZWxlY3Rpb24sXG4gIElGRmxvd1N0YXRlLFxuICBJc0RyYWdTdGFydGVkUmVxdWVzdCxcbiAgUmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0LFxuICBSZW1vdmVGbG93RnJvbVN0b3JlUmVxdWVzdCxcbiAgU2VsZWN0QWxsUmVxdWVzdCxcbiAgU2VsZWN0UmVxdWVzdCxcbiAgU29ydEl0ZW1MYXllcnNSZXF1ZXN0LFxufSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgSVBvaW50LCBJUmVjdCB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGX0RSQUdHQUJMRV9QUk9WSURFUlMsIEZEcmFnZ2FibGVEYXRhQ29udGV4dCB9IGZyb20gJy4uL2YtZHJhZ2dhYmxlJztcbmltcG9ydCB7XG4gIEVtaXRDb25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0LFxuICBGX1NUT1JBR0VfUFJPVklERVJTLFxuICBMaXN0ZW5Db25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0LFxuICBMaXN0ZW5Ob2Rlc0NoYW5nZXNSZXF1ZXN0LFxufSBmcm9tICcuLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgQnJvd3NlclNlcnZpY2UgfSBmcm9tICdAZm9ibGV4L3BsYXRmb3JtJztcbmltcG9ydCB7IGFmdGVyTmV4dFBhaW50LCBkZWJvdW5jZVRpbWUsIEZDaGFubmVsSHViLCBub3RpZnlPblN0YXJ0LCB0YWtlT25lIH0gZnJvbSAnLi4vcmVhY3Rpdml0eSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQmVoYXZpb3VyQnVpbGRlciwgQ29ubmVjdGlvbkxpbmVCdWlsZGVyIH0gZnJvbSAnLi4vZi1jb25uZWN0aW9uLXYyJztcbmltcG9ydCB7IEZfQ0FDSEVfT1BUSU9OUyB9IGZyb20gJy4uL2YtY2FjaGUnO1xuaW1wb3J0IHsgRl9DT05ORUNUSU9OX1dPUktFUl9GRUFUVVJFUywgRkNvbm5lY3Rpb25Xb3JrZXIgfSBmcm9tICcuLi9mLWNvbm5lY3Rpb24td29ya2VyJztcblxubGV0IHVuaXF1ZUlkID0gMDtcbmNvbnN0IFNPUlRfSVRFTV9MQVlFUlNfREVCT1VOQ0VfTVMgPSAxMjA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2YtZmxvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mLWZsb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mLWZsb3cuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnZklkKCknLFxuICAgIGNsYXNzOiAnZi1jb21wb25lbnQgZi1mbG93JyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRk1lZGlhdG9yLFxuICAgIC4uLkZfU1RPUkFHRV9QUk9WSURFUlMsXG4gICAgLi4uRl9DT05ORUNUSU9OX1dPUktFUl9GRUFUVVJFUyxcbiAgICBDb25uZWN0aW9uTGluZUJ1aWxkZXIsXG4gICAgQ29ubmVjdGlvbkJlaGF2aW91ckJ1aWxkZXIsXG4gICAgLi4uQ09NTU9OX1BST1ZJREVSUyxcbiAgICBGRHJhZ2dhYmxlRGF0YUNvbnRleHQsXG4gICAgLi4uRl9EUkFHR0FCTEVfUFJPVklERVJTLFxuICAgIHsgcHJvdmlkZTogRl9GTE9XLCB1c2VFeGlzdGluZzogRkZsb3dDb21wb25lbnQgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZGbG93Q29tcG9uZW50IGV4dGVuZHMgRkZsb3dCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9icm93c2VyID0gaW5qZWN0KEJyb3dzZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2FjaGUgPSBpbmplY3QoRl9DQUNIRV9PUFRJT05TKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF93b3JrZXIgPSBpbmplY3QoRkNvbm5lY3Rpb25Xb3JrZXIpO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBmSWQgPSBpbnB1dDxzdHJpbmc+KGBmLWZsb3ctJHt1bmlxdWVJZCsrfWAsIHsgYWxpYXM6ICdmRmxvd0lkJyB9KTtcbiAgcHVibGljIG92ZXJyaWRlIGZDYWNoZSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgaG9zdEVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZkxvYWRlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBfaXNMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgQWRkRmxvd1RvU3RvcmVSZXF1ZXN0KHRoaXMpKTtcbiAgICB0aGlzLl9saXN0ZW5DYWNoZUNoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9icm93c2VyLmlzQnJvd3NlcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2xpc3Rlbk5vZGVzQ2hhbmdlcygpO1xuICAgIHRoaXMuX2xpc3RlbkNvbm5lY3Rpb25zQ2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIF9saXN0ZW5DYWNoZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLl9jYWNoZS5lbmFibGVkID0gdGhpcy5mQ2FjaGUoKTtcbiAgICAgIH0sXG4gICAgICB7IGluamVjdG9yOiB0aGlzLl9pbmplY3RvciB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Ob2Rlc0NoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3JcbiAgICAgIC5leGVjdXRlPEZDaGFubmVsSHViPihuZXcgTGlzdGVuTm9kZXNDaGFuZ2VzUmVxdWVzdCgpKVxuICAgICAgLnBpcGUobm90aWZ5T25TdGFydCgpLCBkZWJvdW5jZVRpbWUoU09SVF9JVEVNX0xBWUVSU19ERUJPVU5DRV9NUyksIGFmdGVyTmV4dFBhaW50KCkpXG4gICAgICAubGlzdGVuKHRoaXMuX2Rlc3Ryb3lSZWYsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IElzRHJhZ1N0YXJ0ZWRSZXF1ZXN0KCkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgU29ydEl0ZW1MYXllcnNSZXF1ZXN0KCkpO1xuICAgICAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlPHZvaWQ+KG5ldyBFbWl0Q29ubmVjdGlvbnNDaGFuZ2VzUmVxdWVzdCgpKTtcblxuICAgICAgICB0aGlzLl9lbWl0TG9hZGVkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkNvbm5lY3Rpb25zQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvclxuICAgICAgLmV4ZWN1dGU8RkNoYW5uZWxIdWI+KG5ldyBMaXN0ZW5Db25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0KCkpXG4gICAgICAucGlwZShhZnRlck5leHRQYWludCgpKVxuICAgICAgLmxpc3Rlbih0aGlzLl9kZXN0cm95UmVmLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBJc0RyYWdTdGFydGVkUmVxdWVzdCgpKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IFJlZHJhd0Nvbm5lY3Rpb25zUmVxdWVzdCgpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdExvYWRlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzTG9hZGVkKSB7XG4gICAgICB0aGlzLl9pc0xvYWRlZCA9IHRydWU7XG4gICAgICB0aGlzLmZMb2FkZWQuZW1pdCh0aGlzLmZJZCgpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVkcmF3KCk6IHZvaWQge1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IEVtaXRDb25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2lzTG9hZGVkID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0Tm9kZXNCb3VuZGluZ0JveCgpOiBJUmVjdCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlPElSZWN0IHwgbnVsbD4oXG4gICAgICBuZXcgQ2FsY3VsYXRlTm9kZXNCb3VuZGluZ0JveE5vcm1hbGl6ZWRQb3NpdGlvblJlcXVlc3QoKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGlvbigpOiBJQ3VycmVudFNlbGVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGU8SUN1cnJlbnRTZWxlY3Rpb24+KG5ldyBHZXRDdXJyZW50U2VsZWN0aW9uUmVxdWVzdCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQb3NpdGlvbkluRmxvdyhwb3NpdGlvbjogSVBvaW50KTogSVJlY3Qge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBHZXROb3JtYWxpemVkUG9pbnRSZXF1ZXN0KHBvc2l0aW9uKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhdGUoKTogSUZGbG93U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBDYWxjdWxhdGVGbG93U3RhdGVSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvclxuICAgICAgLmV4ZWN1dGU8RkNoYW5uZWxIdWI+KG5ldyBMaXN0ZW5Db25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0KCkpXG4gICAgICAucGlwZSh0YWtlT25lKCkpXG4gICAgICAubGlzdGVuKHRoaXMuX2Rlc3Ryb3lSZWYsICgpID0+IHtcbiAgICAgICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTx2b2lkPihuZXcgU2VsZWN0QWxsUmVxdWVzdCgpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2dyYW1tYXRpY2FsbHkgc2VsZWN0cyBub2RlcyBhbmQgY29ubmVjdGlvbnMgYnkgdGhlaXIgSURzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgZXh0ZXJuYWwgY29tcG9uZW50cyB0byBjb250cm9sIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgdGhlIGNhbnZhcy5cbiAgICogU2VsZWN0ZWQgZWxlbWVudHMgd2lsbCBhcHBlYXIgdmlzdWFsbHkgaGlnaGxpZ2h0ZWQuIElmIGBpc1NlbGVjdGVkQ2hhbmdlZGAgaXMgdHJ1ZSxcbiAgICogdGhlIG5leHQgdXNlciBpbnRlcmFjdGlvbiAoZS5nLiwgY2xpY2tpbmcgdGhlIGNhbnZhcykgd2lsbCBlbWl0IGEgc2VsZWN0aW9uIGNoYW5nZSBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIG5vZGVzIC0gQW4gYXJyYXkgb2Ygbm9kZSBJRHMgdG8gc2VsZWN0LlxuICAgKiBAcGFyYW0gY29ubmVjdGlvbnMgLSBBbiBhcnJheSBvZiBjb25uZWN0aW9uIElEcyB0byBzZWxlY3QuXG4gICAqIEBwYXJhbSBpc1NlbGVjdGVkQ2hhbmdlZCAtIE9wdGlvbmFsLiBJZiB0cnVlIChkZWZhdWx0KSwgbWFya3MgdGhlIHNlbGVjdGlvbiBzdGF0ZSBhcyBjaGFuZ2VkLFxuICAgKiB0cmlnZ2VyaW5nIGEgYGZTZWxlY3Rpb25DaGFuZ2VgIGV2ZW50IG9uIHRoZSBuZXh0IHVzZXIgaW50ZXJhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0KG5vZGVzOiBzdHJpbmdbXSwgY29ubmVjdGlvbnM6IHN0cmluZ1tdLCBpc1NlbGVjdGVkQ2hhbmdlZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvclxuICAgICAgLmV4ZWN1dGU8RkNoYW5uZWxIdWI+KG5ldyBMaXN0ZW5Db25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0KCkpXG4gICAgICAucGlwZSh0YWtlT25lKCkpXG4gICAgICAubGlzdGVuKHRoaXMuX2Rlc3Ryb3lSZWYsICgpID0+IHtcbiAgICAgICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTx2b2lkPihuZXcgU2VsZWN0UmVxdWVzdChub2RlcywgY29ubmVjdGlvbnMsIGlzU2VsZWN0ZWRDaGFuZ2VkKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlPHZvaWQ+KG5ldyBDbGVhclNlbGVjdGlvblJlcXVlc3QoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fd29ya2VyLmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBSZW1vdmVGbG93RnJvbVN0b3JlUmVxdWVzdCgpKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZEZWZpbml0aW9uc11cIi8+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZi1iYWNrZ3JvdW5kXCIvPlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImYtbGluZS1hbGlnbm1lbnRcIi8+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZi1jYW52YXNcIi8+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZi1zZWxlY3Rpb24tYXJlYVwiLz5cblxuICA8bmctY29udGVudC8+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1mbG93L2YtZmxvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZmxvdy9mLWZsb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6QixrREFBa0QsRUFDbEQscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBR3pCLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IscUJBQXFCLEdBQ3RCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsK0JBQStCLEdBQ2hDLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVB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QVMsQ0FBQyxPQUFPLENBQUMsSUFBSSwwQkFBMEIsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQzt3R0FqSlUsY0FBYzs0RkFBZCxjQUFjLHVhQWJkO1lBQ1QsU0FBUztZQUNULEdBQUcsbUJBQW1CO1lBQ3RCLEdBQUcsNEJBQTRCO1lBQy9CLHFCQUFxQjtZQUNyQiwwQkFBMEI7WUFDMUIsR0FBRyxnQkFBZ0I7WUFDbkIscUJBQXFCO1lBQ3JCLEdBQUcscUJBQXFCO1lBQ3hCLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFO1NBQ2pELGlEQ3RFSCxpUkFhQTs7NEZENERhLGNBQWM7a0JBdEIxQixTQUFTOytCQUNFLFFBQVEsY0FHTixJQUFJLFFBQ1Y7d0JBQ0osV0FBVyxFQUFFLE9BQU87d0JBQ3BCLEtBQUssRUFBRSxvQkFBb0I7cUJBQzVCLGFBQ1U7d0JBQ1QsU0FBUzt3QkFDVCxHQUFHLG1CQUFtQjt3QkFDdEIsR0FBRyw0QkFBNEI7d0JBQy9CLHFCQUFxQjt3QkFDckIsMEJBQTBCO3dCQUMxQixHQUFHLGdCQUFnQjt3QkFDbkIscUJBQXFCO3dCQUNyQixHQUFHLHFCQUFxQjt3QkFDeEIsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsZ0JBQWdCLEVBQUU7cUJBQ2pELG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIG91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGX0ZMT1csIEZGbG93QmFzZSB9IGZyb20gJy4vZi1mbG93LWJhc2UnO1xuaW1wb3J0IHtcbiAgQWRkRmxvd1RvU3RvcmVSZXF1ZXN0LFxuICBDYWxjdWxhdGVGbG93U3RhdGVSZXF1ZXN0LFxuICBDYWxjdWxhdGVOb2Rlc0JvdW5kaW5nQm94Tm9ybWFsaXplZFBvc2l0aW9uUmVxdWVzdCxcbiAgQ2xlYXJTZWxlY3Rpb25SZXF1ZXN0LFxuICBDT01NT05fUFJPVklERVJTLFxuICBHZXRDdXJyZW50U2VsZWN0aW9uUmVxdWVzdCxcbiAgR2V0Tm9ybWFsaXplZFBvaW50UmVxdWVzdCxcbiAgSUN1cnJlbnRTZWxlY3Rpb24sXG4gIElGRmxvd1N0YXRlLFxuICBJc0RyYWdTdGFydGVkUmVxdWVzdCxcbiAgUmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0LFxuICBSZW1vdmVGbG93RnJvbVN0b3JlUmVxdWVzdCxcbiAgU2VsZWN0QWxsUmVxdWVzdCxcbiAgU2VsZWN0UmVxdWVzdCxcbiAgU29ydEl0ZW1MYXllcnNSZXF1ZXN0LFxufSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgSVBvaW50LCBJUmVjdCB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGX0RSQUdHQUJMRV9QUk9WSURFUlMsIEZEcmFnZ2FibGVEYXRhQ29udGV4dCB9IGZyb20gJy4uL2YtZHJhZ2dhYmxlJztcbmltcG9ydCB7XG4gIEVtaXRDb25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0LFxuICBGQ29tcG9uZW50c1N0b3JlLFxuICBGX1NUT1JBR0VfUFJPVklERVJTLFxuICBMaXN0ZW5Db25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0LFxufSBmcm9tICcuLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgQnJvd3NlclNlcnZpY2UgfSBmcm9tICdAZm9ibGV4L3BsYXRmb3JtJztcbmltcG9ydCB7IGFmdGVyTmV4dFBhaW50LCBkZWJvdW5jZVRpbWUsIEZDaGFubmVsSHViLCBub3RpZnlPblN0YXJ0LCB0YWtlT25lIH0gZnJvbSAnLi4vcmVhY3Rpdml0eSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQmVoYXZpb3VyQnVpbGRlciwgQ29ubmVjdGlvbkxpbmVCdWlsZGVyIH0gZnJvbSAnLi4vZi1jb25uZWN0aW9uLXYyJztcbmltcG9ydCB7IEZfQ0FDSEVfT1BUSU9OUyB9IGZyb20gJy4uL2YtY2FjaGUnO1xuaW1wb3J0IHsgRl9DT05ORUNUSU9OX1dPUktFUl9GRUFUVVJFUywgRkNvbm5lY3Rpb25Xb3JrZXIgfSBmcm9tICcuLi9mLWNvbm5lY3Rpb24td29ya2VyJztcblxubGV0IHVuaXF1ZUlkID0gMDtcbmNvbnN0IFNPUlRfSVRFTV9MQVlFUlNfREVCT1VOQ0VfTVMgPSAxMjA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2YtZmxvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mLWZsb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mLWZsb3cuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnZklkKCknLFxuICAgIGNsYXNzOiAnZi1jb21wb25lbnQgZi1mbG93JyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRk1lZGlhdG9yLFxuICAgIC4uLkZfU1RPUkFHRV9QUk9WSURFUlMsXG4gICAgLi4uRl9DT05ORUNUSU9OX1dPUktFUl9GRUFUVVJFUyxcbiAgICBDb25uZWN0aW9uTGluZUJ1aWxkZXIsXG4gICAgQ29ubmVjdGlvbkJlaGF2aW91ckJ1aWxkZXIsXG4gICAgLi4uQ09NTU9OX1BST1ZJREVSUyxcbiAgICBGRHJhZ2dhYmxlRGF0YUNvbnRleHQsXG4gICAgLi4uRl9EUkFHR0FCTEVfUFJPVklERVJTLFxuICAgIHsgcHJvdmlkZTogRl9GTE9XLCB1c2VFeGlzdGluZzogRkZsb3dDb21wb25lbnQgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZGbG93Q29tcG9uZW50IGV4dGVuZHMgRkZsb3dCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9icm93c2VyID0gaW5qZWN0KEJyb3dzZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcG9uZW50c1N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jYWNoZSA9IGluamVjdChGX0NBQ0hFX09QVElPTlMpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dvcmtlciA9IGluamVjdChGQ29ubmVjdGlvbldvcmtlcik7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZJZCA9IGlucHV0PHN0cmluZz4oYGYtZmxvdy0ke3VuaXF1ZUlkKyt9YCwgeyBhbGlhczogJ2ZGbG93SWQnIH0pO1xuICBwdWJsaWMgb3ZlcnJpZGUgZkNhY2hlID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBob3N0RWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xuXG4gIHB1YmxpYyBvdmVycmlkZSBmTG9hZGVkID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICBwcml2YXRlIF9pc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBBZGRGbG93VG9TdG9yZVJlcXVlc3QodGhpcykpO1xuICAgIHRoaXMuX2xpc3RlbkNhY2hlQ2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2Jyb3dzZXIuaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fbGlzdGVuTm9kZXNDaGFuZ2VzKCk7XG4gICAgdGhpcy5fbGlzdGVuQ29ubmVjdGlvbnNDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgX2xpc3RlbkNhY2hlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NhY2hlLmVuYWJsZWQgPSB0aGlzLmZDYWNoZSgpO1xuICAgICAgfSxcbiAgICAgIHsgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3Rlbk5vZGVzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBuZXcgRkNoYW5uZWxIdWIoXG4gICAgICB0aGlzLl9jb21wb25lbnRzU3RvcmUubm9kZXNDaGFuZ2VzJCxcbiAgICAgIHRoaXMuX2NvbXBvbmVudHNTdG9yZS5wcm9ncmVzc2l2ZVJlbmRlckNoYW5nZXMkLFxuICAgIClcbiAgICAgIC5waXBlKG5vdGlmeU9uU3RhcnQoKSwgZGVib3VuY2VUaW1lKFNPUlRfSVRFTV9MQVlFUlNfREVCT1VOQ0VfTVMpLCBhZnRlck5leHRQYWludCgpKVxuICAgICAgLmxpc3Rlbih0aGlzLl9kZXN0cm95UmVmLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBJc0RyYWdTdGFydGVkUmVxdWVzdCgpKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9jb21wb25lbnRzU3RvcmUuaGFzUGVuZGluZ1Byb2dyZXNzaXZlUmVuZGVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgU29ydEl0ZW1MYXllcnNSZXF1ZXN0KCkpO1xuICAgICAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlPHZvaWQ+KG5ldyBFbWl0Q29ubmVjdGlvbnNDaGFuZ2VzUmVxdWVzdCgpKTtcblxuICAgICAgICB0aGlzLl9lbWl0TG9hZGVkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkNvbm5lY3Rpb25zQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvclxuICAgICAgLmV4ZWN1dGU8RkNoYW5uZWxIdWI+KG5ldyBMaXN0ZW5Db25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0KCkpXG4gICAgICAucGlwZShhZnRlck5leHRQYWludCgpKVxuICAgICAgLmxpc3Rlbih0aGlzLl9kZXN0cm95UmVmLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBJc0RyYWdTdGFydGVkUmVxdWVzdCgpKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IFJlZHJhd0Nvbm5lY3Rpb25zUmVxdWVzdCgpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdExvYWRlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzTG9hZGVkKSB7XG4gICAgICB0aGlzLl9pc0xvYWRlZCA9IHRydWU7XG4gICAgICB0aGlzLmZMb2FkZWQuZW1pdCh0aGlzLmZJZCgpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVkcmF3KCk6IHZvaWQge1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IEVtaXRDb25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2lzTG9hZGVkID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0Tm9kZXNCb3VuZGluZ0JveCgpOiBJUmVjdCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlPElSZWN0IHwgbnVsbD4oXG4gICAgICBuZXcgQ2FsY3VsYXRlTm9kZXNCb3VuZGluZ0JveE5vcm1hbGl6ZWRQb3NpdGlvblJlcXVlc3QoKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGlvbigpOiBJQ3VycmVudFNlbGVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGU8SUN1cnJlbnRTZWxlY3Rpb24+KG5ldyBHZXRDdXJyZW50U2VsZWN0aW9uUmVxdWVzdCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQb3NpdGlvbkluRmxvdyhwb3NpdGlvbjogSVBvaW50KTogSVJlY3Qge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBHZXROb3JtYWxpemVkUG9pbnRSZXF1ZXN0KHBvc2l0aW9uKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhdGUoKTogSUZGbG93U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBDYWxjdWxhdGVGbG93U3RhdGVSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvclxuICAgICAgLmV4ZWN1dGU8RkNoYW5uZWxIdWI+KG5ldyBMaXN0ZW5Db25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0KCkpXG4gICAgICAucGlwZSh0YWtlT25lKCkpXG4gICAgICAubGlzdGVuKHRoaXMuX2Rlc3Ryb3lSZWYsICgpID0+IHtcbiAgICAgICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTx2b2lkPihuZXcgU2VsZWN0QWxsUmVxdWVzdCgpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2dyYW1tYXRpY2FsbHkgc2VsZWN0cyBub2RlcyBhbmQgY29ubmVjdGlvbnMgYnkgdGhlaXIgSURzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgZXh0ZXJuYWwgY29tcG9uZW50cyB0byBjb250cm9sIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgdGhlIGNhbnZhcy5cbiAgICogU2VsZWN0ZWQgZWxlbWVudHMgd2lsbCBhcHBlYXIgdmlzdWFsbHkgaGlnaGxpZ2h0ZWQuIElmIGBpc1NlbGVjdGVkQ2hhbmdlZGAgaXMgdHJ1ZSxcbiAgICogdGhlIG5leHQgdXNlciBpbnRlcmFjdGlvbiAoZS5nLiwgY2xpY2tpbmcgdGhlIGNhbnZhcykgd2lsbCBlbWl0IGEgc2VsZWN0aW9uIGNoYW5nZSBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIG5vZGVzIC0gQW4gYXJyYXkgb2Ygbm9kZSBJRHMgdG8gc2VsZWN0LlxuICAgKiBAcGFyYW0gY29ubmVjdGlvbnMgLSBBbiBhcnJheSBvZiBjb25uZWN0aW9uIElEcyB0byBzZWxlY3QuXG4gICAqIEBwYXJhbSBpc1NlbGVjdGVkQ2hhbmdlZCAtIE9wdGlvbmFsLiBJZiB0cnVlIChkZWZhdWx0KSwgbWFya3MgdGhlIHNlbGVjdGlvbiBzdGF0ZSBhcyBjaGFuZ2VkLFxuICAgKiB0cmlnZ2VyaW5nIGEgYGZTZWxlY3Rpb25DaGFuZ2VgIGV2ZW50IG9uIHRoZSBuZXh0IHVzZXIgaW50ZXJhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0KG5vZGVzOiBzdHJpbmdbXSwgY29ubmVjdGlvbnM6IHN0cmluZ1tdLCBpc1NlbGVjdGVkQ2hhbmdlZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvclxuICAgICAgLmV4ZWN1dGU8RkNoYW5uZWxIdWI+KG5ldyBMaXN0ZW5Db25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0KCkpXG4gICAgICAucGlwZSh0YWtlT25lKCkpXG4gICAgICAubGlzdGVuKHRoaXMuX2Rlc3Ryb3lSZWYsICgpID0+IHtcbiAgICAgICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZTx2b2lkPihuZXcgU2VsZWN0UmVxdWVzdChub2RlcywgY29ubmVjdGlvbnMsIGlzU2VsZWN0ZWRDaGFuZ2VkKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlPHZvaWQ+KG5ldyBDbGVhclNlbGVjdGlvblJlcXVlc3QoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fd29ya2VyLmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9tZWRpYXRvci5leGVjdXRlKG5ldyBSZW1vdmVGbG93RnJvbVN0b3JlUmVxdWVzdCgpKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZEZWZpbml0aW9uc11cIi8+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZi1iYWNrZ3JvdW5kXCIvPlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImYtbGluZS1hbGlnbm1lbnRcIi8+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZi1jYW52YXNcIi8+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZi1zZWxlY3Rpb24tYXJlYVwiLz5cblxuICA8bmctY29udGVudC8+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|