@tolle_/tolle-ui 18.2.30 → 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/esm2022/lib/alert-dialog-dynamic.component.mjs +8 -3
- package/esm2022/lib/alert-dialog.component.mjs +39 -6
- package/esm2022/lib/alert-dialog.service.mjs +38 -6
- package/esm2022/lib/context-menu.service.mjs +11 -7
- package/esm2022/lib/modal-ref.mjs +36 -7
- package/esm2022/lib/modal.component.mjs +42 -28
- package/esm2022/lib/modal.mjs +2 -29
- package/esm2022/lib/modal.service.mjs +26 -4
- package/esm2022/lib/resizable-panel.component.mjs +5 -5
- package/esm2022/lib/segment.component.mjs +3 -3
- package/fesm2022/tolle-ui.mjs +196 -88
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/lib/alert-dialog-dynamic.component.d.ts +5 -0
- package/lib/alert-dialog.component.d.ts +13 -0
- package/lib/modal-ref.d.ts +6 -1
- package/lib/modal.component.d.ts +7 -4
- package/lib/modal.d.ts +9 -3
- package/package.json +3 -2
- package/preset.js +7 -1
- package/registry/manifest.json +1 -1
- package/registry/r/alert-dialog-dynamic.json +1 -1
- package/registry/r/alert-dialog.json +1 -1
- package/registry/r/context-menu-trigger.json +1 -1
- package/registry/r/context-menu.json +1 -1
- package/registry/r/modal.json +3 -3
- package/registry/r/resizable-panel.json +1 -1
- package/registry/r/segment.json +1 -1
- package/theme.css +15 -3
|
@@ -6,6 +6,11 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
export class AlertDialogDynamicComponent {
|
|
7
7
|
config;
|
|
8
8
|
dialogRef;
|
|
9
|
+
/**
|
|
10
|
+
* Set by `AlertDialogService` once the dialog's result is ready, so the
|
|
11
|
+
* content panel plays its exit animation before the overlay is torn down.
|
|
12
|
+
*/
|
|
13
|
+
closing = false;
|
|
9
14
|
onOpenChange(open) {
|
|
10
15
|
if (!open) {
|
|
11
16
|
this.close(false);
|
|
@@ -16,7 +21,7 @@ export class AlertDialogDynamicComponent {
|
|
|
16
21
|
}
|
|
17
22
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertDialogDynamicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18
23
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AlertDialogDynamicComponent, isStandalone: true, selector: "tolle-alert-dialog-dynamic", ngImport: i0, template: `
|
|
19
|
-
<tolle-alert-dialog [open]="
|
|
24
|
+
<tolle-alert-dialog [open]="!closing" (openChange)="onOpenChange($event)">
|
|
20
25
|
<tolle-alert-dialog-content [size]="config.size || 'lg'">
|
|
21
26
|
<tolle-alert-dialog-header>
|
|
22
27
|
<tolle-alert-dialog-title>{{ config.title }}</tolle-alert-dialog-title>
|
|
@@ -52,7 +57,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
52
57
|
AlertDialogActionComponent,
|
|
53
58
|
ButtonComponent
|
|
54
59
|
], template: `
|
|
55
|
-
<tolle-alert-dialog [open]="
|
|
60
|
+
<tolle-alert-dialog [open]="!closing" (openChange)="onOpenChange($event)">
|
|
56
61
|
<tolle-alert-dialog-content [size]="config.size || 'lg'">
|
|
57
62
|
<tolle-alert-dialog-header>
|
|
58
63
|
<tolle-alert-dialog-title>{{ config.title }}</tolle-alert-dialog-title>
|
|
@@ -74,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
74
79
|
</tolle-alert-dialog>
|
|
75
80
|
`, styles: [":host{display:block}\n"] }]
|
|
76
81
|
}] });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLWR5bmFtaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hbGVydC1kaWFsb2ctZHluYW1pYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzNCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQTBDckQsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxNQUFNLENBQXFCO0lBQzNCLFNBQVMsQ0FBa0I7SUFFM0I7OztPQUdHO0lBQ0gsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUVoQixZQUFZLENBQUMsSUFBYTtRQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQWU7UUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQzt3R0FsQlUsMkJBQTJCOzRGQUEzQiwyQkFBMkIsc0ZBdkI1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJULCtGQWhDQyxZQUFZLCtCQUNaLG9CQUFvQiwwR0FDcEIsMkJBQTJCLGtHQUMzQiwwQkFBMEIseUZBQzFCLHlCQUF5Qix3RkFDekIsK0JBQStCLDhGQUMvQiwwQkFBMEIseUZBQzFCLDBCQUEwQiw4RkFDMUIsMEJBQTBCLDhGQUMxQixlQUFlOzs0RkF5Qk4sMkJBQTJCO2tCQXZDdkMsU0FBUzsrQkFDRSw0QkFBNEIsY0FFMUIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQiwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIseUJBQXlCO3dCQUN6QiwrQkFBK0I7d0JBQy9CLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3dCQUMxQiwwQkFBMEI7d0JBQzFCLGVBQWU7cUJBQ2hCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFsZXJ0RGlhbG9nQ29tcG9uZW50LFxuICBBbGVydERpYWxvZ0NvbnRlbnRDb21wb25lbnQsXG4gIEFsZXJ0RGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICBBbGVydERpYWxvZ1RpdGxlQ29tcG9uZW50LFxuICBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uQ29tcG9uZW50LFxuICBBbGVydERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgQWxlcnREaWFsb2dDYW5jZWxDb21wb25lbnQsXG4gIEFsZXJ0RGlhbG9nQWN0aW9uQ29tcG9uZW50XG59IGZyb20gJy4vYWxlcnQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxlcnREaWFsb2dDb25maWcsIEFsZXJ0RGlhbG9nUmVmIH0gZnJvbSAnLi9hbGVydC1kaWFsb2cudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctZHluYW1pYycsXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQWxlcnREaWFsb2dDb21wb25lbnQsXG4gICAgQWxlcnREaWFsb2dDb250ZW50Q29tcG9uZW50LFxuICAgIEFsZXJ0RGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgIEFsZXJ0RGlhbG9nVGl0bGVDb21wb25lbnQsXG4gICAgQWxlcnREaWFsb2dEZXNjcmlwdGlvbkNvbXBvbmVudCxcbiAgICBBbGVydERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICBBbGVydERpYWxvZ0NhbmNlbENvbXBvbmVudCxcbiAgICBBbGVydERpYWxvZ0FjdGlvbkNvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dG9sbGUtYWxlcnQtZGlhbG9nIFtvcGVuXT1cIiFjbG9zaW5nXCIgKG9wZW5DaGFuZ2UpPVwib25PcGVuQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPHRvbGxlLWFsZXJ0LWRpYWxvZy1jb250ZW50IFtzaXplXT1cImNvbmZpZy5zaXplIHx8ICdsZydcIj5cbiAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICAgIDx0b2xsZS1hbGVydC1kaWFsb2ctdGl0bGU+e3sgY29uZmlnLnRpdGxlIH19PC90b2xsZS1hbGVydC1kaWFsb2ctdGl0bGU+XG4gICAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICB7eyBjb25maWcuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgIDwvdG9sbGUtYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uPlxuICAgICAgICAgIDwvdG9sbGUtYWxlcnQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgICAgIDx0b2xsZS1hbGVydC1kaWFsb2ctY2FuY2VsIChjbGljayk9XCJjbG9zZShmYWxzZSlcIj5cbiAgICAgICAgICAgICAgPHRvbGxlLWJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiPnt7IGNvbmZpZy5jYW5jZWxUZXh0IHx8ICdDYW5jZWwnIH19PC90b2xsZS1idXR0b24+XG4gICAgICAgICAgICA8L3RvbGxlLWFsZXJ0LWRpYWxvZy1jYW5jZWw+XG4gICAgICAgICAgICA8dG9sbGUtYWxlcnQtZGlhbG9nLWFjdGlvbiAoY2xpY2spPVwiY2xvc2UodHJ1ZSlcIj5cbiAgICAgICAgICAgICAgPHRvbGxlLWJ1dHRvbiBbdmFyaWFudF09XCJjb25maWcudmFyaWFudCA9PT0gJ2Rlc3RydWN0aXZlJyA/ICdkZXN0cnVjdGl2ZScgOiAnZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICB7eyBjb25maWcuYWN0aW9uVGV4dCB8fCAnQ29udGludWUnIH19XG4gICAgICAgICAgICAgIDwvdG9sbGUtYnV0dG9uPlxuICAgICAgICAgICAgPC90b2xsZS1hbGVydC1kaWFsb2ctYWN0aW9uPlxuICAgICAgICAgIDwvdG9sbGUtYWxlcnQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPC90b2xsZS1hbGVydC1kaWFsb2ctY29udGVudD5cbiAgICA8L3RvbGxlLWFsZXJ0LWRpYWxvZz5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0R5bmFtaWNDb21wb25lbnQge1xuICBjb25maWchOiBBbGVydERpYWxvZ0NvbmZpZztcbiAgZGlhbG9nUmVmITogQWxlcnREaWFsb2dSZWY7XG5cbiAgLyoqXG4gICAqIFNldCBieSBgQWxlcnREaWFsb2dTZXJ2aWNlYCBvbmNlIHRoZSBkaWFsb2cncyByZXN1bHQgaXMgcmVhZHksIHNvIHRoZVxuICAgKiBjb250ZW50IHBhbmVsIHBsYXlzIGl0cyBleGl0IGFuaW1hdGlvbiBiZWZvcmUgdGhlIG92ZXJsYXkgaXMgdG9ybiBkb3duLlxuICAgKi9cbiAgY2xvc2luZyA9IGZhbHNlO1xuXG4gIG9uT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZShyZXN1bHQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICB9XG59XG4iXX0=
|
|
@@ -7,6 +7,14 @@ import { cn } from './utils/cn';
|
|
|
7
7
|
import { BehaviorSubject } from 'rxjs';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "@angular/cdk/a11y";
|
|
10
|
+
/**
|
|
11
|
+
* Safety net if the exit animation's `animationend` never fires — reduced
|
|
12
|
+
* motion, no matching keyframe, or a panel that never rendered — so an
|
|
13
|
+
* alert dialog can never get stuck open forever. Also used by
|
|
14
|
+
* `alert-dialog.service.ts` and `alert-dialog-dynamic.component.ts`, which
|
|
15
|
+
* animate the same content component through a different overlay wiring.
|
|
16
|
+
*/
|
|
17
|
+
export const CLOSE_FALLBACK_MS = 300;
|
|
10
18
|
class AlertDialogInternalService {
|
|
11
19
|
openSubject = new BehaviorSubject(false);
|
|
12
20
|
open$ = this.openSubject.asObservable();
|
|
@@ -101,14 +109,39 @@ export class AlertDialogPortalComponent {
|
|
|
101
109
|
});
|
|
102
110
|
const portal = new TemplatePortal(this.portalContent, this.viewContainerRef);
|
|
103
111
|
this.overlayRef.attach(portal);
|
|
112
|
+
// The backdrop element only exists once attached — setting this any
|
|
113
|
+
// earlier would silently no-op.
|
|
114
|
+
this.overlayRef.backdropElement?.setAttribute('data-state', 'open');
|
|
104
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Tears the overlay down once its exit animation finishes (or after
|
|
118
|
+
* `CLOSE_FALLBACK_MS`, whichever comes first) instead of instantly, so
|
|
119
|
+
* `data-[state=closed]:animate-out` actually gets a chance to play.
|
|
120
|
+
*/
|
|
105
121
|
hide() {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
122
|
+
const ref = this.overlayRef;
|
|
123
|
+
if (!ref)
|
|
124
|
+
return;
|
|
125
|
+
ref.backdropElement?.setAttribute('data-state', 'closed');
|
|
126
|
+
let finished = false;
|
|
127
|
+
const finish = () => {
|
|
128
|
+
if (finished)
|
|
129
|
+
return;
|
|
130
|
+
finished = true;
|
|
131
|
+
ref.detach();
|
|
132
|
+
ref.dispose();
|
|
133
|
+
if (this.overlayRef === ref)
|
|
134
|
+
this.overlayRef = undefined;
|
|
110
135
|
// Restore focus to the trigger.
|
|
111
136
|
this.previouslyFocused?.focus?.();
|
|
137
|
+
};
|
|
138
|
+
const panel = ref.overlayElement.querySelector('[data-state]');
|
|
139
|
+
if (panel) {
|
|
140
|
+
panel.addEventListener('animationend', finish, { once: true });
|
|
141
|
+
setTimeout(finish, CLOSE_FALLBACK_MS);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
finish();
|
|
112
145
|
}
|
|
113
146
|
}
|
|
114
147
|
ngOnDestroy() {
|
|
@@ -146,7 +179,7 @@ export class AlertDialogContentComponent {
|
|
|
146
179
|
});
|
|
147
180
|
}
|
|
148
181
|
get computedClass() {
|
|
149
|
-
return cn("fixed left-[50%] top-[50%] translate-x-[-50%] translate-y-[-50%] z-50 grid w-full gap-4 border border-input bg-background p-6 shadow-lg data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] rounded-lg", {
|
|
182
|
+
return cn("fixed left-[50%] top-[50%] translate-x-[-50%] translate-y-[-50%] z-50 grid w-full gap-4 border border-input bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] rounded-lg", {
|
|
150
183
|
'max-w-xs': this.size === 'xs',
|
|
151
184
|
'max-w-sm': this.size === 'sm',
|
|
152
185
|
'max-w-md': this.size === 'md',
|
|
@@ -296,4 +329,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
296
329
|
type: HostListener,
|
|
297
330
|
args: ['click', ['$event']]
|
|
298
331
|
}] } });
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYWxlcnQtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFlLFNBQVMsRUFBRSxnQkFBZ0IsRUFBcUIsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUd2QyxNQUNNLDBCQUEwQjtJQUNwQixXQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDMUQsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFeEMsT0FBTyxDQUFDLEtBQWM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFD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MEJBQTBCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVwRiw2RUFBNkU7SUFDbkUsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFHckQsV0FBVyxDQUFDLEtBQWlCO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQzt3R0FWUSwwQkFBMEI7NEZBQTFCLDBCQUEwQixtTEFGekIsMkJBQTJCLCtGQUQzQixZQUFZOzs0RkFHYiwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0ksMkJBQTJCLGNBRXpCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLDJCQUEyQjs4QkFNM0IsU0FBUztzQkFBbEIsTUFBTTtnQkFHUCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0YWJsZSwgaW5qZWN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgQ29udGVudENoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiwgT3ZlcmxheUNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsLCBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbGVydERpYWxvZ1NpemUgfSBmcm9tICcuL2FsZXJ0LWRpYWxvZy50eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmNsYXNzIEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlIHtcbiAgICBwcml2YXRlIG9wZW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgb3BlbiQgPSB0aGlzLm9wZW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgc2V0T3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLm9wZW5TdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIGdldE9wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5TdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlKCkge1xuICAgICAgICB0aGlzLnNldE9wZW4oIXRoaXMuZ2V0T3BlbigpKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nJyxcbiAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW0FsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBzZXQgb3Blbih2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5hbGVydERpYWxvZ1NlcnZpY2Uuc2V0T3Blbih2YWwpO1xuICAgIH1cbiAgICBAT3V0cHV0KCkgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5vcGVuJC5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KHZhbCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctdHJpZ2dlcicsXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhjbGljayknOiAnb25PcGVuKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ1RyaWdnZXJDb21wb25lbnQge1xuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcblxuICAgIG9uT3BlbigpIHtcbiAgICAgICAgdGhpcy5hbGVydERpYWxvZ1NlcnZpY2Uuc2V0T3Blbih0cnVlKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLXBvcnRhbCcsXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjcG9ydGFsQ29udGVudD5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nUG9ydGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoJ3BvcnRhbENvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwb3J0YWxDb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBwcml2YXRlIGFsZXJ0RGlhbG9nU2VydmljZSA9IGluamVjdChBbGVydERpYWxvZ0ludGVybmFsU2VydmljZSk7XG4gICAgcHJpdmF0ZSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICAgIC8qKiBFbGVtZW50IGZvY3VzZWQgYmVmb3JlIHRoZSBkaWFsb2cgb3BlbmVkLCByZXN0b3JlZCBvbiBjbG9zZS4gKi9cbiAgICBwcml2YXRlIHByZXZpb3VzbHlGb2N1c2VkPzogSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuYWxlcnREaWFsb2dTZXJ2aWNlLm9wZW4kLnN1YnNjcmliZShvcGVuID0+IHtcbiAgICAgICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3coKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHJldHVybjtcblxuICAgICAgICAvLyBSZW1lbWJlciB0aGUgdHJpZ2dlciBzbyBmb2N1cyBjYW4gYmUgcmVzdG9yZWQgb24gY2xvc2UuXG4gICAgICAgIHRoaXMucHJldmlvdXNseUZvY3VzZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgICAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFsnY2RrLW92ZXJsYXktYmFja2Ryb3AnLCAnYmctYmxhY2svODAnLCAnYmFja2Ryb3AtYmx1ci1zbScsICdkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluJywgJ2RhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQnLCAnZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wJywgJ2RhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCddLFxuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWcpO1xuXG4gICAgICAgIC8vIEFsZXJ0LWRpYWxvZyBzZW1hbnRpY3M6IGJhY2tkcm9wIGNsaWNrcyBtdXN0IE5PVCBkaXNtaXNzLlxuICAgICAgICAvLyBFc2NhcGUgc3RpbGwgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWxlcnREaWFsb2dTZXJ2aWNlLnNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5wb3J0YWxDb250ZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlKCkge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgLy8gUmVzdG9yZSBmb2N1cyB0byB0aGUgdHJpZ2dlci5cbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNseUZvY3VzZWQ/LmZvY3VzPy4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLWNvbnRlbnQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQTExeU1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGA8ZGl2IFtjbGFzc109XCJjb21wdXRlZENsYXNzXCIgW2F0dHIuZGF0YS1zdGF0ZV09XCJpc09wZW4gPyAnb3BlbicgOiAnY2xvc2VkJ1wiXG4gICAgICAgIHJvbGU9XCJhbGVydGRpYWxvZ1wiXG4gICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRpdGxlQ21wPy5pZCB8fCBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJkZXNjcmlwdGlvbkNtcD8uaWQgfHwgbnVsbFwiXG4gICAgICAgIGNka1RyYXBGb2N1cyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZT48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+YCxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3NdJzogJ1wiY29udGVudHNcIidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nQ29udGVudENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHNpemU6IEFsZXJ0RGlhbG9nU2l6ZSA9ICdsZyc7XG5cbiAgICAvKiogUHJvamVjdGVkIHRpdGxlL2Rlc2NyaXB0aW9uIHVzZWQgdG8gYnVpbGQgdGhlIGRpYWxvZydzIGFjY2Vzc2libGUgbmFtZS4gKi9cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gQWxlcnREaWFsb2dUaXRsZUNvbXBvbmVudCkpIHRpdGxlQ21wPzogQWxlcnREaWFsb2dUaXRsZUNvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gQWxlcnREaWFsb2dEZXNjcmlwdGlvbkNvbXBvbmVudCkpIGRlc2NyaXB0aW9uQ21wPzogQWxlcnREaWFsb2dEZXNjcmlwdGlvbkNvbXBvbmVudDtcblxuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5vcGVuJC5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdmFsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIGNuKFxuICAgICAgICAgICAgXCJmaXhlZCBsZWZ0LVs1MCVdIHRvcC1bNTAlXSB0cmFuc2xhdGUteC1bLTUwJV0gdHJhbnNsYXRlLXktWy01MCVdIHotNTAgZ3JpZCB3LWZ1bGwgZ2FwLTQgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHAtNiBzaGFkb3ctbGcgZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTp6b29tLW91dC05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by1sZWZ0LTEvMiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnNsaWRlLW91dC10by10b3AtWzQ4JV0gcm91bmRlZC1sZ1wiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICdtYXgtdy14cyc6IHRoaXMuc2l6ZSA9PT0gJ3hzJyxcbiAgICAgICAgICAgICAgICAnbWF4LXctc20nOiB0aGlzLnNpemUgPT09ICdzbScsXG4gICAgICAgICAgICAgICAgJ21heC13LW1kJzogdGhpcy5zaXplID09PSAnbWQnLFxuICAgICAgICAgICAgICAgICdtYXgtdy1sZyc6IHRoaXMuc2l6ZSA9PT0gJ2xnJyxcbiAgICAgICAgICAgICAgICAnbWF4LXcteGwnOiB0aGlzLnNpemUgPT09ICd4bCcsXG4gICAgICAgICAgICAgICAgJ21heC13LTJ4bCc6IHRoaXMuc2l6ZSA9PT0gJzJ4bCcsXG4gICAgICAgICAgICAgICAgJ21heC13LWZ1bGwnOiB0aGlzLnNpemUgPT09ICdmdWxsJyxcbiAgICAgICAgICAgICAgICAnbWF4LXctZml0JzogdGhpcy5zaXplID09PSAnZml0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLmNsYXNzXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy1oZWFkZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBob3N0OiB7ICdbY2xhc3NdJzogJ2NvbXB1dGVkQ2xhc3MnIH1cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dIZWFkZXJDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHsgcmV0dXJuIGNuKFwiZmxleCBmbGV4LWNvbCBzcGFjZS15LTIgdGV4dC1jZW50ZXIgc206dGV4dC1sZWZ0XCIsIHRoaXMuY2xhc3MpOyB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLWZvb3RlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIGhvc3Q6IHsgJ1tjbGFzc10nOiAnY29tcHV0ZWRDbGFzcycgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0Zvb3RlckNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICAgIGdldCBjb21wdXRlZENsYXNzKCkgeyByZXR1cm4gY24oXCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIHNwYWNlLXgtMlwiLCB0aGlzLmNsYXNzKTsgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy10aXRsZScsXG4gICAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gICAgaG9zdDogeyAnW2NsYXNzXSc6ICdjb21wdXRlZENsYXNzJywgJ1thdHRyLmlkXSc6ICdpZCcgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ1RpdGxlQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gICAgLyoqIFN0YWJsZSBpZCByZWZlcmVuY2VkIGJ5IHRoZSBkaWFsb2cncyBgYXJpYS1sYWJlbGxlZGJ5YC4gKi9cbiAgICByZWFkb25seSBpZCA9IGB0b2xsZS1hbGVydC1kaWFsb2ctdGl0bGUtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHsgcmV0dXJuIGNuKFwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtZm9yZWdyb3VuZFwiLCB0aGlzLmNsYXNzKTsgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvbicsXG4gICAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gICAgaG9zdDogeyAnW2NsYXNzXSc6ICdjb21wdXRlZENsYXNzJywgJ1thdHRyLmlkXSc6ICdpZCcgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gICAgLyoqIFN0YWJsZSBpZCByZWZlcmVuY2VkIGJ5IHRoZSBkaWFsb2cncyBgYXJpYS1kZXNjcmliZWRieWAuICovXG4gICAgcmVhZG9ubHkgaWQgPSBgdG9sbGUtYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpfWA7XG4gICAgZ2V0IGNvbXB1dGVkQ2xhc3MoKSB7IHJldHVybiBjbihcInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIHRoaXMuY2xhc3MpOyB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLWFjdGlvbicsXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nQWN0aW9uQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIGFsZXJ0RGlhbG9nU2VydmljZSA9IGluamVjdChBbGVydERpYWxvZ0ludGVybmFsU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKiBGaXJlcyBiZWZvcmUgdGhlIGRpYWxvZyBjbG9zZXMsIHNvIGNvbnN1bWVycyBjYW4gcnVuIHRoZSBjb25maXJtZWQgYWN0aW9uLiAqL1xuICAgIEBPdXRwdXQoKSBjb25maXJtZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jb25maXJtZWQuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMuYWxlcnREaWFsb2dTZXJ2aWNlPy5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLWNhbmNlbCcsXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nQ2FuY2VsQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIGFsZXJ0RGlhbG9nU2VydmljZSA9IGluamVjdChBbGVydERpYWxvZ0ludGVybmFsU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKiBGaXJlcyBiZWZvcmUgdGhlIGRpYWxvZyBjbG9zZXMsIHNvIGNvbnN1bWVycyBjYW4gcmVhY3QgdG8gYSBkaXNtaXNzYWwuICovXG4gICAgQE91dHB1dCgpIGNhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmNhbmNlbGxlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5hbGVydERpYWxvZ1NlcnZpY2U/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbn1cbiJdfQ==
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYWxlcnQtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFlLFNBQVMsRUFBRSxnQkFBZ0IsRUFBcUIsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUd2Qzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFFckMsTUFDTSwwQkFBMEI7SUFDcEIsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzFELEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXhDLE9BQU8sQ0FBQyxLQUFjO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxN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R0FWUSwwQkFBMEI7NEZBQTFCLDBCQUEwQixtTEFGekIsMkJBQTJCLCtGQUQzQixZQUFZOzs0RkFHYiwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0ksMkJBQTJCLGNBRXpCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLDJCQUEyQjs4QkFNM0IsU0FBUztzQkFBbEIsTUFBTTtnQkFHUCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0YWJsZSwgaW5qZWN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgQ29udGVudENoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiwgT3ZlcmxheUNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsLCBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbGVydERpYWxvZ1NpemUgfSBmcm9tICcuL2FsZXJ0LWRpYWxvZy50eXBlcyc7XG5cbi8qKlxuICogU2FmZXR5IG5ldCBpZiB0aGUgZXhpdCBhbmltYXRpb24ncyBgYW5pbWF0aW9uZW5kYCBuZXZlciBmaXJlcyDigJQgcmVkdWNlZFxuICogbW90aW9uLCBubyBtYXRjaGluZyBrZXlmcmFtZSwgb3IgYSBwYW5lbCB0aGF0IG5ldmVyIHJlbmRlcmVkIOKAlCBzbyBhblxuICogYWxlcnQgZGlhbG9nIGNhbiBuZXZlciBnZXQgc3R1Y2sgb3BlbiBmb3JldmVyLiBBbHNvIHVzZWQgYnlcbiAqIGBhbGVydC1kaWFsb2cuc2VydmljZS50c2AgYW5kIGBhbGVydC1kaWFsb2ctZHluYW1pYy5jb21wb25lbnQudHNgLCB3aGljaFxuICogYW5pbWF0ZSB0aGUgc2FtZSBjb250ZW50IGNvbXBvbmVudCB0aHJvdWdoIGEgZGlmZmVyZW50IG92ZXJsYXkgd2lyaW5nLlxuICovXG5leHBvcnQgY29uc3QgQ0xPU0VfRkFMTEJBQ0tfTVMgPSAzMDA7XG5cbkBJbmplY3RhYmxlKClcbmNsYXNzIEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlIHtcbiAgICBwcml2YXRlIG9wZW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgb3BlbiQgPSB0aGlzLm9wZW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgc2V0T3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLm9wZW5TdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIGdldE9wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5TdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlKCkge1xuICAgICAgICB0aGlzLnNldE9wZW4oIXRoaXMuZ2V0T3BlbigpKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nJyxcbiAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW0FsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBzZXQgb3Blbih2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5hbGVydERpYWxvZ1NlcnZpY2Uuc2V0T3Blbih2YWwpO1xuICAgIH1cbiAgICBAT3V0cHV0KCkgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5vcGVuJC5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KHZhbCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctdHJpZ2dlcicsXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhjbGljayknOiAnb25PcGVuKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ1RyaWdnZXJDb21wb25lbnQge1xuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcblxuICAgIG9uT3BlbigpIHtcbiAgICAgICAgdGhpcy5hbGVydERpYWxvZ1NlcnZpY2Uuc2V0T3Blbih0cnVlKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLXBvcnRhbCcsXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjcG9ydGFsQ29udGVudD5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nUG9ydGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoJ3BvcnRhbENvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwb3J0YWxDb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBwcml2YXRlIGFsZXJ0RGlhbG9nU2VydmljZSA9IGluamVjdChBbGVydERpYWxvZ0ludGVybmFsU2VydmljZSk7XG4gICAgcHJpdmF0ZSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICAgIC8qKiBFbGVtZW50IGZvY3VzZWQgYmVmb3JlIHRoZSBkaWFsb2cgb3BlbmVkLCByZXN0b3JlZCBvbiBjbG9zZS4gKi9cbiAgICBwcml2YXRlIHByZXZpb3VzbHlGb2N1c2VkPzogSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuYWxlcnREaWFsb2dTZXJ2aWNlLm9wZW4kLnN1YnNjcmliZShvcGVuID0+IHtcbiAgICAgICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3coKSB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHJldHVybjtcblxuICAgICAgICAvLyBSZW1lbWJlciB0aGUgdHJpZ2dlciBzbyBmb2N1cyBjYW4gYmUgcmVzdG9yZWQgb24gY2xvc2UuXG4gICAgICAgIHRoaXMucHJldmlvdXNseUZvY3VzZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgICAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFsnY2RrLW92ZXJsYXktYmFja2Ryb3AnLCAnYmctYmxhY2svODAnLCAnYmFja2Ryb3AtYmx1ci1zbScsICdkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluJywgJ2RhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQnLCAnZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wJywgJ2RhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCddLFxuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWcpO1xuXG4gICAgICAgIC8vIEFsZXJ0LWRpYWxvZyBzZW1hbnRpY3M6IGJhY2tkcm9wIGNsaWNrcyBtdXN0IE5PVCBkaXNtaXNzLlxuICAgICAgICAvLyBFc2NhcGUgc3RpbGwgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWxlcnREaWFsb2dTZXJ2aWNlLnNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5wb3J0YWxDb250ZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG5cbiAgICAgICAgLy8gVGhlIGJhY2tkcm9wIGVsZW1lbnQgb25seSBleGlzdHMgb25jZSBhdHRhY2hlZCDigJQgc2V0dGluZyB0aGlzIGFueVxuICAgICAgICAvLyBlYXJsaWVyIHdvdWxkIHNpbGVudGx5IG5vLW9wLlxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCAnb3BlbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlYXJzIHRoZSBvdmVybGF5IGRvd24gb25jZSBpdHMgZXhpdCBhbmltYXRpb24gZmluaXNoZXMgKG9yIGFmdGVyXG4gICAgICogYENMT1NFX0ZBTExCQUNLX01TYCwgd2hpY2hldmVyIGNvbWVzIGZpcnN0KSBpbnN0ZWFkIG9mIGluc3RhbnRseSwgc29cbiAgICAgKiBgZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dGAgYWN0dWFsbHkgZ2V0cyBhIGNoYW5jZSB0byBwbGF5LlxuICAgICAqL1xuICAgIHByaXZhdGUgaGlkZSgpIHtcbiAgICAgICAgY29uc3QgcmVmID0gdGhpcy5vdmVybGF5UmVmO1xuICAgICAgICBpZiAoIXJlZikgcmV0dXJuO1xuXG4gICAgICAgIHJlZi5iYWNrZHJvcEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScsICdjbG9zZWQnKTtcblxuICAgICAgICBsZXQgZmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZmluaXNoID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGZpbmlzaGVkKSByZXR1cm47XG4gICAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICByZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICByZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZiA9PT0gcmVmKSB0aGlzLm92ZXJsYXlSZWYgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAvLyBSZXN0b3JlIGZvY3VzIHRvIHRoZSB0cmlnZ2VyLlxuICAgICAgICAgICAgdGhpcy5wcmV2aW91c2x5Rm9jdXNlZD8uZm9jdXM/LigpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHBhbmVsID0gcmVmLm92ZXJsYXlFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCdbZGF0YS1zdGF0ZV0nKTtcbiAgICAgICAgaWYgKHBhbmVsKSB7XG4gICAgICAgICAgICBwYW5lbC5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCBmaW5pc2gsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCBDTE9TRV9GQUxMQkFDS19NUyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaW5pc2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLWNvbnRlbnQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQTExeU1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGA8ZGl2IFtjbGFzc109XCJjb21wdXRlZENsYXNzXCIgW2F0dHIuZGF0YS1zdGF0ZV09XCJpc09wZW4gPyAnb3BlbicgOiAnY2xvc2VkJ1wiXG4gICAgICAgIHJvbGU9XCJhbGVydGRpYWxvZ1wiXG4gICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRpdGxlQ21wPy5pZCB8fCBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJkZXNjcmlwdGlvbkNtcD8uaWQgfHwgbnVsbFwiXG4gICAgICAgIGNka1RyYXBGb2N1cyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZT48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+YCxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3NdJzogJ1wiY29udGVudHNcIidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nQ29udGVudENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHNpemU6IEFsZXJ0RGlhbG9nU2l6ZSA9ICdsZyc7XG5cbiAgICAvKiogUHJvamVjdGVkIHRpdGxlL2Rlc2NyaXB0aW9uIHVzZWQgdG8gYnVpbGQgdGhlIGRpYWxvZydzIGFjY2Vzc2libGUgbmFtZS4gKi9cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gQWxlcnREaWFsb2dUaXRsZUNvbXBvbmVudCkpIHRpdGxlQ21wPzogQWxlcnREaWFsb2dUaXRsZUNvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gQWxlcnREaWFsb2dEZXNjcmlwdGlvbkNvbXBvbmVudCkpIGRlc2NyaXB0aW9uQ21wPzogQWxlcnREaWFsb2dEZXNjcmlwdGlvbkNvbXBvbmVudDtcblxuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlKTtcbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZS5vcGVuJC5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdmFsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIGNuKFxuICAgICAgICAgICAgXCJmaXhlZCBsZWZ0LVs1MCVdIHRvcC1bNTAlXSB0cmFuc2xhdGUteC1bLTUwJV0gdHJhbnNsYXRlLXktWy01MCVdIHotNTAgZ3JpZCB3LWZ1bGwgZ2FwLTQgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHAtNiBzaGFkb3ctbGcgZHVyYXRpb24tMjAwIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc3RhdGU9b3Blbl06c2xpZGUtaW4tZnJvbS1sZWZ0LTEvMiBkYXRhLVtzdGF0ZT1vcGVuXTpzbGlkZS1pbi1mcm9tLXRvcC1bNDglXSBkYXRhLVtzdGF0ZT1jbG9zZWRdOmFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLWxlZnQtMS8yIGRhdGEtW3N0YXRlPWNsb3NlZF06c2xpZGUtb3V0LXRvLXRvcC1bNDglXSByb3VuZGVkLWxnXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJ21heC13LXhzJzogdGhpcy5zaXplID09PSAneHMnLFxuICAgICAgICAgICAgICAgICdtYXgtdy1zbSc6IHRoaXMuc2l6ZSA9PT0gJ3NtJyxcbiAgICAgICAgICAgICAgICAnbWF4LXctbWQnOiB0aGlzLnNpemUgPT09ICdtZCcsXG4gICAgICAgICAgICAgICAgJ21heC13LWxnJzogdGhpcy5zaXplID09PSAnbGcnLFxuICAgICAgICAgICAgICAgICdtYXgtdy14bCc6IHRoaXMuc2l6ZSA9PT0gJ3hsJyxcbiAgICAgICAgICAgICAgICAnbWF4LXctMnhsJzogdGhpcy5zaXplID09PSAnMnhsJyxcbiAgICAgICAgICAgICAgICAnbWF4LXctZnVsbCc6IHRoaXMuc2l6ZSA9PT0gJ2Z1bGwnLFxuICAgICAgICAgICAgICAgICdtYXgtdy1maXQnOiB0aGlzLnNpemUgPT09ICdmaXQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuY2xhc3NcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLWhlYWRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIGhvc3Q6IHsgJ1tjbGFzc10nOiAnY29tcHV0ZWRDbGFzcycgfVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0hlYWRlckNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICAgIGdldCBjb21wdXRlZENsYXNzKCkgeyByZXR1cm4gY24oXCJmbGV4IGZsZXgtY29sIHNwYWNlLXktMiB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnRcIiwgdGhpcy5jbGFzcyk7IH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctZm9vdGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gICAgaG9zdDogeyAnW2NsYXNzXSc6ICdjb21wdXRlZENsYXNzJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nRm9vdGVyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gICAgZ2V0IGNvbXB1dGVkQ2xhc3MoKSB7IHJldHVybiBjbihcImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgc3BhY2UteC0yXCIsIHRoaXMuY2xhc3MpOyB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLXRpdGxlJyxcbiAgICBzdHlsZXM6IFsnOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgfSddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBob3N0OiB7ICdbY2xhc3NdJzogJ2NvbXB1dGVkQ2xhc3MnLCAnW2F0dHIuaWRdJzogJ2lkJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nVGl0bGVDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgICAvKiogU3RhYmxlIGlkIHJlZmVyZW5jZWQgYnkgdGhlIGRpYWxvZydzIGBhcmlhLWxhYmVsbGVkYnlgLiAqL1xuICAgIHJlYWRvbmx5IGlkID0gYHRvbGxlLWFsZXJ0LWRpYWxvZy10aXRsZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuICAgIGdldCBjb21wdXRlZENsYXNzKCkgeyByZXR1cm4gY24oXCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1mb3JlZ3JvdW5kXCIsIHRoaXMuY2xhc3MpOyB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uJyxcbiAgICBzdHlsZXM6IFsnOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgfSddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBob3N0OiB7ICdbY2xhc3NdJzogJ2NvbXB1dGVkQ2xhc3MnLCAnW2F0dHIuaWRdJzogJ2lkJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nRGVzY3JpcHRpb25Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgICAvKiogU3RhYmxlIGlkIHJlZmVyZW5jZWQgYnkgdGhlIGRpYWxvZydzIGBhcmlhLWRlc2NyaWJlZGJ5YC4gKi9cbiAgICByZWFkb25seSBpZCA9IGB0b2xsZS1hbGVydC1kaWFsb2ctZGVzY3JpcHRpb24tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcbiAgICBnZXQgY29tcHV0ZWRDbGFzcygpIHsgcmV0dXJuIGNuKFwidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgdGhpcy5jbGFzcyk7IH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctYWN0aW9uJyxcbiAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dBY3Rpb25Db21wb25lbnQge1xuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqIEZpcmVzIGJlZm9yZSB0aGUgZGlhbG9nIGNsb3Nlcywgc28gY29uc3VtZXJzIGNhbiBydW4gdGhlIGNvbmZpcm1lZCBhY3Rpb24uICovXG4gICAgQE91dHB1dCgpIGNvbmZpcm1lZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmNvbmZpcm1lZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5hbGVydERpYWxvZ1NlcnZpY2U/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0b2xsZS1hbGVydC1kaWFsb2ctY2FuY2VsJyxcbiAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dDYW5jZWxDb21wb25lbnQge1xuICAgIHByaXZhdGUgYWxlcnREaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0RGlhbG9nSW50ZXJuYWxTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqIEZpcmVzIGJlZm9yZSB0aGUgZGlhbG9nIGNsb3Nlcywgc28gY29uc3VtZXJzIGNhbiByZWFjdCB0byBhIGRpc21pc3NhbC4gKi9cbiAgICBAT3V0cHV0KCkgY2FuY2VsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2FuY2VsbGVkLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmFsZXJ0RGlhbG9nU2VydmljZT8uc2V0T3BlbihmYWxzZSk7XG4gICAgfVxufVxuIl19
|
|
@@ -3,6 +3,7 @@ import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
|
|
|
3
3
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
4
4
|
import { AlertDialogRef } from './alert-dialog.types';
|
|
5
5
|
import { AlertDialogDynamicComponent } from './alert-dialog-dynamic.component';
|
|
6
|
+
import { CLOSE_FALLBACK_MS } from './alert-dialog.component';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export class AlertDialogService {
|
|
8
9
|
overlay = inject(Overlay);
|
|
@@ -12,7 +13,15 @@ export class AlertDialogService {
|
|
|
12
13
|
const previouslyFocused = document.activeElement;
|
|
13
14
|
const overlayConfig = new OverlayConfig({
|
|
14
15
|
hasBackdrop: true,
|
|
15
|
-
backdropClass: [
|
|
16
|
+
backdropClass: [
|
|
17
|
+
'cdk-overlay-backdrop',
|
|
18
|
+
'bg-black/80',
|
|
19
|
+
'backdrop-blur-sm',
|
|
20
|
+
'data-[state=open]:animate-in',
|
|
21
|
+
'data-[state=open]:fade-in-0',
|
|
22
|
+
'data-[state=closed]:animate-out',
|
|
23
|
+
'data-[state=closed]:fade-out-0',
|
|
24
|
+
],
|
|
16
25
|
positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
|
|
17
26
|
scrollStrategy: this.overlay.scrollStrategies.block()
|
|
18
27
|
});
|
|
@@ -20,13 +29,36 @@ export class AlertDialogService {
|
|
|
20
29
|
const dialogRef = new AlertDialogRef();
|
|
21
30
|
const portal = new ComponentPortal(AlertDialogDynamicComponent, null, this.injector);
|
|
22
31
|
const componentRef = overlayRef.attach(portal);
|
|
32
|
+
// The backdrop element only exists once attached — setting this any
|
|
33
|
+
// earlier would silently no-op.
|
|
34
|
+
overlayRef.backdropElement?.setAttribute('data-state', 'open');
|
|
23
35
|
componentRef.instance.config = config;
|
|
24
36
|
componentRef.instance.dialogRef = dialogRef;
|
|
37
|
+
// The result (`afterClosed$`) is ready immediately, but disposing the
|
|
38
|
+
// overlay waits for the content panel's exit animation to finish (or
|
|
39
|
+
// a fallback timeout), so `data-[state=closed]:animate-out` gets a
|
|
40
|
+
// chance to play instead of being torn down mid-frame.
|
|
25
41
|
dialogRef.afterClosed$.subscribe(() => {
|
|
26
|
-
overlayRef.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
42
|
+
overlayRef.backdropElement?.setAttribute('data-state', 'closed');
|
|
43
|
+
componentRef.instance.closing = true;
|
|
44
|
+
let finished = false;
|
|
45
|
+
const finish = () => {
|
|
46
|
+
if (finished)
|
|
47
|
+
return;
|
|
48
|
+
finished = true;
|
|
49
|
+
overlayRef.detach();
|
|
50
|
+
overlayRef.dispose();
|
|
51
|
+
// Restore focus to the trigger.
|
|
52
|
+
previouslyFocused?.focus?.();
|
|
53
|
+
};
|
|
54
|
+
const panel = overlayRef.overlayElement.querySelector('[data-state]');
|
|
55
|
+
if (panel) {
|
|
56
|
+
panel.addEventListener('animationend', finish, { once: true });
|
|
57
|
+
setTimeout(finish, CLOSE_FALLBACK_MS);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
finish();
|
|
61
|
+
}
|
|
30
62
|
});
|
|
31
63
|
// Alert-dialog semantics: backdrop clicks must NOT dismiss.
|
|
32
64
|
// Escape still closes the dialog.
|
|
@@ -47,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
47
79
|
providedIn: 'root'
|
|
48
80
|
}]
|
|
49
81
|
}] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2FsZXJ0LWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUs3RCxNQUFNLE9BQU8sa0JBQWtCO0lBQ25CLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsTUFBeUI7UUFDMUIsMERBQTBEO1FBQzFELE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLGFBQW1DLENBQUM7UUFFdkUsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDcEMsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFO2dCQUNYLHNCQUFzQjtnQkFDdEIsYUFBYTtnQkFDYixrQkFBa0I7Z0JBQ2xCLDhCQUE4QjtnQkFDOUIsNkJBQTZCO2dCQUM3QixpQ0FBaUM7Z0JBQ2pDLGdDQUFnQzthQUNuQztZQUNELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxRixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7U0FDeEQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUV2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQywyQkFBMkIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0Msb0VBQW9FO1FBQ3BFLGdDQUFnQztRQUNoQyxVQUFVLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0QsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3RDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUU1QyxzRUFBc0U7UUFDdEUscUVBQXFFO1FBQ3JFLG1FQUFtRTtRQUNuRSx1REFBdUQ7UUFDdkQsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRSxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFckMsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDaEIsSUFBSSxRQUFRO29CQUFFLE9BQU87Z0JBQ3JCLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ2hCLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDcEIsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixnQ0FBZ0M7Z0JBQ2hDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDakMsQ0FBQyxDQUFDO1lBRUYsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQWMsY0FBYyxDQUFDLENBQUM7WUFDbkYsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRCxVQUFVLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDMUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sRUFBRSxDQUFDO1lBQ2IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsNERBQTREO1FBQzVELGtDQUFrQztRQUNsQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQzFELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7d0dBekVRLGtCQUFrQjs0R0FBbEIsa0JBQWtCLGNBRmYsTUFBTTs7NEZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFsZXJ0RGlhbG9nQ29uZmlnLCBBbGVydERpYWxvZ1JlZiB9IGZyb20gJy4vYWxlcnQtZGlhbG9nLnR5cGVzJztcbmltcG9ydCB7IEFsZXJ0RGlhbG9nRHluYW1pY0NvbXBvbmVudCB9IGZyb20gJy4vYWxlcnQtZGlhbG9nLWR5bmFtaWMuY29tcG9uZW50JztcbmltcG9ydCB7IENMT1NFX0ZBTExCQUNLX01TIH0gZnJvbSAnLi9hbGVydC1kaWFsb2cuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ1NlcnZpY2Uge1xuICAgIHByaXZhdGUgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAgIG9wZW4oY29uZmlnOiBBbGVydERpYWxvZ0NvbmZpZyk6IEFsZXJ0RGlhbG9nUmVmIHtcbiAgICAgICAgLy8gUmVtZW1iZXIgdGhlIHRyaWdnZXIgc28gZm9jdXMgY2FuIGJlIHJlc3RvcmVkIG9uIGNsb3NlLlxuICAgICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFtcbiAgICAgICAgICAgICAgICAnY2RrLW92ZXJsYXktYmFja2Ryb3AnLFxuICAgICAgICAgICAgICAgICdiZy1ibGFjay84MCcsXG4gICAgICAgICAgICAgICAgJ2JhY2tkcm9wLWJsdXItc20nLFxuICAgICAgICAgICAgICAgICdkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluJyxcbiAgICAgICAgICAgICAgICAnZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wJyxcbiAgICAgICAgICAgICAgICAnZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCcsXG4gICAgICAgICAgICAgICAgJ2RhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IG5ldyBBbGVydERpYWxvZ1JlZigpO1xuXG4gICAgICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoQWxlcnREaWFsb2dEeW5hbWljQ29tcG9uZW50LCBudWxsLCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gb3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgICAgICAvLyBUaGUgYmFja2Ryb3AgZWxlbWVudCBvbmx5IGV4aXN0cyBvbmNlIGF0dGFjaGVkIOKAlCBzZXR0aW5nIHRoaXMgYW55XG4gICAgICAgIC8vIGVhcmxpZXIgd291bGQgc2lsZW50bHkgbm8tb3AuXG4gICAgICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCAnb3BlbicpO1xuXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb25maWcgPSBjb25maWc7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kaWFsb2dSZWYgPSBkaWFsb2dSZWY7XG5cbiAgICAgICAgLy8gVGhlIHJlc3VsdCAoYGFmdGVyQ2xvc2VkJGApIGlzIHJlYWR5IGltbWVkaWF0ZWx5LCBidXQgZGlzcG9zaW5nIHRoZVxuICAgICAgICAvLyBvdmVybGF5IHdhaXRzIGZvciB0aGUgY29udGVudCBwYW5lbCdzIGV4aXQgYW5pbWF0aW9uIHRvIGZpbmlzaCAob3JcbiAgICAgICAgLy8gYSBmYWxsYmFjayB0aW1lb3V0KSwgc28gYGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXRgIGdldHMgYVxuICAgICAgICAvLyBjaGFuY2UgdG8gcGxheSBpbnN0ZWFkIG9mIGJlaW5nIHRvcm4gZG93biBtaWQtZnJhbWUuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCAnY2xvc2VkJyk7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY2xvc2luZyA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCBmaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgZmluaXNoID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaW5pc2hlZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBvdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgICAgICAgICAgIG92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgZm9jdXMgdG8gdGhlIHRyaWdnZXIuXG4gICAgICAgICAgICAgICAgcHJldmlvdXNseUZvY3VzZWQ/LmZvY3VzPy4oKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHBhbmVsID0gb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignW2RhdGEtc3RhdGVdJyk7XG4gICAgICAgICAgICBpZiAocGFuZWwpIHtcbiAgICAgICAgICAgICAgICBwYW5lbC5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCBmaW5pc2gsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgQ0xPU0VfRkFMTEJBQ0tfTVMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaW5pc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWxlcnQtZGlhbG9nIHNlbWFudGljczogYmFja2Ryb3AgY2xpY2tzIG11c3QgTk9UIGRpc21pc3MuXG4gICAgICAgIC8vIEVzY2FwZSBzdGlsbCBjbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgICAgb3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XG4gICAgfVxufVxuIl19
|
|
@@ -67,11 +67,16 @@ export class ContextMenuService {
|
|
|
67
67
|
})
|
|
68
68
|
]
|
|
69
69
|
});
|
|
70
|
+
// Position via left/top, not transform: the menu's own
|
|
71
|
+
// data-[state=open]:zoom-in-95/slide-in-from-top-2 enter animation also
|
|
72
|
+
// drives `transform`, and a CSS animation overrides whatever an inline
|
|
73
|
+
// transform says for as long as it's running — so a translate() here
|
|
74
|
+
// would get clobbered by the animation and only "snap" into place once
|
|
75
|
+
// it finishes, which is exactly the top-left-then-jump flash this avoids.
|
|
70
76
|
Object.assign(menuElement.style, {
|
|
71
77
|
position: 'fixed',
|
|
72
|
-
left:
|
|
73
|
-
top:
|
|
74
|
-
transform: `translate(${Math.round(x)}px, ${Math.round(y)}px)`
|
|
78
|
+
left: `${Math.round(x)}px`,
|
|
79
|
+
top: `${Math.round(y)}px`,
|
|
75
80
|
});
|
|
76
81
|
}
|
|
77
82
|
async positionSubmenu(triggerElement, submenuElement) {
|
|
@@ -100,9 +105,8 @@ export class ContextMenuService {
|
|
|
100
105
|
});
|
|
101
106
|
Object.assign(submenuElement.style, {
|
|
102
107
|
position: 'fixed',
|
|
103
|
-
left:
|
|
104
|
-
top:
|
|
105
|
-
transform: `translate(${Math.round(x)}px, ${Math.round(y)}px)`
|
|
108
|
+
left: `${Math.round(x)}px`,
|
|
109
|
+
top: `${Math.round(y)}px`,
|
|
106
110
|
});
|
|
107
111
|
}
|
|
108
112
|
performAction(actionId) {
|
|
@@ -118,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
118
122
|
providedIn: 'root'
|
|
119
123
|
}]
|
|
120
124
|
}] });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2NvbnRleHQtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBMkI5RSxNQUFNLE9BQU8sa0JBQWtCO0lBQ3JCLE1BQU0sR0FBcUI7UUFDakMsQ0FBQyxFQUFFLENBQUM7UUFDSixDQUFDLEVBQUUsQ0FBQztRQUNKLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEtBQUs7S0FDZCxDQUFDO0lBRU8sWUFBWSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO0lBRTdELElBQUksQ0FBQyxNQUtKO1FBQ0MsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFL0QsK0JBQStCO1FBQy9CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ2hCLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTztZQUNoQixLQUFLO1lBQ0wsTUFBTSxFQUFFLElBQUk7WUFDWixjQUFjO1lBQ2QsUUFBUTtTQUNULENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxL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YWJsZSwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21wdXRlUG9zaXRpb24sIG9mZnNldCwgc2hpZnQsIGZsaXAsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcblxuZXhwb3J0IHR5cGUgQ29udGV4dE1lbnVJdGVtID0ge1xuICBpZD86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZGVzdHJ1Y3RpdmU/OiBib29sZWFuO1xuICBzZXBhcmF0b3I/OiBib29sZWFuO1xuICBzdWJtZW51PzogQ29udGV4dE1lbnVJdGVtW107XG4gIHNob3J0Y3V0Pzogc3RyaW5nO1xuICBjaGVja2VkPzogYm9vbGVhbjtcbiAgdHlwZT86ICdkZWZhdWx0JyB8ICdjaGVja2JveCcgfCAncmFkaW8nO1xufVxuXG5leHBvcnQgdHlwZSBDb250ZXh0TWVudVN0YXRlID0ge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgaXRlbXM6IENvbnRleHRNZW51SXRlbVtdO1xuICBpc09wZW46IGJvb2xlYW47XG4gIHRyaWdnZXJFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIG9uQWN0aW9uPzogKGFjdGlvbklkOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51U2VydmljZSB7XG4gIHByaXZhdGUgX3N0YXRlOiBDb250ZXh0TWVudVN0YXRlID0ge1xuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICBpdGVtczogW10sXG4gICAgaXNPcGVuOiBmYWxzZVxuICB9O1xuXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29udGV4dE1lbnVTdGF0ZT4oKTtcblxuICBvcGVuKGNvbmZpZzoge1xuICAgIGV2ZW50OiBNb3VzZUV2ZW50O1xuICAgIGl0ZW1zPzogQ29udGV4dE1lbnVJdGVtW107XG4gICAgdHJpZ2dlckVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgICBvbkFjdGlvbj86IChhY3Rpb25JZDogc3RyaW5nKSA9PiB2b2lkO1xuICB9KSB7XG4gICAgY29uc3QgeyBldmVudCwgaXRlbXMgPSBbXSwgdHJpZ2dlckVsZW1lbnQsIG9uQWN0aW9uIH0gPSBjb25maWc7XG5cbiAgICAvLyBQcmV2ZW50IGJyb3dzZXIgY29udGV4dCBtZW51XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHRoaXMuX3N0YXRlID0ge1xuICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgIHk6IGV2ZW50LmNsaWVudFksXG4gICAgICBpdGVtcyxcbiAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgIHRyaWdnZXJFbGVtZW50LFxuICAgICAgb25BY3Rpb25cbiAgICB9O1xuXG4gICAgdGhpcy5zdGF0ZUNoYW5nZWQuZW1pdCh0aGlzLl9zdGF0ZSk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLl9zdGF0ZSA9IHsgLi4udGhpcy5fc3RhdGUsIGlzT3BlbjogZmFsc2UgfTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlZC5lbWl0KHRoaXMuX3N0YXRlKTtcbiAgfVxuXG4gIGFzeW5jIHBvc2l0aW9uTWVudShtZW51RWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3N0YXRlO1xuICAgIGlmICghc3RhdGUuaXNPcGVuIHx8ICFtZW51RWxlbWVudCkgcmV0dXJuO1xuXG4gICAgLy8gQ3JlYXRlIGEgcHJlY2lzZSB2aXJ0dWFsIGVsZW1lbnQgZm9yIHRoZSBtb3VzZSBjb29yZGluYXRlc1xuICAgIGNvbnN0IHZpcnR1YWxFbCA9IHtcbiAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgeDogc3RhdGUueCxcbiAgICAgICAgICB5OiBzdGF0ZS55LFxuICAgICAgICAgIHRvcDogc3RhdGUueSxcbiAgICAgICAgICBsZWZ0OiBzdGF0ZS54LFxuICAgICAgICAgIHJpZ2h0OiBzdGF0ZS54LFxuICAgICAgICAgIGJvdHRvbTogc3RhdGUueSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgeyB4LCB5IH0gPSBhd2FpdCBjb21wdXRlUG9zaXRpb24odmlydHVhbEVsIGFzIGFueSwgbWVudUVsZW1lbnQsIHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsIC8vIFN0YW5kYXJkOiBNZW51IHRvcC1sZWZ0IGFsaWducyB3aXRoIG1vdXNlXG4gICAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICAgIG1pZGRsZXdhcmU6IFtcbiAgICAgICAgb2Zmc2V0KDIpLCAvLyBTbGlnaHQgb2Zmc2V0IHNvIG1vdXNlIGlzbid0IGNvdmVyaW5nIHRoZSBmaXJzdCBwaXhlbFxuICAgICAgICBmbGlwKHtcbiAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IFsnYm90dG9tLWVuZCcsICd0b3Atc3RhcnQnLCAndG9wLWVuZCddXG4gICAgICAgIH0pLFxuICAgICAgICBzaGlmdCh7IHBhZGRpbmc6IDEwIH0pLFxuICAgICAgICBzaXplKHtcbiAgICAgICAgICBhcHBseSh7IGF2YWlsYWJsZUhlaWdodCwgYXZhaWxhYmxlV2lkdGgsIGVsZW1lbnRzIH0pIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudHMuZmxvYXRpbmcuc3R5bGUsIHtcbiAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBgJHtNYXRoLm1heCgxMDAsIGF2YWlsYWJsZUhlaWdodCAtIDE2KX1weGAsXG4gICAgICAgICAgICAgIG1heFdpZHRoOiBgJHtNYXRoLm1heCgyMDAsIGF2YWlsYWJsZVdpZHRoIC0gMTYpfXB4YCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bydcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIE9iamVjdC5hc3NpZ24obWVudUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCcsXG4gICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUoJHtNYXRoLnJvdW5kKHgpfXB4LCAke01hdGgucm91bmQoeSl9cHgpYFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcG9zaXRpb25TdWJtZW51KHRyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCwgc3VibWVudUVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgaWYgKCF0cmlnZ2VyRWxlbWVudCB8fCAhc3VibWVudUVsZW1lbnQpIHJldHVybjtcblxuICAgIGNvbnN0IHsgeCwgeSB9ID0gYXdhaXQgY29tcHV0ZVBvc2l0aW9uKHRyaWdnZXJFbGVtZW50LCBzdWJtZW51RWxlbWVudCwge1xuICAgICAgcGxhY2VtZW50OiAncmlnaHQtc3RhcnQnLCAvLyBTdGFuZGFyZDogU3VibWVudSBvcGVucyB0byB0aGUgcmlnaHRcbiAgICAgIHN0cmF0ZWd5OiAnZml4ZWQnLFxuICAgICAgbWlkZGxld2FyZTogW1xuICAgICAgICBvZmZzZXQoLTQpLCAvLyBPdmVybGFwIHNsaWdodGx5IHdpdGggcGFyZW50IG1lbnVcbiAgICAgICAgZmxpcCh7XG4gICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiBbJ2xlZnQtc3RhcnQnLCAnYm90dG9tLXN0YXJ0J11cbiAgICAgICAgfSksXG4gICAgICAgIHNoaWZ0KHsgcGFkZGluZzogMTAgfSksXG4gICAgICAgIHNpemUoe1xuICAgICAgICAgIGFwcGx5KHsgYXZhaWxhYmxlSGVpZ2h0LCBhdmFpbGFibGVXaWR0aCwgZWxlbWVudHMgfSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50cy5mbG9hdGluZy5zdHlsZSwge1xuICAgICAgICAgICAgICBtYXhIZWlnaHQ6IGAke01hdGgubWF4KDEwMCwgYXZhaWxhYmxlSGVpZ2h0IC0gMTYpfXB4YCxcbiAgICAgICAgICAgICAgbWF4V2lkdGg6IGAke01hdGgubWF4KDIwMCwgYXZhaWxhYmxlV2lkdGggLSAxNil9cHhgLFxuICAgICAgICAgICAgICBvdmVyZmxvd1k6ICdhdXRvJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmFzc2lnbihzdWJtZW51RWxlbWVudC5zdHlsZSwge1xuICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICB0b3A6ICcwJyxcbiAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZSgke01hdGgucm91bmQoeCl9cHgsICR7TWF0aC5yb3VuZCh5KX1weClgXG4gICAgfSk7XG4gIH1cblxuICBwZXJmb3JtQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zdGF0ZS5vbkFjdGlvbj8uKGFjdGlvbklkKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbn0iXX0=
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2NvbnRleHQtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBMkI5RSxNQUFNLE9BQU8sa0JBQWtCO0lBQ3JCLE1BQU0sR0FBcUI7UUFDakMsQ0FBQyxFQUFFLENBQUM7UUFDSixDQUFDLEVBQUUsQ0FBQztRQUNKLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEtBQUs7S0FDZCxDQUFDO0lBRU8sWUFBWSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO0lBRTdELElBQUksQ0FBQyxNQUtKO1FBQ0MsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFL0QsK0JBQStCO1FBQy9CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ2hCLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTztZQUNoQixLQUFLO1lBQ0wsTUFBTSxFQUFFLElBQUk7WUFDWixjQUFjO1lBQ2QsUUFBUTtTQUNULENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxL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QUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tcHV0ZVBvc2l0aW9uLCBvZmZzZXQsIHNoaWZ0LCBmbGlwLCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW51SXRlbSA9IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGRlc3RydWN0aXZlPzogYm9vbGVhbjtcbiAgc2VwYXJhdG9yPzogYm9vbGVhbjtcbiAgc3VibWVudT86IENvbnRleHRNZW51SXRlbVtdO1xuICBzaG9ydGN1dD86IHN0cmluZztcbiAgY2hlY2tlZD86IGJvb2xlYW47XG4gIHR5cGU/OiAnZGVmYXVsdCcgfCAnY2hlY2tib3gnIHwgJ3JhZGlvJztcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dE1lbnVTdGF0ZSA9IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIGl0ZW1zOiBDb250ZXh0TWVudUl0ZW1bXTtcbiAgaXNPcGVuOiBib29sZWFuO1xuICB0cmlnZ2VyRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBvbkFjdGlvbj86IChhY3Rpb25JZDogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudVNlcnZpY2Uge1xuICBwcml2YXRlIF9zdGF0ZTogQ29udGV4dE1lbnVTdGF0ZSA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgaXRlbXM6IFtdLFxuICAgIGlzT3BlbjogZmFsc2VcbiAgfTtcblxuICByZWFkb25seSBzdGF0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbnRleHRNZW51U3RhdGU+KCk7XG5cbiAgb3Blbihjb25maWc6IHtcbiAgICBldmVudDogTW91c2VFdmVudDtcbiAgICBpdGVtcz86IENvbnRleHRNZW51SXRlbVtdO1xuICAgIHRyaWdnZXJFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gICAgb25BY3Rpb24/OiAoYWN0aW9uSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgfSkge1xuICAgIGNvbnN0IHsgZXZlbnQsIGl0ZW1zID0gW10sIHRyaWdnZXJFbGVtZW50LCBvbkFjdGlvbiB9ID0gY29uZmlnO1xuXG4gICAgLy8gUHJldmVudCBicm93c2VyIGNvbnRleHQgbWVudVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLl9zdGF0ZSA9IHtcbiAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICB5OiBldmVudC5jbGllbnRZLFxuICAgICAgaXRlbXMsXG4gICAgICBpc09wZW46IHRydWUsXG4gICAgICB0cmlnZ2VyRWxlbWVudCxcbiAgICAgIG9uQWN0aW9uXG4gICAgfTtcblxuICAgIHRoaXMuc3RhdGVDaGFuZ2VkLmVtaXQodGhpcy5fc3RhdGUpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5fc3RhdGUgPSB7IC4uLnRoaXMuX3N0YXRlLCBpc09wZW46IGZhbHNlIH07XG4gICAgdGhpcy5zdGF0ZUNoYW5nZWQuZW1pdCh0aGlzLl9zdGF0ZSk7XG4gIH1cblxuICBhc3luYyBwb3NpdGlvbk1lbnUobWVudUVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLl9zdGF0ZTtcbiAgICBpZiAoIXN0YXRlLmlzT3BlbiB8fCAhbWVudUVsZW1lbnQpIHJldHVybjtcblxuICAgIC8vIENyZWF0ZSBhIHByZWNpc2UgdmlydHVhbCBlbGVtZW50IGZvciB0aGUgbW91c2UgY29vcmRpbmF0ZXNcbiAgICBjb25zdCB2aXJ0dWFsRWwgPSB7XG4gICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgIHg6IHN0YXRlLngsXG4gICAgICAgICAgeTogc3RhdGUueSxcbiAgICAgICAgICB0b3A6IHN0YXRlLnksXG4gICAgICAgICAgbGVmdDogc3RhdGUueCxcbiAgICAgICAgICByaWdodDogc3RhdGUueCxcbiAgICAgICAgICBib3R0b206IHN0YXRlLnksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHsgeCwgeSB9ID0gYXdhaXQgY29tcHV0ZVBvc2l0aW9uKHZpcnR1YWxFbCBhcyBhbnksIG1lbnVFbGVtZW50LCB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLCAvLyBTdGFuZGFyZDogTWVudSB0b3AtbGVmdCBhbGlnbnMgd2l0aCBtb3VzZVxuICAgICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgICBtaWRkbGV3YXJlOiBbXG4gICAgICAgIG9mZnNldCgyKSwgLy8gU2xpZ2h0IG9mZnNldCBzbyBtb3VzZSBpc24ndCBjb3ZlcmluZyB0aGUgZmlyc3QgcGl4ZWxcbiAgICAgICAgZmxpcCh7XG4gICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiBbJ2JvdHRvbS1lbmQnLCAndG9wLXN0YXJ0JywgJ3RvcC1lbmQnXVxuICAgICAgICB9KSxcbiAgICAgICAgc2hpZnQoeyBwYWRkaW5nOiAxMCB9KSxcbiAgICAgICAgc2l6ZSh7XG4gICAgICAgICAgYXBwbHkoeyBhdmFpbGFibGVIZWlnaHQsIGF2YWlsYWJsZVdpZHRoLCBlbGVtZW50cyB9KSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnRzLmZsb2F0aW5nLnN0eWxlLCB7XG4gICAgICAgICAgICAgIG1heEhlaWdodDogYCR7TWF0aC5tYXgoMTAwLCBhdmFpbGFibGVIZWlnaHQgLSAxNil9cHhgLFxuICAgICAgICAgICAgICBtYXhXaWR0aDogYCR7TWF0aC5tYXgoMjAwLCBhdmFpbGFibGVXaWR0aCAtIDE2KX1weGAsXG4gICAgICAgICAgICAgIG92ZXJmbG93WTogJ2F1dG8nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICAvLyBQb3NpdGlvbiB2aWEgbGVmdC90b3AsIG5vdCB0cmFuc2Zvcm06IHRoZSBtZW51J3Mgb3duXG4gICAgLy8gZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NS9zbGlkZS1pbi1mcm9tLXRvcC0yIGVudGVyIGFuaW1hdGlvbiBhbHNvXG4gICAgLy8gZHJpdmVzIGB0cmFuc2Zvcm1gLCBhbmQgYSBDU1MgYW5pbWF0aW9uIG92ZXJyaWRlcyB3aGF0ZXZlciBhbiBpbmxpbmVcbiAgICAvLyB0cmFuc2Zvcm0gc2F5cyBmb3IgYXMgbG9uZyBhcyBpdCdzIHJ1bm5pbmcg4oCUIHNvIGEgdHJhbnNsYXRlKCkgaGVyZVxuICAgIC8vIHdvdWxkIGdldCBjbG9iYmVyZWQgYnkgdGhlIGFuaW1hdGlvbiBhbmQgb25seSBcInNuYXBcIiBpbnRvIHBsYWNlIG9uY2VcbiAgICAvLyBpdCBmaW5pc2hlcywgd2hpY2ggaXMgZXhhY3RseSB0aGUgdG9wLWxlZnQtdGhlbi1qdW1wIGZsYXNoIHRoaXMgYXZvaWRzLlxuICAgIE9iamVjdC5hc3NpZ24obWVudUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgbGVmdDogYCR7TWF0aC5yb3VuZCh4KX1weGAsXG4gICAgICB0b3A6IGAke01hdGgucm91bmQoeSl9cHhgLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcG9zaXRpb25TdWJtZW51KHRyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCwgc3VibWVudUVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgaWYgKCF0cmlnZ2VyRWxlbWVudCB8fCAhc3VibWVudUVsZW1lbnQpIHJldHVybjtcblxuICAgIGNvbnN0IHsgeCwgeSB9ID0gYXdhaXQgY29tcHV0ZVBvc2l0aW9uKHRyaWdnZXJFbGVtZW50LCBzdWJtZW51RWxlbWVudCwge1xuICAgICAgcGxhY2VtZW50OiAncmlnaHQtc3RhcnQnLCAvLyBTdGFuZGFyZDogU3VibWVudSBvcGVucyB0byB0aGUgcmlnaHRcbiAgICAgIHN0cmF0ZWd5OiAnZml4ZWQnLFxuICAgICAgbWlkZGxld2FyZTogW1xuICAgICAgICBvZmZzZXQoLTQpLCAvLyBPdmVybGFwIHNsaWdodGx5IHdpdGggcGFyZW50IG1lbnVcbiAgICAgICAgZmxpcCh7XG4gICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiBbJ2xlZnQtc3RhcnQnLCAnYm90dG9tLXN0YXJ0J11cbiAgICAgICAgfSksXG4gICAgICAgIHNoaWZ0KHsgcGFkZGluZzogMTAgfSksXG4gICAgICAgIHNpemUoe1xuICAgICAgICAgIGFwcGx5KHsgYXZhaWxhYmxlSGVpZ2h0LCBhdmFpbGFibGVXaWR0aCwgZWxlbWVudHMgfSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50cy5mbG9hdGluZy5zdHlsZSwge1xuICAgICAgICAgICAgICBtYXhIZWlnaHQ6IGAke01hdGgubWF4KDEwMCwgYXZhaWxhYmxlSGVpZ2h0IC0gMTYpfXB4YCxcbiAgICAgICAgICAgICAgbWF4V2lkdGg6IGAke01hdGgubWF4KDIwMCwgYXZhaWxhYmxlV2lkdGggLSAxNil9cHhgLFxuICAgICAgICAgICAgICBvdmVyZmxvd1k6ICdhdXRvJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmFzc2lnbihzdWJtZW51RWxlbWVudC5zdHlsZSwge1xuICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICBsZWZ0OiBgJHtNYXRoLnJvdW5kKHgpfXB4YCxcbiAgICAgIHRvcDogYCR7TWF0aC5yb3VuZCh5KX1weGAsXG4gICAgfSk7XG4gIH1cblxuICBwZXJmb3JtQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zdGF0ZS5vbkFjdGlvbj8uKGFjdGlvbklkKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbn0iXX0=
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
1
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* Safety net if the exit animation's `animationend` never fires — reduced
|
|
4
|
+
* motion, no matching keyframe, or a panel that never rendered — so a modal
|
|
5
|
+
* can never get stuck open forever.
|
|
6
|
+
*/
|
|
7
|
+
const CLOSE_FALLBACK_MS = 300;
|
|
2
8
|
export class ModalRef {
|
|
3
9
|
overlay;
|
|
4
10
|
modal;
|
|
5
11
|
stack;
|
|
6
12
|
_afterClosed$ = new Subject();
|
|
7
13
|
afterClosed$ = this._afterClosed$.asObservable();
|
|
14
|
+
_closingSubject = new BehaviorSubject(false);
|
|
15
|
+
/** True once `close()` has been called — drives the panel's exit animation. */
|
|
16
|
+
closing$ = this._closingSubject.asObservable();
|
|
8
17
|
constructor(overlay, modal, stack) {
|
|
9
18
|
this.overlay = overlay;
|
|
10
19
|
this.modal = modal;
|
|
@@ -18,14 +27,34 @@ export class ModalRef {
|
|
|
18
27
|
});
|
|
19
28
|
}
|
|
20
29
|
/**
|
|
21
|
-
* Closes the modal
|
|
30
|
+
* Closes the modal. Signals the panel and backdrop to play their exit
|
|
31
|
+
* animation, then tears down the overlay once it finishes (or after
|
|
32
|
+
* `CLOSE_FALLBACK_MS`, whichever comes first).
|
|
22
33
|
* @param result Data to pass back to the caller
|
|
23
34
|
*/
|
|
24
35
|
close(result) {
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
36
|
+
if (this._closingSubject.value)
|
|
37
|
+
return;
|
|
38
|
+
this._closingSubject.next(true);
|
|
39
|
+
this.overlay.backdropElement?.setAttribute('data-state', 'closed');
|
|
40
|
+
let finished = false;
|
|
41
|
+
const finish = () => {
|
|
42
|
+
if (finished)
|
|
43
|
+
return;
|
|
44
|
+
finished = true;
|
|
45
|
+
this._afterClosed$.next(result);
|
|
46
|
+
this._afterClosed$.complete();
|
|
47
|
+
this.overlay.dispose();
|
|
48
|
+
this.stack.unregister(this);
|
|
49
|
+
};
|
|
50
|
+
const panel = this.overlay.overlayElement.querySelector('[data-state]');
|
|
51
|
+
if (panel) {
|
|
52
|
+
panel.addEventListener('animationend', finish, { once: true });
|
|
53
|
+
setTimeout(finish, CLOSE_FALLBACK_MS);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
finish();
|
|
57
|
+
}
|
|
29
58
|
}
|
|
30
59
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9tb2RhbC1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJaEQ7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBRTlCLE1BQU0sT0FBTyxRQUFRO0lBU1Q7SUFDRDtJQUNDO0lBVk8sYUFBYSxHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO0lBQ3JFLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWhDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUN2RSwrRUFBK0U7SUFDdEUsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFeEQsWUFDVSxPQUFtQixFQUNwQixLQUFZLEVBQ1gsS0FBd0I7UUFGeEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNwQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1gsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFFaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUIsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxNQUFVO1FBQ2QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFbkUsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNsQixJQUFJLFFBQVE7Z0JBQUUsT0FBTztZQUNyQixRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUM7UUFFRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQWMsY0FBYyxDQUFDLENBQUM7UUFDckYsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDL0QsVUFBVSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxFQUFFLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICcuL21vZGFsJztcbmltcG9ydCB7IE1vZGFsU3RhY2tTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1zdGFjay5zZXJ2aWNlJztcblxuLyoqXG4gKiBTYWZldHkgbmV0IGlmIHRoZSBleGl0IGFuaW1hdGlvbidzIGBhbmltYXRpb25lbmRgIG5ldmVyIGZpcmVzIOKAlCByZWR1Y2VkXG4gKiBtb3Rpb24sIG5vIG1hdGNoaW5nIGtleWZyYW1lLCBvciBhIHBhbmVsIHRoYXQgbmV2ZXIgcmVuZGVyZWQg4oCUIHNvIGEgbW9kYWxcbiAqIGNhbiBuZXZlciBnZXQgc3R1Y2sgb3BlbiBmb3JldmVyLlxuICovXG5jb25zdCBDTE9TRV9GQUxMQkFDS19NUyA9IDMwMDtcblxuZXhwb3J0IGNsYXNzIE1vZGFsUmVmPFIgPSBhbnk+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJDbG9zZWQkID0gbmV3IFN1YmplY3Q8UiB8IHVuZGVmaW5lZCB8IG51bGw+KCk7XG4gIGFmdGVyQ2xvc2VkJCA9IHRoaXMuX2FmdGVyQ2xvc2VkJC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jbG9zaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogVHJ1ZSBvbmNlIGBjbG9zZSgpYCBoYXMgYmVlbiBjYWxsZWQg4oCUIGRyaXZlcyB0aGUgcGFuZWwncyBleGl0IGFuaW1hdGlvbi4gKi9cbiAgcmVhZG9ubHkgY2xvc2luZyQgPSB0aGlzLl9jbG9zaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlSZWYsXG4gICAgcHVibGljIG1vZGFsOiBNb2RhbCxcbiAgICBwcml2YXRlIHN0YWNrOiBNb2RhbFN0YWNrU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN0YWNrLnJlZ2lzdGVyKHRoaXMpO1xuXG4gICAgLy8gSGFuZGxlIEJhY2tkcm9wIENsaWNrXG4gICAgdGhpcy5vdmVybGF5LmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubW9kYWwuYmFja2Ryb3BDbG9zZSkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBtb2RhbC4gU2lnbmFscyB0aGUgcGFuZWwgYW5kIGJhY2tkcm9wIHRvIHBsYXkgdGhlaXIgZXhpdFxuICAgKiBhbmltYXRpb24sIHRoZW4gdGVhcnMgZG93biB0aGUgb3ZlcmxheSBvbmNlIGl0IGZpbmlzaGVzIChvciBhZnRlclxuICAgKiBgQ0xPU0VfRkFMTEJBQ0tfTVNgLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QpLlxuICAgKiBAcGFyYW0gcmVzdWx0IERhdGEgdG8gcGFzcyBiYWNrIHRvIHRoZSBjYWxsZXJcbiAgICovXG4gIGNsb3NlKHJlc3VsdD86IFIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2xvc2luZ1N1YmplY3QudmFsdWUpIHJldHVybjtcbiAgICB0aGlzLl9jbG9zaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIHRoaXMub3ZlcmxheS5iYWNrZHJvcEVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScsICdjbG9zZWQnKTtcblxuICAgIGxldCBmaW5pc2hlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGZpbmlzaCA9ICgpID0+IHtcbiAgICAgIGlmIChmaW5pc2hlZCkgcmV0dXJuO1xuICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fYWZ0ZXJDbG9zZWQkLm5leHQocmVzdWx0KTtcbiAgICAgIHRoaXMuX2FmdGVyQ2xvc2VkJC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5vdmVybGF5LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuc3RhY2sudW5yZWdpc3Rlcih0aGlzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcGFuZWwgPSB0aGlzLm92ZXJsYXkub3ZlcmxheUVsZW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ1tkYXRhLXN0YXRlXScpO1xuICAgIGlmIChwYW5lbCkge1xuICAgICAgcGFuZWwuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgZmluaXNoLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgQ0xPU0VfRkFMTEJBQ0tfTVMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5pc2goKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|