pdm-ui-kit 1.4.0 → 1.5.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.
Files changed (38) hide show
  1. package/README.md +28 -0
  2. package/alert/alert-dialog.component.d.ts +14 -2
  3. package/alert/alert.module.d.ts +2 -1
  4. package/dialog/dialog.component.d.ts +18 -26
  5. package/dialog/dialog.module.d.ts +1 -1
  6. package/esm2020/alert/alert-dialog.component.mjs +101 -11
  7. package/esm2020/alert/alert.module.mjs +5 -4
  8. package/esm2020/dialog/dialog.component.mjs +43 -85
  9. package/esm2020/dialog/dialog.module.mjs +10 -4
  10. package/esm2020/src/alert/alert-dialog.component.mjs +101 -11
  11. package/esm2020/src/alert/alert.module.mjs +5 -4
  12. package/esm2020/src/dialog/dialog.component.mjs +43 -85
  13. package/esm2020/src/dialog/dialog.module.mjs +10 -4
  14. package/esm2020/src/utils/cn.mjs +19 -0
  15. package/esm2020/src/utils/public-api.mjs +2 -1
  16. package/fesm2015/pdm-ui-kit-src-alert.mjs +103 -12
  17. package/fesm2015/pdm-ui-kit-src-alert.mjs.map +1 -1
  18. package/fesm2015/pdm-ui-kit-src-dialog.mjs +50 -85
  19. package/fesm2015/pdm-ui-kit-src-dialog.mjs.map +1 -1
  20. package/fesm2015/pdm-ui-kit-src-utils.mjs +21 -1
  21. package/fesm2015/pdm-ui-kit-src-utils.mjs.map +1 -1
  22. package/fesm2015/pdm-ui-kit.mjs +161 -108
  23. package/fesm2015/pdm-ui-kit.mjs.map +1 -1
  24. package/fesm2020/pdm-ui-kit-src-alert.mjs +103 -12
  25. package/fesm2020/pdm-ui-kit-src-alert.mjs.map +1 -1
  26. package/fesm2020/pdm-ui-kit-src-dialog.mjs +50 -85
  27. package/fesm2020/pdm-ui-kit-src-dialog.mjs.map +1 -1
  28. package/fesm2020/pdm-ui-kit-src-utils.mjs +21 -1
  29. package/fesm2020/pdm-ui-kit-src-utils.mjs.map +1 -1
  30. package/fesm2020/pdm-ui-kit.mjs +161 -108
  31. package/fesm2020/pdm-ui-kit.mjs.map +1 -1
  32. package/package.json +3 -1
  33. package/src/alert/alert-dialog.component.d.ts +14 -2
  34. package/src/alert/alert.module.d.ts +2 -1
  35. package/src/dialog/dialog.component.d.ts +18 -26
  36. package/src/dialog/dialog.module.d.ts +1 -1
  37. package/src/utils/cn.d.ts +15 -0
  38. package/src/utils/public-api.d.ts +1 -0
package/README.md CHANGED
@@ -339,6 +339,34 @@ users: User[] = [
339
339
  </pdm-dialog>
340
340
  ```
341
341
 
342
+ `maxWidth` overrides the desktop size while responsive mobile mode remains fullscreen:
343
+
344
+ ```html
345
+ <pdm-dialog [open]="isOpen" maxWidth="800px" title="Custom width">
346
+ <p>Dialog content</p>
347
+ </pdm-dialog>
348
+ ```
349
+
350
+ `className` overrides base Tailwind utilities reliably through `cn()` and `tailwind-merge`, so the last conflicting utility wins:
351
+
352
+ ```html
353
+ <pdm-dialog size="lg" className="sm:max-w-[900px]">
354
+ <p>Dialog content</p>
355
+ </pdm-dialog>
356
+ ```
357
+
358
+ Replace the built-in header or footer with projected slots:
359
+
360
+ ```html
361
+ <pdm-dialog [open]="isOpen">
362
+ <div pdmHeader>Custom header</div>
363
+ <p>Dialog content</p>
364
+ <div pdmFooter>Custom footer</div>
365
+ </pdm-dialog>
366
+ ```
367
+
368
+ `pdm-alert-dialog` also supports `size`, responsive layouts, `maxWidth`, and reliable `className` overrides.
369
+
342
370
  #### Drawer (side panel)
343
371
 
344
372
  ```html
@@ -1,5 +1,6 @@
1
- import { EventEmitter } from '@angular/core';
1
+ import { EventEmitter } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
+ declare type PdmAlertDialogSize = "desktop" | "mobile" | "mobile-fullscreen" | "sm" | "md" | "lg" | "xl" | "responsive";
3
4
  export declare class PdmAlertDialogComponent {
4
5
  open: boolean;
5
6
  showTrigger: boolean;
@@ -8,7 +9,12 @@ export declare class PdmAlertDialogComponent {
8
9
  description: string;
9
10
  confirmText: string;
10
11
  cancelText: string;
12
+ size: PdmAlertDialogSize;
13
+ maxWidth: string;
11
14
  className: string;
15
+ bodyClassName: string;
16
+ showFooter: boolean;
17
+ closeOnBackdrop: boolean;
12
18
  /** Close when the ESC key is pressed. Default: `true`. */
13
19
  closeOnEsc: boolean;
14
20
  openChange: EventEmitter<boolean>;
@@ -20,10 +26,16 @@ export declare class PdmAlertDialogComponent {
20
26
  * - **Uncontrolled** (no observers): we own the `open` state → mutate it locally.
21
27
  */
22
28
  private get isControlled();
29
+ get panelClassName(): string;
30
+ get containerClassName(): string;
31
+ get bodyWrapperClassName(): string;
23
32
  onTriggerClick(): void;
24
33
  onCancel(): void;
25
34
  onConfirm(): void;
35
+ onBackdropClick(): void;
26
36
  onEsc(): void;
37
+ private buildPanelClasses;
27
38
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmAlertDialogComponent, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmAlertDialogComponent, "pdm-alert-dialog", never, { "open": "open"; "showTrigger": "showTrigger"; "triggerText": "triggerText"; "title": "title"; "description": "description"; "confirmText": "confirmText"; "cancelText": "cancelText"; "className": "className"; "closeOnEsc": "closeOnEsc"; }, { "openChange": "openChange"; "confirm": "confirm"; "cancel": "cancel"; }, never, never, false>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmAlertDialogComponent, "pdm-alert-dialog", never, { "open": "open"; "showTrigger": "showTrigger"; "triggerText": "triggerText"; "title": "title"; "description": "description"; "confirmText": "confirmText"; "cancelText": "cancelText"; "size": "size"; "maxWidth": "maxWidth"; "className": "className"; "bodyClassName": "bodyClassName"; "showFooter": "showFooter"; "closeOnBackdrop": "closeOnBackdrop"; "closeOnEsc": "closeOnEsc"; }, { "openChange": "openChange"; "confirm": "confirm"; "cancel": "cancel"; }, never, ["*"], false>;
29
40
  }
41
+ export {};
@@ -2,8 +2,9 @@ import * as i0 from "@angular/core";
2
2
  import * as i1 from "./alert.component";
3
3
  import * as i2 from "./alert-dialog.component";
4
4
  import * as i3 from "@angular/common";
5
+ import * as i4 from "@angular/cdk/a11y";
5
6
  export declare class PdmAlertModule {
6
7
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmAlertModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmAlertModule, [typeof i1.PdmAlertComponent, typeof i2.PdmAlertDialogComponent], [typeof i3.CommonModule], [typeof i1.PdmAlertComponent, typeof i2.PdmAlertDialogComponent]>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmAlertModule, [typeof i1.PdmAlertComponent, typeof i2.PdmAlertDialogComponent], [typeof i3.CommonModule, typeof i4.A11yModule], [typeof i1.PdmAlertComponent, typeof i2.PdmAlertDialogComponent]>;
8
9
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmAlertModule>;
9
10
  }
@@ -6,39 +6,29 @@ export declare type PdmDialogVariant = "default" | "custom-close";
6
6
  */
7
7
  export declare type PdmDialogSize = "desktop" | "mobile" | "mobile-fullscreen" | "sm" | "md" | "lg" | "xl" | "responsive";
8
8
  export declare type PdmDialogFooterAlign = "right" | "full-width" | "left";
9
+ export declare class PdmDialogHeaderDirective {
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<PdmDialogHeaderDirective, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PdmDialogHeaderDirective, "[pdmHeader]", never, {}, {}, never, never, false>;
12
+ }
13
+ export declare class PdmDialogFooterDirective {
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<PdmDialogFooterDirective, never>;
15
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PdmDialogFooterDirective, "[pdmFooter]", never, {}, {}, never, never, false>;
16
+ }
9
17
  /**
10
- * Modal/Dialog component con soporte responsive
11
- *
12
- * MEJORADO en v0.2.0:
13
- * - Modo 'responsive' (default): fullscreen en mobile, modal en desktop
14
- * - Tamaños predefinidos: sm, md, lg, xl
15
- * - Mejor manejo de scroll en mobile
16
- *
17
- * @example
18
- * // Responsive (recomendado)
19
- * <pdm-dialog [open]="isOpen" size="responsive">
20
- * <p>Content</p>
21
- * </pdm-dialog>
22
- *
23
- * @example
24
- * // Tamaño fijo
25
- * <pdm-dialog [open]="isOpen" size="lg">
26
- * <p>Content</p>
27
- * </pdm-dialog>
18
+ * Responsive modal/dialog component.
28
19
  */
29
20
  export declare class PdmDialogComponent {
30
21
  open: boolean;
31
22
  variant: PdmDialogVariant;
32
23
  /**
33
- * Tamaño del dialog
34
- * - responsive: fullscreen mobile, modal desktop (recomendado)
35
- * - sm: 400px max
36
- * - md: 500px max
37
- * - lg: 640px max (default)
38
- * - xl: 800px max
39
- * - desktop/mobile/mobile-fullscreen: legacy, deprecado
24
+ * Dialog size. Responsive mode is fullscreen on mobile and a modal on desktop.
40
25
  */
41
26
  size: PdmDialogSize;
27
+ /**
28
+ * Custom desktop maximum width, such as `800px` or `min(90vw, 800px)`.
29
+ * Overrides `size` at the `sm` breakpoint; responsive mobile mode remains fullscreen.
30
+ */
31
+ maxWidth: string;
42
32
  title: string;
43
33
  description: string;
44
34
  closeOnBackdrop: boolean;
@@ -53,6 +43,8 @@ export declare class PdmDialogComponent {
53
43
  bodyClassName: string;
54
44
  footerClassName: string;
55
45
  className: string;
46
+ customHeader?: PdmDialogHeaderDirective;
47
+ customFooter?: PdmDialogFooterDirective;
56
48
  openChange: EventEmitter<boolean>;
57
49
  primaryAction: EventEmitter<void>;
58
50
  secondaryAction: EventEmitter<void>;
@@ -68,5 +60,5 @@ export declare class PdmDialogComponent {
68
60
  get footerWrapperClassName(): string;
69
61
  get containerClassName(): string;
70
62
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmDialogComponent, never>;
71
- static ɵcmp: i0.ɵɵComponentDeclaration<PdmDialogComponent, "pdm-dialog", never, { "open": "open"; "variant": "variant"; "size": "size"; "title": "title"; "description": "description"; "closeOnBackdrop": "closeOnBackdrop"; "closeOnEsc": "closeOnEsc"; "showCloseButton": "showCloseButton"; "showHeader": "showHeader"; "showFooter": "showFooter"; "primaryActionText": "primaryActionText"; "secondaryActionText": "secondaryActionText"; "alignFooter": "alignFooter"; "headerClassName": "headerClassName"; "bodyClassName": "bodyClassName"; "footerClassName": "footerClassName"; "className": "className"; }, { "openChange": "openChange"; "primaryAction": "primaryAction"; "secondaryAction": "secondaryAction"; }, never, ["*"], false>;
63
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdmDialogComponent, "pdm-dialog", never, { "open": "open"; "variant": "variant"; "size": "size"; "maxWidth": "maxWidth"; "title": "title"; "description": "description"; "closeOnBackdrop": "closeOnBackdrop"; "closeOnEsc": "closeOnEsc"; "showCloseButton": "showCloseButton"; "showHeader": "showHeader"; "showFooter": "showFooter"; "primaryActionText": "primaryActionText"; "secondaryActionText": "secondaryActionText"; "alignFooter": "alignFooter"; "headerClassName": "headerClassName"; "bodyClassName": "bodyClassName"; "footerClassName": "footerClassName"; "className": "className"; }, { "openChange": "openChange"; "primaryAction": "primaryAction"; "secondaryAction": "secondaryAction"; }, ["customHeader", "customFooter"], ["[pdmHeader]", "*", "[pdmFooter]"], false>;
72
64
  }
@@ -4,6 +4,6 @@ import * as i2 from "@angular/common";
4
4
  import * as i3 from "@angular/cdk/a11y";
5
5
  export declare class PdmDialogModule {
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<PdmDialogModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<PdmDialogModule, [typeof i1.PdmDialogComponent], [typeof i2.CommonModule, typeof i3.A11yModule], [typeof i1.PdmDialogComponent]>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PdmDialogModule, [typeof i1.PdmDialogComponent, typeof i1.PdmDialogHeaderDirective, typeof i1.PdmDialogFooterDirective], [typeof i2.CommonModule, typeof i3.A11yModule], [typeof i1.PdmDialogComponent, typeof i1.PdmDialogHeaderDirective, typeof i1.PdmDialogFooterDirective]>;
8
8
  static ɵinj: i0.ɵɵInjectorDeclaration<PdmDialogModule>;
9
9
  }
@@ -1,16 +1,23 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output, } from "@angular/core";
2
+ import { cn, responsive, Z_INDEX } from "pdm-ui-kit/src/utils";
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/cdk/a11y";
4
6
  export class PdmAlertDialogComponent {
5
7
  constructor() {
6
8
  this.open = false;
7
9
  this.showTrigger = false;
8
- this.triggerText = 'Show dialog';
9
- this.title = 'Are you absolutely sure?';
10
- this.description = '';
11
- this.confirmText = 'Continue';
12
- this.cancelText = 'Cancel';
13
- this.className = '';
10
+ this.triggerText = "Show dialog";
11
+ this.title = "Are you absolutely sure?";
12
+ this.description = "";
13
+ this.confirmText = "Continue";
14
+ this.cancelText = "Cancel";
15
+ this.size = "responsive";
16
+ this.maxWidth = "";
17
+ this.className = "";
18
+ this.bodyClassName = "";
19
+ this.showFooter = true;
20
+ this.closeOnBackdrop = true;
14
21
  /** Close when the ESC key is pressed. Default: `true`. */
15
22
  this.closeOnEsc = true;
16
23
  this.openChange = new EventEmitter();
@@ -25,6 +32,70 @@ export class PdmAlertDialogComponent {
25
32
  get isControlled() {
26
33
  return this.openChange.observed;
27
34
  }
35
+ get panelClassName() {
36
+ if (this.size === "desktop") {
37
+ return this.buildPanelClasses([
38
+ "max-w-[640px]",
39
+ "max-h-[calc(100vh-2rem)]",
40
+ "rounded-[10px]",
41
+ ]);
42
+ }
43
+ if (this.size === "mobile") {
44
+ return this.buildPanelClasses([
45
+ "max-w-[320px]",
46
+ "min-h-[240px]",
47
+ "rounded-[10px]",
48
+ ]);
49
+ }
50
+ if (this.size === "mobile-fullscreen") {
51
+ return this.buildPanelClasses([
52
+ "max-w-[320px]",
53
+ "h-[min(100dvh,640px)]",
54
+ "rounded-none",
55
+ "sm:rounded-[10px]",
56
+ ]);
57
+ }
58
+ if (this.size === "responsive") {
59
+ return this.buildPanelClasses([
60
+ "w-full",
61
+ "h-full",
62
+ "max-h-[100dvh]",
63
+ "rounded-t-[10px]",
64
+ "sm:rounded-[10px]",
65
+ "sm:w-auto",
66
+ "sm:h-auto",
67
+ "sm:max-w-[640px]",
68
+ "sm:max-h-[calc(100vh-4rem)]",
69
+ ]);
70
+ }
71
+ const sizeMap = {
72
+ sm: "sm:max-w-[400px]",
73
+ md: "sm:max-w-[500px]",
74
+ lg: "sm:max-w-[640px]",
75
+ xl: "sm:max-w-[800px]",
76
+ };
77
+ const maxWidth = sizeMap[this.size] || sizeMap.lg;
78
+ return this.buildPanelClasses([
79
+ "w-full",
80
+ "h-full",
81
+ "max-h-[100dvh]",
82
+ "rounded-t-[10px]",
83
+ "sm:rounded-[10px]",
84
+ "sm:w-auto",
85
+ "sm:h-auto",
86
+ maxWidth,
87
+ "sm:max-h-[calc(100vh-4rem)]",
88
+ ]);
89
+ }
90
+ get containerClassName() {
91
+ return responsive({
92
+ default: `fixed inset-x-0 bottom-0 ${Z_INDEX.modalBackdrop} flex items-end justify-center`,
93
+ sm: `fixed inset-0 ${Z_INDEX.modalBackdrop} flex items-center justify-center p-4`,
94
+ });
95
+ }
96
+ get bodyWrapperClassName() {
97
+ return cn("flex-1 min-h-0 overflow-y-auto px-4 py-4 sm:px-6", this.bodyClassName);
98
+ }
28
99
  onTriggerClick() {
29
100
  if (!this.isControlled) {
30
101
  this.open = true;
@@ -45,17 +116,26 @@ export class PdmAlertDialogComponent {
45
116
  }
46
117
  this.openChange.emit(false);
47
118
  }
119
+ onBackdropClick() {
120
+ if (this.closeOnBackdrop) {
121
+ this.onCancel();
122
+ }
123
+ }
48
124
  onEsc() {
49
125
  if (this.open && this.closeOnEsc) {
50
126
  this.onCancel();
51
127
  }
52
128
  }
129
+ buildPanelClasses(sizeClasses) {
130
+ const maxWidthClass = this.maxWidth ? `sm:max-w-[${this.maxWidth}]` : "";
131
+ return cn("relative", Z_INDEX.modal, "flex flex-col border border-solid border-border bg-background text-foreground shadow-lg overflow-hidden", ...sizeClasses, maxWidthClass, this.className);
132
+ }
53
133
  }
54
134
  PdmAlertDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAlertDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
- PdmAlertDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmAlertDialogComponent, selector: "pdm-alert-dialog", inputs: { open: "open", showTrigger: "showTrigger", triggerText: "triggerText", title: "title", description: "description", confirmText: "confirmText", cancelText: "cancelText", className: "className", closeOnEsc: "closeOnEsc" }, outputs: { openChange: "openChange", confirm: "confirm", cancel: "cancel" }, host: { listeners: { "document:keydown.escape": "onEsc()" } }, ngImport: i0, template: "<button\n *ngIf=\"showTrigger && !open\"\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onTriggerClick()\"\n>\n {{ triggerText }}\n</button>\n\n<div *ngIf=\"open\" class=\"fixed inset-0 z-50 flex items-center justify-center p-5\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"onCancel()\"></div>\n <section\n role=\"alertdialog\"\n aria-modal=\"true\"\n [ngClass]=\"[\n 'relative z-[60] w-full max-w-lg rounded-lg border border-solid border-border bg-background p-6 text-foreground shadow-lg',\n className\n ]\"\n >\n <div class=\"flex flex-col gap-2\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <div class=\"mt-4 flex items-center justify-end gap-2\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onCancel()\"\n >\n {{ cancelText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm\"\n (click)=\"onConfirm()\"\n >\n {{ confirmText }}\n </button>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
135
+ PdmAlertDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmAlertDialogComponent, selector: "pdm-alert-dialog", inputs: { open: "open", showTrigger: "showTrigger", triggerText: "triggerText", title: "title", description: "description", confirmText: "confirmText", cancelText: "cancelText", size: "size", maxWidth: "maxWidth", className: "className", bodyClassName: "bodyClassName", showFooter: "showFooter", closeOnBackdrop: "closeOnBackdrop", closeOnEsc: "closeOnEsc" }, outputs: { openChange: "openChange", confirm: "confirm", cancel: "cancel" }, host: { listeners: { "document:keydown.escape": "onEsc()" } }, ngImport: i0, template: "<button\n *ngIf=\"showTrigger && !open\"\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onTriggerClick()\"\n>\n {{ triggerText }}\n</button>\n\n<div *ngIf=\"open\" [ngClass]=\"containerClassName\">\n <div class=\"absolute inset-0 bg-foreground/30 backdrop-blur-sm\" (click)=\"onBackdropClick()\"></div>\n <section role=\"alertdialog\" aria-modal=\"true\" cdkTrapFocus [ngClass]=\"panelClassName\">\n <div class=\"flex flex-col gap-2 p-4 sm:p-6\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <div [ngClass]=\"bodyWrapperClassName\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showFooter\" class=\"flex flex-col gap-2 p-4 sm:p-6 border-t border-border sm:flex-row sm:justify-end\">\n <button type=\"button\" class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\" (click)=\"onCancel()\">{{ cancelText }}</button>\n <button type=\"button\" class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm sm:w-auto\" (click)=\"onConfirm()\">{{ confirmText }}</button>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAlertDialogComponent, decorators: [{
57
137
  type: Component,
58
- args: [{ selector: 'pdm-alert-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"showTrigger && !open\"\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onTriggerClick()\"\n>\n {{ triggerText }}\n</button>\n\n<div *ngIf=\"open\" class=\"fixed inset-0 z-50 flex items-center justify-center p-5\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"onCancel()\"></div>\n <section\n role=\"alertdialog\"\n aria-modal=\"true\"\n [ngClass]=\"[\n 'relative z-[60] w-full max-w-lg rounded-lg border border-solid border-border bg-background p-6 text-foreground shadow-lg',\n className\n ]\"\n >\n <div class=\"flex flex-col gap-2\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <div class=\"mt-4 flex items-center justify-end gap-2\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onCancel()\"\n >\n {{ cancelText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm\"\n (click)=\"onConfirm()\"\n >\n {{ confirmText }}\n </button>\n </div>\n </section>\n</div>\n" }]
138
+ args: [{ selector: "pdm-alert-dialog", changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"showTrigger && !open\"\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onTriggerClick()\"\n>\n {{ triggerText }}\n</button>\n\n<div *ngIf=\"open\" [ngClass]=\"containerClassName\">\n <div class=\"absolute inset-0 bg-foreground/30 backdrop-blur-sm\" (click)=\"onBackdropClick()\"></div>\n <section role=\"alertdialog\" aria-modal=\"true\" cdkTrapFocus [ngClass]=\"panelClassName\">\n <div class=\"flex flex-col gap-2 p-4 sm:p-6\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <div [ngClass]=\"bodyWrapperClassName\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showFooter\" class=\"flex flex-col gap-2 p-4 sm:p-6 border-t border-border sm:flex-row sm:justify-end\">\n <button type=\"button\" class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\" (click)=\"onCancel()\">{{ cancelText }}</button>\n <button type=\"button\" class=\"inline-flex h-9 w-full appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm sm:w-auto\" (click)=\"onConfirm()\">{{ confirmText }}</button>\n </div>\n </section>\n</div>\n" }]
59
139
  }], propDecorators: { open: [{
60
140
  type: Input
61
141
  }], showTrigger: [{
@@ -70,8 +150,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
70
150
  type: Input
71
151
  }], cancelText: [{
72
152
  type: Input
153
+ }], size: [{
154
+ type: Input
155
+ }], maxWidth: [{
156
+ type: Input
73
157
  }], className: [{
74
158
  type: Input
159
+ }], bodyClassName: [{
160
+ type: Input
161
+ }], showFooter: [{
162
+ type: Input
163
+ }], closeOnBackdrop: [{
164
+ type: Input
75
165
  }], closeOnEsc: [{
76
166
  type: Input
77
167
  }], openChange: [{
@@ -82,6 +172,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
82
172
  type: Output
83
173
  }], onEsc: [{
84
174
  type: HostListener,
85
- args: ['document:keydown.escape']
175
+ args: ["document:keydown.escape"]
86
176
  }] } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbGVydC9hbGVydC1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2FsZXJ0L2FsZXJ0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTzlHLE1BQU0sT0FBTyx1QkFBdUI7SUFMcEM7UUFNVyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxhQUFhLENBQUM7UUFDNUIsVUFBSyxHQUFHLDBCQUEwQixDQUFDO1FBQ25DLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxRQUFRLENBQUM7UUFDdEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUV4QiwwREFBMEQ7UUFDakQsZUFBVSxHQUFHLElBQUksQ0FBQztRQUVqQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN6QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNuQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQXdDN0M7SUF0Q0M7Ozs7T0FJRztJQUNILElBQVksWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDbEI7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBR0QsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNqQjtJQUNILENBQUM7O29IQXREVSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwwYUNQcEMsa3JEQXlDQTsyRkRsQ2EsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQixtQkFFWCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFtQ1AsS0FBSztzQkFESixZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BkbS1hbGVydC1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtQWxlcnREaWFsb2dDb21wb25lbnQge1xuICBASW5wdXQoKSBvcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dUcmlnZ2VyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRyaWdnZXJUZXh0ID0gJ1Nob3cgZGlhbG9nJztcbiAgQElucHV0KCkgdGl0bGUgPSAnQXJlIHlvdSBhYnNvbHV0ZWx5IHN1cmU/JztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAnJztcbiAgQElucHV0KCkgY29uZmlybVRleHQgPSAnQ29udGludWUnO1xuICBASW5wdXQoKSBjYW5jZWxUZXh0ID0gJ0NhbmNlbCc7XG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuXG4gIC8qKiBDbG9zZSB3aGVuIHRoZSBFU0Mga2V5IGlzIHByZXNzZWQuIERlZmF1bHQ6IGB0cnVlYC4gKi9cbiAgQElucHV0KCkgY2xvc2VPbkVzYyA9IHRydWU7XG5cbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBjb25maXJtID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCB3aGVuIGF0IGxlYXN0IG9uZSBjb25zdW1lciBsaXN0ZW5zIHRvIGBvcGVuQ2hhbmdlYC5cbiAgICogLSAqKkNvbnRyb2xsZWQqKiAoaGFzIG9ic2VydmVycyk6IHBhcmVudCBtYW5hZ2VzIGBvcGVuYCB2aWEgdHdvLXdheSBiaW5kaW5nIOKGkiBvbmx5IGVtaXQuXG4gICAqIC0gKipVbmNvbnRyb2xsZWQqKiAobm8gb2JzZXJ2ZXJzKTogd2Ugb3duIHRoZSBgb3BlbmAgc3RhdGUg4oaSIG11dGF0ZSBpdCBsb2NhbGx5LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgaXNDb250cm9sbGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wZW5DaGFuZ2Uub2JzZXJ2ZWQ7XG4gIH1cblxuICBvblRyaWdnZXJDbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNDb250cm9sbGVkKSB7XG4gICAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgICBpZiAoIXRoaXMuaXNDb250cm9sbGVkKSB7XG4gICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgb25Db25maXJtKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybS5lbWl0KCk7XG4gICAgaWYgKCF0aGlzLmlzQ29udHJvbGxlZCkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJylcbiAgb25Fc2MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3BlbiAmJiB0aGlzLmNsb3NlT25Fc2MpIHtcbiAgICAgIHRoaXMub25DYW5jZWwoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgKm5nSWY9XCJzaG93VHJpZ2dlciAmJiAhb3BlblwiXG4gIHR5cGU9XCJidXR0b25cIlxuICBjbGFzcz1cImlubGluZS1mbGV4IGgtOSBhcHBlYXJhbmNlLW5vbmUgYm94LWJvcmRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXNvbGlkIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCBzaGFkb3ctc21cIlxuICAoY2xpY2spPVwib25UcmlnZ2VyQ2xpY2soKVwiXG4+XG4gIHt7IHRyaWdnZXJUZXh0IH19XG48L2J1dHRvbj5cblxuPGRpdiAqbmdJZj1cIm9wZW5cIiBjbGFzcz1cImZpeGVkIGluc2V0LTAgei01MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTVcIj5cbiAgPGRpdiBjbGFzcz1cImFic29sdXRlIGluc2V0LTAgYmctZm9yZWdyb3VuZC8zMFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+PC9kaXY+XG4gIDxzZWN0aW9uXG4gICAgcm9sZT1cImFsZXJ0ZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgW25nQ2xhc3NdPVwiW1xuICAgICAgJ3JlbGF0aXZlIHotWzYwXSB3LWZ1bGwgbWF4LXctbGcgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXNvbGlkIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBwLTYgdGV4dC1mb3JlZ3JvdW5kIHNoYWRvdy1sZycsXG4gICAgICBjbGFzc05hbWVcbiAgICBdXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICA8aDIgY2xhc3M9XCJtLTAgdGV4dC1sZyBmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodFwiPnt7IHRpdGxlIH19PC9oMj5cbiAgICAgIDxwICpuZ0lmPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cIm0tMCB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPnt7IGRlc2NyaXB0aW9uIH19PC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtdC00IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGdhcC0yXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImlubGluZS1mbGV4IGgtOSBhcHBlYXJhbmNlLW5vbmUgYm94LWJvcmRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXNvbGlkIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCBzaGFkb3ctc21cIlxuICAgICAgICAoY2xpY2spPVwib25DYW5jZWwoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGNhbmNlbFRleHQgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTkgYXBwZWFyYW5jZS1ub25lIGJveC1ib3JkZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYmctcHJpbWFyeSBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBzaGFkb3ctc21cIlxuICAgICAgICAoY2xpY2spPVwib25Db25maXJtKClcIlxuICAgICAgPlxuICAgICAgICB7eyBjb25maXJtVGV4dCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbGVydC9hbGVydC1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2FsZXJ0L2FsZXJ0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFpQi9ELE1BQU0sT0FBTyx1QkFBdUI7SUFMcEM7UUFNVSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxhQUFhLENBQUM7UUFDNUIsVUFBSyxHQUFHLDBCQUEwQixDQUFDO1FBQ25DLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxRQUFRLENBQUM7UUFDdEIsU0FBSSxHQUF1QixZQUFZLENBQUM7UUFDeEMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRWhDLDBEQUEwRDtRQUNqRCxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3pDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ25DLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBc0k1QztJQXBJQTs7OztPQUlH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SSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQW9IUCxLQUFLO3NCQURKLFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0RXZlbnRFbWl0dGVyLFxuXHRIb3N0TGlzdGVuZXIsXG5cdElucHV0LFxuXHRPdXRwdXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBjbiwgcmVzcG9uc2l2ZSwgWl9JTkRFWCB9IGZyb20gXCJwZG0tdWkta2l0L3NyYy91dGlsc1wiO1xuXG50eXBlIFBkbUFsZXJ0RGlhbG9nU2l6ZSA9XG5cdHwgXCJkZXNrdG9wXCJcblx0fCBcIm1vYmlsZVwiXG5cdHwgXCJtb2JpbGUtZnVsbHNjcmVlblwiXG5cdHwgXCJzbVwiXG5cdHwgXCJtZFwiXG5cdHwgXCJsZ1wiXG5cdHwgXCJ4bFwiXG5cdHwgXCJyZXNwb25zaXZlXCI7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJwZG0tYWxlcnQtZGlhbG9nXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5odG1sXCIsXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQZG1BbGVydERpYWxvZ0NvbXBvbmVudCB7XG5cdEBJbnB1dCgpIG9wZW4gPSBmYWxzZTtcblx0QElucHV0KCkgc2hvd1RyaWdnZXIgPSBmYWxzZTtcblx0QElucHV0KCkgdHJpZ2dlclRleHQgPSBcIlNob3cgZGlhbG9nXCI7XG5cdEBJbnB1dCgpIHRpdGxlID0gXCJBcmUgeW91IGFic29sdXRlbHkgc3VyZT9cIjtcblx0QElucHV0KCkgZGVzY3JpcHRpb24gPSBcIlwiO1xuXHRASW5wdXQoKSBjb25maXJtVGV4dCA9IFwiQ29udGludWVcIjtcblx0QElucHV0KCkgY2FuY2VsVGV4dCA9IFwiQ2FuY2VsXCI7XG5cdEBJbnB1dCgpIHNpemU6IFBkbUFsZXJ0RGlhbG9nU2l6ZSA9IFwicmVzcG9uc2l2ZVwiO1xuXHRASW5wdXQoKSBtYXhXaWR0aCA9IFwiXCI7XG5cdEBJbnB1dCgpIGNsYXNzTmFtZSA9IFwiXCI7XG5cdEBJbnB1dCgpIGJvZHlDbGFzc05hbWUgPSBcIlwiO1xuXHRASW5wdXQoKSBzaG93Rm9vdGVyID0gdHJ1ZTtcblx0QElucHV0KCkgY2xvc2VPbkJhY2tkcm9wID0gdHJ1ZTtcblxuXHQvKiogQ2xvc2Ugd2hlbiB0aGUgRVNDIGtleSBpcyBwcmVzc2VkLiBEZWZhdWx0OiBgdHJ1ZWAuICovXG5cdEBJbnB1dCgpIGNsb3NlT25Fc2MgPSB0cnVlO1xuXG5cdEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXHRAT3V0cHV0KCkgY29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0QE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuXHQvKipcblx0ICogUmV0dXJucyBgdHJ1ZWAgd2hlbiBhdCBsZWFzdCBvbmUgY29uc3VtZXIgbGlzdGVucyB0byBgb3BlbkNoYW5nZWAuXG5cdCAqIC0gKipDb250cm9sbGVkKiogKGhhcyBvYnNlcnZlcnMpOiBwYXJlbnQgbWFuYWdlcyBgb3BlbmAgdmlhIHR3by13YXkgYmluZGluZyDihpIgb25seSBlbWl0LlxuXHQgKiAtICoqVW5jb250cm9sbGVkKiogKG5vIG9ic2VydmVycyk6IHdlIG93biB0aGUgYG9wZW5gIHN0YXRlIOKGkiBtdXRhdGUgaXQgbG9jYWxseS5cblx0ICovXG5cdHByaXZhdGUgZ2V0IGlzQ29udHJvbGxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5vcGVuQ2hhbmdlLm9ic2VydmVkO1xuXHR9XG5cblx0Z2V0IHBhbmVsQ2xhc3NOYW1lKCk6IHN0cmluZyB7XG5cdFx0aWYgKHRoaXMuc2l6ZSA9PT0gXCJkZXNrdG9wXCIpIHtcblx0XHRcdHJldHVybiB0aGlzLmJ1aWxkUGFuZWxDbGFzc2VzKFtcblx0XHRcdFx0XCJtYXgtdy1bNjQwcHhdXCIsXG5cdFx0XHRcdFwibWF4LWgtW2NhbGMoMTAwdmgtMnJlbSldXCIsXG5cdFx0XHRcdFwicm91bmRlZC1bMTBweF1cIixcblx0XHRcdF0pO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNpemUgPT09IFwibW9iaWxlXCIpIHtcblx0XHRcdHJldHVybiB0aGlzLmJ1aWxkUGFuZWxDbGFzc2VzKFtcblx0XHRcdFx0XCJtYXgtdy1bMzIwcHhdXCIsXG5cdFx0XHRcdFwibWluLWgtWzI0MHB4XVwiLFxuXHRcdFx0XHRcInJvdW5kZWQtWzEwcHhdXCIsXG5cdFx0XHRdKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5zaXplID09PSBcIm1vYmlsZS1mdWxsc2NyZWVuXCIpIHtcblx0XHRcdHJldHVybiB0aGlzLmJ1aWxkUGFuZWxDbGFzc2VzKFtcblx0XHRcdFx0XCJtYXgtdy1bMzIwcHhdXCIsXG5cdFx0XHRcdFwiaC1bbWluKDEwMGR2aCw2NDBweCldXCIsXG5cdFx0XHRcdFwicm91bmRlZC1ub25lXCIsXG5cdFx0XHRcdFwic206cm91bmRlZC1bMTBweF1cIixcblx0XHRcdF0pO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNpemUgPT09IFwicmVzcG9uc2l2ZVwiKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5idWlsZFBhbmVsQ2xhc3NlcyhbXG5cdFx0XHRcdFwidy1mdWxsXCIsXG5cdFx0XHRcdFwiaC1mdWxsXCIsXG5cdFx0XHRcdFwibWF4LWgtWzEwMGR2aF1cIixcblx0XHRcdFx0XCJyb3VuZGVkLXQtWzEwcHhdXCIsXG5cdFx0XHRcdFwic206cm91bmRlZC1bMTBweF1cIixcblx0XHRcdFx0XCJzbTp3LWF1dG9cIixcblx0XHRcdFx0XCJzbTpoLWF1dG9cIixcblx0XHRcdFx0XCJzbTptYXgtdy1bNjQwcHhdXCIsXG5cdFx0XHRcdFwic206bWF4LWgtW2NhbGMoMTAwdmgtNHJlbSldXCIsXG5cdFx0XHRdKTtcblx0XHR9XG5cblx0XHRjb25zdCBzaXplTWFwID0ge1xuXHRcdFx0c206IFwic206bWF4LXctWzQwMHB4XVwiLFxuXHRcdFx0bWQ6IFwic206bWF4LXctWzUwMHB4XVwiLFxuXHRcdFx0bGc6IFwic206bWF4LXctWzY0MHB4XVwiLFxuXHRcdFx0eGw6IFwic206bWF4LXctWzgwMHB4XVwiLFxuXHRcdH07XG5cdFx0Y29uc3QgbWF4V2lkdGggPSBzaXplTWFwW3RoaXMuc2l6ZSBhcyBrZXlvZiB0eXBlb2Ygc2l6ZU1hcF0gfHwgc2l6ZU1hcC5sZztcblxuXHRcdHJldHVybiB0aGlzLmJ1aWxkUGFuZWxDbGFzc2VzKFtcblx0XHRcdFwidy1mdWxsXCIsXG5cdFx0XHRcImgtZnVsbFwiLFxuXHRcdFx0XCJtYXgtaC1bMTAwZHZoXVwiLFxuXHRcdFx0XCJyb3VuZGVkLXQtWzEwcHhdXCIsXG5cdFx0XHRcInNtOnJvdW5kZWQtWzEwcHhdXCIsXG5cdFx0XHRcInNtOnctYXV0b1wiLFxuXHRcdFx0XCJzbTpoLWF1dG9cIixcblx0XHRcdG1heFdpZHRoLFxuXHRcdFx0XCJzbTptYXgtaC1bY2FsYygxMDB2aC00cmVtKV1cIixcblx0XHRdKTtcblx0fVxuXG5cdGdldCBjb250YWluZXJDbGFzc05hbWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gcmVzcG9uc2l2ZSh7XG5cdFx0XHRkZWZhdWx0OiBgZml4ZWQgaW5zZXQteC0wIGJvdHRvbS0wICR7Wl9JTkRFWC5tb2RhbEJhY2tkcm9wfSBmbGV4IGl0ZW1zLWVuZCBqdXN0aWZ5LWNlbnRlcmAsXG5cdFx0XHRzbTogYGZpeGVkIGluc2V0LTAgJHtaX0lOREVYLm1vZGFsQmFja2Ryb3B9IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtNGAsXG5cdFx0fSk7XG5cdH1cblxuXHRnZXQgYm9keVdyYXBwZXJDbGFzc05hbWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gY24oXG5cdFx0XHRcImZsZXgtMSBtaW4taC0wIG92ZXJmbG93LXktYXV0byBweC00IHB5LTQgc206cHgtNlwiLFxuXHRcdFx0dGhpcy5ib2R5Q2xhc3NOYW1lLFxuXHRcdCk7XG5cdH1cblxuXHRvblRyaWdnZXJDbGljaygpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuaXNDb250cm9sbGVkKSB7XG5cdFx0XHR0aGlzLm9wZW4gPSB0cnVlO1xuXHRcdH1cblx0XHR0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0cnVlKTtcblx0fVxuXG5cdG9uQ2FuY2VsKCk6IHZvaWQge1xuXHRcdHRoaXMuY2FuY2VsLmVtaXQoKTtcblx0XHRpZiAoIXRoaXMuaXNDb250cm9sbGVkKSB7XG5cdFx0XHR0aGlzLm9wZW4gPSBmYWxzZTtcblx0XHR9XG5cdFx0dGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuXHR9XG5cblx0b25Db25maXJtKCk6IHZvaWQge1xuXHRcdHRoaXMuY29uZmlybS5lbWl0KCk7XG5cdFx0aWYgKCF0aGlzLmlzQ29udHJvbGxlZCkge1xuXHRcdFx0dGhpcy5vcGVuID0gZmFsc2U7XG5cdFx0fVxuXHRcdHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcblx0fVxuXG5cdG9uQmFja2Ryb3BDbGljaygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5jbG9zZU9uQmFja2Ryb3ApIHtcblx0XHRcdHRoaXMub25DYW5jZWwoKTtcblx0XHR9XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGVcIilcblx0b25Fc2MoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMub3BlbiAmJiB0aGlzLmNsb3NlT25Fc2MpIHtcblx0XHRcdHRoaXMub25DYW5jZWwoKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGJ1aWxkUGFuZWxDbGFzc2VzKHNpemVDbGFzc2VzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbWF4V2lkdGhDbGFzcyA9IHRoaXMubWF4V2lkdGggPyBgc206bWF4LXctWyR7dGhpcy5tYXhXaWR0aH1dYCA6IFwiXCI7XG5cblx0XHRyZXR1cm4gY24oXG5cdFx0XHRcInJlbGF0aXZlXCIsXG5cdFx0XHRaX0lOREVYLm1vZGFsLFxuXHRcdFx0XCJmbGV4IGZsZXgtY29sIGJvcmRlciBib3JkZXItc29saWQgYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHRleHQtZm9yZWdyb3VuZCBzaGFkb3ctbGcgb3ZlcmZsb3ctaGlkZGVuXCIsXG5cdFx0XHQuLi5zaXplQ2xhc3Nlcyxcblx0XHRcdG1heFdpZHRoQ2xhc3MsXG5cdFx0XHR0aGlzLmNsYXNzTmFtZSxcblx0XHQpO1xuXHR9XG59XG4iLCI8YnV0dG9uXG4gICpuZ0lmPVwic2hvd1RyaWdnZXIgJiYgIW9wZW5cIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTkgYXBwZWFyYW5jZS1ub25lIGJveC1ib3JkZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1zb2xpZCBib3JkZXItaW5wdXQgYmctYmFja2dyb3VuZCBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWZvcmVncm91bmQgc2hhZG93LXNtXCJcbiAgKGNsaWNrKT1cIm9uVHJpZ2dlckNsaWNrKClcIlxuPlxuICB7eyB0cmlnZ2VyVGV4dCB9fVxuPC9idXR0b24+XG5cbjxkaXYgKm5nSWY9XCJvcGVuXCIgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NOYW1lXCI+XG4gIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWZvcmVncm91bmQvMzAgYmFja2Ryb3AtYmx1ci1zbVwiIChjbGljayk9XCJvbkJhY2tkcm9wQ2xpY2soKVwiPjwvZGl2PlxuICA8c2VjdGlvbiByb2xlPVwiYWxlcnRkaWFsb2dcIiBhcmlhLW1vZGFsPVwidHJ1ZVwiIGNka1RyYXBGb2N1cyBbbmdDbGFzc109XCJwYW5lbENsYXNzTmFtZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yIHAtNCBzbTpwLTZcIj5cbiAgICAgIDxoMiBjbGFzcz1cIm0tMCB0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub25lIHRyYWNraW5nLXRpZ2h0IHRleHQtZm9yZWdyb3VuZFwiPnt7IHRpdGxlIH19PC9oMj5cbiAgICAgIDxwICpuZ0lmPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cIm0tMCB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPnt7IGRlc2NyaXB0aW9uIH19PC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiYm9keVdyYXBwZXJDbGFzc05hbWVcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0Zvb3RlclwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMiBwLTQgc206cC02IGJvcmRlci10IGJvcmRlci1ib3JkZXIgc206ZmxleC1yb3cgc206anVzdGlmeS1lbmRcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaW5saW5lLWZsZXggaC05IHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgYm94LWJvcmRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXNvbGlkIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCBzaGFkb3ctc20gc206dy1hdXRvXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj57eyBjYW5jZWxUZXh0IH19PC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImlubGluZS1mbGV4IGgtOSB3LWZ1bGwgYXBwZWFyYW5jZS1ub25lIGJveC1ib3JkZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgYmctcHJpbWFyeSBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBzaGFkb3ctc20gc206dy1hdXRvXCIgKGNsaWNrKT1cIm9uQ29uZmlybSgpXCI+e3sgY29uZmlybVRleHQgfX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { A11yModule } from '@angular/cdk/a11y';
1
2
  import { CommonModule } from '@angular/common';
2
3
  import { NgModule } from '@angular/core';
3
4
  import { PdmAlertComponent } from './alert.component';
@@ -11,15 +12,15 @@ export class PdmAlertModule {
11
12
  }
12
13
  PdmAlertModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
14
  PdmAlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmAlertModule, declarations: [PdmAlertComponent,
14
- PdmAlertDialogComponent], imports: [CommonModule], exports: [PdmAlertComponent,
15
+ PdmAlertDialogComponent], imports: [CommonModule, A11yModule], exports: [PdmAlertComponent,
15
16
  PdmAlertDialogComponent] });
16
- PdmAlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAlertModule, imports: [CommonModule] });
17
+ PdmAlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAlertModule, imports: [CommonModule, A11yModule] });
17
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAlertModule, decorators: [{
18
19
  type: NgModule,
19
20
  args: [{
20
- imports: [CommonModule],
21
+ imports: [CommonModule, A11yModule],
21
22
  declarations: COMPONENTS,
22
23
  exports: COMPONENTS
23
24
  }]
24
25
  }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FsZXJ0L2FsZXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFbkUsTUFBTSxVQUFVLEdBQUc7SUFDakIsaUJBQWlCO0lBQ2pCLHVCQUF1QjtDQUN4QixDQUFDO0FBT0YsTUFBTSxPQUFPLGNBQWM7OzJHQUFkLGNBQWM7NEdBQWQsY0FBYyxpQkFUekIsaUJBQWlCO1FBQ2pCLHVCQUF1QixhQUliLFlBQVksYUFMdEIsaUJBQWlCO1FBQ2pCLHVCQUF1Qjs0R0FRWixjQUFjLFlBSmYsWUFBWTsyRkFJWCxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsWUFBWSxFQUFFLFVBQVU7b0JBQ3hCLE9BQU8sRUFBRSxVQUFVO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGRtQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2FsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZG1BbGVydERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vYWxlcnQtZGlhbG9nLmNvbXBvbmVudCc7XG5cbmNvbnN0IENPTVBPTkVOVFMgPSBbXG4gIFBkbUFsZXJ0Q29tcG9uZW50LFxuICBQZG1BbGVydERpYWxvZ0NvbXBvbmVudCxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IENPTVBPTkVOVFMsXG4gIGV4cG9ydHM6IENPTVBPTkVOVFNcbn0pXG5leHBvcnQgY2xhc3MgUGRtQWxlcnRNb2R1bGUge31cbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FsZXJ0L2FsZXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRW5FLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLGlCQUFpQjtJQUNqQix1QkFBdUI7Q0FDeEIsQ0FBQztBQU9GLE1BQU0sT0FBTyxjQUFjOzsyR0FBZCxjQUFjOzRHQUFkLGNBQWMsaUJBVHpCLGlCQUFpQjtRQUNqQix1QkFBdUIsYUFJYixZQUFZLEVBQUUsVUFBVSxhQUxsQyxpQkFBaUI7UUFDakIsdUJBQXVCOzRHQVFaLGNBQWMsWUFKZixZQUFZLEVBQUUsVUFBVTsyRkFJdkIsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO29CQUNuQyxZQUFZLEVBQUUsVUFBVTtvQkFDeEIsT0FBTyxFQUFFLFVBQVU7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGRtQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2FsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZG1BbGVydERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vYWxlcnQtZGlhbG9nLmNvbXBvbmVudCc7XG5cbmNvbnN0IENPTVBPTkVOVFMgPSBbXG4gIFBkbUFsZXJ0Q29tcG9uZW50LFxuICBQZG1BbGVydERpYWxvZ0NvbXBvbmVudCxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEExMXlNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IENPTVBPTkVOVFMsXG4gIGV4cG9ydHM6IENPTVBPTkVOVFNcbn0pXG5leHBvcnQgY2xhc3MgUGRtQWxlcnRNb2R1bGUge31cbiJdfQ==