ng-primitives 0.7.0 → 0.7.2

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.
Files changed (39) hide show
  1. package/dialog/config/dialog.config.d.ts +43 -0
  2. package/dialog/dialog/dialog-ref.d.ts +40 -0
  3. package/dialog/dialog/dialog.directive.d.ts +29 -21
  4. package/dialog/dialog/dialog.service.d.ts +66 -0
  5. package/dialog/dialog-description/dialog-description.directive.d.ts +19 -0
  6. package/dialog/dialog-description/dialog-description.token.d.ts +14 -0
  7. package/dialog/dialog-overlay/dialog-overlay.directive.d.ts +8 -0
  8. package/dialog/{dialog-panel/dialog-panel.token.d.ts → dialog-overlay/dialog-overlay.token.d.ts} +4 -4
  9. package/dialog/dialog-title/dialog-title.directive.d.ts +14 -4
  10. package/dialog/dialog-trigger/dialog-trigger.directive.d.ts +24 -0
  11. package/dialog/dialog-trigger/dialog-trigger.token.d.ts +14 -0
  12. package/dialog/index.d.ts +8 -3
  13. package/esm2022/date-picker/date-picker-row-render/date-picker-row-render.directive.mjs +1 -2
  14. package/esm2022/dialog/config/dialog.config.mjs +28 -0
  15. package/esm2022/dialog/dialog/dialog-ref.mjs +44 -0
  16. package/esm2022/dialog/dialog/dialog.directive.mjs +59 -27
  17. package/esm2022/dialog/dialog/dialog.service.mjs +202 -0
  18. package/esm2022/dialog/dialog-description/dialog-description.directive.mjs +46 -0
  19. package/esm2022/dialog/dialog-description/dialog-description.token.mjs +16 -0
  20. package/esm2022/dialog/dialog-overlay/dialog-overlay.directive.mjs +35 -0
  21. package/esm2022/dialog/dialog-overlay/dialog-overlay.token.mjs +16 -0
  22. package/esm2022/dialog/dialog-title/dialog-title.directive.mjs +22 -7
  23. package/esm2022/dialog/dialog-trigger/dialog-trigger.directive.mjs +61 -0
  24. package/esm2022/dialog/dialog-trigger/dialog-trigger.token.mjs +16 -0
  25. package/esm2022/dialog/index.mjs +8 -3
  26. package/esm2022/internal/disabled/disabled.mjs +2 -2
  27. package/esm2022/utils/signals/async.mjs +3 -1
  28. package/fesm2022/ng-primitives-date-picker.mjs +0 -1
  29. package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
  30. package/fesm2022/ng-primitives-dialog.mjs +495 -46
  31. package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
  32. package/fesm2022/ng-primitives-internal.mjs +1 -1
  33. package/fesm2022/ng-primitives-internal.mjs.map +1 -1
  34. package/fesm2022/ng-primitives-utils.mjs +2 -0
  35. package/fesm2022/ng-primitives-utils.mjs.map +1 -1
  36. package/package.json +7 -7
  37. package/dialog/dialog-panel/dialog-panel.directive.d.ts +0 -5
  38. package/esm2022/dialog/dialog-panel/dialog-panel.directive.mjs +0 -24
  39. package/esm2022/dialog/dialog-panel/dialog-panel.token.mjs +0 -16
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { ScrollStrategy } from '@angular/cdk/overlay';
9
+ import { InjectionToken, Injector, Provider, ViewContainerRef } from '@angular/core';
10
+ /** Valid ARIA roles for a dialog. */
11
+ export type NgpDialogRole = 'dialog' | 'alertdialog';
12
+ export interface NgpDialogConfig {
13
+ /** The view container to attach the dialog to. */
14
+ viewContainerRef?: ViewContainerRef;
15
+ /** The injector to use for the dialog. Defaults to the view container's injector.*/
16
+ injector?: Injector;
17
+ /** ID for the dialog. If omitted, a unique one will be generated. */
18
+ id?: string;
19
+ /** The role of the dialog. */
20
+ role?: NgpDialogRole;
21
+ /** Whether this is a modal dialog. Used to set the `aria-modal` attribute. */
22
+ modal?: boolean;
23
+ /** Scroll strategy to be used for the dialog. This determines how the dialog responds to scrolling underneath the panel element. */
24
+ scrollStrategy?: ScrollStrategy;
25
+ /**
26
+ * Whether the dialog should close when the user navigates backwards or forwards through browser
27
+ * history.
28
+ */
29
+ closeOnNavigation?: boolean;
30
+ }
31
+ export declare const defaultDialogConfig: NgpDialogConfig;
32
+ export declare const NgpDialogConfigToken: InjectionToken<NgpDialogConfig>;
33
+ /**
34
+ * Provide the default Dialog configuration
35
+ * @param config The Dialog configuration
36
+ * @returns The provider
37
+ */
38
+ export declare function provideDialogConfig(config: Partial<NgpDialogConfig>): Provider[];
39
+ /**
40
+ * Inject the Dialog configuration
41
+ * @returns The global Dialog configuration
42
+ */
43
+ export declare function injectDialogConfig(): NgpDialogConfig;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { FocusOrigin } from '@angular/cdk/a11y';
9
+ import { OverlayRef } from '@angular/cdk/overlay';
10
+ import { Observable, Subject } from 'rxjs';
11
+ import { NgpDialogConfig } from '../config/dialog.config';
12
+ /**
13
+ * Reference to a dialog opened via the Dialog service.
14
+ */
15
+ export declare class NgpDialogRef {
16
+ readonly overlayRef: OverlayRef;
17
+ readonly config: NgpDialogConfig;
18
+ /** Whether the user is allowed to close the dialog. */
19
+ disableClose: boolean | undefined;
20
+ /** Emits when the dialog has been closed. */
21
+ readonly closed: Subject<FocusOrigin>;
22
+ /** Emits when on keyboard events within the dialog. */
23
+ readonly keydownEvents: Observable<KeyboardEvent>;
24
+ /** Emits on pointer events that happen outside of the dialog. */
25
+ readonly outsidePointerEvents: Observable<MouseEvent>;
26
+ /** Unique ID for the dialog. */
27
+ readonly id: string;
28
+ /** Subscription to external detachments of the dialog. */
29
+ private detachSubscription;
30
+ constructor(overlayRef: OverlayRef, config: NgpDialogConfig);
31
+ /**
32
+ * Close the dialog.
33
+ * @param result Optional result to return to the dialog opener.
34
+ * @param options Additional options to customize the closing behavior.
35
+ */
36
+ close(focusOrigin?: FocusOrigin): void;
37
+ /** Updates the position of the dialog based on the current position strategy. */
38
+ updatePosition(): this;
39
+ }
40
+ export declare function injectDialogRef(): NgpDialogRef;
@@ -6,28 +6,36 @@
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  import { BooleanInput } from '@angular/cdk/coercion';
9
+ import { OnDestroy } from '@angular/core';
9
10
  import * as i0 from "@angular/core";
10
- export declare class NgpDialog {
11
- /**
12
- * Define the id of the dialog.
13
- */
11
+ import * as i1 from "ng-primitives/focus-trap";
12
+ export declare class NgpDialog implements OnDestroy {
13
+ private readonly config;
14
+ /** Access the dialog ref */
15
+ private readonly dialogRef;
16
+ /** The id of the dialog */
14
17
  readonly id: import("@angular/core").InputSignal<string>;
15
- /**
16
- * The open state of the dialog.
17
- */
18
- readonly open: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
19
- /**
20
- * The type of the dialog.
21
- */
22
- readonly type: import("@angular/core").InputSignal<NgpDialogRole>;
23
- /**
24
- * Access the title of the dialog.
25
- */
26
- protected readonly title: import("@angular/core").Signal<import("ng-primitives/dialog").NgpDialogTitle | undefined>;
18
+ /** The dialog role. */
19
+ readonly role: import("@angular/core").InputSignal<import("../config/dialog.config").NgpDialogRole | undefined>;
20
+ /** Whether the dialog is a modal. */
21
+ readonly modal: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
22
+ /** The labelledby ids */
23
+ protected readonly labelledBy: import("@angular/core").WritableSignal<string[]>;
24
+ /** The describedby ids */
25
+ protected readonly describedBy: import("@angular/core").WritableSignal<string[]>;
26
+ ngOnDestroy(): void;
27
+ /** Close the dialog. */
28
+ close(): void;
29
+ /** Stop click events from propagating to the overlay */
30
+ protected onClick(event: Event): void;
31
+ /** @internal register a labelledby id */
32
+ setLabelledBy(id: string): void;
33
+ /** @internal register a describedby id */
34
+ setDescribedBy(id: string): void;
35
+ /** @internal remove a labelledby id */
36
+ removeLabelledBy(id: string): void;
37
+ /** @internal remove a describedby id */
38
+ removeDescribedBy(id: string): void;
27
39
  static ɵfac: i0.ɵɵFactoryDeclaration<NgpDialog, never>;
28
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgpDialog, "[ngpDialog]", ["ngpDialog"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "open": { "alias": "ngpDialogOpen"; "required": false; "isSignal": true; }; "type": { "alias": "ngpDialogRole"; "required": false; "isSignal": true; }; }, {}, ["title"], never, true, never>;
40
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgpDialog, "[ngpDialog]", ["ngpDialog"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "role": { "alias": "ngpDialogRole"; "required": false; "isSignal": true; }; "modal": { "alias": "ngpDialogModal"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.NgpFocusTrap; inputs: {}; outputs: {}; }]>;
29
41
  }
30
- /**
31
- * The type of the dialog.
32
- */
33
- export type NgpDialogRole = 'dialog' | 'alertdialog';
@@ -0,0 +1,66 @@
1
+ import { OnDestroy, TemplateRef } from '@angular/core';
2
+ import { Observable, Subject } from 'rxjs';
3
+ import { NgpDialogConfig } from '../config/dialog.config';
4
+ import { NgpDialogRef } from './dialog-ref';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * This is based on the Angular CDK Dialog service.
8
+ * https://github.com/angular/components/blob/main/src/cdk/dialog/dialog.ts
9
+ */
10
+ export declare class NgpDialogManager implements OnDestroy {
11
+ private readonly overlay;
12
+ private readonly defaultOptions;
13
+ private readonly parentDialogManager;
14
+ private readonly overlayContainer;
15
+ private readonly scrollStrategy;
16
+ private openDialogsAtThisLevel;
17
+ private readonly afterAllClosedAtThisLevel;
18
+ private readonly afterOpenedAtThisLevel;
19
+ private ariaHiddenElements;
20
+ /** Keeps track of the currently-open dialogs. */
21
+ get openDialogs(): readonly NgpDialogRef[];
22
+ /** Stream that emits when a dialog has been opened. */
23
+ get afterOpened(): Subject<NgpDialogRef>;
24
+ /**
25
+ * Stream that emits when all open dialog have finished closing.
26
+ * Will emit on subscribe if there are no open dialogs to begin with.
27
+ */
28
+ readonly afterAllClosed: Observable<void>;
29
+ /**
30
+ * Opens a modal dialog containing the given template.
31
+ */
32
+ open(templateRef: TemplateRef<NgpDialogContext>, config?: NgpDialogConfig): NgpDialogRef;
33
+ /**
34
+ * Closes all of the currently-open dialogs.
35
+ */
36
+ closeAll(): void;
37
+ /**
38
+ * Finds an open dialog by its id.
39
+ * @param id ID to use when looking up the dialog.
40
+ */
41
+ getDialogById(id: string): NgpDialogRef | undefined;
42
+ ngOnDestroy(): void;
43
+ /**
44
+ * Creates an overlay config from a dialog config.
45
+ */
46
+ private getOverlayConfig;
47
+ /**
48
+ * Creates a custom injector to be used inside the dialog. This allows a component loaded inside
49
+ * of a dialog to close itself and, optionally, to return a value.
50
+ */
51
+ private createInjector;
52
+ /**
53
+ * Removes a dialog from the array of open dialogs.
54
+ */
55
+ private removeOpenDialog;
56
+ /** Hides all of the content that isn't an overlay from assistive technology. */
57
+ private hideNonDialogContentFromAssistiveTechnology;
58
+ private getAfterAllClosed;
59
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgpDialogManager, never>;
60
+ static ɵprov: i0.ɵɵInjectableDeclaration<NgpDialogManager>;
61
+ }
62
+ export interface NgpDialogContext {
63
+ $implicit: NgpDialogRef;
64
+ close: () => void;
65
+ }
66
+ export declare function injectDialogManager(): NgpDialogManager;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { OnDestroy } from '@angular/core';
9
+ import * as i0 from "@angular/core";
10
+ export declare class NgpDialogDescription implements OnDestroy {
11
+ /** Access the dialog */
12
+ private readonly dialog;
13
+ /** The id of the descriptions. */
14
+ readonly id: import("@angular/core").InputSignal<string>;
15
+ constructor();
16
+ ngOnDestroy(): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgpDialogDescription, never>;
18
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgpDialogDescription, "[ngpDialogDescription]", ["ngpDialogDescription"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
19
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { InjectionToken } from '@angular/core';
9
+ import type { NgpDialogDescription } from './dialog-description.directive';
10
+ export declare const NgpDialogDescriptionToken: InjectionToken<NgpDialogDescription>;
11
+ /**
12
+ * Inject the DialogDescription directive instance
13
+ */
14
+ export declare function injectDialogDescription(): NgpDialogDescription;
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class NgpDialogOverlay {
3
+ /** Access the dialog ref. */
4
+ private readonly dialogRef;
5
+ protected close(): void;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgpDialogOverlay, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgpDialogOverlay, "[ngpDialogOverlay]", ["ngpDialogOverlay"], {}, {}, never, never, true, never>;
8
+ }
@@ -6,9 +6,9 @@
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  import { InjectionToken } from '@angular/core';
9
- import type { NgpDialogPanel } from './dialog-panel.directive';
10
- export declare const NgpDialogPanelToken: InjectionToken<NgpDialogPanel>;
9
+ import type { NgpDialogOverlay } from './dialog-overlay.directive';
10
+ export declare const NgpDialogOverlayToken: InjectionToken<NgpDialogOverlay>;
11
11
  /**
12
- * Inject the DialogPanel directive instance
12
+ * Inject the DialogOverlay directive instance
13
13
  */
14
- export declare function injectDialogPanel(): NgpDialogPanel;
14
+ export declare function injectDialogOverlay(): NgpDialogOverlay;
@@ -1,9 +1,19 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { OnDestroy } from '@angular/core';
1
9
  import * as i0 from "@angular/core";
2
- export declare class NgpDialogTitle {
3
- /**
4
- * The id of the dialog title.
5
- */
10
+ export declare class NgpDialogTitle implements OnDestroy {
11
+ /** Access the dialog. */
12
+ private readonly dialog;
13
+ /** The id of the title. */
6
14
  readonly id: import("@angular/core").InputSignal<string>;
15
+ constructor();
16
+ ngOnDestroy(): void;
7
17
  static ɵfac: i0.ɵɵFactoryDeclaration<NgpDialogTitle, never>;
8
18
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgpDialogTitle, "[ngpDialogTitle]", ["ngpDialogTitle"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
9
19
  }
@@ -0,0 +1,24 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import { NgpDialogContext } from '../dialog/dialog.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "ng-primitives/button";
5
+ export declare class NgpDialogTrigger {
6
+ /** Access the dialog manager. */
7
+ private readonly dialogManager;
8
+ /** Access the view container ref. */
9
+ private readonly viewContainerRef;
10
+ /** Access the focus monitor. */
11
+ private readonly focusMonitor;
12
+ /** Access the element ref. */
13
+ private readonly elementRef;
14
+ /** The template to launch. */
15
+ readonly template: import("@angular/core").InputSignal<TemplateRef<NgpDialogContext>>;
16
+ /**
17
+ * Store the dialog ref.
18
+ * @internal
19
+ */
20
+ private dialogRef;
21
+ protected launch(): void;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgpDialogTrigger, never>;
23
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgpDialogTrigger, "[ngpDialogTrigger]", ["ngpDialogTrigger"], { "template": { "alias": "ngpDialogTrigger"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.NgpButton; inputs: {}; outputs: {}; }]>;
24
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the Apache 2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { InjectionToken } from '@angular/core';
9
+ import type { NgpDialogTrigger } from './dialog-trigger.directive';
10
+ export declare const NgpDialogTriggerToken: InjectionToken<NgpDialogTrigger>;
11
+ /**
12
+ * Inject the DialogTrigger directive instance
13
+ */
14
+ export declare function injectDialogTrigger(): NgpDialogTrigger;
package/dialog/index.d.ts CHANGED
@@ -5,9 +5,14 @@
5
5
  * This source code is licensed under the Apache 2.0 license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
- export { NgpDialogPanel } from './dialog-panel/dialog-panel.directive';
9
- export { NgpDialogPanelToken } from './dialog-panel/dialog-panel.token';
8
+ export { NgpDialogConfig, provideDialogConfig } from './config/dialog.config';
9
+ export { NgpDialogDescription } from './dialog-description/dialog-description.directive';
10
+ export { NgpDialogDescriptionToken } from './dialog-description/dialog-description.token';
11
+ export { NgpDialogOverlay } from './dialog-overlay/dialog-overlay.directive';
12
+ export { NgpDialogOverlayToken } from './dialog-overlay/dialog-overlay.token';
10
13
  export { NgpDialogTitle } from './dialog-title/dialog-title.directive';
11
14
  export { NgpDialogTitleToken } from './dialog-title/dialog-title.token';
12
- export { NgpDialog, NgpDialogRole } from './dialog/dialog.directive';
15
+ export { NgpDialogTrigger } from './dialog-trigger/dialog-trigger.directive';
16
+ export { NgpDialogTriggerToken } from './dialog-trigger/dialog-trigger.token';
17
+ export { NgpDialog } from './dialog/dialog.directive';
13
18
  export { NgpDialogToken } from './dialog/dialog.token';
@@ -66,7 +66,6 @@ export class NgpDatePickerRowRender {
66
66
  * Store the embedded view refs of each rendered row.
67
67
  */
68
68
  this.viewRefs = [];
69
- this.renderRows();
70
69
  // re-render the rows when the month changes.
71
70
  onChange(this.datePicker.focusedDate, (date, previousDate) => {
72
71
  if (!date || !previousDate || !this.dateAdapter.isSameMonth(date, previousDate)) {
@@ -115,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
115
114
  providers: [{ provide: NgpDatePickerRowRenderToken, useExisting: NgpDatePickerRowRender }],
116
115
  }]
117
116
  }], ctorParameters: () => [] });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItcm93LXJlbmRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2RhdGUtcGlja2VyL3NyYy9kYXRlLXBpY2tlci1yb3ctcmVuZGVyL2RhdGUtcGlja2VyLXJvdy1yZW5kZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUVULE1BQU0sRUFDTixRQUFRLEVBRVIsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixzQkFBc0IsR0FDdkIsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFReEMsTUFBTSxPQUFPLHNCQUFzQjtJQW1FakM7UUFsRUE7O1dBRUc7UUFDYyxnQkFBVyxHQUFHLGlCQUFpQixFQUFLLENBQUM7UUFFdEQ7O1dBRUc7UUFDYyxlQUFVLEdBQUcsZ0JBQWdCLEVBQUssQ0FBQztRQUVwRDs7V0FFRztRQUNjLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5EOztXQUVHO1FBQ2MscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0Q7OztXQUdHO1FBQ2dCLFNBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEdBQVEsRUFBRSxDQUFDO1lBRXJCLDJD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RSxDQUFDO2FBQ0gsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVc7UUFDakIsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDOzhHQTlHVSxzQkFBc0I7a0dBQXRCLHNCQUFzQix1RUFGdEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQzs7MkZBRS9FLHNCQUFzQjtrQkFObEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsV0FBVyx3QkFBd0IsRUFBRSxDQUFDO2lCQUMzRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSAyLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHtcbiAgY29tcHV0ZWQsXG4gIERpcmVjdGl2ZSxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdERhdGVBZGFwdGVyIH0gZnJvbSAnbmctcHJpbWl0aXZlcy9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgb25DaGFuZ2UgfSBmcm9tICduZy1wcmltaXRpdmVzL3V0aWxzJztcbmltcG9ydCB7IGluamVjdERhdGVQaWNrZXIgfSBmcm9tICcuLi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci50b2tlbic7XG5pbXBvcnQge1xuICBOZ3BEYXRlUGlja2VyUm93UmVuZGVyVG9rZW4sXG4gIE5ncERhdGVQaWNrZXJXZWVrVG9rZW4sXG59IGZyb20gJy4vZGF0ZS1waWNrZXItcm93LXJlbmRlci50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3BEYXRlUGlja2VyUm93UmVuZGVyXScsXG4gIGV4cG9ydEFzOiAnbmdwRGF0ZVBpY2tlclJvd1JlbmRlcicsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwRGF0ZVBpY2tlclJvd1JlbmRlclRva2VuLCB1c2VFeGlzdGluZzogTmdwRGF0ZVBpY2tlclJvd1JlbmRlciB9XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdwRGF0ZVBpY2tlclJvd1JlbmRlcjxUPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGRhdGUgYWRhcHRlci5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0ZUFkYXB0ZXIgPSBpbmplY3REYXRlQWRhcHRlcjxUPigpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGRhdGUgcGlja2VyLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkYXRlUGlja2VyID0gaW5qZWN0RGF0ZVBpY2tlcjxUPigpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIHRlbXBsYXRlIHJlZiBmb3IgdGhlIGNlbGwuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSB2aWV3IGNvbnRhaW5lciByZWYuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgdGhlIGRheXMgdG8gZGlzcGxheSwgdGhpcyBpcyB0aGUgZGF5cyBvZiB0aGUgY3VycmVudCBtb250aFxuICAgKiBhbmQgdGhlIGRheXMgb2YgdGhlIHByZXZpb3VzIGFuZCBuZXh0IG1vbnRoIHRvIGZpbGwgdGhlIGdyaWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF5cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtb250aCA9IHRoaXMuZGF0ZVBpY2tlci5mb2N1c2VkRGF0ZSgpO1xuICAgIGNvbnN0IGRheXM6IFRbXSA9IFtdO1xuXG4gICAgLy8gR2V0IHRoZSBmaXJzdCBhbmQgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuICAgIGxldCBmaXJzdERheSA9IHRoaXMuZGF0ZUFkYXB0ZXIuc3RhcnRPZk1vbnRoKG1vbnRoKTtcbiAgICBsZXQgbGFzdERheSA9IHRoaXMuZGF0ZUFkYXB0ZXIuZW5kT2ZNb250aChtb250aCk7XG5cbiAgICAvLyBmaW5kIHRoZSBmaXJzdCBhbmQgbGFzdCBkYXkgb2YgdmlzaWJsZSBpbiB0aGUgZ3JpZC5cbiAgICBmaXJzdERheSA9IHRoaXMuZGF0ZUFkYXB0ZXIuc3VidHJhY3QoZmlyc3REYXksIHtcbiAgICAgIGRheXM6IHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0RGF5KGZpcnN0RGF5KSxcbiAgICB9KTtcbiAgICBsYXN0RGF5ID0gdGhpcy5kYXRlQWRhcHRlci5hZGQobGFzdERheSwge1xuICAgICAgZGF5czogNiAtIHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0RGF5KGxhc3REYXkpLFxuICAgIH0pO1xuXG4gICAgLy8gY29sbGVjdCBhbGwgdGhlIGRheXMgdG8gZGlzcGxheS5cbiAgICB3aGlsZSAoZmlyc3REYXkgPD0gbGFzdERheSkge1xuICAgICAgZGF5cy5wdXNoKGZpcnN0RGF5KTtcbiAgICAgIGZpcnN0RGF5ID0gdGhpcy5kYXRlQWRhcHRlci5hZGQoZmlyc3REYXksIHsgZGF5czogMSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5cztcbiAgfSk7XG5cbiAgLy8gZ2V0IHRoZSB3ZWVrcyB0byBkaXNwbGF5LlxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2Vla3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZGF5cyA9IHRoaXMuZGF5cygpO1xuICAgIGNvbnN0IHdlZWtzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRheXMubGVuZ3RoOyBpICs9IDcpIHtcbiAgICAgIHdlZWtzLnB1c2goZGF5cy5zbGljZShpLCBpICsgNykpO1xuICAgIH1cblxuICAgIHJldHVybiB3ZWVrcztcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFN0b3JlIHRoZSBlbWJlZGRlZCB2aWV3IHJlZnMgb2YgZWFjaCByZW5kZXJlZCByb3cuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdSZWZzOiBFbWJlZGRlZFZpZXdSZWY8dm9pZD5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVuZGVyUm93cygpO1xuXG4gICAgLy8gcmUtcmVuZGVyIHRoZSByb3dzIHdoZW4gdGhlIG1vbnRoIGNoYW5nZXMuXG4gICAgb25DaGFuZ2UodGhpcy5kYXRlUGlja2VyLmZvY3VzZWREYXRlLCAoZGF0ZSwgcHJldmlvdXNEYXRlKSA9PiB7XG4gICAgICBpZiAoIWRhdGUgfHwgIXByZXZpb3VzRGF0ZSB8fCAhdGhpcy5kYXRlQWRhcHRlci5pc1NhbWVNb250aChkYXRlLCBwcmV2aW91c0RhdGUpKSB7XG4gICAgICAgIHRoaXMucmVuZGVyUm93cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95Um93cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgcm93LlxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJSb3dzKCk6IHZvaWQge1xuICAgIGNvbnN0IHdlZWtzID0gdGhpcy53ZWVrcygpO1xuXG4gICAgLy8gY2xlYXIgdGhlIHZpZXcgY29udGFpbmVyLlxuICAgIHRoaXMuZGVzdHJveVJvd3MoKTtcblxuICAgIC8vIHJlbmRlciB0aGUgd2Vla3MuXG4gICAgZm9yIChjb25zdCB3ZWVrIG9mIHdlZWtzKSB7XG4gICAgICBjb25zdCB2aWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCBudWxsLCB7XG4gICAgICAgIGluamVjdG9yOiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgIHBhcmVudDogdGhpcy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLFxuICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwRGF0ZVBpY2tlcldlZWtUb2tlbiwgdXNlVmFsdWU6IHdlZWsgfV0sXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnZpZXdSZWZzLnB1c2godmlld1JlZik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3kgdGhlIHJvdy5cbiAgICovXG4gIHByaXZhdGUgZGVzdHJveVJvd3MoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCB2aWV3UmVmIG9mIHRoaXMudmlld1JlZnMpIHtcbiAgICAgIHZpZXdSZWYuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxufVxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItcm93LXJlbmRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL2RhdGUtcGlja2VyL3NyYy9kYXRlLXBpY2tlci1yb3ctcmVuZGVyL2RhdGUtcGlja2VyLXJvdy1yZW5kZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUVULE1BQU0sRUFDTixRQUFRLEVBRVIsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixzQkFBc0IsR0FDdkIsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFReEMsTUFBTSxPQUFPLHNCQUFzQjtJQW1FakM7UUFsRUE7O1dBRUc7UUFDYyxnQkFBVyxHQUFHLGlCQUFpQixFQUFLLENBQUM7UUFFdEQ7O1dBRUc7UUFDYyxlQUFVLEdBQUcsZ0JBQWdCLEVBQUssQ0FBQztRQUVwRDs7V0FFRztRQUNjLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5EOztXQUVHO1FBQ2MscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0Q7OztXQUdHO1FBQ2dCLFNBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEdBQVEsRUFBRSxDQUFDO1lBRXJCLDJD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LENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVztRQUNqQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7OEdBNUdVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHVFQUZ0QixDQUFDLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxDQUFDOzsyRkFFL0Usc0JBQXNCO2tCQU5sQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxXQUFXLHdCQUF3QixFQUFFLENBQUM7aUJBQzNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQge1xuICBjb21wdXRlZCxcbiAgRGlyZWN0aXZlLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZUFkYXB0ZXIgfSBmcm9tICduZy1wcmltaXRpdmVzL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBvbkNoYW5nZSB9IGZyb20gJ25nLXByaW1pdGl2ZXMvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0RGF0ZVBpY2tlciB9IGZyb20gJy4uL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLnRva2VuJztcbmltcG9ydCB7XG4gIE5ncERhdGVQaWNrZXJSb3dSZW5kZXJUb2tlbixcbiAgTmdwRGF0ZVBpY2tlcldlZWtUb2tlbixcbn0gZnJvbSAnLi9kYXRlLXBpY2tlci1yb3ctcmVuZGVyLnRva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25ncERhdGVQaWNrZXJSb3dSZW5kZXJdJyxcbiAgZXhwb3J0QXM6ICduZ3BEYXRlUGlja2VyUm93UmVuZGVyJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOZ3BEYXRlUGlja2VyUm93UmVuZGVyVG9rZW4sIHVzZUV4aXN0aW5nOiBOZ3BEYXRlUGlja2VyUm93UmVuZGVyIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3BEYXRlUGlja2VyUm93UmVuZGVyPFQ+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZGF0ZSBhZGFwdGVyLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkYXRlQWRhcHRlciA9IGluamVjdERhdGVBZGFwdGVyPFQ+KCk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZGF0ZSBwaWNrZXIuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGVQaWNrZXIgPSBpbmplY3REYXRlUGlja2VyPFQ+KCk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgdGVtcGxhdGUgcmVmIGZvciB0aGUgY2VsbC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVSZWYgPSBpbmplY3QoVGVtcGxhdGVSZWYpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIHZpZXcgY29udGFpbmVyIHJlZi5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuICAvKipcbiAgICogR2V0IGFsbCB0aGUgZGF5cyB0byBkaXNwbGF5LCB0aGlzIGlzIHRoZSBkYXlzIG9mIHRoZSBjdXJyZW50IG1vbnRoXG4gICAqIGFuZCB0aGUgZGF5cyBvZiB0aGUgcHJldmlvdXMgYW5kIG5leHQgbW9udGggdG8gZmlsbCB0aGUgZ3JpZC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5kYXRlUGlja2VyLmZvY3VzZWREYXRlKCk7XG4gICAgY29uc3QgZGF5czogVFtdID0gW107XG5cbiAgICAvLyBHZXQgdGhlIGZpcnN0IGFuZCBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAgbGV0IGZpcnN0RGF5ID0gdGhpcy5kYXRlQWRhcHRlci5zdGFydE9mTW9udGgobW9udGgpO1xuICAgIGxldCBsYXN0RGF5ID0gdGhpcy5kYXRlQWRhcHRlci5lbmRPZk1vbnRoKG1vbnRoKTtcblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGFuZCBsYXN0IGRheSBvZiB2aXNpYmxlIGluIHRoZSBncmlkLlxuICAgIGZpcnN0RGF5ID0gdGhpcy5kYXRlQWRhcHRlci5zdWJ0cmFjdChmaXJzdERheSwge1xuICAgICAgZGF5czogdGhpcy5kYXRlQWRhcHRlci5nZXREYXkoZmlyc3REYXkpLFxuICAgIH0pO1xuICAgIGxhc3REYXkgPSB0aGlzLmRhdGVBZGFwdGVyLmFkZChsYXN0RGF5LCB7XG4gICAgICBkYXlzOiA2IC0gdGhpcy5kYXRlQWRhcHRlci5nZXREYXkobGFzdERheSksXG4gICAgfSk7XG5cbiAgICAvLyBjb2xsZWN0IGFsbCB0aGUgZGF5cyB0byBkaXNwbGF5LlxuICAgIHdoaWxlIChmaXJzdERheSA8PSBsYXN0RGF5KSB7XG4gICAgICBkYXlzLnB1c2goZmlyc3REYXkpO1xuICAgICAgZmlyc3REYXkgPSB0aGlzLmRhdGVBZGFwdGVyLmFkZChmaXJzdERheSwgeyBkYXlzOiAxIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBkYXlzO1xuICB9KTtcblxuICAvLyBnZXQgdGhlIHdlZWtzIHRvIGRpc3BsYXkuXG4gIHByb3RlY3RlZCByZWFkb25seSB3ZWVrcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkYXlzID0gdGhpcy5kYXlzKCk7XG4gICAgY29uc3Qgd2Vla3MgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF5cy5sZW5ndGg7IGkgKz0gNykge1xuICAgICAgd2Vla3MucHVzaChkYXlzLnNsaWNlKGksIGkgKyA3KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdlZWtzO1xuICB9KTtcblxuICAvKipcbiAgICogU3RvcmUgdGhlIGVtYmVkZGVkIHZpZXcgcmVmcyBvZiBlYWNoIHJlbmRlcmVkIHJvdy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdmlld1JlZnM6IEVtYmVkZGVkVmlld1JlZjx2b2lkPltdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gcmUtcmVuZGVyIHRoZSByb3dzIHdoZW4gdGhlIG1vbnRoIGNoYW5nZXMuXG4gICAgb25DaGFuZ2UodGhpcy5kYXRlUGlja2VyLmZvY3VzZWREYXRlLCAoZGF0ZSwgcHJldmlvdXNEYXRlKSA9PiB7XG4gICAgICBpZiAoIWRhdGUgfHwgIXByZXZpb3VzRGF0ZSB8fCAhdGhpcy5kYXRlQWRhcHRlci5pc1NhbWVNb250aChkYXRlLCBwcmV2aW91c0RhdGUpKSB7XG4gICAgICAgIHRoaXMucmVuZGVyUm93cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95Um93cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgcm93LlxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJSb3dzKCk6IHZvaWQge1xuICAgIGNvbnN0IHdlZWtzID0gdGhpcy53ZWVrcygpO1xuXG4gICAgLy8gY2xlYXIgdGhlIHZpZXcgY29udGFpbmVyLlxuICAgIHRoaXMuZGVzdHJveVJvd3MoKTtcblxuICAgIC8vIHJlbmRlciB0aGUgd2Vla3MuXG4gICAgZm9yIChjb25zdCB3ZWVrIG9mIHdlZWtzKSB7XG4gICAgICBjb25zdCB2aWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCBudWxsLCB7XG4gICAgICAgIGluamVjdG9yOiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgIHBhcmVudDogdGhpcy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLFxuICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTmdwRGF0ZVBpY2tlcldlZWtUb2tlbiwgdXNlVmFsdWU6IHdlZWsgfV0sXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnZpZXdSZWZzLnB1c2godmlld1JlZik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3kgdGhlIHJvdy5cbiAgICovXG4gIHByaXZhdGUgZGVzdHJveVJvd3MoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCB2aWV3UmVmIG9mIHRoaXMudmlld1JlZnMpIHtcbiAgICAgIHZpZXdSZWYuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,28 @@
1
+ import { InjectionToken, inject } from '@angular/core';
2
+ export const defaultDialogConfig = {
3
+ role: 'dialog',
4
+ modal: true,
5
+ closeOnNavigation: true,
6
+ };
7
+ export const NgpDialogConfigToken = new InjectionToken('NgpDialogConfigToken');
8
+ /**
9
+ * Provide the default Dialog configuration
10
+ * @param config The Dialog configuration
11
+ * @returns The provider
12
+ */
13
+ export function provideDialogConfig(config) {
14
+ return [
15
+ {
16
+ provide: NgpDialogConfigToken,
17
+ useValue: { ...defaultDialogConfig, ...config },
18
+ },
19
+ ];
20
+ }
21
+ /**
22
+ * Inject the Dialog configuration
23
+ * @returns The global Dialog configuration
24
+ */
25
+ export function injectDialogConfig() {
26
+ return inject(NgpDialogConfigToken, { optional: true }) ?? defaultDialogConfig;
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvZGlhbG9nL3NyYy9jb25maWcvZGlhbG9nLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsY0FBYyxFQUF3QyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUErQjdGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFvQjtJQUNsRCxJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxJQUFJO0lBQ1gsaUJBQWlCLEVBQUUsSUFBSTtDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQWtCLHNCQUFzQixDQUFDLENBQUM7QUFFaEc7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFnQztJQUNsRSxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsb0JBQW9CO1lBQzdCLFFBQVEsRUFBRSxFQUFFLEdBQUcsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLEVBQUU7U0FDaEQ7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQztBQUNqRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbmplY3RvciwgUHJvdmlkZXIsIFZpZXdDb250YWluZXJSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiogVmFsaWQgQVJJQSByb2xlcyBmb3IgYSBkaWFsb2cuICovXG5leHBvcnQgdHlwZSBOZ3BEaWFsb2dSb2xlID0gJ2RpYWxvZycgfCAnYWxlcnRkaWFsb2cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ncERpYWxvZ0NvbmZpZyB7XG4gIC8qKiBUaGUgdmlldyBjb250YWluZXIgdG8gYXR0YWNoIHRoZSBkaWFsb2cgdG8uICovXG4gIHZpZXdDb250YWluZXJSZWY/OiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIC8qKiBUaGUgaW5qZWN0b3IgdG8gdXNlIGZvciB0aGUgZGlhbG9nLiBEZWZhdWx0cyB0byB0aGUgdmlldyBjb250YWluZXIncyBpbmplY3Rvci4qL1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuXG4gIC8qKiBJRCBmb3IgdGhlIGRpYWxvZy4gSWYgb21pdHRlZCwgYSB1bmlxdWUgb25lIHdpbGwgYmUgZ2VuZXJhdGVkLiAqL1xuICBpZD86IHN0cmluZztcblxuICAvKiogVGhlIHJvbGUgb2YgdGhlIGRpYWxvZy4gKi9cbiAgcm9sZT86IE5ncERpYWxvZ1JvbGU7XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhIG1vZGFsIGRpYWxvZy4gVXNlZCB0byBzZXQgdGhlIGBhcmlhLW1vZGFsYCBhdHRyaWJ1dGUuICovXG4gIG1vZGFsPzogYm9vbGVhbjtcblxuICAvKiogU2Nyb2xsIHN0cmF0ZWd5IHRvIGJlIHVzZWQgZm9yIHRoZSBkaWFsb2cuIFRoaXMgZGV0ZXJtaW5lcyBob3cgdGhlIGRpYWxvZyByZXNwb25kcyB0byBzY3JvbGxpbmcgdW5kZXJuZWF0aCB0aGUgcGFuZWwgZWxlbWVudC4gKi9cbiAgc2Nyb2xsU3RyYXRlZ3k/OiBTY3JvbGxTdHJhdGVneTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGlhbG9nIHNob3VsZCBjbG9zZSB3aGVuIHRoZSB1c2VyIG5hdmlnYXRlcyBiYWNrd2FyZHMgb3IgZm9yd2FyZHMgdGhyb3VnaCBicm93c2VyXG4gICAqIGhpc3RvcnkuXG4gICAqL1xuICBjbG9zZU9uTmF2aWdhdGlvbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RGlhbG9nQ29uZmlnOiBOZ3BEaWFsb2dDb25maWcgPSB7XG4gIHJvbGU6ICdkaWFsb2cnLFxuICBtb2RhbDogdHJ1ZSxcbiAgY2xvc2VPbk5hdmlnYXRpb246IHRydWUsXG59O1xuXG5leHBvcnQgY29uc3QgTmdwRGlhbG9nQ29uZmlnVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48TmdwRGlhbG9nQ29uZmlnPignTmdwRGlhbG9nQ29uZmlnVG9rZW4nKTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBkZWZhdWx0IERpYWxvZyBjb25maWd1cmF0aW9uXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBEaWFsb2cgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgVGhlIHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGlhbG9nQ29uZmlnKGNvbmZpZzogUGFydGlhbDxOZ3BEaWFsb2dDb25maWc+KTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTmdwRGlhbG9nQ29uZmlnVG9rZW4sXG4gICAgICB1c2VWYWx1ZTogeyAuLi5kZWZhdWx0RGlhbG9nQ29uZmlnLCAuLi5jb25maWcgfSxcbiAgICB9LFxuICBdO1xufVxuXG4vKipcbiAqIEluamVjdCB0aGUgRGlhbG9nIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIFRoZSBnbG9iYWwgRGlhbG9nIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdERpYWxvZ0NvbmZpZygpOiBOZ3BEaWFsb2dDb25maWcge1xuICByZXR1cm4gaW5qZWN0KE5ncERpYWxvZ0NvbmZpZ1Rva2VuLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IGRlZmF1bHREaWFsb2dDb25maWc7XG59XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { hasModifierKey } from '@angular/cdk/keycodes';
2
+ import { inject } from '@angular/core';
3
+ import { Subject } from 'rxjs';
4
+ /**
5
+ * Reference to a dialog opened via the Dialog service.
6
+ */
7
+ export class NgpDialogRef {
8
+ constructor(overlayRef, config) {
9
+ this.overlayRef = overlayRef;
10
+ this.config = config;
11
+ /** Emits when the dialog has been closed. */
12
+ this.closed = new Subject();
13
+ this.keydownEvents = overlayRef.keydownEvents();
14
+ this.outsidePointerEvents = overlayRef.outsidePointerEvents();
15
+ this.id = config.id; // By the time the dialog is created we are guaranteed to have an ID.
16
+ this.keydownEvents.subscribe(event => {
17
+ if (event.key === 'Escape' && !this.disableClose && !hasModifierKey(event)) {
18
+ event.preventDefault();
19
+ this.close('keyboard');
20
+ }
21
+ });
22
+ this.detachSubscription = overlayRef.detachments().subscribe(() => this.close());
23
+ }
24
+ /**
25
+ * Close the dialog.
26
+ * @param result Optional result to return to the dialog opener.
27
+ * @param options Additional options to customize the closing behavior.
28
+ */
29
+ close(focusOrigin) {
30
+ this.overlayRef.dispose();
31
+ this.detachSubscription.unsubscribe();
32
+ this.closed.next(focusOrigin ?? null);
33
+ this.closed.complete();
34
+ }
35
+ /** Updates the position of the dialog based on the current position strategy. */
36
+ updatePosition() {
37
+ this.overlayRef.updatePosition();
38
+ return this;
39
+ }
40
+ }
41
+ export function injectDialogRef() {
42
+ return inject(NgpDialogRef);
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvZGlhbG9nL3NyYy9kaWFsb2cvZGlhbG9nLXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUd6RDs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBbUJ2QixZQUNXLFVBQXNCLEVBQ3RCLE1BQXVCO1FBRHZCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFqQmxDLDZDQUE2QztRQUNwQyxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQXNCLENBQUM7UUFrQmxELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFHLENBQUMsQ0FBQyxxRUFBcUU7UUFFM0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDM0UsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFdBQXlCO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxpRkFBaUY7SUFDakYsY0FBYztRQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmdwRGlhbG9nQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL2RpYWxvZy5jb25maWcnO1xuXG4vKipcbiAqIFJlZmVyZW5jZSB0byBhIGRpYWxvZyBvcGVuZWQgdmlhIHRoZSBEaWFsb2cgc2VydmljZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5ncERpYWxvZ1JlZiB7XG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gY2xvc2UgdGhlIGRpYWxvZy4gKi9cbiAgZGlzYWJsZUNsb3NlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBkaWFsb2cgaGFzIGJlZW4gY2xvc2VkLiAqL1xuICByZWFkb25seSBjbG9zZWQgPSBuZXcgU3ViamVjdDxGb2N1c09yaWdpbiB8IG51bGw+KCk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gb24ga2V5Ym9hcmQgZXZlbnRzIHdpdGhpbiB0aGUgZGlhbG9nLiAqL1xuICByZWFkb25seSBrZXlkb3duRXZlbnRzOiBPYnNlcnZhYmxlPEtleWJvYXJkRXZlbnQ+O1xuXG4gIC8qKiBFbWl0cyBvbiBwb2ludGVyIGV2ZW50cyB0aGF0IGhhcHBlbiBvdXRzaWRlIG9mIHRoZSBkaWFsb2cuICovXG4gIHJlYWRvbmx5IG91dHNpZGVQb2ludGVyRXZlbnRzOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuXG4gIC8qKiBVbmlxdWUgSUQgZm9yIHRoZSBkaWFsb2cuICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqIFN1YnNjcmlwdGlvbiB0byBleHRlcm5hbCBkZXRhY2htZW50cyBvZiB0aGUgZGlhbG9nLiAqL1xuICBwcml2YXRlIGRldGFjaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYsXG4gICAgcmVhZG9ubHkgY29uZmlnOiBOZ3BEaWFsb2dDb25maWcsXG4gICkge1xuICAgIHRoaXMua2V5ZG93bkV2ZW50cyA9IG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpO1xuICAgIHRoaXMub3V0c2lkZVBvaW50ZXJFdmVudHMgPSBvdmVybGF5UmVmLm91dHNpZGVQb2ludGVyRXZlbnRzKCk7XG4gICAgdGhpcy5pZCA9IGNvbmZpZy5pZCE7IC8vIEJ5IHRoZSB0aW1lIHRoZSBkaWFsb2cgaXMgY3JlYXRlZCB3ZSBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIGFuIElELlxuXG4gICAgdGhpcy5rZXlkb3duRXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiAhdGhpcy5kaXNhYmxlQ2xvc2UgJiYgIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNsb3NlKCdrZXlib2FyZCcpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5kZXRhY2hTdWJzY3JpcHRpb24gPSBvdmVybGF5UmVmLmRldGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGRpYWxvZy5cbiAgICogQHBhcmFtIHJlc3VsdCBPcHRpb25hbCByZXN1bHQgdG8gcmV0dXJuIHRvIHRoZSBkaWFsb2cgb3BlbmVyLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSBjbG9zaW5nIGJlaGF2aW9yLlxuICAgKi9cbiAgY2xvc2UoZm9jdXNPcmlnaW4/OiBGb2N1c09yaWdpbik6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgdGhpcy5kZXRhY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNsb3NlZC5uZXh0KGZvY3VzT3JpZ2luID8/IG51bGwpO1xuICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogVXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGRpYWxvZyBiYXNlZCBvbiB0aGUgY3VycmVudCBwb3NpdGlvbiBzdHJhdGVneS4gKi9cbiAgdXBkYXRlUG9zaXRpb24oKTogdGhpcyB7XG4gICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdERpYWxvZ1JlZigpOiBOZ3BEaWFsb2dSZWYge1xuICByZXR1cm4gaW5qZWN0KE5ncERpYWxvZ1JlZik7XG59XG4iXX0=