@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
|
@@ -5,11 +5,10 @@ import { FMediator } from '@foblex/mediator';
|
|
|
5
5
|
import { AddSnapConnectionToStoreRequest, RemoveSnapConnectionFromStoreRequest, } from '../../domain';
|
|
6
6
|
import { EFConnectionBehavior, EFConnectionConnectableSide, EFConnectionType, F_CONNECTION_COMPONENTS_PARENT, FConnectionBase, } from '../../f-connection-v2';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../f-connection-v2/components/connection-
|
|
8
|
+
import * as i1 from "../../f-connection-v2/components/connection-gradient/components/render/f-connection-gradient-renderer";
|
|
9
9
|
import * as i2 from "../../f-connection-v2/components/connection-drag-handles/f-connection-drag-handle-end";
|
|
10
|
-
import * as i3 from "../../f-connection-v2/components/connection-
|
|
11
|
-
import * as i4 from "../../f-connection-v2/components/connection-
|
|
12
|
-
import * as i5 from "../../f-connection-v2/components/connection-selection/f-connection-selection";
|
|
10
|
+
import * as i3 from "../../f-connection-v2/components/connection-path/f-connection-path";
|
|
11
|
+
import * as i4 from "../../f-connection-v2/components/connection-selection/f-connection-selection";
|
|
13
12
|
let uniqueId = 0;
|
|
14
13
|
export class FSnapConnectionComponent extends FConnectionBase {
|
|
15
14
|
fId = signal(`f-snap-connection-${uniqueId++}`);
|
|
@@ -47,13 +46,13 @@ export class FSnapConnectionComponent extends FConnectionBase {
|
|
|
47
46
|
this._mediator.execute(new RemoveSnapConnectionFromStoreRequest());
|
|
48
47
|
}
|
|
49
48
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSnapConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FSnapConnectionComponent, selector: "f-snap-connection", inputs: { fSnapThreshold: { classPropertyName: "fSnapThreshold", publicName: "fSnapThreshold", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "f-component f-connection f-snap-connection" }, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FSnapConnectionComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content />\n <g class=\"f-connection-group\">\n <linearGradient
|
|
49
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FSnapConnectionComponent, selector: "f-snap-connection", inputs: { fSnapThreshold: { classPropertyName: "fSnapThreshold", publicName: "fSnapThreshold", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "f-component f-connection f-snap-connection" }, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FSnapConnectionComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: i1.FConnectionGradientRenderer, selector: "linearGradient[fConnectionGradientRenderer]", inputs: ["fConnectionGradientRendererFor"] }, { kind: "component", type: i2.FConnectionDragHandleEnd, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: i3.FConnectionPath, selector: "path[f-connection-path]", inputs: ["useGradient"] }, { kind: "component", type: i4.FConnectionSelection, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
51
50
|
}
|
|
52
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSnapConnectionComponent, decorators: [{
|
|
53
52
|
type: Component,
|
|
54
53
|
args: [{ selector: 'f-snap-connection', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
55
54
|
class: 'f-component f-connection f-snap-connection',
|
|
56
|
-
}, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FSnapConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content />\n <g class=\"f-connection-group\">\n <linearGradient
|
|
55
|
+
}, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FSnapConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"] }]
|
|
57
56
|
}], propDecorators: { fSnapThreshold: [{
|
|
58
57
|
type: Input,
|
|
59
58
|
args: [{ transform: numberAttribute }]
|
|
@@ -69,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
69
68
|
}], fType: [{
|
|
70
69
|
type: Input
|
|
71
70
|
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1zbmFwLWNvbm5lY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vZi1zbmFwLWNvbm5lY3Rpb24vZi1zbmFwLWNvbm5lY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vZi1zbmFwLWNvbm5lY3Rpb24vZi1zbmFwLWNvbm5lY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsZUFBZSxFQUlmLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLG9DQUFvQyxHQUNyQyxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQixnQkFBZ0IsRUFDaEIsOEJBQThCLEVBQzlCLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBRS9CLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQVlqQixNQUFNLE9BQU8sd0JBQ1gsU0FBUSxlQUFlO0lBR1AsR0FBRyxHQUFHLE1BQU0sQ0FBUyxxQkFBcUIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBR2pFLGNBQWMsR0FBVyxFQUFFLENBQUM7SUFFbkIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV2QixRQUFRLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBR3RCLE9BQU8sR0FBVyxDQUFDLENBQUM7SUFHcEIsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUdyQixTQUFTLEdBQXlCLG9CQUFvQixDQUFDLEtBQUssQ0FBQztJQUc3RCxLQUFLLEdBQThCLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztJQUU3RCxVQUFVLEdBQUcsS0FBSyxDQUFDLDJCQUEyQixDQUFDLE9BQU8sRUFBRTtRQUN0RSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNmLE9BQU8sVUFBVSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztRQUNsRSxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBRWEsV0FBVyxHQUFHLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLEVBQUU7UUFDdkUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixPQUFPLFVBQVUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLDJCQUEyQixDQUFDLENBQUM7UUFDbkUsQ0FBQztLQUNGLENBQUMsQ0FBQztJQUVILElBQW9CLGVBQWU7UUFDakMsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFZ0IsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV4QyxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSwrQkFBK0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksNkJBQTZCLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksb0NBQW9DLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7d0dBekRVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLHVMQU1mLGVBQWUsMkhBT2YsZUFBZSwySEFHZixlQUFlLGlJQUdmLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxtZUFyQmpGLENBQUMsRUFBRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLENBQUMsc0VDdENqRyxxc0JBc0JBOzs0RkRrQmEsd0JBQXdCO2tCQVZwQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLEtBQUssRUFBRSw0Q0FBNEM7cUJBQ3BELGFBQ1UsQ0FBQyxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxXQUFXLDBCQUEwQixFQUFFLENBQUM7OEJBU3hGLGNBQWM7c0JBRHBCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQVFyQixPQUFPO3NCQUR0QixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFJckIsT0FBTztzQkFEdEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBSXJCLFNBQVM7c0JBRHhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFDLEVBQUU7Z0JBSTlFLEtBQUs7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBJbnB1dCxcbiAgbnVtYmVyQXR0cmlidXRlLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW1pdENvbm5lY3Rpb25zQ2hhbmdlc1JlcXVlc3QgfSBmcm9tICcuLi8uLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgY2FzdFRvRW51bSB9IGZyb20gJ0Bmb2JsZXgvdXRpbHMnO1xuaW1wb3J0IHsgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQge1xuICBBZGRTbmFwQ29ubmVjdGlvblRvU3RvcmVSZXF1ZXN0LFxuICBSZW1vdmVTbmFwQ29ubmVjdGlvbkZyb21TdG9yZVJlcXVlc3QsXG59IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQge1xuICBFRkNvbm5lY3Rpb25CZWhhdmlvcixcbiAgRUZDb25uZWN0aW9uQ29ubmVjdGFibGVTaWRlLFxuICBFRkNvbm5lY3Rpb25UeXBlLFxuICBGX0NPTk5FQ1RJT05fQ09NUE9ORU5UU19QQVJFTlQsXG4gIEZDb25uZWN0aW9uQmFzZSxcbn0gZnJvbSAnLi4vLi4vZi1jb25uZWN0aW9uLXYyJztcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZi1zbmFwLWNvbm5lY3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZi1zbmFwLWNvbm5lY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mLXNuYXAtY29ubmVjdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZi1jb21wb25lbnQgZi1jb25uZWN0aW9uIGYtc25hcC1jb25uZWN0aW9uJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGX0NPTk5FQ1RJT05fQ09NUE9ORU5UU19QQVJFTlQsIHVzZUV4aXN0aW5nOiBGU25hcENvbm5lY3Rpb25Db21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZTbmFwQ29ubmVjdGlvbkNvbXBvbmVudFxuICBleHRlbmRzIEZDb25uZWN0aW9uQmFzZVxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgcHVibGljIG92ZXJyaWRlIGZJZCA9IHNpZ25hbDxzdHJpbmc+KGBmLXNuYXAtY29ubmVjdGlvbi0ke3VuaXF1ZUlkKyt9YCk7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSlcbiAgcHVibGljIGZTbmFwVGhyZXNob2xkOiBudW1iZXIgPSAyMDtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZk91dHB1dElkID0gc2lnbmFsKCcnKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZklucHV0SWQgPSBzaWduYWwoJycpO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBmUmFkaXVzOiBudW1iZXIgPSA4O1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBmT2Zmc2V0OiBudW1iZXIgPSAxMjtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogdW5rbm93bikgPT4gY2FzdFRvRW51bSh2YWx1ZSwgJ2ZCZWhhdmlvcicsIEVGQ29ubmVjdGlvbkJlaGF2aW9yKSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZkJlaGF2aW9yOiBFRkNvbm5lY3Rpb25CZWhhdmlvciA9IEVGQ29ubmVjdGlvbkJlaGF2aW9yLkZJWEVEO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvdmVycmlkZSBmVHlwZTogRUZDb25uZWN0aW9uVHlwZSB8IHN0cmluZyA9IEVGQ29ubmVjdGlvblR5cGUuU1RSQUlHSFQ7XG5cbiAgcHVibGljIG92ZXJyaWRlIGZJbnB1dFNpZGUgPSBpbnB1dChFRkNvbm5lY3Rpb25Db25uZWN0YWJsZVNpZGUuREVGQVVMVCwge1xuICAgIHRyYW5zZm9ybTogKHgpID0+IHtcbiAgICAgIHJldHVybiBjYXN0VG9FbnVtKHgsICdmSW5wdXRTaWRlJywgRUZDb25uZWN0aW9uQ29ubmVjdGFibGVTaWRlKTtcbiAgICB9LFxuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgZk91dHB1dFNpZGUgPSBpbnB1dChFRkNvbm5lY3Rpb25Db25uZWN0YWJsZVNpZGUuREVGQVVMVCwge1xuICAgIHRyYW5zZm9ybTogKHgpID0+IHtcbiAgICAgIHJldHVybiBjYXN0VG9FbnVtKHgsICdmT3V0cHV0U2lkZScsIEVGQ29ubmVjdGlvbkNvbm5lY3RhYmxlU2lkZSk7XG4gICAgfSxcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCBib3VuZGluZ0VsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5mUGF0aCgpLmhvc3RFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVkaWF0b3IuZXhlY3V0ZShuZXcgQWRkU25hcENvbm5lY3Rpb25Ub1N0b3JlUmVxdWVzdCh0aGlzKSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IEVtaXRDb25uZWN0aW9uc0NoYW5nZXNSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX21lZGlhdG9yLmV4ZWN1dGUobmV3IFJlbW92ZVNuYXBDb25uZWN0aW9uRnJvbVN0b3JlUmVxdWVzdCgpKTtcbiAgfVxufVxuIiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gIDxkZWZzICNkZWZzPjwvZGVmcz5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic3ZnW2ZNYXJrZXJdXCIgLz5cbiAgPGcgY2xhc3M9XCJmLWNvbm5lY3Rpb24tZ3JvdXBcIj5cbiAgICBAaWYgKGZHcmFkaWVudCgpOyBhcyBncmFkaWVudCkge1xuICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgIGZDb25uZWN0aW9uR3JhZGllbnRSZW5kZXJlclxuICAgICAgICBbZkNvbm5lY3Rpb25HcmFkaWVudFJlbmRlcmVyRm9yXT1cImdyYWRpZW50XCJcbiAgICAgID48L2xpbmVhckdyYWRpZW50PlxuICAgIH1cbiAgICA8cGF0aCBmQ29ubmVjdGlvblNlbGVjdGlvbiBbYXR0ci5kXT1cInBhdGhcIj48L3BhdGg+XG4gICAgPGc+XG4gICAgICA8cGF0aCBmLWNvbm5lY3Rpb24tcGF0aCBbdXNlR3JhZGllbnRdPVwiISFmR3JhZGllbnQoKVwiIFthdHRyLmRdPVwicGF0aFwiPjwvcGF0aD5cbiAgICAgIDxjaXJjbGUgZi1jb25uZWN0aW9uLWRyYWctaGFuZGxlLWVuZCByPVwiOFwiPjwvY2lyY2xlPlxuICAgIDwvZz5cbiAgPC9nPlxuPC9zdmc+XG48bmctY29udGVudCBzZWxlY3Q9XCJmLWNvbm5lY3Rpb24tZ3JhZGllbnRcIiAvPlxuXG5AaWYgKGZDb250ZW50cygpLmxlbmd0aCkge1xuICA8bmctY29udGVudCBzZWxlY3Q9XCJbZkNvbm5lY3Rpb25Db250ZW50XVwiIC8+XG59XG4iXX0=
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { FConnectionComponent } from './f-connection';
|
|
2
2
|
import { FConnectionForCreateComponent } from './f-connection-for-create';
|
|
3
3
|
import { FSnapConnectionComponent } from './f-snap-connection';
|
|
4
|
-
import { FConnectionContent,
|
|
4
|
+
import { FConnectionContent, FConnectionDragHandleEnd, FConnectionDragHandleStart, FConnectionGradient, FConnectionGradientRenderer, FConnectionMarker, FConnectionPath, FConnectionSelection, FConnectionWaypoints, } from '../f-connection-v2';
|
|
5
5
|
export const F_CONNECTION_PROVIDERS = [
|
|
6
6
|
FConnectionDragHandleStart,
|
|
7
7
|
FConnectionDragHandleEnd,
|
|
8
|
-
FConnectionGradient,
|
|
9
8
|
FConnectionPath,
|
|
10
9
|
FConnectionSelection,
|
|
11
10
|
FConnectionMarker,
|
|
@@ -13,5 +12,10 @@ export const F_CONNECTION_PROVIDERS = [
|
|
|
13
12
|
FConnectionForCreateComponent,
|
|
14
13
|
FSnapConnectionComponent,
|
|
15
14
|
];
|
|
16
|
-
export const F_CONNECTION_IMPORTS_EXPORTS = [
|
|
17
|
-
|
|
15
|
+
export const F_CONNECTION_IMPORTS_EXPORTS = [
|
|
16
|
+
FConnectionContent,
|
|
17
|
+
FConnectionGradient,
|
|
18
|
+
FConnectionGradientRenderer,
|
|
19
|
+
FConnectionWaypoints,
|
|
20
|
+
];
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQixtQkFBbUIsRUFDbkIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLG9CQUFvQixHQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLDBCQUEwQjtJQUMxQix3QkFBd0I7SUFDeEIsZUFBZTtJQUNmLG9CQUFvQjtJQUNwQixpQkFBaUI7SUFFakIsb0JBQW9CO0lBQ3BCLDZCQUE2QjtJQUM3Qix3QkFBd0I7Q0FDekIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHO0lBQzFDLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsMkJBQTJCO0lBQzNCLG9CQUFvQjtDQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRkNvbm5lY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2YtY29ubmVjdGlvbic7XG5pbXBvcnQgeyBGQ29ubmVjdGlvbkZvckNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJy4vZi1jb25uZWN0aW9uLWZvci1jcmVhdGUnO1xuaW1wb3J0IHsgRlNuYXBDb25uZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9mLXNuYXAtY29ubmVjdGlvbic7XG5pbXBvcnQge1xuICBGQ29ubmVjdGlvbkNvbnRlbnQsXG4gIEZDb25uZWN0aW9uRHJhZ0hhbmRsZUVuZCxcbiAgRkNvbm5lY3Rpb25EcmFnSGFuZGxlU3RhcnQsXG4gIEZDb25uZWN0aW9uR3JhZGllbnQsXG4gIEZDb25uZWN0aW9uR3JhZGllbnRSZW5kZXJlcixcbiAgRkNvbm5lY3Rpb25NYXJrZXIsXG4gIEZDb25uZWN0aW9uUGF0aCxcbiAgRkNvbm5lY3Rpb25TZWxlY3Rpb24sXG4gIEZDb25uZWN0aW9uV2F5cG9pbnRzLFxufSBmcm9tICcuLi9mLWNvbm5lY3Rpb24tdjInO1xuXG5leHBvcnQgY29uc3QgRl9DT05ORUNUSU9OX1BST1ZJREVSUyA9IFtcbiAgRkNvbm5lY3Rpb25EcmFnSGFuZGxlU3RhcnQsXG4gIEZDb25uZWN0aW9uRHJhZ0hhbmRsZUVuZCxcbiAgRkNvbm5lY3Rpb25QYXRoLFxuICBGQ29ubmVjdGlvblNlbGVjdGlvbixcbiAgRkNvbm5lY3Rpb25NYXJrZXIsXG5cbiAgRkNvbm5lY3Rpb25Db21wb25lbnQsXG4gIEZDb25uZWN0aW9uRm9yQ3JlYXRlQ29tcG9uZW50LFxuICBGU25hcENvbm5lY3Rpb25Db21wb25lbnQsXG5dO1xuXG5leHBvcnQgY29uc3QgRl9DT05ORUNUSU9OX0lNUE9SVFNfRVhQT1JUUyA9IFtcbiAgRkNvbm5lY3Rpb25Db250ZW50LFxuICBGQ29ubmVjdGlvbkdyYWRpZW50LFxuICBGQ29ubmVjdGlvbkdyYWRpZW50UmVuZGVyZXIsXG4gIEZDb25uZWN0aW9uV2F5cG9pbnRzLFxuXTtcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './render';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi12Mi9jb21wb25lbnRzL2Nvbm5lY3Rpb24tZ3JhZGllbnQvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmVuZGVyJztcbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
|
|
2
|
+
import { FConnectionGradientRendererBase } from './models';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class FConnectionGradientRenderer extends FConnectionGradientRendererBase {
|
|
5
|
+
gradient = input.required({
|
|
6
|
+
alias: 'fConnectionGradientRendererFor',
|
|
7
|
+
});
|
|
8
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradientRenderer, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: FConnectionGradientRenderer, isStandalone: true, selector: "linearGradient[fConnectionGradientRenderer]", inputs: { gradient: { classPropertyName: "gradient", publicName: "fConnectionGradientRendererFor", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "attr.id": "gradientId()" } }, usesInheritance: true, ngImport: i0, template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop offset=\"0%\" />\n <svg:stop offset=\"100%\" />\n</ng-container>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradientRenderer, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: 'linearGradient[fConnectionGradientRenderer]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
14
|
+
'[attr.id]': 'gradientId()',
|
|
15
|
+
}, template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop offset=\"0%\" />\n <svg:stop offset=\"100%\" />\n</ng-container>\n" }]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWdyYWRpZW50LXJlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24tdjIvY29tcG9uZW50cy9jb25uZWN0aW9uLWdyYWRpZW50L2NvbXBvbmVudHMvcmVuZGVyL2YtY29ubmVjdGlvbi1ncmFkaWVudC1yZW5kZXJlci50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uLXYyL2NvbXBvbmVudHMvY29ubmVjdGlvbi1ncmFkaWVudC9jb21wb25lbnRzL3JlbmRlci9mLWNvbm5lY3Rpb24tZ3JhZGllbnQtcmVuZGVyZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBWTNELE1BQU0sT0FBTywyQkFBNEIsU0FBUSwrQkFBK0I7SUFDckQsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQTBCO1FBQzFFLEtBQUssRUFBRSxnQ0FBZ0M7S0FDeEMsQ0FBQyxDQUFDO3dHQUhRLDJCQUEyQjs0RkFBM0IsMkJBQTJCLHFWQ2J4QywwSUFJQTs7NEZEU2EsMkJBQTJCO2tCQVR2QyxTQUFTOytCQUNFLDZDQUE2QyxjQUUzQyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osV0FBVyxFQUFFLGNBQWM7cUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZDb25uZWN0aW9uR3JhZGllbnRSZW5kZXJlckJhc2UgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBGQ29ubmVjdGlvbkdyYWRpZW50QmFzZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpbmVhckdyYWRpZW50W2ZDb25uZWN0aW9uR3JhZGllbnRSZW5kZXJlcl0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZi1jb25uZWN0aW9uLWdyYWRpZW50LXJlbmRlcmVyLmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnZ3JhZGllbnRJZCgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgRkNvbm5lY3Rpb25HcmFkaWVudFJlbmRlcmVyIGV4dGVuZHMgRkNvbm5lY3Rpb25HcmFkaWVudFJlbmRlcmVyQmFzZSB7XG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBncmFkaWVudCA9IGlucHV0LnJlcXVpcmVkPEZDb25uZWN0aW9uR3JhZGllbnRCYXNlPih7XG4gICAgYWxpYXM6ICdmQ29ubmVjdGlvbkdyYWRpZW50UmVuZGVyZXJGb3InLFxuICB9KTtcbn1cbiIsIjxuZy1jb250YWluZXIgeG1sbnM6c3ZnPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgPHN2ZzpzdG9wIG9mZnNldD1cIjAlXCIgLz5cbiAgPHN2ZzpzdG9wIG9mZnNldD1cIjEwMCVcIiAvPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './models';
|
|
2
|
+
export * from './f-connection-gradient-renderer';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi12Mi9jb21wb25lbnRzL2Nvbm5lY3Rpb24tZ3JhZGllbnQvY29tcG9uZW50cy9yZW5kZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZi1jb25uZWN0aW9uLWdyYWRpZW50LXJlbmRlcmVyJztcbiJdfQ==
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { computed, Directive, effect, ElementRef, inject, Injector, untracked, } from '@angular/core';
|
|
2
|
+
import { Point } from '@foblex/2d';
|
|
3
|
+
import { F_CONNECTION_COMPONENTS_PARENT } from '../../../../../models';
|
|
4
|
+
import { createGradientDomIdentifier } from '../../../../../utils';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class FConnectionGradientRendererBase {
|
|
7
|
+
_connection = inject(F_CONNECTION_COMPONENTS_PARENT);
|
|
8
|
+
_hostElement = inject((ElementRef)).nativeElement;
|
|
9
|
+
_injector = inject(Injector);
|
|
10
|
+
_hostAttributes = new Map();
|
|
11
|
+
_startColor;
|
|
12
|
+
_endColor;
|
|
13
|
+
gradientId = computed(() => createGradientDomIdentifier(this._connection.fId()));
|
|
14
|
+
ngOnInit() {
|
|
15
|
+
this._listenColorChanges();
|
|
16
|
+
}
|
|
17
|
+
_listenColorChanges() {
|
|
18
|
+
effect(() => {
|
|
19
|
+
this.gradient().fStartColor();
|
|
20
|
+
this.gradient().fEndColor();
|
|
21
|
+
untracked(() => {
|
|
22
|
+
this._updateGradient();
|
|
23
|
+
});
|
|
24
|
+
}, { injector: this._injector });
|
|
25
|
+
}
|
|
26
|
+
get stop1Element() {
|
|
27
|
+
return this._hostElement.children.item(0);
|
|
28
|
+
}
|
|
29
|
+
get stop2Element() {
|
|
30
|
+
return this._hostElement.children.item(1);
|
|
31
|
+
}
|
|
32
|
+
redraw(line) {
|
|
33
|
+
const x = line.point2.x - line.point1.x;
|
|
34
|
+
const y = line.point2.y - line.point1.y;
|
|
35
|
+
const distance = Math.sqrt(x * x + y * y) || 0.01;
|
|
36
|
+
const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);
|
|
37
|
+
this._setHostAttribute('x1', from.x.toString());
|
|
38
|
+
this._setHostAttribute('y1', from.y.toString());
|
|
39
|
+
const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);
|
|
40
|
+
this._setHostAttribute('x2', to.x.toString());
|
|
41
|
+
this._setHostAttribute('y2', to.y.toString());
|
|
42
|
+
this._updateGradient();
|
|
43
|
+
}
|
|
44
|
+
_updateGradient() {
|
|
45
|
+
const gradient = this.gradient();
|
|
46
|
+
this._setFromColor(gradient.fStartColor());
|
|
47
|
+
this._setToColor(gradient.fEndColor());
|
|
48
|
+
}
|
|
49
|
+
_setFromColor(color) {
|
|
50
|
+
const nextColor = color || 'transparent';
|
|
51
|
+
if (this._startColor === nextColor) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this._startColor = nextColor;
|
|
55
|
+
this.stop1Element.setAttribute('stop-color', nextColor);
|
|
56
|
+
this.stop1Element.style.setProperty('stop-color', nextColor);
|
|
57
|
+
}
|
|
58
|
+
_setToColor(color) {
|
|
59
|
+
const nextColor = color || 'transparent';
|
|
60
|
+
if (this._endColor === nextColor) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
this._endColor = nextColor;
|
|
64
|
+
this.stop2Element.setAttribute('stop-color', nextColor);
|
|
65
|
+
this.stop2Element.style.setProperty('stop-color', nextColor);
|
|
66
|
+
}
|
|
67
|
+
_setHostAttribute(name, value) {
|
|
68
|
+
if (this._hostAttributes.get(name) === value) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
this._hostAttributes.set(name, value);
|
|
72
|
+
this._hostElement.setAttribute(name, value);
|
|
73
|
+
}
|
|
74
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradientRendererBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
75
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionGradientRendererBase, ngImport: i0 });
|
|
76
|
+
}
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradientRendererBase, decorators: [{
|
|
78
|
+
type: Directive,
|
|
79
|
+
args: [{}]
|
|
80
|
+
}] });
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWdyYWRpZW50LXJlbmRlcmVyLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi12Mi9jb21wb25lbnRzL2Nvbm5lY3Rpb24tZ3JhZGllbnQvY29tcG9uZW50cy9yZW5kZXIvbW9kZWxzL2YtY29ubmVjdGlvbi1ncmFkaWVudC1yZW5kZXJlci1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFHUixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFTLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFJbkUsTUFBTSxPQUFnQiwrQkFBK0I7SUFDbEMsV0FBVyxHQUFHLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3JELFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUFvQyxDQUFBLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDMUUsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QixlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDckQsV0FBVyxDQUFVO0lBQ3JCLFNBQVMsQ0FBVTtJQUlYLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFMUYsUUFBUTtRQUNiLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxt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QyxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQXlCO1FBQzNDLE1BQU0sU0FBUyxHQUFHLEtBQUssSUFBSSxhQUFhLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQVksRUFBRSxLQUFhO1FBQ25ELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDN0MsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7d0dBckZtQiwrQkFBK0I7NEZBQS9CLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFEcEQsU0FBUzttQkFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY29tcHV0ZWQsXG4gIERpcmVjdGl2ZSxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dFNpZ25hbCxcbiAgT25Jbml0LFxuICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUxpbmUsIFBvaW50IH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBGX0NPTk5FQ1RJT05fQ09NUE9ORU5UU19QQVJFTlQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgY3JlYXRlR3JhZGllbnREb21JZGVudGlmaWVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgRkNvbm5lY3Rpb25HcmFkaWVudEJhc2UgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuXG5ARGlyZWN0aXZlKHt9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZDb25uZWN0aW9uR3JhZGllbnRSZW5kZXJlckJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb25uZWN0aW9uID0gaW5qZWN0KEZfQ09OTkVDVElPTl9DT01QT05FTlRTX1BBUkVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3RFbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWY8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50PikubmF0aXZlRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0QXR0cmlidXRlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIHByaXZhdGUgX3N0YXJ0Q29sb3I/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2VuZENvbG9yPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBncmFkaWVudDogSW5wdXRTaWduYWw8RkNvbm5lY3Rpb25HcmFkaWVudEJhc2U+O1xuXG4gIHB1YmxpYyByZWFkb25seSBncmFkaWVudElkID0gY29tcHV0ZWQoKCkgPT4gY3JlYXRlR3JhZGllbnREb21JZGVudGlmaWVyKHRoaXMuX2Nvbm5lY3Rpb24uZklkKCkpKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdGVuQ29sb3JDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Db2xvckNoYW5nZXMoKTogdm9pZCB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmdyYWRpZW50KCkuZlN0YXJ0Q29sb3IoKTtcbiAgICAgICAgdGhpcy5ncmFkaWVudCgpLmZFbmRDb2xvcigpO1xuICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZUdyYWRpZW50KCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHsgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yIH0sXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RvcDFFbGVtZW50KCk6IFNWR1N0b3BFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5faG9zdEVsZW1lbnQuY2hpbGRyZW4uaXRlbSgwKSBhcyBTVkdTdG9wRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RvcDJFbGVtZW50KCk6IFNWR1N0b3BFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5faG9zdEVsZW1lbnQuY2hpbGRyZW4uaXRlbSgxKSBhcyBTVkdTdG9wRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyByZWRyYXcobGluZTogSUxpbmUpOiB2b2lkIHtcbiAgICBjb25zdCB4OiBudW1iZXIgPSBsaW5lLnBvaW50Mi54IC0gbGluZS5wb2ludDEueDtcbiAgICBjb25zdCB5OiBudW1iZXIgPSBsaW5lLnBvaW50Mi55IC0gbGluZS5wb2ludDEueTtcbiAgICBjb25zdCBkaXN0YW5jZTogbnVtYmVyID0gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkpIHx8IDAuMDE7XG5cbiAgICBjb25zdCBmcm9tID0gbmV3IFBvaW50KDAuNSAtICgwLjUgKiB4KSAvIGRpc3RhbmNlLCAwLjUgLSAoMC41ICogeSkgLyBkaXN0YW5jZSk7XG5cbiAgICB0aGlzLl9zZXRIb3N0QXR0cmlidXRlKCd4MScsIGZyb20ueC50b1N0cmluZygpKTtcbiAgICB0aGlzLl9zZXRIb3N0QXR0cmlidXRlKCd5MScsIGZyb20ueS50b1N0cmluZygpKTtcblxuICAgIGNvbnN0IHRvID0gbmV3IFBvaW50KDAuNSArICgwLjUgKiB4KSAvIGRpc3RhbmNlLCAwLjUgKyAoMC41ICogeSkgLyBkaXN0YW5jZSk7XG4gICAgdGhpcy5fc2V0SG9zdEF0dHJpYnV0ZSgneDInLCB0by54LnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuX3NldEhvc3RBdHRyaWJ1dGUoJ3kyJywgdG8ueS50b1N0cmluZygpKTtcbiAgICB0aGlzLl91cGRhdGVHcmFkaWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlR3JhZGllbnQoKTogdm9pZCB7XG4gICAgY29uc3QgZ3JhZGllbnQgPSB0aGlzLmdyYWRpZW50KCk7XG4gICAgdGhpcy5fc2V0RnJvbUNvbG9yKGdyYWRpZW50LmZTdGFydENvbG9yKCkpO1xuICAgIHRoaXMuX3NldFRvQ29sb3IoZ3JhZGllbnQuZkVuZENvbG9yKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RnJvbUNvbG9yKGNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0Q29sb3IgPSBjb2xvciB8fCAndHJhbnNwYXJlbnQnO1xuICAgIGlmICh0aGlzLl9zdGFydENvbG9yID09PSBuZXh0Q29sb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc3RhcnRDb2xvciA9IG5leHRDb2xvcjtcbiAgICB0aGlzLnN0b3AxRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0b3AtY29sb3InLCBuZXh0Q29sb3IpO1xuICAgIHRoaXMuc3RvcDFFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdzdG9wLWNvbG9yJywgbmV4dENvbG9yKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFRvQ29sb3IoY29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHRDb2xvciA9IGNvbG9yIHx8ICd0cmFuc3BhcmVudCc7XG4gICAgaWYgKHRoaXMuX2VuZENvbG9yID09PSBuZXh0Q29sb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZW5kQ29sb3IgPSBuZXh0Q29sb3I7XG4gICAgdGhpcy5zdG9wMkVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdG9wLWNvbG9yJywgbmV4dENvbG9yKTtcbiAgICB0aGlzLnN0b3AyRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnc3RvcC1jb2xvcicsIG5leHRDb2xvcik7XG4gIH1cblxuICBwcml2YXRlIF9zZXRIb3N0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9ob3N0QXR0cmlidXRlcy5nZXQobmFtZSkgPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2hvc3RBdHRyaWJ1dGVzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgdGhpcy5faG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgfVxufVxuIl19
|
package/esm2022/f-connection-v2/components/connection-gradient/components/render/models/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './f-connection-gradient-renderer-base';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi12Mi9jb21wb25lbnRzL2Nvbm5lY3Rpb24tZ3JhZGllbnQvY29tcG9uZW50cy9yZW5kZXIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2YtY29ubmVjdGlvbi1ncmFkaWVudC1yZW5kZXJlci1iYXNlJztcbiJdfQ==
|
|
@@ -1,54 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Point } from '@foblex/2d';
|
|
1
|
+
import { Component, input } from '@angular/core';
|
|
3
2
|
import { F_CONNECTION_GRADIENT, FConnectionGradientBase } from './models';
|
|
4
|
-
import { F_CONNECTION_COMPONENTS_PARENT } from '../../models';
|
|
5
|
-
import { createGradientDomIdentifier } from '../../utils';
|
|
6
3
|
import * as i0 from "@angular/core";
|
|
7
4
|
export class FConnectionGradient extends FConnectionGradientBase {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return createGradientDomIdentifier(this._connection.fId(), this._connection.fOutputId(), this._connection.fInputId());
|
|
11
|
-
}
|
|
12
|
-
get stop1Element() {
|
|
13
|
-
return this.hostElement.children.item(0);
|
|
14
|
-
}
|
|
15
|
-
get stop2Element() {
|
|
16
|
-
return this.hostElement.children.item(1);
|
|
17
|
-
}
|
|
18
|
-
initialize() {
|
|
19
|
-
this.stop1Element.setAttribute('offset', '0%');
|
|
20
|
-
this.stop2Element.setAttribute('offset', '100%');
|
|
21
|
-
}
|
|
22
|
-
_updateGradient() {
|
|
23
|
-
this._setFromColor(this._connection.fStartColor());
|
|
24
|
-
this._setToColor(this._connection.fEndColor());
|
|
25
|
-
}
|
|
26
|
-
_setFromColor(color) {
|
|
27
|
-
this.stop1Element.setAttribute('stop-color', color || 'transparent');
|
|
28
|
-
}
|
|
29
|
-
_setToColor(color) {
|
|
30
|
-
this.stop2Element.setAttribute('stop-color', color || 'transparent');
|
|
31
|
-
}
|
|
32
|
-
redraw(line) {
|
|
33
|
-
const x = line.point2.x - line.point1.x;
|
|
34
|
-
const y = line.point2.y - line.point1.y;
|
|
35
|
-
const distance = Math.sqrt(x * x + y * y) || 0.01;
|
|
36
|
-
const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);
|
|
37
|
-
this.hostElement.setAttribute('x1', from.x.toString());
|
|
38
|
-
this.hostElement.setAttribute('y1', from.y.toString());
|
|
39
|
-
const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);
|
|
40
|
-
this.hostElement.setAttribute('x2', to.x.toString());
|
|
41
|
-
this.hostElement.setAttribute('y2', to.y.toString());
|
|
42
|
-
this._updateGradient();
|
|
43
|
-
}
|
|
5
|
+
fStartColor = input.required();
|
|
6
|
+
fEndColor = input.required();
|
|
44
7
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradient, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
8
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: FConnectionGradient, isStandalone: true, selector: "f-connection-gradient", inputs: { fStartColor: { classPropertyName: "fStartColor", publicName: "fStartColor", isSignal: true, isRequired: true, transformFunction: null }, fEndColor: { classPropertyName: "fEndColor", publicName: "fEndColor", isSignal: true, isRequired: true, transformFunction: null } }, host: { styleAttribute: "display: none;" }, providers: [{ provide: F_CONNECTION_GRADIENT, useExisting: FConnectionGradient }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
46
9
|
}
|
|
47
10
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradient, decorators: [{
|
|
48
11
|
type: Component,
|
|
49
|
-
args: [{
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
12
|
+
args: [{
|
|
13
|
+
selector: 'f-connection-gradient',
|
|
14
|
+
template: '',
|
|
15
|
+
standalone: true,
|
|
16
|
+
host: {
|
|
17
|
+
style: 'display: none;',
|
|
18
|
+
},
|
|
19
|
+
providers: [{ provide: F_CONNECTION_GRADIENT, useExisting: FConnectionGradient }],
|
|
20
|
+
}]
|
|
53
21
|
}] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWdyYWRpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24tdjIvY29tcG9uZW50cy9jb25uZWN0aW9uLWdyYWRpZW50L2YtY29ubmVjdGlvbi1ncmFkaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBVzFFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBdUI7SUFDckMsV0FBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUN2QyxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO3dHQUZuRCxtQkFBbUI7NEZBQW5CLG1CQUFtQix3WUFGbkIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxpREFMdkUsRUFBRTs7NEZBT0QsbUJBQW1CO2tCQVQvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxFQUFFO29CQUNaLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLGdCQUFnQjtxQkFDeEI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxxQkFBcUIsRUFBRSxDQUFDO2lCQUNsRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZfQ09OTkVDVElPTl9HUkFESUVOVCwgRkNvbm5lY3Rpb25HcmFkaWVudEJhc2UgfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2YtY29ubmVjdGlvbi1ncmFkaWVudCcsXG4gIHRlbXBsYXRlOiAnJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgIHN0eWxlOiAnZGlzcGxheTogbm9uZTsnLFxuICB9LFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEZfQ09OTkVDVElPTl9HUkFESUVOVCwgdXNlRXhpc3Rpbmc6IEZDb25uZWN0aW9uR3JhZGllbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZDb25uZWN0aW9uR3JhZGllbnQgZXh0ZW5kcyBGQ29ubmVjdGlvbkdyYWRpZW50QmFzZSB7XG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBmU3RhcnRDb2xvciA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGZFbmRDb2xvciA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbn1cbiJdfQ==
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './components';
|
|
1
2
|
export * from './models';
|
|
2
3
|
export * from './f-connection-gradient';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi12Mi9jb21wb25lbnRzL2Nvbm5lY3Rpb24tZ3JhZGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2YtY29ubmVjdGlvbi1ncmFkaWVudCc7XG4iXX0=
|
package/esm2022/f-connection-v2/components/connection-gradient/models/f-connection-gradient-base.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
2
|
export const F_CONNECTION_GRADIENT = new InjectionToken('F_CONNECTION_GRADIENT');
|
|
3
3
|
export class FConnectionGradientBase {
|
|
4
|
-
hostElement = inject((ElementRef)).nativeElement;
|
|
5
4
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWdyYWRpZW50LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi12Mi9jb21wb25lbnRzL2Nvbm5lY3Rpb24tZ3JhZGllbnQvbW9kZWxzL2YtY29ubmVjdGlvbi1ncmFkaWVudC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHVCQUF1QixDQUN4QixDQUFDO0FBRUYsTUFBTSxPQUFnQix1QkFBdUI7Q0FHNUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBGX0NPTk5FQ1RJT05fR1JBRElFTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48RkNvbm5lY3Rpb25HcmFkaWVudEJhc2U+KFxuICAnRl9DT05ORUNUSU9OX0dSQURJRU5UJyxcbik7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGQ29ubmVjdGlvbkdyYWRpZW50QmFzZSB7XG4gIHB1YmxpYyBhYnN0cmFjdCBmU3RhcnRDb2xvcjogU2lnbmFsPHN0cmluZz47XG4gIHB1YmxpYyBhYnN0cmFjdCBmRW5kQ29sb3I6IFNpZ25hbDxzdHJpbmc+O1xufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';
|
|
2
2
|
import { normalizeDomElementId } from '@foblex/utils';
|
|
3
3
|
import { F_CONNECTION_PATH, FConnectionPathBase } from './models';
|
|
4
4
|
import { createConnectionDomIdentifier, createGradientDomUrl } from '../../utils';
|
|
@@ -6,12 +6,16 @@ import { F_CONNECTION_COMPONENTS_PARENT } from '../../models';
|
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class FConnectionPath extends FConnectionPathBase {
|
|
8
8
|
_connection = inject(F_CONNECTION_COMPONENTS_PARENT);
|
|
9
|
+
useGradient = input(false);
|
|
10
|
+
linkToGradient = computed(() => {
|
|
11
|
+
if (!this.useGradient()) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
return createGradientDomUrl(this._connection.fId());
|
|
15
|
+
});
|
|
9
16
|
get fPathId() {
|
|
10
17
|
return this._connection.fId();
|
|
11
18
|
}
|
|
12
|
-
get linkToGradient() {
|
|
13
|
-
return createGradientDomUrl(this._connection.fId(), this._connection.fOutputId(), this._connection.fInputId());
|
|
14
|
-
}
|
|
15
19
|
get attrConnectionId() {
|
|
16
20
|
return createConnectionDomIdentifier(this._connection.fId(), this._connection.fOutputId(), this._connection.fInputId());
|
|
17
21
|
}
|
|
@@ -30,7 +34,7 @@ export class FConnectionPath extends FConnectionPathBase {
|
|
|
30
34
|
this.hostElement.setAttribute('marker-end', `url(#${getMarkerEndId(this._connection.fId())})`);
|
|
31
35
|
}
|
|
32
36
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionPath, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
37
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: FConnectionPath, selector: "path[f-connection-path]", inputs: { useGradient: { classPropertyName: "useGradient", publicName: "useGradient", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "attrConnectionId", "attr.data-f-path-id": "fPathId", "style.stroke": "linkToGradient()" }, classAttribute: "f-component f-connection-path" }, providers: [
|
|
34
38
|
{
|
|
35
39
|
provide: F_CONNECTION_PATH,
|
|
36
40
|
useExisting: FConnectionPath,
|
|
@@ -43,7 +47,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43
47
|
class: 'f-component f-connection-path',
|
|
44
48
|
'[attr.id]': 'attrConnectionId',
|
|
45
49
|
'[attr.data-f-path-id]': 'fPathId',
|
|
46
|
-
'[
|
|
50
|
+
'[style.stroke]': 'linkToGradient()',
|
|
47
51
|
}, providers: [
|
|
48
52
|
{
|
|
49
53
|
provide: F_CONNECTION_PATH,
|
|
@@ -63,4 +67,4 @@ function getMarkerSelectedStartId(fConnectionId) {
|
|
|
63
67
|
function getMarkerSelectedEndId(fConnectionId) {
|
|
64
68
|
return normalizeDomElementId(`f-connection-selected-marker-end-${fConnectionId}`);
|
|
65
69
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLXBhdGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi12Mi9jb21wb25lbnRzL2Nvbm5lY3Rpb24tcGF0aC9mLWNvbm5lY3Rpb24tcGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFvQjlELE1BQU0sT0FBTyxlQUFnQixTQUFRLG1CQUFtQjtJQUNyQyxXQUFXLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFFdEQsV0FBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixjQUFjLEdBQUcsUUFBUSxDQUFnQixHQUFHLEVBQUU7UUFDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyw2QkFBNkIsQ0FDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsRUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsRUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFZSxVQUFVO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRWUsT0FBTyxDQUFDLElBQVk7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRWUsTUFBTTtRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FDM0IsY0FBYyxFQUNkLFFBQVEsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQzVELENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FDM0IsWUFBWSxFQUNaLFFBQVEsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQzFELENBQUM7SUFDSixDQUFDO0lBRWUsUUFBUTtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FDM0IsY0FBYyxFQUNkLFFBQVEsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQ3BELENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsUUFBUSxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRyxDQUFDO3dHQWpEVSxlQUFlOzRGQUFmLGVBQWUsd1hBUGY7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsZUFBZTthQUM3QjtTQUNGLGlEQWRTLEVBQUU7OzRGQWdCRCxlQUFlO2tCQWxCM0IsU0FBUzsrQkFDRSx5QkFBeUIsWUFDekIsRUFBRSxtQkFFSyx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLEtBQUssRUFBRSwrQkFBK0I7d0JBQ3RDLFdBQVcsRUFBRSxrQkFBa0I7d0JBQy9CLHVCQUF1QixFQUFFLFNBQVM7d0JBQ2xDLGdCQUFnQixFQUFFLGtCQUFrQjtxQkFDckMsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLGlCQUFpQjt5QkFDN0I7cUJBQ0Y7O0FBc0RILFNBQVMsZ0JBQWdCLENBQUMsYUFBcUI7SUFDN0MsT0FBTyxxQkFBcUIsQ0FBQyw2QkFBNkIsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsYUFBcUI7SUFDM0MsT0FBTyxxQkFBcUIsQ0FBQywyQkFBMkIsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxhQUFxQjtJQUNyRCxPQUFPLHFCQUFxQixDQUFDLHNDQUFzQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBQ3RGLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLGFBQXFCO0lBQ25ELE9BQU8scUJBQXFCLENBQUMsb0NBQW9DLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFDcEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBub3JtYWxpemVEb21FbGVtZW50SWQgfSBmcm9tICdAZm9ibGV4L3V0aWxzJztcbmltcG9ydCB7IEZfQ09OTkVDVElPTl9QQVRILCBGQ29ubmVjdGlvblBhdGhCYXNlIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgY3JlYXRlQ29ubmVjdGlvbkRvbUlkZW50aWZpZXIsIGNyZWF0ZUdyYWRpZW50RG9tVXJsIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgRl9DT05ORUNUSU9OX0NPTVBPTkVOVFNfUEFSRU5UIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGF0aFtmLWNvbm5lY3Rpb24tcGF0aF0nLFxuICB0ZW1wbGF0ZTogJycsXG4gIHN0eWxlVXJsczogWycuL2YtY29ubmVjdGlvbi1wYXRoLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2YtY29tcG9uZW50IGYtY29ubmVjdGlvbi1wYXRoJyxcbiAgICAnW2F0dHIuaWRdJzogJ2F0dHJDb25uZWN0aW9uSWQnLFxuICAgICdbYXR0ci5kYXRhLWYtcGF0aC1pZF0nOiAnZlBhdGhJZCcsXG4gICAgJ1tzdHlsZS5zdHJva2VdJzogJ2xpbmtUb0dyYWRpZW50KCknLFxuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBGX0NPTk5FQ1RJT05fUEFUSCxcbiAgICAgIHVzZUV4aXN0aW5nOiBGQ29ubmVjdGlvblBhdGgsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRkNvbm5lY3Rpb25QYXRoIGV4dGVuZHMgRkNvbm5lY3Rpb25QYXRoQmFzZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Nvbm5lY3Rpb24gPSBpbmplY3QoRl9DT05ORUNUSU9OX0NPTVBPTkVOVFNfUEFSRU5UKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdXNlR3JhZGllbnQgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBsaW5rVG9HcmFkaWVudCA9IGNvbXB1dGVkPHN0cmluZyB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMudXNlR3JhZGllbnQoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNyZWF0ZUdyYWRpZW50RG9tVXJsKHRoaXMuX2Nvbm5lY3Rpb24uZklkKCkpO1xuICB9KTtcblxuICBwdWJsaWMgZ2V0IGZQYXRoSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5mSWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXR0ckNvbm5lY3Rpb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBjcmVhdGVDb25uZWN0aW9uRG9tSWRlbnRpZmllcihcbiAgICAgIHRoaXMuX2Nvbm5lY3Rpb24uZklkKCksXG4gICAgICB0aGlzLl9jb25uZWN0aW9uLmZPdXRwdXRJZCgpLFxuICAgICAgdGhpcy5fY29ubmVjdGlvbi5mSW5wdXRJZCgpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc2VsZWN0KCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgc2V0UGF0aChwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmhvc3RFbGVtZW50LnNldEF0dHJpYnV0ZSgnZCcsIGAke3BhdGh9YCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgc2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKFxuICAgICAgJ21hcmtlci1zdGFydCcsXG4gICAgICBgdXJsKCMke2dldE1hcmtlclNlbGVjdGVkU3RhcnRJZCh0aGlzLl9jb25uZWN0aW9uLmZJZCgpKX0pYCxcbiAgICApO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKFxuICAgICAgJ21hcmtlci1lbmQnLFxuICAgICAgYHVybCgjJHtnZXRNYXJrZXJTZWxlY3RlZEVuZElkKHRoaXMuX2Nvbm5lY3Rpb24uZklkKCkpfSlgLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGVzZWxlY3QoKTogdm9pZCB7XG4gICAgdGhpcy5ob3N0RWxlbWVudC5zZXRBdHRyaWJ1dGUoXG4gICAgICAnbWFya2VyLXN0YXJ0JyxcbiAgICAgIGB1cmwoIyR7Z2V0TWFya2VyU3RhcnRJZCh0aGlzLl9jb25uZWN0aW9uLmZJZCgpKX0pYCxcbiAgICApO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdtYXJrZXItZW5kJywgYHVybCgjJHtnZXRNYXJrZXJFbmRJZCh0aGlzLl9jb25uZWN0aW9uLmZJZCgpKX0pYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0TWFya2VyU3RhcnRJZChmQ29ubmVjdGlvbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbm9ybWFsaXplRG9tRWxlbWVudElkKGBmLWNvbm5lY3Rpb24tbWFya2VyLXN0YXJ0LSR7ZkNvbm5lY3Rpb25JZH1gKTtcbn1cblxuZnVuY3Rpb24gZ2V0TWFya2VyRW5kSWQoZkNvbm5lY3Rpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZURvbUVsZW1lbnRJZChgZi1jb25uZWN0aW9uLW1hcmtlci1lbmQtJHtmQ29ubmVjdGlvbklkfWApO1xufVxuXG5mdW5jdGlvbiBnZXRNYXJrZXJTZWxlY3RlZFN0YXJ0SWQoZkNvbm5lY3Rpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZURvbUVsZW1lbnRJZChgZi1jb25uZWN0aW9uLXNlbGVjdGVkLW1hcmtlci1zdGFydC0ke2ZDb25uZWN0aW9uSWR9YCk7XG59XG5cbmZ1bmN0aW9uIGdldE1hcmtlclNlbGVjdGVkRW5kSWQoZkNvbm5lY3Rpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZURvbUVsZW1lbnRJZChgZi1jb25uZWN0aW9uLXNlbGVjdGVkLW1hcmtlci1lbmQtJHtmQ29ubmVjdGlvbklkfWApO1xufVxuIl19
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { contentChild, contentChildren, Directive, ElementRef, inject,
|
|
1
|
+
import { contentChild, contentChildren, Directive, ElementRef, inject, signal, viewChild, } from '@angular/core';
|
|
2
2
|
import { LineExtensions, PointExtensions } from '@foblex/2d';
|
|
3
3
|
import { mixinChangeSelection, mixinChangeVisibility, } from '../../mixins';
|
|
4
4
|
import { ConnectionLineBuilder, EFConnectionConnectableSide } from '../utils';
|
|
5
5
|
import { EFConnectableSide } from '../enums';
|
|
6
6
|
import { F_CONNECTION_PATH } from './connection-path';
|
|
7
|
-
import { F_CONNECTION_GRADIENT } from './connection-gradient';
|
|
8
7
|
import { F_CONNECTION_DRAG_HANDLE_END, F_CONNECTION_DRAG_HANDLE_START, } from './connection-drag-handles';
|
|
9
8
|
import { F_CONNECTION_SELECTION } from './connection-selection';
|
|
10
9
|
import { ConnectionContentLayoutEngine, F_CONNECTION_CONTENT, } from './connection-content';
|
|
11
10
|
import { F_CONNECTION_WAYPOINTS } from './connection-waypoints';
|
|
11
|
+
import { F_CONNECTION_GRADIENT, FConnectionGradientRenderer } from './connection-gradient';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
13
|
const MIXIN_BASE = mixinChangeSelection(mixinChangeVisibility(class {
|
|
14
14
|
hostElement;
|
|
@@ -18,8 +18,6 @@ const MIXIN_BASE = mixinChangeSelection(mixinChangeVisibility(class {
|
|
|
18
18
|
}));
|
|
19
19
|
export class FConnectionBase extends MIXIN_BASE {
|
|
20
20
|
_fConnectionBuilder = inject(ConnectionLineBuilder);
|
|
21
|
-
fStartColor = input('black');
|
|
22
|
-
fEndColor = input('black');
|
|
23
21
|
path = '';
|
|
24
22
|
line = LineExtensions.initialize();
|
|
25
23
|
fReassignableStart = signal(false);
|
|
@@ -27,13 +25,14 @@ export class FConnectionBase extends MIXIN_BASE {
|
|
|
27
25
|
fSelectionDisabled = signal(false);
|
|
28
26
|
fDefs = viewChild.required('defs');
|
|
29
27
|
fPath = viewChild.required(F_CONNECTION_PATH);
|
|
30
|
-
fGradient = viewChild.required(F_CONNECTION_GRADIENT);
|
|
31
28
|
fDragHandleStart = viewChild(F_CONNECTION_DRAG_HANDLE_START);
|
|
32
29
|
fDragHandleEnd = viewChild.required(F_CONNECTION_DRAG_HANDLE_END);
|
|
33
30
|
fSelection = viewChild.required(F_CONNECTION_SELECTION);
|
|
34
31
|
fContents = contentChildren(F_CONNECTION_CONTENT, {
|
|
35
32
|
descendants: true,
|
|
36
33
|
});
|
|
34
|
+
fGradient = contentChild(F_CONNECTION_GRADIENT);
|
|
35
|
+
_fGradientRenderer = viewChild(FConnectionGradientRenderer);
|
|
37
36
|
fWaypoints = contentChild(F_CONNECTION_WAYPOINTS);
|
|
38
37
|
fInputSide = signal(EFConnectionConnectableSide.DEFAULT);
|
|
39
38
|
_sourceSide = EFConnectableSide.AUTO;
|
|
@@ -46,7 +45,6 @@ export class FConnectionBase extends MIXIN_BASE {
|
|
|
46
45
|
}
|
|
47
46
|
initialize() {
|
|
48
47
|
this.fPath().initialize();
|
|
49
|
-
this.fGradient().initialize();
|
|
50
48
|
this.redraw();
|
|
51
49
|
}
|
|
52
50
|
isContains(element) {
|
|
@@ -89,9 +87,15 @@ export class FConnectionBase extends MIXIN_BASE {
|
|
|
89
87
|
redraw() {
|
|
90
88
|
this.fPath().setPath(this.path);
|
|
91
89
|
this.fSelection().setPath(this.path);
|
|
92
|
-
this.fGradient().redraw(this.line);
|
|
93
90
|
this.fDragHandleEnd().redraw(this._penultimatePoint, this.line.point2);
|
|
94
91
|
this.fDragHandleStart()?.redraw(this._secondPoint, this.line.point1);
|
|
92
|
+
this._fGradientRenderer()?.redraw(this.line);
|
|
93
|
+
}
|
|
94
|
+
getResolvedSides() {
|
|
95
|
+
return {
|
|
96
|
+
sourceSide: this._sourceSide,
|
|
97
|
+
targetSide: this._targetSide,
|
|
98
|
+
};
|
|
95
99
|
}
|
|
96
100
|
/**
|
|
97
101
|
* Applies the resolved sides to the connection. Don't call this method directly; it's used internally.
|
|
@@ -104,9 +108,9 @@ export class FConnectionBase extends MIXIN_BASE {
|
|
|
104
108
|
this._targetSide = targetSide;
|
|
105
109
|
}
|
|
106
110
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
107
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: FConnectionBase,
|
|
111
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: FConnectionBase, queries: [{ propertyName: "fContents", predicate: F_CONNECTION_CONTENT, descendants: true, isSignal: true }, { propertyName: "fGradient", first: true, predicate: F_CONNECTION_GRADIENT, descendants: true, isSignal: true }, { propertyName: "fWaypoints", first: true, predicate: F_CONNECTION_WAYPOINTS, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "fDefs", first: true, predicate: ["defs"], descendants: true, isSignal: true }, { propertyName: "fPath", first: true, predicate: F_CONNECTION_PATH, descendants: true, isSignal: true }, { propertyName: "fDragHandleStart", first: true, predicate: F_CONNECTION_DRAG_HANDLE_START, descendants: true, isSignal: true }, { propertyName: "fDragHandleEnd", first: true, predicate: F_CONNECTION_DRAG_HANDLE_END, descendants: true, isSignal: true }, { propertyName: "fSelection", first: true, predicate: F_CONNECTION_SELECTION, descendants: true, isSignal: true }, { propertyName: "_fGradientRenderer", first: true, predicate: FConnectionGradientRenderer, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
|
|
108
112
|
}
|
|
109
113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, decorators: [{
|
|
110
114
|
type: Directive
|
|
111
115
|
}], ctorParameters: () => [] });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi12Mi9jb21wb25lbnRzL2YtY29ubmVjdGlvbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUIsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1RSxPQUFPLEVBR0wsb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUscUJBQXFCLEVBQXdCLDJCQUEyQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxVQUFVLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qiw4QkFBOEIsR0FDL0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLG9CQUFvQixHQUVyQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUVoRSxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FDckMscUJBQXFCLENBQ25CO0lBQ3FCO0lBQW5CLFlBQW1CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUcsQ0FBQztDQUNoRCxDQUNGLENBQ0YsQ0FBQztBQUdGLE1BQU0sT0FBZ0IsZUFDcEIsU0FBUSxVQUFVO0lBR0QsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFJckQsV0FBVyxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztJQUVyQyxTQUFTLEdBQUcsS0FBSyxDQUFTLE9BQU8sQ0FBQyxDQUFDO0lBVXpDLElBQUksR0FBVyxFQUFFLENBQUM7SUFFckIsSUFBSSxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUUxQixrQkFBa0IsR0FBb0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBELGlCQUFpQixHQUFvQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFMUMsa0JBQWtCLEdBQW9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQVE3RCxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBNkIsTUFBTSxDQUFDLENBQUM7SUFFL0QsS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU5QyxTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXRELGdCQUFnQixHQUFHLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBRTdELGNBQWMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFFbEUsVUFBVSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUV4RCxTQUFTLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixFQUFFO1FBQ2hFLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUMsQ0FBQztJQUVhLFVBQVUsR0FBRyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUVsRCxVQUFVLEdBQXdDLE1BQU0sQ0FDdEUsMkJBQTJCLENBQUMsT0FBTyxDQUNwQyxDQUFDO0lBRU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQztJQUU3QixXQUFXLEdBQXdDLE1BQU0sQ0FDdkUsMkJBQTJCLENBQUMsT0FBTyxDQUNwQyxDQUFDO0lBRU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQztJQUVyQyxpQkFBaUIsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDakQsWUFBWSxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVwRDtRQUNFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBaUM7UUFDakQsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsU0FBeUIsQ0FBQSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FDbEQsQ0FBQztJQUNKLENBQUM7SUFFTSxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFTO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdEQsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3JGLE1BQU0sRUFDTixNQUFNLENBQ1AsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsSUFBSSxNQUFNLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLElBQUksTUFBTSxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVwRCxJQUFJLDZCQUE2QixFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLFNBQVM7UUFDZixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxjQUFjLENBQUMsTUFBYyxFQUFFLE1BQWM7UUFDbkQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1lBQ3JDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixPQUFPLEVBQUU7Z0JBQ1AsTUFBTTtnQkFDTixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzVCLE1BQU07Z0JBQ04sVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM1QixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO2FBQ2hEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVlLHNCQUFzQjtRQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVlLHdCQUF3QjtRQUN0QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksK0JBQStCLENBQ3BDLFVBQTZCLEVBQzdCLFVBQTZCO1FBRTdCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ2hDLENBQUM7d0dBdEptQixlQUFlOzRGQUFmLGVBQWUsOFVBZ0RTLG9CQUFvQiw2RkFJdEIsc0JBQXNCLHVNQWRyQixpQkFBaUIsNEZBRWIscUJBQXFCLG1HQUV2Qiw4QkFBOEIsaUdBRXZCLDRCQUE0Qiw2RkFFaEMsc0JBQXNCOzs0RkE5Q2xELGVBQWU7a0JBRHBDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb250ZW50Q2hpbGQsXG4gIGNvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIFNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMaW5lLCBJUG9pbnQsIExpbmVFeHRlbnNpb25zLCBQb2ludEV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7XG4gIElDYW5DaGFuZ2VWaXNpYmlsaXR5LFxuICBJU2VsZWN0YWJsZSxcbiAgbWl4aW5DaGFuZ2VTZWxlY3Rpb24sXG4gIG1peGluQ2hhbmdlVmlzaWJpbGl0eSxcbn0gZnJvbSAnLi4vLi4vbWl4aW5zJztcbmltcG9ydCB7IENvbm5lY3Rpb25MaW5lQnVpbGRlciwgRUZDb25uZWN0aW9uQmVoYXZpb3IsIEVGQ29ubmVjdGlvbkNvbm5lY3RhYmxlU2lkZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEVGQ29ubmVjdGFibGVTaWRlLCBFRkNvbm5lY3Rpb25UeXBlIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgRl9DT05ORUNUSU9OX1BBVEggfSBmcm9tICcuL2Nvbm5lY3Rpb24tcGF0aCc7XG5pbXBvcnQgeyBGX0NPTk5FQ1RJT05fR1JBRElFTlQgfSBmcm9tICcuL2Nvbm5lY3Rpb24tZ3JhZGllbnQnO1xuaW1wb3J0IHtcbiAgRl9DT05ORUNUSU9OX0RSQUdfSEFORExFX0VORCxcbiAgRl9DT05ORUNUSU9OX0RSQUdfSEFORExFX1NUQVJULFxufSBmcm9tICcuL2Nvbm5lY3Rpb24tZHJhZy1oYW5kbGVzJztcbmltcG9ydCB7IEZfQ09OTkVDVElPTl9TRUxFQ1RJT04gfSBmcm9tICcuL2Nvbm5lY3Rpb24tc2VsZWN0aW9uJztcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25Db250ZW50TGF5b3V0RW5naW5lLFxuICBGX0NPTk5FQ1RJT05fQ09OVEVOVCxcbiAgRkNvbm5lY3Rpb25Db250ZW50QmFzZSxcbn0gZnJvbSAnLi9jb25uZWN0aW9uLWNvbnRlbnQnO1xuaW1wb3J0IHsgRl9DT05ORUNUSU9OX1dBWVBPSU5UUyB9IGZyb20gJy4vY29ubmVjdGlvbi13YXlwb2ludHMnO1xuXG5jb25zdCBNSVhJTl9CQVNFID0gbWl4aW5DaGFuZ2VTZWxlY3Rpb24oXG4gIG1peGluQ2hhbmdlVmlzaWJpbGl0eShcbiAgICBjbGFzcyB7XG4gICAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7fVxuICAgIH0sXG4gICksXG4pO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGQ29ubmVjdGlvbkJhc2VcbiAgZXh0ZW5kcyBNSVhJTl9CQVNFXG4gIGltcGxlbWVudHMgSVNlbGVjdGFibGUsIElDYW5DaGFuZ2VWaXNpYmlsaXR5XG57XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZDb25uZWN0aW9uQnVpbGRlciA9IGluamVjdChDb25uZWN0aW9uTGluZUJ1aWxkZXIpO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBvdmVycmlkZSBmSWQ6IFNpZ25hbDxzdHJpbmc+O1xuXG4gIHB1YmxpYyByZWFkb25seSBmU3RhcnRDb2xvciA9IGlucHV0PHN0cmluZz4oJ2JsYWNrJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZFbmRDb2xvciA9IGlucHV0PHN0cmluZz4oJ2JsYWNrJyk7XG5cbiAgcHVibGljIGFic3RyYWN0IGZPdXRwdXRJZDogU2lnbmFsPHN0cmluZz47XG5cbiAgcHVibGljIGFic3RyYWN0IGZJbnB1dElkOiBTaWduYWw8c3RyaW5nPjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZlJhZGl1czogbnVtYmVyO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmT2Zmc2V0OiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIHBhdGg6IHN0cmluZyA9ICcnO1xuXG4gIHB1YmxpYyBsaW5lID0gTGluZUV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmUmVhc3NpZ25hYmxlU3RhcnQ6IFNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZEcmFnZ2luZ0Rpc2FibGVkOiBTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBmU2VsZWN0aW9uRGlzYWJsZWQ6IFNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIGFic3RyYWN0IGJvdW5kaW5nRWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50O1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmQmVoYXZpb3I6IEVGQ29ubmVjdGlvbkJlaGF2aW9yO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmVHlwZTogRUZDb25uZWN0aW9uVHlwZSB8IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgZkRlZnMgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxTVkdEZWZzRWxlbWVudD4+KCdkZWZzJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZQYXRoID0gdmlld0NoaWxkLnJlcXVpcmVkKEZfQ09OTkVDVElPTl9QQVRIKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZkdyYWRpZW50ID0gdmlld0NoaWxkLnJlcXVpcmVkKEZfQ09OTkVDVElPTl9HUkFESUVOVCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZEcmFnSGFuZGxlU3RhcnQgPSB2aWV3Q2hpbGQoRl9DT05ORUNUSU9OX0RSQUdfSEFORExFX1NUQVJUKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZkRyYWdIYW5kbGVFbmQgPSB2aWV3Q2hpbGQucmVxdWlyZWQoRl9DT05ORUNUSU9OX0RSQUdfSEFORExFX0VORCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZTZWxlY3Rpb24gPSB2aWV3Q2hpbGQucmVxdWlyZWQoRl9DT05ORUNUSU9OX1NFTEVDVElPTik7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZDb250ZW50cyA9IGNvbnRlbnRDaGlsZHJlbihGX0NPTk5FQ1RJT05fQ09OVEVOVCwge1xuICAgIGRlc2NlbmRhbnRzOiB0cnVlLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZldheXBvaW50cyA9IGNvbnRlbnRDaGlsZChGX0NPTk5FQ1RJT05fV0FZUE9JTlRTKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZklucHV0U2lkZTogU2lnbmFsPEVGQ29ubmVjdGlvbkNvbm5lY3RhYmxlU2lkZT4gPSBzaWduYWwoXG4gICAgRUZDb25uZWN0aW9uQ29ubmVjdGFibGVTaWRlLkRFRkFVTFQsXG4gICk7XG5cbiAgcHJpdmF0ZSBfc291cmNlU2lkZSA9IEVGQ29ubmVjdGFibGVTaWRlLkFVVE87XG5cbiAgcHVibGljIHJlYWRvbmx5IGZPdXRwdXRTaWRlOiBTaWduYWw8RUZDb25uZWN0aW9uQ29ubmVjdGFibGVTaWRlPiA9IHNpZ25hbChcbiAgICBFRkNvbm5lY3Rpb25Db25uZWN0YWJsZVNpZGUuREVGQVVMVCxcbiAgKTtcblxuICBwcml2YXRlIF90YXJnZXRTaWRlID0gRUZDb25uZWN0YWJsZVNpZGUuQVVUTztcblxuICBwcml2YXRlIF9wZW51bHRpbWF0ZVBvaW50ID0gUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoKTtcbiAgcHJpdmF0ZSBfc2Vjb25kUG9pbnQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy5mUGF0aCgpLmluaXRpYWxpemUoKTtcbiAgICB0aGlzLmZHcmFkaWVudCgpLmluaXRpYWxpemUoKTtcbiAgICB0aGlzLnJlZHJhdygpO1xuICB9XG5cbiAgcHVibGljIGlzQ29udGFpbnMoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmhvc3RFbGVtZW50LmZpcnN0Q2hpbGQ/Lmxhc3RDaGlsZCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMoZWxlbWVudCkgfHxcbiAgICAgIEFycmF5LmZyb20odGhpcy5mQ29udGVudHMoKT8udmFsdWVzKCkgPz8gW10pLnNvbWUoKHgpID0+IHguaG9zdEVsZW1lbnQ/LmNvbnRhaW5zKGVsZW1lbnQpKSB8fFxuICAgICAgdGhpcy5mV2F5cG9pbnRzKCk/Lmhvc3RFbGVtZW50Py5jb250YWlucyhlbGVtZW50KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2V0TGluZSh7IHBvaW50MSwgcG9pbnQyIH06IElMaW5lKTogdm9pZCB7XG4gICAgdGhpcy5saW5lID0gTGluZUV4dGVuc2lvbnMuaW5pdGlhbGl6ZShwb2ludDEsIHBvaW50Mik7XG5cbiAgICBjb25zdCB7IHBhdGgsIHBvaW50cywgcGVudWx0aW1hdGVQb2ludCwgc2Vjb25kUG9pbnQsIGNhbmRpZGF0ZXMgfSA9IHRoaXMuX2dldFBhdGhSZXN1bHQoXG4gICAgICBwb2ludDEsXG4gICAgICBwb2ludDIsXG4gICAgKTtcblxuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5fcGVudWx0aW1hdGVQb2ludCA9IHBlbnVsdGltYXRlUG9pbnQgfHwgcG9pbnQxO1xuICAgIHRoaXMuX3NlY29uZFBvaW50ID0gc2Vjb25kUG9pbnQgfHwgcG9pbnQyO1xuICAgIHRoaXMuZldheXBvaW50cygpPy5jYW5kaWRhdGVzLnNldChjYW5kaWRhdGVzIHx8IFtdKTtcblxuICAgIG5ldyBDb25uZWN0aW9uQ29udGVudExheW91dEVuZ2luZSgpLmxheW91dChwb2ludHMgfHwgW10sIHRoaXMuX2NvbnRlbnRzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29udGVudHMoKTogRkNvbm5lY3Rpb25Db250ZW50QmFzZVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZDb250ZW50cygpPy52YWx1ZXMoKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQYXRoUmVzdWx0KHNvdXJjZTogSVBvaW50LCB0YXJnZXQ6IElQb2ludCkge1xuICAgIHJldHVybiB0aGlzLl9mQ29ubmVjdGlvbkJ1aWxkZXIuaGFuZGxlKHtcbiAgICAgIHR5cGU6IHRoaXMuZlR5cGUsXG4gICAgICBwYXlsb2FkOiB7XG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgc291cmNlU2lkZTogdGhpcy5fc291cmNlU2lkZSxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICB0YXJnZXRTaWRlOiB0aGlzLl90YXJnZXRTaWRlLFxuICAgICAgICByYWRpdXM6IHRoaXMuZlJhZGl1cyxcbiAgICAgICAgb2Zmc2V0OiB0aGlzLmZPZmZzZXQsXG4gICAgICAgIHdheXBvaW50czogdGhpcy5mV2F5cG9pbnRzKCk/LndheXBvaW50cygpIHx8IFtdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBtYXJrQ2hpbGRyZW5Bc1NlbGVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZlBhdGgoKS5zZWxlY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSB1bm1hcmtDaGlsZHJlbkFzU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mUGF0aCgpLmRlc2VsZWN0KCk7XG4gIH1cblxuICBwdWJsaWMgcmVkcmF3KCk6IHZvaWQge1xuICAgIHRoaXMuZlBhdGgoKS5zZXRQYXRoKHRoaXMucGF0aCk7XG4gICAgdGhpcy5mU2VsZWN0aW9uKCkuc2V0UGF0aCh0aGlzLnBhdGgpO1xuICAgIHRoaXMuZkdyYWRpZW50KCkucmVkcmF3KHRoaXMubGluZSk7XG4gICAgdGhpcy5mRHJhZ0hhbmRsZUVuZCgpLnJlZHJhdyh0aGlzLl9wZW51bHRpbWF0ZVBvaW50LCB0aGlzLmxpbmUucG9pbnQyKTtcbiAgICB0aGlzLmZEcmFnSGFuZGxlU3RhcnQoKT8ucmVkcmF3KHRoaXMuX3NlY29uZFBvaW50LCB0aGlzLmxpbmUucG9pbnQxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSByZXNvbHZlZCBzaWRlcyB0byB0aGUgY29ubmVjdGlvbi4gRG9uJ3QgY2FsbCB0aGlzIG1ldGhvZCBkaXJlY3RseTsgaXQncyB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2VTaWRlIFRoZSByZXNvbHZlZCBzaWRlIGZvciB0aGUgc291cmNlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSB0YXJnZXRTaWRlIFRoZSByZXNvbHZlZCBzaWRlIGZvciB0aGUgdGFyZ2V0IGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgX2FwcGx5UmVzb2x2ZWRTaWRlc1RvQ29ubmVjdGlvbihcbiAgICBzb3VyY2VTaWRlOiBFRkNvbm5lY3RhYmxlU2lkZSxcbiAgICB0YXJnZXRTaWRlOiBFRkNvbm5lY3RhYmxlU2lkZSxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fc291cmNlU2lkZSA9IHNvdXJjZVNpZGU7XG4gICAgdGhpcy5fdGFyZ2V0U2lkZSA9IHRhcmdldFNpZGU7XG4gIH1cbn1cbiJdfQ==
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi12Mi9jb21wb25lbnRzL2YtY29ubmVjdGlvbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFpQixjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVFLE9BQU8sRUFHTCxvQkFBb0IsRUFDcEIscUJBQXFCLEdBQ3RCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxxQkFBcUIsRUFBd0IsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEcsT0FBTyxFQUFFLGlCQUFpQixFQUFvQixNQUFNLFVBQVUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDhCQUE4QixHQUMvQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0Isb0JBQW9CLEdBRXJCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRTNGLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUNyQyxxQkFBcUIsQ0FDbkI7SUFDcUI7SUFBbkIsWUFBbUIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0NBQ2hELENBQ0YsQ0FDRixDQUFDO0FBR0YsTUFBTSxPQUFnQixlQUNwQixTQUFRLFVBQVU7SUFHRCxtQkFBbUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQVkzRCxJQUFJLEdBQVcsRUFBRSxDQUFDO0lBRXJCLElBQUksR0FBRyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFMUIsa0JBQWtCLEdBQW9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwRCxpQkFBaUIsR0FBb0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTFDLGtCQUFrQixHQUFvQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFRN0QsS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQTZCLE1BQU0sQ0FBQyxDQUFDO0lBRS9ELEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFOUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFFN0QsY0FBYyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUVsRSxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRXhELFNBQVMsR0FBRyxlQUFlLENBQUMsb0JBQW9CLEVBQUU7UUFDaEUsV0FBVyxFQUFFLElBQUk7S0FDbEIsQ0FBQyxDQUFDO0lBRWEsU0FBUyxHQUFHLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRS9DLGtCQUFrQixHQUFHLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBRTdELFVBQVUsR0FBRyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUVsRCxVQUFVLEdBQXdDLE1BQU0sQ0FDdEUsMkJBQTJCLENBQUMsT0FBTyxDQUNwQyxDQUFDO0lBRU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQztJQUU3QixXQUFXLEdBQXdDLE1BQU0sQ0FDdkUsMkJBQTJCLENBQUMsT0FBTyxDQUNwQyxDQUFDO0lBRU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQztJQUVyQyxpQkFBaUIsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDakQsWUFBWSxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVwRDtRQUNFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFpQztRQUNqRCxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxTQUF5QixDQUFBLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUN6RSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUNsRCxDQUFDO0lBQ0osQ0FBQztJQUVNLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVM7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV0RCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDckYsTUFBTSxFQUNOLE1BQU0sQ0FDUCxDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixJQUFJLE1BQU0sQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsSUFBSSxNQUFNLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXBELElBQUksNkJBQTZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU8sU0FBUztRQUNmLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFjLEVBQUUsTUFBYztRQUNuRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7WUFDckMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2hCLE9BQU8sRUFBRTtnQkFDUCxNQUFNO2dCQUNOLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDNUIsTUFBTTtnQkFDTixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7YUFDaEQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRWUsc0JBQXNCO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRWUsd0JBQXdCO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM1QixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLCtCQUErQixDQUNwQyxVQUE2QixFQUM3QixVQUE2QjtRQUU3QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO3dHQTFKbUIsZUFBZTs0RkFBZixlQUFlLG9EQTBDUyxvQkFBb0IsNEZBSXZCLHFCQUFxQiw2RkFJcEIsc0JBQXNCLHVNQWhCckIsaUJBQWlCLG1HQUVmLDhCQUE4QixpR0FFdkIsNEJBQTRCLDZGQUVoQyxzQkFBc0IscUdBUXRCLDJCQUEyQjs7NEZBaER2RCxlQUFlO2tCQURwQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY29udGVudENoaWxkLFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIFNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMaW5lLCBJUG9pbnQsIExpbmVFeHRlbnNpb25zLCBQb2ludEV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7XG4gIElDYW5DaGFuZ2VWaXNpYmlsaXR5LFxuICBJU2VsZWN0YWJsZSxcbiAgbWl4aW5DaGFuZ2VTZWxlY3Rpb24sXG4gIG1peGluQ2hhbmdlVmlzaWJpbGl0eSxcbn0gZnJvbSAnLi4vLi4vbWl4aW5zJztcbmltcG9ydCB7IENvbm5lY3Rpb25MaW5lQnVpbGRlciwgRUZDb25uZWN0aW9uQmVoYXZpb3IsIEVGQ29ubmVjdGlvbkNvbm5lY3RhYmxlU2lkZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEVGQ29ubmVjdGFibGVTaWRlLCBFRkNvbm5lY3Rpb25UeXBlIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgRl9DT05ORUNUSU9OX1BBVEggfSBmcm9tICcuL2Nvbm5lY3Rpb24tcGF0aCc7XG5pbXBvcnQge1xuICBGX0NPTk5FQ1RJT05fRFJBR19IQU5ETEVfRU5ELFxuICBGX0NPTk5FQ1RJT05fRFJBR19IQU5ETEVfU1RBUlQsXG59IGZyb20gJy4vY29ubmVjdGlvbi1kcmFnLWhhbmRsZXMnO1xuaW1wb3J0IHsgRl9DT05ORUNUSU9OX1NFTEVDVElPTiB9IGZyb20gJy4vY29ubmVjdGlvbi1zZWxlY3Rpb24nO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbkNvbnRlbnRMYXlvdXRFbmdpbmUsXG4gIEZfQ09OTkVDVElPTl9DT05URU5ULFxuICBGQ29ubmVjdGlvbkNvbnRlbnRCYXNlLFxufSBmcm9tICcuL2Nvbm5lY3Rpb24tY29udGVudCc7XG5pbXBvcnQgeyBGX0NPTk5FQ1RJT05fV0FZUE9JTlRTIH0gZnJvbSAnLi9jb25uZWN0aW9uLXdheXBvaW50cyc7XG5pbXBvcnQgeyBGX0NPTk5FQ1RJT05fR1JBRElFTlQsIEZDb25uZWN0aW9uR3JhZGllbnRSZW5kZXJlciB9IGZyb20gJy4vY29ubmVjdGlvbi1ncmFkaWVudCc7XG5cbmNvbnN0IE1JWElOX0JBU0UgPSBtaXhpbkNoYW5nZVNlbGVjdGlvbihcbiAgbWl4aW5DaGFuZ2VWaXNpYmlsaXR5KFxuICAgIGNsYXNzIHtcbiAgICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBob3N0RWxlbWVudDogSFRNTEVsZW1lbnQpIHt9XG4gICAgfSxcbiAgKSxcbik7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZDb25uZWN0aW9uQmFzZVxuICBleHRlbmRzIE1JWElOX0JBU0VcbiAgaW1wbGVtZW50cyBJU2VsZWN0YWJsZSwgSUNhbkNoYW5nZVZpc2liaWxpdHlcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfZkNvbm5lY3Rpb25CdWlsZGVyID0gaW5qZWN0KENvbm5lY3Rpb25MaW5lQnVpbGRlcik7XG5cbiAgcHVibGljIGFic3RyYWN0IG92ZXJyaWRlIGZJZDogU2lnbmFsPHN0cmluZz47XG5cbiAgcHVibGljIGFic3RyYWN0IGZPdXRwdXRJZDogU2lnbmFsPHN0cmluZz47XG5cbiAgcHVibGljIGFic3RyYWN0IGZJbnB1dElkOiBTaWduYWw8c3RyaW5nPjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZlJhZGl1czogbnVtYmVyO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmT2Zmc2V0OiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIHBhdGg6IHN0cmluZyA9ICcnO1xuXG4gIHB1YmxpYyBsaW5lID0gTGluZUV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmUmVhc3NpZ25hYmxlU3RhcnQ6IFNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZEcmFnZ2luZ0Rpc2FibGVkOiBTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBmU2VsZWN0aW9uRGlzYWJsZWQ6IFNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIGFic3RyYWN0IGJvdW5kaW5nRWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50O1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmQmVoYXZpb3I6IEVGQ29ubmVjdGlvbkJlaGF2aW9yO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmVHlwZTogRUZDb25uZWN0aW9uVHlwZSB8IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgZkRlZnMgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxTVkdEZWZzRWxlbWVudD4+KCdkZWZzJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZQYXRoID0gdmlld0NoaWxkLnJlcXVpcmVkKEZfQ09OTkVDVElPTl9QQVRIKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZkRyYWdIYW5kbGVTdGFydCA9IHZpZXdDaGlsZChGX0NPTk5FQ1RJT05fRFJBR19IQU5ETEVfU1RBUlQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmRHJhZ0hhbmRsZUVuZCA9IHZpZXdDaGlsZC5yZXF1aXJlZChGX0NPTk5FQ1RJT05fRFJBR19IQU5ETEVfRU5EKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZlNlbGVjdGlvbiA9IHZpZXdDaGlsZC5yZXF1aXJlZChGX0NPTk5FQ1RJT05fU0VMRUNUSU9OKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZkNvbnRlbnRzID0gY29udGVudENoaWxkcmVuKEZfQ09OTkVDVElPTl9DT05URU5ULCB7XG4gICAgZGVzY2VuZGFudHM6IHRydWUsXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBmR3JhZGllbnQgPSBjb250ZW50Q2hpbGQoRl9DT05ORUNUSU9OX0dSQURJRU5UKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mR3JhZGllbnRSZW5kZXJlciA9IHZpZXdDaGlsZChGQ29ubmVjdGlvbkdyYWRpZW50UmVuZGVyZXIpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmV2F5cG9pbnRzID0gY29udGVudENoaWxkKEZfQ09OTkVDVElPTl9XQVlQT0lOVFMpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmSW5wdXRTaWRlOiBTaWduYWw8RUZDb25uZWN0aW9uQ29ubmVjdGFibGVTaWRlPiA9IHNpZ25hbChcbiAgICBFRkNvbm5lY3Rpb25Db25uZWN0YWJsZVNpZGUuREVGQVVMVCxcbiAgKTtcblxuICBwcml2YXRlIF9zb3VyY2VTaWRlID0gRUZDb25uZWN0YWJsZVNpZGUuQVVUTztcblxuICBwdWJsaWMgcmVhZG9ubHkgZk91dHB1dFNpZGU6IFNpZ25hbDxFRkNvbm5lY3Rpb25Db25uZWN0YWJsZVNpZGU+ID0gc2lnbmFsKFxuICAgIEVGQ29ubmVjdGlvbkNvbm5lY3RhYmxlU2lkZS5ERUZBVUxULFxuICApO1xuXG4gIHByaXZhdGUgX3RhcmdldFNpZGUgPSBFRkNvbm5lY3RhYmxlU2lkZS5BVVRPO1xuXG4gIHByaXZhdGUgX3BlbnVsdGltYXRlUG9pbnQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuICBwcml2YXRlIF9zZWNvbmRQb2ludCA9IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50PikubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZQYXRoKCkuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMucmVkcmF3KCk7XG4gIH1cblxuICBwdWJsaWMgaXNDb250YWlucyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuaG9zdEVsZW1lbnQuZmlyc3RDaGlsZD8ubGFzdENoaWxkIGFzIEhUTUxFbGVtZW50KS5jb250YWlucyhlbGVtZW50KSB8fFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLmZDb250ZW50cygpPy52YWx1ZXMoKSA/PyBbXSkuc29tZSgoeCkgPT4geC5ob3N0RWxlbWVudD8uY29udGFpbnMoZWxlbWVudCkpIHx8XG4gICAgICB0aGlzLmZXYXlwb2ludHMoKT8uaG9zdEVsZW1lbnQ/LmNvbnRhaW5zKGVsZW1lbnQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMaW5lKHsgcG9pbnQxLCBwb2ludDIgfTogSUxpbmUpOiB2b2lkIHtcbiAgICB0aGlzLmxpbmUgPSBMaW5lRXh0ZW5zaW9ucy5pbml0aWFsaXplKHBvaW50MSwgcG9pbnQyKTtcblxuICAgIGNvbnN0IHsgcGF0aCwgcG9pbnRzLCBwZW51bHRpbWF0ZVBvaW50LCBzZWNvbmRQb2ludCwgY2FuZGlkYXRlcyB9ID0gdGhpcy5fZ2V0UGF0aFJlc3VsdChcbiAgICAgIHBvaW50MSxcbiAgICAgIHBvaW50MixcbiAgICApO1xuXG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLl9wZW51bHRpbWF0ZVBvaW50ID0gcGVudWx0aW1hdGVQb2ludCB8fCBwb2ludDE7XG4gICAgdGhpcy5fc2Vjb25kUG9pbnQgPSBzZWNvbmRQb2ludCB8fCBwb2ludDI7XG4gICAgdGhpcy5mV2F5cG9pbnRzKCk/LmNhbmRpZGF0ZXMuc2V0KGNhbmRpZGF0ZXMgfHwgW10pO1xuXG4gICAgbmV3IENvbm5lY3Rpb25Db250ZW50TGF5b3V0RW5naW5lKCkubGF5b3V0KHBvaW50cyB8fCBbXSwgdGhpcy5fY29udGVudHMoKSk7XG4gIH1cblxuICBwcml2YXRlIF9jb250ZW50cygpOiBGQ29ubmVjdGlvbkNvbnRlbnRCYXNlW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZkNvbnRlbnRzKCk/LnZhbHVlcygpID8/IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFBhdGhSZXN1bHQoc291cmNlOiBJUG9pbnQsIHRhcmdldDogSVBvaW50KSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb25uZWN0aW9uQnVpbGRlci5oYW5kbGUoe1xuICAgICAgdHlwZTogdGhpcy5mVHlwZSxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgc291cmNlLFxuICAgICAgICBzb3VyY2VTaWRlOiB0aGlzLl9zb3VyY2VTaWRlLFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHRhcmdldFNpZGU6IHRoaXMuX3RhcmdldFNpZGUsXG4gICAgICAgIHJhZGl1czogdGhpcy5mUmFkaXVzLFxuICAgICAgICBvZmZzZXQ6IHRoaXMuZk9mZnNldCxcbiAgICAgICAgd2F5cG9pbnRzOiB0aGlzLmZXYXlwb2ludHMoKT8ud2F5cG9pbnRzKCkgfHwgW10sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG1hcmtDaGlsZHJlbkFzU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mUGF0aCgpLnNlbGVjdCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHVubWFya0NoaWxkcmVuQXNTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZQYXRoKCkuZGVzZWxlY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWRyYXcoKTogdm9pZCB7XG4gICAgdGhpcy5mUGF0aCgpLnNldFBhdGgodGhpcy5wYXRoKTtcbiAgICB0aGlzLmZTZWxlY3Rpb24oKS5zZXRQYXRoKHRoaXMucGF0aCk7XG4gICAgdGhpcy5mRHJhZ0hhbmRsZUVuZCgpLnJlZHJhdyh0aGlzLl9wZW51bHRpbWF0ZVBvaW50LCB0aGlzLmxpbmUucG9pbnQyKTtcbiAgICB0aGlzLmZEcmFnSGFuZGxlU3RhcnQoKT8ucmVkcmF3KHRoaXMuX3NlY29uZFBvaW50LCB0aGlzLmxpbmUucG9pbnQxKTtcbiAgICB0aGlzLl9mR3JhZGllbnRSZW5kZXJlcigpPy5yZWRyYXcodGhpcy5saW5lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXNvbHZlZFNpZGVzKCk6IHsgc291cmNlU2lkZTogRUZDb25uZWN0YWJsZVNpZGU7IHRhcmdldFNpZGU6IEVGQ29ubmVjdGFibGVTaWRlIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2VTaWRlOiB0aGlzLl9zb3VyY2VTaWRlLFxuICAgICAgdGFyZ2V0U2lkZTogdGhpcy5fdGFyZ2V0U2lkZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIHJlc29sdmVkIHNpZGVzIHRvIHRoZSBjb25uZWN0aW9uLiBEb24ndCBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5OyBpdCdzIHVzZWQgaW50ZXJuYWxseS5cbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZVNpZGUgVGhlIHJlc29sdmVkIHNpZGUgZm9yIHRoZSBzb3VyY2UgZWxlbWVudC5cbiAgICogQHBhcmFtIHRhcmdldFNpZGUgVGhlIHJlc29sdmVkIHNpZGUgZm9yIHRoZSB0YXJnZXQgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBfYXBwbHlSZXNvbHZlZFNpZGVzVG9Db25uZWN0aW9uKFxuICAgIHNvdXJjZVNpZGU6IEVGQ29ubmVjdGFibGVTaWRlLFxuICAgIHRhcmdldFNpZGU6IEVGQ29ubmVjdGFibGVTaWRlLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLl9zb3VyY2VTaWRlID0gc291cmNlU2lkZTtcbiAgICB0aGlzLl90YXJnZXRTaWRlID0gdGFyZ2V0U2lkZTtcbiAgfVxufVxuIl19
|