pdm-ui-kit 0.2.0 → 0.3.1

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 (44) hide show
  1. package/README.md +168 -3
  2. package/esm2020/lib/components/button-group/button-group.component.mjs +211 -182
  3. package/esm2020/lib/components/combobox/combobox.component.mjs +136 -14
  4. package/esm2020/lib/components/context-menu/context-menu.component.mjs +121 -42
  5. package/esm2020/lib/components/data-table/data-table.component.mjs +3 -3
  6. package/esm2020/lib/components/date-picker/date-picker.component.mjs +66 -54
  7. package/esm2020/lib/components/dialog/dialog.component.mjs +111 -94
  8. package/esm2020/lib/components/hover-card/hover-card.component.mjs +185 -24
  9. package/esm2020/lib/components/input/input.component.mjs +15 -15
  10. package/esm2020/lib/components/input-group/input-group.component.mjs +14 -14
  11. package/esm2020/lib/components/menubar/menubar.component.mjs +105 -29
  12. package/esm2020/lib/components/popover/popover.component.mjs +107 -75
  13. package/esm2020/lib/components/select/select.component.mjs +23 -22
  14. package/esm2020/lib/components/table/table.component.mjs +77 -68
  15. package/esm2020/lib/components/tabs/tabs.component.mjs +6 -6
  16. package/esm2020/lib/components/toggle-group/toggle-group.component.mjs +6 -6
  17. package/esm2020/lib/components/tooltip/tooltip.component.mjs +162 -19
  18. package/esm2020/lib/overlay/z-index-helper.mjs +69 -0
  19. package/esm2020/lib/utils/z-index.mjs +25 -28
  20. package/esm2020/public-api.mjs +67 -66
  21. package/fesm2015/pdm-ui-kit.mjs +1379 -654
  22. package/fesm2015/pdm-ui-kit.mjs.map +1 -1
  23. package/fesm2020/pdm-ui-kit.mjs +1383 -654
  24. package/fesm2020/pdm-ui-kit.mjs.map +1 -1
  25. package/lib/components/button-group/button-group.component.d.ts +8 -2
  26. package/lib/components/combobox/combobox.component.d.ts +20 -3
  27. package/lib/components/context-menu/context-menu.component.d.ts +17 -8
  28. package/lib/components/date-picker/date-picker.component.d.ts +5 -6
  29. package/lib/components/dialog/dialog.component.d.ts +5 -5
  30. package/lib/components/hover-card/hover-card.component.d.ts +27 -4
  31. package/lib/components/input/input.component.d.ts +3 -3
  32. package/lib/components/input-group/input-group.component.d.ts +1 -1
  33. package/lib/components/menubar/menubar.component.d.ts +16 -8
  34. package/lib/components/popover/popover.component.d.ts +13 -12
  35. package/lib/components/select/select.component.d.ts +4 -5
  36. package/lib/components/table/table.component.d.ts +2 -2
  37. package/lib/components/tabs/tabs.component.d.ts +1 -1
  38. package/lib/components/toggle-group/toggle-group.component.d.ts +1 -1
  39. package/lib/components/tooltip/tooltip.component.d.ts +21 -3
  40. package/lib/overlay/z-index-helper.d.ts +36 -0
  41. package/lib/utils/z-index.d.ts +14 -18
  42. package/package.json +6 -6
  43. package/public-api.d.ts +66 -65
  44. package/src/lib/styles/tokens.css +182 -0
@@ -1,25 +1,24 @@
1
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
2
- import { TemplatePortal } from '@angular/cdk/portal';
3
- import { PdmSelectOptionDirective } from './select-option.directive';
4
- import { createFlexiblePositionStrategy } from '../../overlay/create-flexible-position-strategy';
5
- import { Z_INDEX } from '../../utils/z-index';
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostListener, Input, Output, ViewChild, } from "@angular/core";
2
+ import { TemplatePortal } from "@angular/cdk/portal";
3
+ import { PdmSelectOptionDirective } from "./select-option.directive";
4
+ import { createFlexiblePositionStrategy } from "../../overlay/create-flexible-position-strategy";
5
+ import { Z_INDEX } from "../../utils/z-index";
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/cdk/overlay";
8
8
  import * as i2 from "@angular/common";
9
9
  import * as i3 from "../icon/icon.component";
10
10
  export class PdmSelectComponent {
11
- constructor(elementRef, cdr, overlay, viewContainerRef) {
12
- this.elementRef = elementRef;
11
+ constructor(cdr, overlay, viewContainerRef) {
13
12
  this.cdr = cdr;
14
13
  this.overlay = overlay;
15
14
  this.viewContainerRef = viewContainerRef;
16
- this.id = '';
17
- this.value = '';
15
+ this.id = "";
16
+ this.value = "";
18
17
  this.options = [];
19
18
  this.disabled = false;
20
19
  this.invalid = false;
21
- this.className = '';
22
- this.placeholder = 'Select an option';
20
+ this.className = "";
21
+ this.placeholder = "Select an option";
23
22
  this.open = false;
24
23
  this.valueChange = new EventEmitter();
25
24
  this.overlayRef = null;
@@ -42,7 +41,7 @@ export class PdmSelectComponent {
42
41
  return this.projectedOptions.map((d) => ({
43
42
  label: d.resolvedLabel,
44
43
  value: d.value,
45
- disabled: d.disabled
44
+ disabled: d.disabled,
46
45
  }));
47
46
  }
48
47
  return this.options;
@@ -94,11 +93,13 @@ export class PdmSelectComponent {
94
93
  scrollStrategy: this.overlay.scrollStrategies.reposition(),
95
94
  width: triggerEl.offsetWidth,
96
95
  // Consumer overrides are spread last — they win over every default above.
97
- ...this.overlayOptions
96
+ ...this.overlayOptions,
98
97
  });
99
98
  const portal = new TemplatePortal(this.panelTemplateRef, this.viewContainerRef);
100
99
  this.overlayRef.attach(portal);
101
- this.backdropSub = this.overlayRef.outsidePointerEvents().subscribe((event) => {
100
+ this.backdropSub = this.overlayRef
101
+ .outsidePointerEvents()
102
+ .subscribe((event) => {
102
103
  const target = event.target;
103
104
  if (!triggerEl.contains(target)) {
104
105
  this.closePanel();
@@ -124,12 +125,12 @@ export class PdmSelectComponent {
124
125
  }
125
126
  }
126
127
  }
127
- PdmSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
128
- PdmSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSelectComponent, selector: "pdm-select", inputs: { id: "id", value: "value", options: "options", disabled: "disabled", invalid: "invalid", className: "className", placeholder: "placeholder", overlayOptions: "overlayOptions" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, queries: [{ propertyName: "projectedOptions", predicate: PdmSelectOptionDirective }], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerEl"], descendants: true }, { propertyName: "panelTemplateRef", first: true, predicate: ["panelTemplate"], descendants: true }], ngImport: i0, template: "<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none items-center justify-between rounded-md border bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
128
+ PdmSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
129
+ PdmSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSelectComponent, selector: "pdm-select", inputs: { id: "id", value: "value", options: "options", disabled: "disabled", invalid: "invalid", className: "className", placeholder: "placeholder", overlayOptions: "overlayOptions" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, queries: [{ propertyName: "projectedOptions", predicate: PdmSelectOptionDirective }], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerEl"], descendants: true }, { propertyName: "panelTemplateRef", first: true, predicate: ["panelTemplate"], descendants: true }], ngImport: i0, template: "<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none items-center justify-between rounded-md border bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"w-full overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
129
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSelectComponent, decorators: [{
130
131
  type: Component,
131
- args: [{ selector: 'pdm-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none items-center justify-between rounded-md border bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n" }]
132
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { id: [{
132
+ args: [{ selector: "pdm-select", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none items-center justify-between rounded-md border bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"w-full overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
133
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { id: [{
133
134
  type: Input
134
135
  }], value: [{
135
136
  type: Input
@@ -149,15 +150,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
149
150
  type: Output
150
151
  }], triggerRef: [{
151
152
  type: ViewChild,
152
- args: ['triggerEl']
153
+ args: ["triggerEl"]
153
154
  }], panelTemplateRef: [{
154
155
  type: ViewChild,
155
- args: ['panelTemplate']
156
+ args: ["panelTemplate"]
156
157
  }], projectedOptions: [{
157
158
  type: ContentChildren,
158
159
  args: [PdmSelectOptionDirective]
159
160
  }], onEscape: [{
160
161
  type: HostListener,
161
- args: ['document:keydown.escape']
162
+ args: ["document:keydown.escape"]
162
163
  }] } });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBYTlDLE1BQU0sT0FBTyxrQkFBa0I7SUE2QjdCLFlBQ21CLFVBQW1DLEVBQ25DLEdBQXNCLEVBQ3RCLE9BQWdCLEVBQ2hCLGdCQUFrQztRQUhsQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFoQzVDLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsWUFBTyxHQUFzQixFQUFFLENBQUM7UUFDaEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixnQkFBVyxHQUFHLGtCQUFrQixDQUFDO1FBUTFD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RUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQzs7K0dBMUpVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHdYQXVCWix3QkFBd0IsME9DMUQzQyxrZ0dBMEZBOzJGRHZEYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsWUFBWSxtQkFFTCx1QkFBdUIsQ0FBQyxNQUFNO3NMQUd0QyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsY0FBYztzQkFBdEIsS0FBSztnQkFJSSxXQUFXO3NCQUFwQixNQUFNO2dCQUV5QixVQUFVO3NCQUF6QyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ2MsZ0JBQWdCO3NCQUFuRCxTQUFTO3VCQUFDLGVBQWU7Z0JBSWxCLGdCQUFnQjtzQkFEdkIsZUFBZTt1QkFBQyx3QkFBd0I7Z0JBa0V6QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGRtU2VsZWN0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9zZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQZG1PdmVybGF5T3B0aW9ucyB9IGZyb20gJy4uLy4uL292ZXJsYXkvcGRtLW92ZXJsYXktb3B0aW9ucyc7XG5pbXBvcnQgeyBjcmVhdGVGbGV4aWJsZVBvc2l0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9vdmVybGF5L2NyZWF0ZS1mbGV4aWJsZS1wb3NpdGlvbi1zdHJhdGVneSc7XG5pbXBvcnQgeyBaX0lOREVYIH0gZnJvbSAnLi4vLi4vdXRpbHMvei1pbmRleCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRtU2VsZWN0T3B0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGlkID0gJyc7XG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IFBkbVNlbGVjdE9wdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlbGVjdCBhbiBvcHRpb24nO1xuICAvKipcbiAgICogT3B0aW9uYWwgQ0RLIE92ZXJsYXlDb25maWcgb3ZlcnJpZGVzLlxuICAgKiBTaGFsbG93LW1lcmdlZCBvbiB0b3Agb2YgY29tcG9uZW50IGRlZmF1bHRzIOKAlCBjb25zdW1lciBhbHdheXMgd2lucy5cbiAgICogUHJvdmlkaW5nIGBwb3NpdGlvblN0cmF0ZWd5YCBvciBgc2Nyb2xsU3RyYXRlZ3lgIHJlcGxhY2VzIHRoZSBjb21wb25lbnQgZGVmYXVsdCBlbnRpcmVseS5cbiAgICovXG4gIEBJbnB1dCgpIG92ZXJsYXlPcHRpb25zPzogUGRtT3ZlcmxheU9wdGlvbnM7XG5cbiAgb3BlbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJFbCcpIHByaXZhdGUgdHJpZ2dlclJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdwYW5lbFRlbXBsYXRlJykgcHJpdmF0ZSBwYW5lbFRlbXBsYXRlUmVmITogYW55O1xuXG4gIC8qKiBDb2xsZWN0cyBhbnkgYDxwZG0tc2VsZWN0LW9wdGlvbj5gIGNoaWxkcmVuIHByb2plY3RlZCBpbnRvIHRoaXMgY29tcG9uZW50LiAqL1xuICBAQ29udGVudENoaWxkcmVuKFBkbVNlbGVjdE9wdGlvbkRpcmVjdGl2ZSlcbiAgcHJpdmF0ZSBwcm9qZWN0ZWRPcHRpb25zITogUXVlcnlMaXN0PFBkbVNlbGVjdE9wdGlvbkRpcmVjdGl2ZT47XG5cbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgYmFja2Ryb3BTdWI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBSZS1yZW5kZXIgd2hlbiBwcm9qZWN0ZWQgb3B0aW9ucyBjaGFuZ2UgKGUuZy4gKm5nRm9yIG9uIHBkbS1zZWxlY3Qtb3B0aW9uKS5cbiAgICB0aGlzLnByb2plY3RlZE9wdGlvbnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVmZmVjdGl2ZSBsaXN0IG9mIG9wdGlvbnMuXG4gICAqIFByb2plY3RlZCBgPHBkbS1zZWxlY3Qtb3B0aW9uPmAgY2hpbGRyZW4gdGFrZSBwcmlvcml0eSBvdmVyIHRoZSBgW29wdGlvbnNdYCBpbnB1dC5cbiAgICogRmFsbHMgYmFjayB0byBgW29wdGlvbnNdYCB3aGVuIG5vIGNoaWxkcmVuIGFyZSBwcm9qZWN0ZWQuXG4gICAqL1xuICBnZXQgcmVzb2x2ZWRPcHRpb25zKCk6IFBkbVNlbGVjdE9wdGlvbltdIHtcbiAgICBpZiAodGhpcy5wcm9qZWN0ZWRPcHRpb25zICYmIHRoaXMucHJvamVjdGVkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9qZWN0ZWRPcHRpb25zLm1hcCgoZCkgPT4gKHtcbiAgICAgICAgbGFiZWw6IGQucmVzb2x2ZWRMYWJlbCxcbiAgICAgICAgdmFsdWU6IGQudmFsdWUsXG4gICAgICAgIGRpc2FibGVkOiBkLmRpc2FibGVkXG4gICAgICB9KSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRPcHRpb24oKTogUGRtU2VsZWN0T3B0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZE9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMudmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE9wdGlvbj8ubGFiZWwgfHwgdGhpcy5wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50KS52YWx1ZSk7XG4gIH1cblxuICBzZWxlY3RPcHRpb24ob3B0aW9uOiBQZG1TZWxlY3RPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAob3B0aW9uLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG9wdGlvbi52YWx1ZSk7XG4gICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHJldHVybjtcblxuICAgIGNvbnN0IHRyaWdnZXJFbCA9IHRoaXMudHJpZ2dlclJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIXRyaWdnZXJFbCkgcmV0dXJuO1xuXG4gICAgdGhpcy5vcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSBjcmVhdGVGbGV4aWJsZVBvc2l0aW9uU3RyYXRlZ3koXG4gICAgICB0aGlzLm92ZXJsYXksXG4gICAgICB0cmlnZ2VyRWwsXG4gICAgICA0XG4gICAgKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgLy8gQ1LDjVRJQ086IHotWzcwXSBwYXJhIGFwYXJlY2VyIFNPQlJFIG1vZGFscyAoei1bNjBdKVxuICAgICAgLy8gcGFuZWxDbGFzcyBzZSBhcGxpY2EgYWwgY2RrLW92ZXJsYXktcGFuZSB3cmFwcGVyXG4gICAgICBwYW5lbENsYXNzOiBbWl9JTkRFWC5wb3BvdmVyXSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgd2lkdGg6IHRyaWdnZXJFbC5vZmZzZXRXaWR0aCxcbiAgICAgIC8vIENvbnN1bWVyIG92ZXJyaWRlcyBhcmUgc3ByZWFkIGxhc3Qg4oCUIHRoZXkgd2luIG92ZXIgZXZlcnkgZGVmYXVsdCBhYm92ZS5cbiAgICAgIC4uLnRoaXMub3ZlcmxheU9wdGlvbnNcbiAgICB9KTtcblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChcbiAgICAgIHRoaXMucGFuZWxUZW1wbGF0ZVJlZixcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZlxuICAgICk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuXG4gICAgdGhpcy5iYWNrZHJvcFN1YiA9IHRoaXMub3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlO1xuICAgICAgaWYgKCF0cmlnZ2VyRWwuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVBhbmVsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSByZXR1cm47XG5cbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJhY2tkcm9wU3ViKSB7XG4gICAgICB0aGlzLmJhY2tkcm9wU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmJhY2tkcm9wU3ViID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIlsncmVsYXRpdmUnLCBjbGFzc05hbWUgfHwgJ3ctZnVsbCddXCI+XG4gIDxidXR0b25cbiAgICAjdHJpZ2dlckVsXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2lkXT1cImlkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5cIlxuICAgIFthdHRyLmRhdGEtc3RhdGVdPVwib3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcbiAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICBbbmdDbGFzc109XCJbXG4gICAgICAnYm9yZGVyLWlucHV0IGZvY3VzLXZpc2libGU6Ym9yZGVyLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTAgYXJpYS1pbnZhbGlkOnJpbmctMiBhcmlhLWludmFsaWQ6cmluZy1kZXN0cnVjdGl2ZSBhcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlIGZsZXggaC05IHctZnVsbCBhcHBlYXJhbmNlLW5vbmUgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiByb3VuZGVkLW1kIGJvcmRlciBiZy1iYWNrZ3JvdW5kIHB4LTMgcHktMiB0ZXh0LXNtIHNoYWRvdy1zbSBvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTAnLFxuICAgIF1cIlxuICA+XG4gICAgPHNwYW5cbiAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgJ21pbi13LTAgZmxleC0xIHRydW5jYXRlIHRleHQtbGVmdCBsZWFkaW5nLTUnLFxuICAgICAgICBzZWxlY3RlZE9wdGlvblxuICAgICAgICAgID8gJ2ZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCdcbiAgICAgICAgICA6ICdmb250LW5vcm1hbCB0ZXh0LW11dGVkLWZvcmVncm91bmQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAge3sgc2VsZWN0ZWRMYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgICA8cGRtLWljb25cbiAgICAgIG5hbWU9XCJjaGV2cm9uLWRvd25cIlxuICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgY2xhc3NOYW1lPVwic2hyaW5rLTAgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCJcbiAgICA+PC9wZG0taWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPCEtLSBIaWRkZW4gbmF0aXZlIHNlbGVjdCBrZXB0IGZvciBzY3JlZW4tcmVhZGVyIC8gZm9ybSBmYWxsYmFjayAtLT5cbiAgPHNlbGVjdFxuICAgIGNsYXNzPVwic3Itb25seVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXG4gID5cbiAgICA8b3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHJlc29sdmVkT3B0aW9uc1wiXG4gICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgID5cbiAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgIDwvb3B0aW9uPlxuICA8L3NlbGVjdD5cblxuICA8IS0tIFNsb3QgZm9yIGNvbnRlbnQtcHJvamVjdGVkIHBkbS1zZWxlY3Qtb3B0aW9uIGVsZW1lbnRzIChoaWRkZW4gZnJvbSBsYXlvdXQpIC0tPlxuICA8c3BhbiBjbGFzcz1cImhpZGRlblwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInBkbS1zZWxlY3Qtb3B0aW9uXCI+PC9uZy1jb250ZW50PlxuICA8L3NwYW4+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNwYW5lbFRlbXBsYXRlPlxuICA8ZGl2XG4gICAgcm9sZT1cImxpc3Rib3hcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCB8fCBudWxsXCJcbiAgICBjbGFzcz1cIm92ZXJmbG93LXktYXV0byByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLXBvcG92ZXIgcC0xIHRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHNoYWRvdy1tZCBtYXgtaC05NlwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHJlc29sdmVkT3B0aW9uc1wiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJvcHRpb24udmFsdWUgPT09IHZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24pXCJcbiAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgJ2ZsZXggdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHJvdW5kZWQtc20gYm9yZGVyLTAgYmctdHJhbnNwYXJlbnQgcHgtMiBweS0xLjUgdGV4dC1sZWZ0IHRleHQtc20gb3V0bGluZS1ub25lIHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgPyAnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTAnXG4gICAgICAgICAgOiAnaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpiZy1hY2NlbnQgZm9jdXMtdmlzaWJsZTp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAgICAgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSA/ICd0ZXh0LWZvcmVncm91bmQnIDogJycsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1pbi13LTAgZmxleC0xIHRydW5jYXRlIGxlYWRpbmctNVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwib3B0aW9uLnZhbHVlID09PSB2YWx1ZVwiXG4gICAgICAgIGNsYXNzPVwibWwtMiBmbGV4IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZFwiXG4gICAgICA+XG4gICAgICAgIDxwZG0taWNvblxuICAgICAgICAgIG5hbWU9XCJjaGVja1wiXG4gICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInNocmluay0wIHRleHQtY3VycmVudFwiXG4gICAgICAgID48L3BkbS1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBYzlDLE1BQU0sT0FBTyxrQkFBa0I7SUE2QjlCLFlBQ2tCLEdBQXNCLEVBQ3RCLE9BQWdCLEVBQ2hCLGdCQUFrQztRQUZsQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEvQjNDLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsWUFBTyxHQUFzQixFQUFFLENBQUM7UUFDaEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixnQkFBVyxHQUFHLGtCQUFrQixDQUFDO1FBUTFDLFNBQUksR0FBRyxLQUFLLENBQUM7UUFFSCxnQkFBVyxHQUFHLElB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LEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN2QjtJQUNGLENBQUM7OytHQTNKVyxrQkFBa0I7bUdBQWxCLGtCQUFrQix3WEF1QmIsd0JBQXdCLDBPQzNEMUMseWdHQTBGQTsyRkR0RGEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNDLFlBQVksbUJBR0wsdUJBQXVCLENBQUMsTUFBTTs2SkFHdEMsRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBSUksV0FBVztzQkFBcEIsTUFBTTtnQkFFeUIsVUFBVTtzQkFBekMsU0FBUzt1QkFBQyxXQUFXO2dCQUNjLGdCQUFnQjtzQkFBbkQsU0FBUzt1QkFBQyxlQUFlO2dCQUlsQixnQkFBZ0I7c0JBRHZCLGVBQWU7dUJBQUMsd0JBQXdCO2dCQWlFekMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyQ29udGVudEluaXQsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGRyZW4sXG5cdEVsZW1lbnRSZWYsXG5cdEV2ZW50RW1pdHRlcixcblx0SG9zdExpc3RlbmVyLFxuXHRJbnB1dCxcblx0T25EZXN0cm95LFxuXHRPdXRwdXQsXG5cdFF1ZXJ5TGlzdCxcblx0Vmlld0NoaWxkLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFBkbVNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gXCIuL3NlbGVjdC1vcHRpb24uZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBQZG1PdmVybGF5T3B0aW9ucyB9IGZyb20gXCIuLi8uLi9vdmVybGF5L3BkbS1vdmVybGF5LW9wdGlvbnNcIjtcbmltcG9ydCB7IGNyZWF0ZUZsZXhpYmxlUG9zaXRpb25TdHJhdGVneSB9IGZyb20gXCIuLi8uLi9vdmVybGF5L2NyZWF0ZS1mbGV4aWJsZS1wb3NpdGlvbi1zdHJhdGVneVwiO1xuaW1wb3J0IHsgWl9JTkRFWCB9IGZyb20gXCIuLi8uLi91dGlscy96LWluZGV4XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRtU2VsZWN0T3B0aW9uIHtcblx0bGFiZWw6IHN0cmluZztcblx0dmFsdWU6IHN0cmluZztcblx0ZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwicGRtLXNlbGVjdFwiLFxuXHR0ZW1wbGF0ZVVybDogXCIuL3NlbGVjdC5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZXM6IFtcIjpob3N0IHsgZGlzcGxheTogYmxvY2s7IH1cIl0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQZG1TZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXHRASW5wdXQoKSBpZCA9IFwiXCI7XG5cdEBJbnB1dCgpIHZhbHVlID0gXCJcIjtcblx0QElucHV0KCkgb3B0aW9uczogUGRtU2VsZWN0T3B0aW9uW10gPSBbXTtcblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblx0QElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuXHRASW5wdXQoKSBjbGFzc05hbWUgPSBcIlwiO1xuXHRASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiU2VsZWN0IGFuIG9wdGlvblwiO1xuXHQvKipcblx0ICogT3B0aW9uYWwgQ0RLIE92ZXJsYXlDb25maWcgb3ZlcnJpZGVzLlxuXHQgKiBTaGFsbG93LW1lcmdlZCBvbiB0b3Agb2YgY29tcG9uZW50IGRlZmF1bHRzIOKAlCBjb25zdW1lciBhbHdheXMgd2lucy5cblx0ICogUHJvdmlkaW5nIGBwb3NpdGlvblN0cmF0ZWd5YCBvciBgc2Nyb2xsU3RyYXRlZ3lgIHJlcGxhY2VzIHRoZSBjb21wb25lbnQgZGVmYXVsdCBlbnRpcmVseS5cblx0ICovXG5cdEBJbnB1dCgpIG92ZXJsYXlPcHRpb25zPzogUGRtT3ZlcmxheU9wdGlvbnM7XG5cblx0b3BlbiA9IGZhbHNlO1xuXG5cdEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG5cdEBWaWV3Q2hpbGQoXCJ0cmlnZ2VyRWxcIikgcHJpdmF0ZSB0cmlnZ2VyUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cdEBWaWV3Q2hpbGQoXCJwYW5lbFRlbXBsYXRlXCIpIHByaXZhdGUgcGFuZWxUZW1wbGF0ZVJlZiE6IGFueTtcblxuXHQvKiogQ29sbGVjdHMgYW55IGA8cGRtLXNlbGVjdC1vcHRpb24+YCBjaGlsZHJlbiBwcm9qZWN0ZWQgaW50byB0aGlzIGNvbXBvbmVudC4gKi9cblx0QENvbnRlbnRDaGlsZHJlbihQZG1TZWxlY3RPcHRpb25EaXJlY3RpdmUpXG5cdHByaXZhdGUgcHJvamVjdGVkT3B0aW9ucyE6IFF1ZXJ5TGlzdDxQZG1TZWxlY3RPcHRpb25EaXJlY3RpdmU+O1xuXG5cdHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIGJhY2tkcm9wU3ViOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG5cdFx0cHJpdmF0ZSByZWFkb25seSBvdmVybGF5OiBPdmVybGF5LFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcblx0KSB7fVxuXG5cdG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcblx0XHQvLyBSZS1yZW5kZXIgd2hlbiBwcm9qZWN0ZWQgb3B0aW9ucyBjaGFuZ2UgKGUuZy4gKm5nRm9yIG9uIHBkbS1zZWxlY3Qtb3B0aW9uKS5cblx0XHR0aGlzLnByb2plY3RlZE9wdGlvbnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGVmZmVjdGl2ZSBsaXN0IG9mIG9wdGlvbnMuXG5cdCAqIFByb2plY3RlZCBgPHBkbS1zZWxlY3Qtb3B0aW9uPmAgY2hpbGRyZW4gdGFrZSBwcmlvcml0eSBvdmVyIHRoZSBgW29wdGlvbnNdYCBpbnB1dC5cblx0ICogRmFsbHMgYmFjayB0byBgW29wdGlvbnNdYCB3aGVuIG5vIGNoaWxkcmVuIGFyZSBwcm9qZWN0ZWQuXG5cdCAqL1xuXHRnZXQgcmVzb2x2ZWRPcHRpb25zKCk6IFBkbVNlbGVjdE9wdGlvbltdIHtcblx0XHRpZiAodGhpcy5wcm9qZWN0ZWRPcHRpb25zICYmIHRoaXMucHJvamVjdGVkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5wcm9qZWN0ZWRPcHRpb25zLm1hcCgoZCkgPT4gKHtcblx0XHRcdFx0bGFiZWw6IGQucmVzb2x2ZWRMYWJlbCxcblx0XHRcdFx0dmFsdWU6IGQudmFsdWUsXG5cdFx0XHRcdGRpc2FibGVkOiBkLmRpc2FibGVkLFxuXHRcdFx0fSkpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zO1xuXHR9XG5cblx0Z2V0IHNlbGVjdGVkT3B0aW9uKCk6IFBkbVNlbGVjdE9wdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMucmVzb2x2ZWRPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnZhbHVlKTtcblx0fVxuXG5cdGdldCBzZWxlY3RlZExhYmVsKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24/LmxhYmVsIHx8IHRoaXMucGxhY2Vob2xkZXI7XG5cdH1cblxuXHR0b2dnbGUoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcblx0XHRpZiAodGhpcy5vcGVuKSB7XG5cdFx0XHR0aGlzLmNsb3NlUGFuZWwoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5vcGVuUGFuZWwoKTtcblx0XHR9XG5cdH1cblxuXHRvbkNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoKGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWUpO1xuXHR9XG5cblx0c2VsZWN0T3B0aW9uKG9wdGlvbjogUGRtU2VsZWN0T3B0aW9uKTogdm9pZCB7XG5cdFx0aWYgKG9wdGlvbi5kaXNhYmxlZCkgcmV0dXJuO1xuXHRcdHRoaXMudmFsdWVDaGFuZ2UuZW1pdChvcHRpb24udmFsdWUpO1xuXHRcdHRoaXMuY2xvc2VQYW5lbCgpO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmtleWRvd24uZXNjYXBlXCIpXG5cdG9uRXNjYXBlKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLm9wZW4pIHtcblx0XHRcdHRoaXMuY2xvc2VQYW5lbCgpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgb3BlblBhbmVsKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLm92ZXJsYXlSZWYpIHJldHVybjtcblxuXHRcdGNvbnN0IHRyaWdnZXJFbCA9IHRoaXMudHJpZ2dlclJlZj8ubmF0aXZlRWxlbWVudDtcblx0XHRpZiAoIXRyaWdnZXJFbCkgcmV0dXJuO1xuXG5cdFx0dGhpcy5vcGVuID0gdHJ1ZTtcblx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuXHRcdGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSBjcmVhdGVGbGV4aWJsZVBvc2l0aW9uU3RyYXRlZ3koXG5cdFx0XHR0aGlzLm92ZXJsYXksXG5cdFx0XHR0cmlnZ2VyRWwsXG5cdFx0XHQ0LFxuXHRcdCk7XG5cblx0XHR0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcblx0XHRcdC8vIENSw41USUNPOiB6LVs3MF0gcGFyYSBhcGFyZWNlciBTT0JSRSBtb2RhbHMgKHotWzYwXSlcblx0XHRcdC8vIHBhbmVsQ2xhc3Mgc2UgYXBsaWNhIGFsIGNkay1vdmVybGF5LXBhbmUgd3JhcHBlclxuXHRcdFx0cGFuZWxDbGFzczogW1pfSU5ERVgucG9wb3Zlcl0sXG5cdFx0XHRwb3NpdGlvblN0cmF0ZWd5LFxuXHRcdFx0c2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcblx0XHRcdHdpZHRoOiB0cmlnZ2VyRWwub2Zmc2V0V2lkdGgsXG5cdFx0XHQvLyBDb25zdW1lciBvdmVycmlkZXMgYXJlIHNwcmVhZCBsYXN0IOKAlCB0aGV5IHdpbiBvdmVyIGV2ZXJ5IGRlZmF1bHQgYWJvdmUuXG5cdFx0XHQuLi50aGlzLm92ZXJsYXlPcHRpb25zLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKFxuXHRcdFx0dGhpcy5wYW5lbFRlbXBsYXRlUmVmLFxuXHRcdFx0dGhpcy52aWV3Q29udGFpbmVyUmVmLFxuXHRcdCk7XG5cdFx0dGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuXG5cdFx0dGhpcy5iYWNrZHJvcFN1YiA9IHRoaXMub3ZlcmxheVJlZlxuXHRcdFx0Lm91dHNpZGVQb2ludGVyRXZlbnRzKClcblx0XHRcdC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlO1xuXHRcdFx0XHRpZiAoIXRyaWdnZXJFbC5jb250YWlucyh0YXJnZXQpKSB7XG5cdFx0XHRcdFx0dGhpcy5jbG9zZVBhbmVsKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cdH1cblxuXHRwcml2YXRlIGNsb3NlUGFuZWwoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLm92ZXJsYXlSZWYpIHJldHVybjtcblxuXHRcdHRoaXMub3BlbiA9IGZhbHNlO1xuXHRcdHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcblx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblx0fVxuXG5cdHByaXZhdGUgZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuYmFja2Ryb3BTdWIpIHtcblx0XHRcdHRoaXMuYmFja2Ryb3BTdWIudW5zdWJzY3JpYmUoKTtcblx0XHRcdHRoaXMuYmFja2Ryb3BTdWIgPSBudWxsO1xuXHRcdH1cblx0XHRpZiAodGhpcy5vdmVybGF5UmVmKSB7XG5cdFx0XHR0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuXHRcdFx0dGhpcy5vdmVybGF5UmVmID0gbnVsbDtcblx0XHR9XG5cdH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwiWydyZWxhdGl2ZScsIGNsYXNzTmFtZSB8fCAndy1mdWxsJ11cIj5cbiAgPGJ1dHRvblxuICAgICN0cmlnZ2VyRWxcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImludmFsaWRcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlblwiXG4gICAgW2F0dHIuZGF0YS1zdGF0ZV09XCJvcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCdcIlxuICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICdib3JkZXItaW5wdXQgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBhcmlhLWludmFsaWQ6cmluZy0yIGFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlIGFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUgZmxleCBoLTkgdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHJvdW5kZWQtbWQgYm9yZGVyIGJnLWJhY2tncm91bmQgcHgtMyBweS0yIHRleHQtc20gc2hhZG93LXNtIG91dGxpbmUtbm9uZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MCcsXG4gICAgXVwiXG4gID5cbiAgICA8c3BhblxuICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAnbWluLXctMCBmbGV4LTEgdHJ1bmNhdGUgdGV4dC1sZWZ0IGxlYWRpbmctNScsXG4gICAgICAgIHNlbGVjdGVkT3B0aW9uXG4gICAgICAgICAgPyAnZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kJ1xuICAgICAgICAgIDogJ2ZvbnQtbm9ybWFsIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCcsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICB7eyBzZWxlY3RlZExhYmVsIH19XG4gICAgPC9zcGFuPlxuICAgIDxwZG0taWNvblxuICAgICAgbmFtZT1cImNoZXZyb24tZG93blwiXG4gICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICBjbGFzc05hbWU9XCJzaHJpbmstMCB0ZXh0LW11dGVkLWZvcmVncm91bmRcIlxuICAgID48L3BkbS1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8IS0tIEhpZGRlbiBuYXRpdmUgc2VsZWN0IGtlcHQgZm9yIHNjcmVlbi1yZWFkZXIgLyBmb3JtIGZhbGxiYWNrIC0tPlxuICA8c2VsZWN0XG4gICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxvcHRpb25cbiAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcmVzb2x2ZWRPcHRpb25zXCJcbiAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgPlxuICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgPC9vcHRpb24+XG4gIDwvc2VsZWN0PlxuXG4gIDwhLS0gU2xvdCBmb3IgY29udGVudC1wcm9qZWN0ZWQgcGRtLXNlbGVjdC1vcHRpb24gZWxlbWVudHMgKGhpZGRlbiBmcm9tIGxheW91dCkgLS0+XG4gIDxzcGFuIGNsYXNzPVwiaGlkZGVuXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicGRtLXNlbGVjdC1vcHRpb25cIj48L25nLWNvbnRlbnQ+XG4gIDwvc3Bhbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3BhbmVsVGVtcGxhdGU+XG4gIDxkaXZcbiAgICByb2xlPVwibGlzdGJveFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkIHx8IG51bGxcIlxuICAgIGNsYXNzPVwidy1mdWxsIG92ZXJmbG93LXktYXV0byByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLXBvcG92ZXIgcC0xIHRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHNoYWRvdy1tZCBtYXgtaC05NlwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHJlc29sdmVkT3B0aW9uc1wiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJvcHRpb24udmFsdWUgPT09IHZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24pXCJcbiAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgJ2ZsZXggdy1mdWxsIGFwcGVhcmFuY2Utbm9uZSBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHJvdW5kZWQtc20gYm9yZGVyLTAgYmctdHJhbnNwYXJlbnQgcHgtMiBweS0xLjUgdGV4dC1sZWZ0IHRleHQtc20gb3V0bGluZS1ub25lIHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgPyAnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTAnXG4gICAgICAgICAgOiAnaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpiZy1hY2NlbnQgZm9jdXMtdmlzaWJsZTp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyxcbiAgICAgICAgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSA/ICd0ZXh0LWZvcmVncm91bmQnIDogJycsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1pbi13LTAgZmxleC0xIHRydW5jYXRlIGxlYWRpbmctNVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwib3B0aW9uLnZhbHVlID09PSB2YWx1ZVwiXG4gICAgICAgIGNsYXNzPVwibWwtMiBmbGV4IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZFwiXG4gICAgICA+XG4gICAgICAgIDxwZG0taWNvblxuICAgICAgICAgIG5hbWU9XCJjaGVja1wiXG4gICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInNocmluay0wIHRleHQtY3VycmVudFwiXG4gICAgICAgID48L3BkbS1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,5 +1,5 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { TABLE_RESPONSIVE } from '../../utils/responsive';
1
+ import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
2
+ import { TABLE_RESPONSIVE, } from "../../utils/responsive";
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  /**
@@ -28,7 +28,7 @@ export class PdmTableComponent {
28
28
  * - data: tabla con bordes y espaciado para data
29
29
  * - interactive: tabla con hover, sticky header y estilos interactivos
30
30
  */
31
- this.variant = 'default';
31
+ this.variant = "default";
32
32
  /**
33
33
  * Estrategia responsive para la tabla
34
34
  * - scroll: scroll horizontal en mobile (default, más simple)
@@ -36,11 +36,11 @@ export class PdmTableComponent {
36
36
  * - stack: convierte filas en cards en mobile (requiere data-label en celdas)
37
37
  * - collapse: oculta columnas menos importantes en mobile
38
38
  */
39
- this.responsiveStrategy = 'scroll';
39
+ this.responsiveStrategy = "scroll";
40
40
  /**
41
41
  * Clases CSS adicionales para el wrapper
42
42
  */
43
- this.className = '';
43
+ this.className = "";
44
44
  /**
45
45
  * Si es true, aplica padding negativo en mobile para scroll edge-to-edge
46
46
  * Útil cuando la tabla está dentro de un container con padding
@@ -48,119 +48,128 @@ export class PdmTableComponent {
48
48
  this.fullBleed = false;
49
49
  }
50
50
  get wrapperClasses() {
51
- const baseClasses = ['relative', 'w-full'];
51
+ const baseClasses = ["relative", "w-full"];
52
52
  const strategyClasses = this.getResponsiveStrategyClasses();
53
53
  const variantClasses = this.getVariantWrapperClasses();
54
54
  // Full bleed: scroll edge-to-edge en mobile
55
- if (this.fullBleed && this.responsiveStrategy === 'scroll') {
56
- baseClasses.push('-mx-4', 'px-4', 'sm:mx-0', 'sm:px-0');
55
+ if (this.fullBleed && this.responsiveStrategy === "scroll") {
56
+ baseClasses.push("-mx-4", "px-4", "sm:mx-0", "sm:px-0");
57
57
  }
58
58
  return [
59
59
  ...baseClasses,
60
60
  ...strategyClasses,
61
61
  ...variantClasses,
62
- this.className
62
+ this.className,
63
63
  ].filter(Boolean);
64
64
  }
65
65
  get tableClasses() {
66
- const baseClasses = ['w-full', 'caption-bottom', 'text-sm'];
66
+ const baseClasses = ["w-full", "caption-bottom", "text-sm"];
67
67
  const variantClasses = this.getVariantTableClasses();
68
68
  const cellClasses = this.getCellClasses();
69
69
  return [...baseClasses, ...variantClasses, ...cellClasses].filter(Boolean);
70
70
  }
71
71
  getResponsiveStrategyClasses() {
72
72
  const strategy = TABLE_RESPONSIVE[this.responsiveStrategy];
73
- if (this.responsiveStrategy === 'scroll') {
74
- return ['overflow-x-auto'];
73
+ if (this.responsiveStrategy === "scroll") {
74
+ return ["overflow-x-auto"];
75
75
  }
76
- if (this.responsiveStrategy === 'wrap') {
77
- return ['overflow-x-auto'];
76
+ if (this.responsiveStrategy === "wrap") {
77
+ return ["overflow-x-auto"];
78
78
  }
79
- if (this.responsiveStrategy === 'stack') {
79
+ if (this.responsiveStrategy === "stack") {
80
80
  // Stack requiere lógica en el template, aquí solo el wrapper
81
81
  return [];
82
82
  }
83
- if (this.responsiveStrategy === 'collapse') {
84
- return ['overflow-x-auto'];
83
+ if (this.responsiveStrategy === "collapse") {
84
+ return ["overflow-x-auto"];
85
85
  }
86
- return ['overflow-auto'];
86
+ return ["overflow-auto"];
87
87
  }
88
88
  getVariantWrapperClasses() {
89
- if (this.variant === 'interactive') {
90
- return ['rounded-xl', 'border', 'border-border', 'bg-background'];
89
+ if (this.variant === "interactive") {
90
+ return ["rounded-xl", "border", "border-border", "bg-background"];
91
91
  }
92
- if (this.variant === 'data') {
93
- return ['rounded-md', 'border', 'border-border', 'bg-background'];
92
+ if (this.variant === "data") {
93
+ return ["rounded-md", "border", "border-border", "bg-background"];
94
94
  }
95
95
  return [];
96
96
  }
97
97
  getVariantTableClasses() {
98
- if (this.variant === 'data') {
98
+ if (this.variant === "data") {
99
99
  return [
100
- 'border-collapse',
101
- 'text-foreground',
102
- '[&_thead_tr]:border-b',
103
- '[&_thead_tr]:border-border',
104
- '[&_tbody_tr]:border-b',
105
- '[&_tbody_tr]:border-border',
106
- '[&_tbody_tr:last-child]:border-b-0',
107
- '[&_th]:h-10',
108
- '[&_th]:px-2',
109
- '[&_th]:text-left',
110
- '[&_th]:align-middle',
111
- '[&_th]:font-medium',
112
- '[&_td]:p-2',
113
- '[&_td]:align-middle'
100
+ "border-collapse",
101
+ "text-foreground",
102
+ "[&_thead_tr]:border-b",
103
+ "[&_thead_tr]:border-border",
104
+ "[&_tbody_tr]:border-b",
105
+ "[&_tbody_tr]:border-border",
106
+ "[&_tbody_tr:last-child]:border-b-0",
107
+ "[&_th]:h-10",
108
+ "[&_th]:px-2",
109
+ "[&_th]:text-left",
110
+ "[&_th]:align-middle",
111
+ "[&_th]:font-medium",
112
+ "[&_td]:p-2",
113
+ "[&_td]:align-middle",
114
114
  ];
115
115
  }
116
- if (this.variant === 'interactive') {
116
+ if (this.variant === "interactive") {
117
117
  return [
118
- 'text-foreground',
119
- '[&_thead]:sticky',
120
- '[&_thead]:top-0',
121
- '[&_thead]:z-10',
122
- '[&_thead]:bg-muted/70',
123
- '[&_thead_tr]:border-b',
124
- '[&_thead_tr]:border-border',
125
- '[&_th]:h-12',
126
- '[&_th]:px-4',
127
- '[&_th]:text-left',
128
- '[&_th]:align-middle',
129
- '[&_th]:text-sm',
130
- '[&_th]:font-medium',
131
- '[&_tbody_tr]:border-b',
132
- '[&_tbody_tr]:border-border',
133
- '[&_tbody_tr]:transition-colors',
134
- '[&_tbody_tr:hover]:bg-muted/50',
135
- '[&_tbody_tr:last-child]:border-b-0',
136
- '[&_td]:h-14',
137
- '[&_td]:px-4',
138
- '[&_td]:align-middle',
139
- '[&_td]:text-sm',
140
- '[&_svg]:text-muted-foreground'
118
+ "text-foreground",
119
+ "[&_thead]:sticky",
120
+ "[&_thead]:top-0",
121
+ "[&_thead]:z-10",
122
+ "[&_thead]:bg-muted/70",
123
+ "[&_thead_tr]:border-b",
124
+ "[&_thead_tr]:border-border",
125
+ "[&_th]:h-12",
126
+ "[&_th]:px-4",
127
+ "[&_th]:text-left",
128
+ "[&_th]:align-middle",
129
+ "[&_th]:text-sm",
130
+ "[&_th]:font-medium",
131
+ "[&_tbody_tr]:border-b",
132
+ "[&_tbody_tr]:border-border",
133
+ "[&_tbody_tr]:transition-colors",
134
+ "[&_tbody_tr:hover]:bg-muted/50",
135
+ "[&_tbody_tr:last-child]:border-b-0",
136
+ "[&_td]:h-14",
137
+ "[&_td]:px-4",
138
+ "[&_td]:align-middle",
139
+ "[&_td]:text-sm",
140
+ "[&_svg]:text-muted-foreground",
141
141
  ];
142
142
  }
143
143
  return [];
144
144
  }
145
145
  getCellClasses() {
146
146
  // Manejo responsive de whitespace
147
- if (this.responsiveStrategy === 'scroll') {
147
+ if (this.responsiveStrategy === "scroll") {
148
148
  // En scroll, permitir wrap en mobile, nowrap en desktop
149
- return ['[&_td]:whitespace-normal', '[&_th]:whitespace-normal', 'sm:[&_td]:whitespace-nowrap', 'sm:[&_th]:whitespace-nowrap'];
149
+ return [
150
+ "[&_td]:whitespace-normal",
151
+ "[&_th]:whitespace-normal",
152
+ "sm:[&_td]:whitespace-nowrap",
153
+ "sm:[&_th]:whitespace-nowrap",
154
+ ];
150
155
  }
151
- if (this.responsiveStrategy === 'wrap') {
156
+ if (this.responsiveStrategy === "wrap") {
152
157
  // En wrap, siempre permitir wrap
153
- return ['[&_td]:whitespace-normal', '[&_td]:break-words', '[&_th]:whitespace-normal'];
158
+ return [
159
+ "[&_td]:whitespace-normal",
160
+ "[&_td]:break-words",
161
+ "[&_th]:whitespace-normal",
162
+ ];
154
163
  }
155
164
  // Default: nowrap (comportamiento anterior para backward compatibility)
156
165
  return [];
157
166
  }
158
167
  }
159
168
  PdmTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
160
- PdmTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmTableComponent, selector: "pdm-table", inputs: { variant: "variant", responsiveStrategy: "responsiveStrategy", className: "className", fullBleed: "fullBleed" }, ngImport: i0, template: "<div [ngClass]=\"wrapperClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table-container' : null\">\n <table #tableElement [ngClass]=\"tableClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table' : null\">\n <ng-content></ng-content>\n </table>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
169
+ PdmTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmTableComponent, selector: "pdm-table", inputs: { variant: "variant", responsiveStrategy: "responsiveStrategy", className: "className", fullBleed: "fullBleed" }, ngImport: i0, template: "<div [ngClass]=\"wrapperClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table-container' : null\">\n <table #tableElement [ngClass]=\"tableClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table' : null\">\n <ng-content></ng-content>\n </table>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
161
170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmTableComponent, decorators: [{
162
171
  type: Component,
163
- args: [{ selector: 'pdm-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"wrapperClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table-container' : null\">\n <table #tableElement [ngClass]=\"tableClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table' : null\">\n <ng-content></ng-content>\n </table>\n</div>\n" }]
172
+ args: [{ selector: "pdm-table", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"wrapperClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table-container' : null\">\n <table #tableElement [ngClass]=\"tableClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table' : null\">\n <ng-content></ng-content>\n </table>\n</div>\n", styles: [":host{display:block}\n"] }]
164
173
  }], propDecorators: { variant: [{
165
174
  type: Input
166
175
  }], responsiveStrategy: [{
@@ -170,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
170
179
  }], fullBleed: [{
171
180
  type: Input
172
181
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQTJCLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUluRjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFNSCxNQUFNLE9BQU8saUJBQWlCO0lBTDlCO1FBTUU7Ozs7O1dBS0c7UUFDTSxZQUFPLEdBQW9CLFNBQVMsQ0FBQztRQUU5Qzs7Ozs7O1dBTUc7UUFDTSx1QkFBa0IsR0FBNEIsUUFBUSxDQUFDO1FBRWhFOztXQUVHO1FBQ00sY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUV4Qjs7O1dBR0c7UUFDTSxjQUFTLEdBQUcsS0FBSyxDQUFDO0tBaUk1QjtJQS9IQyxJQUFJLGNBQWM7UUFDaEIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDNUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFdkQsNENBQTRDO1FBQzVDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssUUFBUSxFQUFFO1lBQzFELFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDekQ7UUFFRCxPQUFPO1lBQ0wsR0FBRyxXQUFXO1lBQ2Qs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QUN4Qyx3REFBd0Q7WUFDeEQsT0FBTyxDQUFDLDBCQUEwQixFQUFFLDBCQUEwQixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixDQUFDLENBQUM7U0FDL0g7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxNQUFNLEVBQUU7WUFDdEMsaUNBQWlDO1lBQ2pDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1NBQ3ZGO1FBRUQsd0VBQXdFO1FBQ3hFLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7OEdBM0pVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDJLQzVCOUIsdVJBS0E7MkZEdUJhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxXQUFXLG1CQUVKLHVCQUF1QixDQUFDLE1BQU07OEJBU3RDLE9BQU87c0JBQWYsS0FBSztnQkFTRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlUmVzcG9uc2l2ZVN0cmF0ZWd5LCBUQUJMRV9SRVNQT05TSVZFIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVzcG9uc2l2ZSc7XG5cbmV4cG9ydCB0eXBlIFBkbVRhYmxlVmFyaWFudCA9ICdkZWZhdWx0JyB8ICdkYXRhJyB8ICdpbnRlcmFjdGl2ZSc7XG5cbi8qKlxuICogQ29tcG9uZW50ZSBiYXNlIGRlIHRhYmxhIGNvbiBzb3BvcnRlIHJlc3BvbnNpdmVcbiAqIFxuICogU0lNUExJRklDQURPOiBZYSBubyBpbmNsdXllIGRyYWcgJiBkcm9wICh1c2FyIHBkbS1kcmFnZ2FibGUtdGFibGUgcGFyYSBlc28pXG4gKiBcbiAqIEBleGFtcGxlXG4gKiAvLyBUYWJsYSBzaW1wbGUgY29uIHNjcm9sbCBob3Jpem9udGFsXG4gKiA8cGRtLXRhYmxlIHZhcmlhbnQ9XCJkZWZhdWx0XCI+XG4gKiAgIDx0aGVhZD48dHI+PHRoPk5hbWU8L3RoPjx0aD5FbWFpbDwvdGg+PC90cj48L3RoZWFkPlxuICogICA8dGJvZHk+PHRyPjx0ZD5Kb2huPC90ZD48dGQ+am9obkBleGFtcGxlLmNvbTwvdGQ+PC90cj48L3Rib2R5PlxuICogPC9wZG0tdGFibGU+XG4gKiBcbiAqIEBleGFtcGxlXG4gKiAvLyBUYWJsYSBpbnRlcmFjdGl2YSBjb24gd3JhcCBlbiBtb2JpbGVcbiAqIDxwZG0tdGFibGUgdmFyaWFudD1cImludGVyYWN0aXZlXCIgcmVzcG9uc2l2ZVN0cmF0ZWd5PVwid3JhcFwiPlxuICogICAuLi5cbiAqIDwvcGRtLXRhYmxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1UYWJsZUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBWYXJpYW50ZSB2aXN1YWwgZGUgbGEgdGFibGFcbiAgICogLSBkZWZhdWx0OiB0YWJsYSBiw6FzaWNhIHNpbiBlc3RpbG9zIGV4dHJhXG4gICAqIC0gZGF0YTogdGFibGEgY29uIGJvcmRlcyB5IGVzcGFjaWFkbyBwYXJhIGRhdGFcbiAgICogLSBpbnRlcmFjdGl2ZTogdGFibGEgY29uIGhvdmVyLCBzdGlja3kgaGVhZGVyIHkgZXN0aWxvcyBpbnRlcmFjdGl2b3NcbiAgICovXG4gIEBJbnB1dCgpIHZhcmlhbnQ6IFBkbVRhYmxlVmFyaWFudCA9ICdkZWZhdWx0JztcbiAgXG4gIC8qKlxuICAgKiBFc3RyYXRlZ2lhIHJlc3BvbnNpdmUgcGFyYSBsYSB0YWJsYVxuICAgKiAtIHNjcm9sbDogc2Nyb2xsIGhvcml6b250YWwgZW4gbW9iaWxlIChkZWZhdWx0LCBtw6FzIHNpbXBsZSlcbiAgICogLSB3cmFwOiBwZXJtaXRlIHF1ZSBlbCBjb250ZW5pZG8gaGFnYSB3cmFwXG4gICAqIC0gc3RhY2s6IGNvbnZpZXJ0ZSBmaWxhcyBlbiBjYXJkcyBlbiBtb2JpbGUgKHJlcXVpZXJlIGRhdGEtbGFiZWwgZW4gY2VsZGFzKVxuICAgKiAtIGNvbGxhcHNlOiBvY3VsdGEgY29sdW1uYXMgbWVub3MgaW1wb3J0YW50ZXMgZW4gbW9iaWxlXG4gICAqL1xuICBASW5wdXQoKSByZXNwb25zaXZlU3RyYXRlZ3k6IFRhYmxlUmVzcG9uc2l2ZVN0cmF0ZWd5ID0gJ3Njcm9sbCc7XG4gIFxuICAvKipcbiAgICogQ2xhc2VzIENTUyBhZGljaW9uYWxlcyBwYXJhIGVsIHdyYXBwZXJcbiAgICovXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuICBcbiAgLyoqXG4gICAqIFNpIGVzIHRydWUsIGFwbGljYSBwYWRkaW5nIG5lZ2F0aXZvIGVuIG1vYmlsZSBwYXJhIHNjcm9sbCBlZGdlLXRvLWVkZ2VcbiAgICogw5p0aWwgY3VhbmRvIGxhIHRhYmxhIGVzdMOhIGRlbnRybyBkZSB1biBjb250YWluZXIgY29uIHBhZGRpbmdcbiAgICovXG4gIEBJbnB1dCgpIGZ1bGxCbGVlZCA9IGZhbHNlO1xuXG4gIGdldCB3cmFwcGVyQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYmFzZUNsYXNzZXMgPSBbJ3JlbGF0aXZlJywgJ3ctZnVsbCddO1xuICAgIGNvbnN0IHN0cmF0ZWd5Q2xhc3NlcyA9IHRoaXMuZ2V0UmVzcG9uc2l2ZVN0cmF0ZWd5Q2xhc3NlcygpO1xuICAgIGNvbnN0IHZhcmlhbnRDbGFzc2VzID0gdGhpcy5nZXRWYXJpYW50V3JhcHBlckNsYXNzZXMoKTtcbiAgICBcbiAgICAvLyBGdWxsIGJsZWVkOiBzY3JvbGwgZWRnZS10by1lZGdlIGVuIG1vYmlsZVxuICAgIGlmICh0aGlzLmZ1bGxCbGVlZCAmJiB0aGlzLnJlc3BvbnNpdmVTdHJhdGVneSA9PT0gJ3Njcm9sbCcpIHtcbiAgICAgIGJhc2VDbGFzc2VzLnB1c2goJy1teC00JywgJ3B4LTQnLCAnc206bXgtMCcsICdzbTpweC0wJyk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBbXG4gICAgICAuLi5iYXNlQ2xhc3NlcyxcbiAgICAgIC4uLnN0cmF0ZWd5Q2xhc3NlcyxcbiAgICAgIC4uLnZhcmlhbnRDbGFzc2VzLFxuICAgICAgdGhpcy5jbGFzc05hbWVcbiAgICBdLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIGdldCB0YWJsZUNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gWyd3LWZ1bGwnLCAnY2FwdGlvbi1ib3R0b20nLCAndGV4dC1zbSddO1xuICAgIGNvbnN0IHZhcmlhbnRDbGFzc2VzID0gdGhpcy5nZXRWYXJpYW50VGFibGVDbGFzc2VzKCk7XG4gICAgY29uc3QgY2VsbENsYXNzZXMgPSB0aGlzLmdldENlbGxDbGFzc2VzKCk7XG4gICAgXG4gICAgcmV0dXJuIFsuLi5iYXNlQ2xhc3NlcywgLi4udmFyaWFudENsYXNzZXMsIC4uLmNlbGxDbGFzc2VzXS5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICBwcml2YXRlIGdldFJlc3BvbnNpdmVTdHJhdGVneUNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHN0cmF0ZWd5ID0gVEFCTEVfUkVTUE9OU0lWRVt0aGlzLnJlc3BvbnNpdmVTdHJhdGVneV07XG4gICAgXG4gICAgaWYgKHRoaXMucmVzcG9uc2l2ZVN0cmF0ZWd5ID09PSAnc2Nyb2xsJykge1xuICAgICAgcmV0dXJuIFsnb3ZlcmZsb3cteC1hdXRvJ107XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLnJlc3BvbnNpdmVTdHJhdGVneSA9PT0gJ3dyYXAnKSB7XG4gICAgICByZXR1cm4gWydvdmVyZmxvdy14LWF1dG8nXTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMucmVzcG9uc2l2ZVN0cmF0ZWd5ID09PSAnc3RhY2snKSB7XG4gICAgICAvLyBTdGFjayByZXF1aWVyZSBsw7NnaWNhIGVuIGVsIHRlbXBsYXRlLCBhcXXDrSBzb2xvIGVsIHdyYXBwZXJcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMucmVzcG9uc2l2ZVN0cmF0ZWd5ID09PSAnY29sbGFwc2UnKSB7XG4gICAgICByZXR1cm4gWydvdmVyZmxvdy14LWF1dG8nXTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIFsnb3ZlcmZsb3ctYXV0byddO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYXJpYW50V3JhcHBlckNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdpbnRlcmFjdGl2ZScpIHtcbiAgICAgIHJldHVybiBbJ3JvdW5kZWQteGwnLCAnYm9yZGVyJywgJ2JvcmRlci1ib3JkZXInLCAnYmctYmFja2dyb3VuZCddO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy52YXJpYW50ID09PSAnZGF0YScpIHtcbiAgICAgIHJldHVybiBbJ3JvdW5kZWQtbWQnLCAnYm9yZGVyJywgJ2JvcmRlci1ib3JkZXInLCAnYmctYmFja2dyb3VuZCddO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcml2YXRlIGdldFZhcmlhbnRUYWJsZUNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdkYXRhJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgJ2JvcmRlci1jb2xsYXBzZScsXG4gICAgICAgICd0ZXh0LWZvcmVncm91bmQnLFxuICAgICAgICAnWyZfdGhlYWRfdHJdOmJvcmRlci1iJyxcbiAgICAgICAgJ1smX3RoZWFkX3RyXTpib3JkZXItYm9yZGVyJyxcbiAgICAgICAgJ1smX3Rib2R5X3RyXTpib3JkZXItYicsXG4gICAgICAgICdbJl90Ym9keV90cl06Ym9yZGVyLWJvcmRlcicsXG4gICAgICAgICdbJl90Ym9keV90cjpsYXN0LWNoaWxkXTpib3JkZXItYi0wJyxcbiAgICAgICAgJ1smX3RoXTpoLTEwJyxcbiAgICAgICAgJ1smX3RoXTpweC0yJyxcbiAgICAgICAgJ1smX3RoXTp0ZXh0LWxlZnQnLFxuICAgICAgICAnWyZfdGhdOmFsaWduLW1pZGRsZScsXG4gICAgICAgICdbJl90aF06Zm9udC1tZWRpdW0nLFxuICAgICAgICAnWyZfdGRdOnAtMicsXG4gICAgICAgICdbJl90ZF06YWxpZ24tbWlkZGxlJ1xuICAgICAgXTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMudmFyaWFudCA9PT0gJ2ludGVyYWN0aXZlJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgJ3RleHQtZm9yZWdyb3VuZCcsXG4gICAgICAgICdbJl90aGVhZF06c3RpY2t5JyxcbiAgICAgICAgJ1smX3RoZWFkXTp0b3AtMCcsXG4gICAgICAgICdbJl90aGVhZF06ei0xMCcsXG4gICAgICAgICdbJl90aGVhZF06YmctbXV0ZWQvNzAnLFxuICAgICAgICAnWyZfdGhlYWRfdHJdOmJvcmRlci1iJyxcbiAgICAgICAgJ1smX3RoZWFkX3RyXTpib3JkZXItYm9yZGVyJyxcbiAgICAgICAgJ1smX3RoXTpoLTEyJyxcbiAgICAgICAgJ1smX3RoXTpweC00JyxcbiAgICAgICAgJ1smX3RoXTp0ZXh0LWxlZnQnLFxuICAgICAgICAnWyZfdGhdOmFsaWduLW1pZGRsZScsXG4gICAgICAgICdbJl90aF06dGV4dC1zbScsXG4gICAgICAgICdbJl90aF06Zm9udC1tZWRpdW0nLFxuICAgICAgICAnWyZfdGJvZHlfdHJdOmJvcmRlci1iJyxcbiAgICAgICAgJ1smX3Rib2R5X3RyXTpib3JkZXItYm9yZGVyJyxcbiAgICAgICAgJ1smX3Rib2R5X3RyXTp0cmFuc2l0aW9uLWNvbG9ycycsXG4gICAgICAgICdbJl90Ym9keV90cjpob3Zlcl06YmctbXV0ZWQvNTAnLFxuICAgICAgICAnWyZfdGJvZHlfdHI6bGFzdC1jaGlsZF06Ym9yZGVyLWItMCcsXG4gICAgICAgICdbJl90ZF06aC0xNCcsXG4gICAgICAgICdbJl90ZF06cHgtNCcsXG4gICAgICAgICdbJl90ZF06YWxpZ24tbWlkZGxlJyxcbiAgICAgICAgJ1smX3RkXTp0ZXh0LXNtJyxcbiAgICAgICAgJ1smX3N2Z106dGV4dC1tdXRlZC1mb3JlZ3JvdW5kJ1xuICAgICAgXTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDZWxsQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgLy8gTWFuZWpvIHJlc3BvbnNpdmUgZGUgd2hpdGVzcGFjZVxuICAgIGlmICh0aGlzLnJlc3BvbnNpdmVTdHJhdGVneSA9PT0gJ3Njcm9sbCcpIHtcbiAgICAgIC8vIEVuIHNjcm9sbCwgcGVybWl0aXIgd3JhcCBlbiBtb2JpbGUsIG5vd3JhcCBlbiBkZXNrdG9wXG4gICAgICByZXR1cm4gWydbJl90ZF06d2hpdGVzcGFjZS1ub3JtYWwnLCAnWyZfdGhdOndoaXRlc3BhY2Utbm9ybWFsJywgJ3NtOlsmX3RkXTp3aGl0ZXNwYWNlLW5vd3JhcCcsICdzbTpbJl90aF06d2hpdGVzcGFjZS1ub3dyYXAnXTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMucmVzcG9uc2l2ZVN0cmF0ZWd5ID09PSAnd3JhcCcpIHtcbiAgICAgIC8vIEVuIHdyYXAsIHNpZW1wcmUgcGVybWl0aXIgd3JhcFxuICAgICAgcmV0dXJuIFsnWyZfdGRdOndoaXRlc3BhY2Utbm9ybWFsJywgJ1smX3RkXTpicmVhay13b3JkcycsICdbJl90aF06d2hpdGVzcGFjZS1ub3JtYWwnXTtcbiAgICB9XG4gICAgXG4gICAgLy8gRGVmYXVsdDogbm93cmFwIChjb21wb3J0YW1pZW50byBhbnRlcmlvciBwYXJhIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpXG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIndyYXBwZXJDbGFzc2VzXCIgW2F0dHIuZGF0YS1zbG90XT1cInZhcmlhbnQgPT09ICdpbnRlcmFjdGl2ZScgPyAndGFibGUtY29udGFpbmVyJyA6IG51bGxcIj5cbiAgPHRhYmxlICN0YWJsZUVsZW1lbnQgW25nQ2xhc3NdPVwidGFibGVDbGFzc2VzXCIgW2F0dHIuZGF0YS1zbG90XT1cInZhcmlhbnQgPT09ICdpbnRlcmFjdGl2ZScgPyAndGFibGUnIDogbnVsbFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC90YWJsZT5cbjwvZGl2PlxuIl19
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBRU4sZ0JBQWdCLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7OztBQUloQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFPSCxNQUFNLE9BQU8saUJBQWlCO0lBTjlCO1FBT0M7Ozs7O1dBS0c7UUFDTSxZQUFPLEdBQW9CLFNBQVMsQ0FBQztRQUU5Qzs7Ozs7O1dBTUc7UUFDTSx1QkFBa0IsR0FBNEIsUUFBUSxDQUFDO1FBRWhFOztXQUVHO1FBQ00sY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUV4Qjs7O1dBR0c7UUFDTSxjQUFTLEdBQUcsS0FBSyxDQUFDO0tBMEkzQjtJQXhJQSxJQUFJLGNBQWM7UUFDakIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDNUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFdkQsNENBQTRDO1FBQzVDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssUUFBUSxFQUFFO1lBQzNELFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDeEQ7UUFFRCxPQUFPO1lBQ04sR0FBRyxXQUFXO1lBQ2Qs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QUN6Qyx3REFBd0Q7WUFDeEQsT0FBTztnQkFDTiwwQkFBMEI7Z0JBQzFCLDBCQUEwQjtnQkFDMUIsNkJBQTZCO2dCQUM3Qiw2QkFBNkI7YUFDN0IsQ0FBQztTQUNGO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssTUFBTSxFQUFFO1lBQ3ZDLGlDQUFpQztZQUNqQyxPQUFPO2dCQUNOLDBCQUEwQjtnQkFDMUIsb0JBQW9CO2dCQUNwQiwwQkFBMEI7YUFDMUIsQ0FBQztTQUNGO1FBRUQsd0VBQXdFO1FBQ3hFLE9BQU8sRUFBRSxDQUFDO0lBQ1gsQ0FBQzs7OEdBcEtXLGlCQUFpQjtrR0FBakIsaUJBQWlCLDJLQ2hDOUIsdVJBS0E7MkZEMkJhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDQyxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU07OEJBU3RDLE9BQU87c0JBQWYsS0FBSztnQkFTRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcblx0dHlwZSBUYWJsZVJlc3BvbnNpdmVTdHJhdGVneSxcblx0VEFCTEVfUkVTUE9OU0lWRSxcbn0gZnJvbSBcIi4uLy4uL3V0aWxzL3Jlc3BvbnNpdmVcIjtcblxuZXhwb3J0IHR5cGUgUGRtVGFibGVWYXJpYW50ID0gXCJkZWZhdWx0XCIgfCBcImRhdGFcIiB8IFwiaW50ZXJhY3RpdmVcIjtcblxuLyoqXG4gKiBDb21wb25lbnRlIGJhc2UgZGUgdGFibGEgY29uIHNvcG9ydGUgcmVzcG9uc2l2ZVxuICpcbiAqIFNJTVBMSUZJQ0FETzogWWEgbm8gaW5jbHV5ZSBkcmFnICYgZHJvcCAodXNhciBwZG0tZHJhZ2dhYmxlLXRhYmxlIHBhcmEgZXNvKVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUYWJsYSBzaW1wbGUgY29uIHNjcm9sbCBob3Jpem9udGFsXG4gKiA8cGRtLXRhYmxlIHZhcmlhbnQ9XCJkZWZhdWx0XCI+XG4gKiAgIDx0aGVhZD48dHI+PHRoPk5hbWU8L3RoPjx0aD5FbWFpbDwvdGg+PC90cj48L3RoZWFkPlxuICogICA8dGJvZHk+PHRyPjx0ZD5Kb2huPC90ZD48dGQ+am9obkBleGFtcGxlLmNvbTwvdGQ+PC90cj48L3Rib2R5PlxuICogPC9wZG0tdGFibGU+XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRhYmxhIGludGVyYWN0aXZhIGNvbiB3cmFwIGVuIG1vYmlsZVxuICogPHBkbS10YWJsZSB2YXJpYW50PVwiaW50ZXJhY3RpdmVcIiByZXNwb25zaXZlU3RyYXRlZ3k9XCJ3cmFwXCI+XG4gKiAgIC4uLlxuICogPC9wZG0tdGFibGU+XG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJwZG0tdGFibGVcIixcblx0dGVtcGxhdGVVcmw6IFwiLi90YWJsZS5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZXM6IFtcIjpob3N0IHsgZGlzcGxheTogYmxvY2s7IH1cIl0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQZG1UYWJsZUNvbXBvbmVudCB7XG5cdC8qKlxuXHQgKiBWYXJpYW50ZSB2aXN1YWwgZGUgbGEgdGFibGFcblx0ICogLSBkZWZhdWx0OiB0YWJsYSBiw6FzaWNhIHNpbiBlc3RpbG9zIGV4dHJhXG5cdCAqIC0gZGF0YTogdGFibGEgY29uIGJvcmRlcyB5IGVzcGFjaWFkbyBwYXJhIGRhdGFcblx0ICogLSBpbnRlcmFjdGl2ZTogdGFibGEgY29uIGhvdmVyLCBzdGlja3kgaGVhZGVyIHkgZXN0aWxvcyBpbnRlcmFjdGl2b3Ncblx0ICovXG5cdEBJbnB1dCgpIHZhcmlhbnQ6IFBkbVRhYmxlVmFyaWFudCA9IFwiZGVmYXVsdFwiO1xuXG5cdC8qKlxuXHQgKiBFc3RyYXRlZ2lhIHJlc3BvbnNpdmUgcGFyYSBsYSB0YWJsYVxuXHQgKiAtIHNjcm9sbDogc2Nyb2xsIGhvcml6b250YWwgZW4gbW9iaWxlIChkZWZhdWx0LCBtw6FzIHNpbXBsZSlcblx0ICogLSB3cmFwOiBwZXJtaXRlIHF1ZSBlbCBjb250ZW5pZG8gaGFnYSB3cmFwXG5cdCAqIC0gc3RhY2s6IGNvbnZpZXJ0ZSBmaWxhcyBlbiBjYXJkcyBlbiBtb2JpbGUgKHJlcXVpZXJlIGRhdGEtbGFiZWwgZW4gY2VsZGFzKVxuXHQgKiAtIGNvbGxhcHNlOiBvY3VsdGEgY29sdW1uYXMgbWVub3MgaW1wb3J0YW50ZXMgZW4gbW9iaWxlXG5cdCAqL1xuXHRASW5wdXQoKSByZXNwb25zaXZlU3RyYXRlZ3k6IFRhYmxlUmVzcG9uc2l2ZVN0cmF0ZWd5ID0gXCJzY3JvbGxcIjtcblxuXHQvKipcblx0ICogQ2xhc2VzIENTUyBhZGljaW9uYWxlcyBwYXJhIGVsIHdyYXBwZXJcblx0ICovXG5cdEBJbnB1dCgpIGNsYXNzTmFtZSA9IFwiXCI7XG5cblx0LyoqXG5cdCAqIFNpIGVzIHRydWUsIGFwbGljYSBwYWRkaW5nIG5lZ2F0aXZvIGVuIG1vYmlsZSBwYXJhIHNjcm9sbCBlZGdlLXRvLWVkZ2Vcblx0ICogw5p0aWwgY3VhbmRvIGxhIHRhYmxhIGVzdMOhIGRlbnRybyBkZSB1biBjb250YWluZXIgY29uIHBhZGRpbmdcblx0ICovXG5cdEBJbnB1dCgpIGZ1bGxCbGVlZCA9IGZhbHNlO1xuXG5cdGdldCB3cmFwcGVyQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgYmFzZUNsYXNzZXMgPSBbXCJyZWxhdGl2ZVwiLCBcInctZnVsbFwiXTtcblx0XHRjb25zdCBzdHJhdGVneUNsYXNzZXMgPSB0aGlzLmdldFJlc3BvbnNpdmVTdHJhdGVneUNsYXNzZXMoKTtcblx0XHRjb25zdCB2YXJpYW50Q2xhc3NlcyA9IHRoaXMuZ2V0VmFyaWFudFdyYXBwZXJDbGFzc2VzKCk7XG5cblx0XHQvLyBGdWxsIGJsZWVkOiBzY3JvbGwgZWRnZS10by1lZGdlIGVuIG1vYmlsZVxuXHRcdGlmICh0aGlzLmZ1bGxCbGVlZCAmJiB0aGlzLnJlc3BvbnNpdmVTdHJhdGVneSA9PT0gXCJzY3JvbGxcIikge1xuXHRcdFx0YmFzZUNsYXNzZXMucHVzaChcIi1teC00XCIsIFwicHgtNFwiLCBcInNtOm14LTBcIiwgXCJzbTpweC0wXCIpO1xuXHRcdH1cblxuXHRcdHJldHVybiBbXG5cdFx0XHQuLi5iYXNlQ2xhc3Nlcyxcblx0XHRcdC4uLnN0cmF0ZWd5Q2xhc3Nlcyxcblx0XHRcdC4uLnZhcmlhbnRDbGFzc2VzLFxuXHRcdFx0dGhpcy5jbGFzc05hbWUsXG5cdFx0XS5maWx0ZXIoQm9vbGVhbik7XG5cdH1cblxuXHRnZXQgdGFibGVDbGFzc2VzKCk6IHN0cmluZ1tdIHtcblx0XHRjb25zdCBiYXNlQ2xhc3NlcyA9IFtcInctZnVsbFwiLCBcImNhcHRpb24tYm90dG9tXCIsIFwidGV4dC1zbVwiXTtcblx0XHRjb25zdCB2YXJpYW50Q2xhc3NlcyA9IHRoaXMuZ2V0VmFyaWFudFRhYmxlQ2xhc3NlcygpO1xuXHRcdGNvbnN0IGNlbGxDbGFzc2VzID0gdGhpcy5nZXRDZWxsQ2xhc3NlcygpO1xuXG5cdFx0cmV0dXJuIFsuLi5iYXNlQ2xhc3NlcywgLi4udmFyaWFudENsYXNzZXMsIC4uLmNlbGxDbGFzc2VzXS5maWx0ZXIoQm9vbGVhbik7XG5cdH1cblxuXHRwcml2YXRlIGdldFJlc3BvbnNpdmVTdHJhdGVneUNsYXNzZXMoKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IHN0cmF0ZWd5ID0gVEFCTEVfUkVTUE9OU0lWRVt0aGlzLnJlc3BvbnNpdmVTdHJhdGVneV07XG5cblx0XHRpZiAodGhpcy5yZXNwb25zaXZlU3RyYXRlZ3kgPT09IFwic2Nyb2xsXCIpIHtcblx0XHRcdHJldHVybiBbXCJvdmVyZmxvdy14LWF1dG9cIl07XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucmVzcG9uc2l2ZVN0cmF0ZWd5ID09PSBcIndyYXBcIikge1xuXHRcdFx0cmV0dXJuIFtcIm92ZXJmbG93LXgtYXV0b1wiXTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5yZXNwb25zaXZlU3RyYXRlZ3kgPT09IFwic3RhY2tcIikge1xuXHRcdFx0Ly8gU3RhY2sgcmVxdWllcmUgbMOzZ2ljYSBlbiBlbCB0ZW1wbGF0ZSwgYXF1w60gc29sbyBlbCB3cmFwcGVyXG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucmVzcG9uc2l2ZVN0cmF0ZWd5ID09PSBcImNvbGxhcHNlXCIpIHtcblx0XHRcdHJldHVybiBbXCJvdmVyZmxvdy14LWF1dG9cIl07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtcIm92ZXJmbG93LWF1dG9cIl07XG5cdH1cblxuXHRwcml2YXRlIGdldFZhcmlhbnRXcmFwcGVyQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG5cdFx0aWYgKHRoaXMudmFyaWFudCA9PT0gXCJpbnRlcmFjdGl2ZVwiKSB7XG5cdFx0XHRyZXR1cm4gW1wicm91bmRlZC14bFwiLCBcImJvcmRlclwiLCBcImJvcmRlci1ib3JkZXJcIiwgXCJiZy1iYWNrZ3JvdW5kXCJdO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnZhcmlhbnQgPT09IFwiZGF0YVwiKSB7XG5cdFx0XHRyZXR1cm4gW1wicm91bmRlZC1tZFwiLCBcImJvcmRlclwiLCBcImJvcmRlci1ib3JkZXJcIiwgXCJiZy1iYWNrZ3JvdW5kXCJdO1xuXHRcdH1cblxuXHRcdHJldHVybiBbXTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0VmFyaWFudFRhYmxlQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG5cdFx0aWYgKHRoaXMudmFyaWFudCA9PT0gXCJkYXRhXCIpIHtcblx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFwiYm9yZGVyLWNvbGxhcHNlXCIsXG5cdFx0XHRcdFwidGV4dC1mb3JlZ3JvdW5kXCIsXG5cdFx0XHRcdFwiWyZfdGhlYWRfdHJdOmJvcmRlci1iXCIsXG5cdFx0XHRcdFwiWyZfdGhlYWRfdHJdOmJvcmRlci1ib3JkZXJcIixcblx0XHRcdFx0XCJbJl90Ym9keV90cl06Ym9yZGVyLWJcIixcblx0XHRcdFx0XCJbJl90Ym9keV90cl06Ym9yZGVyLWJvcmRlclwiLFxuXHRcdFx0XHRcIlsmX3Rib2R5X3RyOmxhc3QtY2hpbGRdOmJvcmRlci1iLTBcIixcblx0XHRcdFx0XCJbJl90aF06aC0xMFwiLFxuXHRcdFx0XHRcIlsmX3RoXTpweC0yXCIsXG5cdFx0XHRcdFwiWyZfdGhdOnRleHQtbGVmdFwiLFxuXHRcdFx0XHRcIlsmX3RoXTphbGlnbi1taWRkbGVcIixcblx0XHRcdFx0XCJbJl90aF06Zm9udC1tZWRpdW1cIixcblx0XHRcdFx0XCJbJl90ZF06cC0yXCIsXG5cdFx0XHRcdFwiWyZfdGRdOmFsaWduLW1pZGRsZVwiLFxuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy52YXJpYW50ID09PSBcImludGVyYWN0aXZlXCIpIHtcblx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFwidGV4dC1mb3JlZ3JvdW5kXCIsXG5cdFx0XHRcdFwiWyZfdGhlYWRdOnN0aWNreVwiLFxuXHRcdFx0XHRcIlsmX3RoZWFkXTp0b3AtMFwiLFxuXHRcdFx0XHRcIlsmX3RoZWFkXTp6LTEwXCIsXG5cdFx0XHRcdFwiWyZfdGhlYWRdOmJnLW11dGVkLzcwXCIsXG5cdFx0XHRcdFwiWyZfdGhlYWRfdHJdOmJvcmRlci1iXCIsXG5cdFx0XHRcdFwiWyZfdGhlYWRfdHJdOmJvcmRlci1ib3JkZXJcIixcblx0XHRcdFx0XCJbJl90aF06aC0xMlwiLFxuXHRcdFx0XHRcIlsmX3RoXTpweC00XCIsXG5cdFx0XHRcdFwiWyZfdGhdOnRleHQtbGVmdFwiLFxuXHRcdFx0XHRcIlsmX3RoXTphbGlnbi1taWRkbGVcIixcblx0XHRcdFx0XCJbJl90aF06dGV4dC1zbVwiLFxuXHRcdFx0XHRcIlsmX3RoXTpmb250LW1lZGl1bVwiLFxuXHRcdFx0XHRcIlsmX3Rib2R5X3RyXTpib3JkZXItYlwiLFxuXHRcdFx0XHRcIlsmX3Rib2R5X3RyXTpib3JkZXItYm9yZGVyXCIsXG5cdFx0XHRcdFwiWyZfdGJvZHlfdHJdOnRyYW5zaXRpb24tY29sb3JzXCIsXG5cdFx0XHRcdFwiWyZfdGJvZHlfdHI6aG92ZXJdOmJnLW11dGVkLzUwXCIsXG5cdFx0XHRcdFwiWyZfdGJvZHlfdHI6bGFzdC1jaGlsZF06Ym9yZGVyLWItMFwiLFxuXHRcdFx0XHRcIlsmX3RkXTpoLTE0XCIsXG5cdFx0XHRcdFwiWyZfdGRdOnB4LTRcIixcblx0XHRcdFx0XCJbJl90ZF06YWxpZ24tbWlkZGxlXCIsXG5cdFx0XHRcdFwiWyZfdGRdOnRleHQtc21cIixcblx0XHRcdFx0XCJbJl9zdmddOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRyZXR1cm4gW107XG5cdH1cblxuXHRwcml2YXRlIGdldENlbGxDbGFzc2VzKCk6IHN0cmluZ1tdIHtcblx0XHQvLyBNYW5lam8gcmVzcG9uc2l2ZSBkZSB3aGl0ZXNwYWNlXG5cdFx0aWYgKHRoaXMucmVzcG9uc2l2ZVN0cmF0ZWd5ID09PSBcInNjcm9sbFwiKSB7XG5cdFx0XHQvLyBFbiBzY3JvbGwsIHBlcm1pdGlyIHdyYXAgZW4gbW9iaWxlLCBub3dyYXAgZW4gZGVza3RvcFxuXHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XCJbJl90ZF06d2hpdGVzcGFjZS1ub3JtYWxcIixcblx0XHRcdFx0XCJbJl90aF06d2hpdGVzcGFjZS1ub3JtYWxcIixcblx0XHRcdFx0XCJzbTpbJl90ZF06d2hpdGVzcGFjZS1ub3dyYXBcIixcblx0XHRcdFx0XCJzbTpbJl90aF06d2hpdGVzcGFjZS1ub3dyYXBcIixcblx0XHRcdF07XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucmVzcG9uc2l2ZVN0cmF0ZWd5ID09PSBcIndyYXBcIikge1xuXHRcdFx0Ly8gRW4gd3JhcCwgc2llbXByZSBwZXJtaXRpciB3cmFwXG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcIlsmX3RkXTp3aGl0ZXNwYWNlLW5vcm1hbFwiLFxuXHRcdFx0XHRcIlsmX3RkXTpicmVhay13b3Jkc1wiLFxuXHRcdFx0XHRcIlsmX3RoXTp3aGl0ZXNwYWNlLW5vcm1hbFwiLFxuXHRcdFx0XTtcblx0XHR9XG5cblx0XHQvLyBEZWZhdWx0OiBub3dyYXAgKGNvbXBvcnRhbWllbnRvIGFudGVyaW9yIHBhcmEgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcblx0XHRyZXR1cm4gW107XG5cdH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwid3JhcHBlckNsYXNzZXNcIiBbYXR0ci5kYXRhLXNsb3RdPVwidmFyaWFudCA9PT0gJ2ludGVyYWN0aXZlJyA/ICd0YWJsZS1jb250YWluZXInIDogbnVsbFwiPlxuICA8dGFibGUgI3RhYmxlRWxlbWVudCBbbmdDbGFzc109XCJ0YWJsZUNsYXNzZXNcIiBbYXR0ci5kYXRhLXNsb3RdPVwidmFyaWFudCA9PT0gJ2ludGVyYWN0aXZlJyA/ICd0YWJsZScgOiBudWxsXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
@@ -1,12 +1,12 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  export class PdmTabsComponent {
5
5
  constructor(cdr) {
6
6
  this.cdr = cdr;
7
7
  this.items = [];
8
- this.value = '';
9
- this.className = '';
8
+ this.value = "";
9
+ this.className = "";
10
10
  this.valueChange = new EventEmitter();
11
11
  }
12
12
  select(item) {
@@ -18,10 +18,10 @@ export class PdmTabsComponent {
18
18
  }
19
19
  }
20
20
  PdmTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmTabsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
21
- PdmTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmTabsComponent, selector: "pdm-tabs", inputs: { items: "items", value: "value", className: "className" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div [ngClass]=\"['w-full', className]\">\n <div\n role=\"tablist\"\n class=\"inline-flex h-8 w-full items-center overflow-x-auto scrollbar-thin rounded-lg bg-muted p-[3px] text-muted-foreground md:w-fit\"\n >\n <button\n *ngFor=\"let item of items\"\n role=\"tab\"\n [attr.aria-selected]=\"value === item.value\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"[\n 'relative inline-flex h-[calc(100%-1px)] appearance-none flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-3 py-0.5 text-sm font-medium transition-all focus-visible:border-ring focus-visible:outline-none focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 md:flex-initial md:px-4',\n value === item.value ? 'bg-background text-foreground shadow-sm' : 'bg-transparent text-muted-foreground'\n ]\"\n (click)=\"select(item)\"\n type=\"button\"\n >\n {{ item.label }}\n </button>\n </div>\n <div class=\"mt-4\">\n <ng-content></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21
+ PdmTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmTabsComponent, selector: "pdm-tabs", inputs: { items: "items", value: "value", className: "className" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div [ngClass]=\"['w-full', className]\">\n <div\n role=\"tablist\"\n class=\"inline-flex h-8 w-full items-center overflow-x-auto scrollbar-thin rounded-lg bg-muted p-[3px] text-muted-foreground md:w-fit\"\n >\n <button\n *ngFor=\"let item of items\"\n role=\"tab\"\n [attr.aria-selected]=\"value === item.value\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"[\n 'relative inline-flex h-[calc(100%-1px)] appearance-none flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-3 py-0.5 text-sm font-medium transition-all focus-visible:border-ring focus-visible:outline-none focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 md:flex-initial md:px-4',\n value === item.value ? 'bg-background text-foreground shadow-sm' : 'bg-transparent text-muted-foreground'\n ]\"\n (click)=\"select(item)\"\n type=\"button\"\n >\n {{ item.label }}\n </button>\n </div>\n <div class=\"mt-4\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmTabsComponent, decorators: [{
23
23
  type: Component,
24
- args: [{ selector: 'pdm-tabs', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['w-full', className]\">\n <div\n role=\"tablist\"\n class=\"inline-flex h-8 w-full items-center overflow-x-auto scrollbar-thin rounded-lg bg-muted p-[3px] text-muted-foreground md:w-fit\"\n >\n <button\n *ngFor=\"let item of items\"\n role=\"tab\"\n [attr.aria-selected]=\"value === item.value\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"[\n 'relative inline-flex h-[calc(100%-1px)] appearance-none flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-3 py-0.5 text-sm font-medium transition-all focus-visible:border-ring focus-visible:outline-none focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 md:flex-initial md:px-4',\n value === item.value ? 'bg-background text-foreground shadow-sm' : 'bg-transparent text-muted-foreground'\n ]\"\n (click)=\"select(item)\"\n type=\"button\"\n >\n {{ item.label }}\n </button>\n </div>\n <div class=\"mt-4\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
24
+ args: [{ selector: "pdm-tabs", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['w-full', className]\">\n <div\n role=\"tablist\"\n class=\"inline-flex h-8 w-full items-center overflow-x-auto scrollbar-thin rounded-lg bg-muted p-[3px] text-muted-foreground md:w-fit\"\n >\n <button\n *ngFor=\"let item of items\"\n role=\"tab\"\n [attr.aria-selected]=\"value === item.value\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"[\n 'relative inline-flex h-[calc(100%-1px)] appearance-none flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-3 py-0.5 text-sm font-medium transition-all focus-visible:border-ring focus-visible:outline-none focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 md:flex-initial md:px-4',\n value === item.value ? 'bg-background text-foreground shadow-sm' : 'bg-transparent text-muted-foreground'\n ]\"\n (click)=\"select(item)\"\n type=\"button\"\n >\n {{ item.label }}\n </button>\n </div>\n <div class=\"mt-4\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{display:block}\n"] }]
25
25
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { items: [{
26
26
  type: Input
27
27
  }], value: [{
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
31
31
  }], valueChange: [{
32
32
  type: Output
33
33
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFicy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQWFuSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQTZCLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRTFDLFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBQ3pCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBTkcsQ0FBQztJQVF2RCxNQUFNLENBQUMsSUFBZ0I7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7NkdBZlUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsNkpDYjdCLHdtQ0F3QkE7MkZEWGEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLFVBQVUsbUJBRUgsdUJBQXVCLENBQUMsTUFBTTt3R0FLdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRtVGFiSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbVRhYnNDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgQElucHV0KCkgaXRlbXM6IFBkbVRhYkl0ZW1bXSA9IFtdO1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBzZWxlY3QoaXRlbTogUGRtVGFiSXRlbSk6IHZvaWQge1xuICAgIGlmICghaXRlbS5kaXNhYmxlZCkge1xuICAgICAgdGhpcy52YWx1ZSA9IGl0ZW0udmFsdWU7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoaXRlbS52YWx1ZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwiWyd3LWZ1bGwnLCBjbGFzc05hbWVdXCI+XG4gIDxkaXZcbiAgICByb2xlPVwidGFibGlzdFwiXG4gICAgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTggdy1mdWxsIGl0ZW1zLWNlbnRlciBvdmVyZmxvdy14LWF1dG8gc2Nyb2xsYmFyLXRoaW4gcm91bmRlZC1sZyBiZy1tdXRlZCBwLVszcHhdIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBtZDp3LWZpdFwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiXG4gICAgICByb2xlPVwidGFiXCJcbiAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidmFsdWUgPT09IGl0ZW0udmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAncmVsYXRpdmUgaW5saW5lLWZsZXggaC1bY2FsYygxMDAlLTFweCldIGFwcGVhcmFuY2Utbm9uZSBmbGV4LTEgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0xLjUgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IHB4LTMgcHktMC41IHRleHQtc20gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1hbGwgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtcmluZyBmb2N1cy12aXNpYmxlOnJpbmctWzNweF0gZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTAgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwIG1kOmZsZXgtaW5pdGlhbCBtZDpweC00JyxcbiAgICAgICAgdmFsdWUgPT09IGl0ZW0udmFsdWUgPyAnYmctYmFja2dyb3VuZCB0ZXh0LWZvcmVncm91bmQgc2hhZG93LXNtJyA6ICdiZy10cmFuc3BhcmVudCB0ZXh0LW11dGVkLWZvcmVncm91bmQnXG4gICAgICBdXCJcbiAgICAgIChjbGljayk9XCJzZWxlY3QoaXRlbSlcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFicy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7OztBQWN2QixNQUFNLE9BQU8sZ0JBQWdCO0lBQzVCLFlBQTZCLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRTFDLFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBQ3pCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBTkcsQ0FBQztJQVF2RCxNQUFNLENBQUMsSUFBZ0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3hCO0lBQ0YsQ0FBQzs7NkdBZlcsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsNkpDckI3Qix3bUNBd0JBOzJGREhhLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDQyxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU07d0dBS3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENoYW5nZURldGVjdG9yUmVmLFxuXHRDb21wb25lbnQsXG5cdEV2ZW50RW1pdHRlcixcblx0SW5wdXQsXG5cdE91dHB1dCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQZG1UYWJJdGVtIHtcblx0bGFiZWw6IHN0cmluZztcblx0dmFsdWU6IHN0cmluZztcblx0ZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwicGRtLXRhYnNcIixcblx0dGVtcGxhdGVVcmw6IFwiLi90YWJzLmNvbXBvbmVudC5odG1sXCIsXG5cdHN0eWxlczogW1wiOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgfVwiXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBkbVRhYnNDb21wb25lbnQge1xuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cblx0QElucHV0KCkgaXRlbXM6IFBkbVRhYkl0ZW1bXSA9IFtdO1xuXHRASW5wdXQoKSB2YWx1ZSA9IFwiXCI7XG5cdEBJbnB1dCgpIGNsYXNzTmFtZSA9IFwiXCI7XG5cblx0QE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cblx0c2VsZWN0KGl0ZW06IFBkbVRhYkl0ZW0pOiB2b2lkIHtcblx0XHRpZiAoIWl0ZW0uZGlzYWJsZWQpIHtcblx0XHRcdHRoaXMudmFsdWUgPSBpdGVtLnZhbHVlO1xuXHRcdFx0dGhpcy52YWx1ZUNoYW5nZS5lbWl0KGl0ZW0udmFsdWUpO1xuXHRcdFx0dGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cdFx0fVxuXHR9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIlsndy1mdWxsJywgY2xhc3NOYW1lXVwiPlxuICA8ZGl2XG4gICAgcm9sZT1cInRhYmxpc3RcIlxuICAgIGNsYXNzPVwiaW5saW5lLWZsZXggaC04IHctZnVsbCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3cteC1hdXRvIHNjcm9sbGJhci10aGluIHJvdW5kZWQtbGcgYmctbXV0ZWQgcC1bM3B4XSB0ZXh0LW11dGVkLWZvcmVncm91bmQgbWQ6dy1maXRcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIlxuICAgICAgcm9sZT1cInRhYlwiXG4gICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInZhbHVlID09PSBpdGVtLnZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgJ3JlbGF0aXZlIGlubGluZS1mbGV4IGgtW2NhbGMoMTAwJS0xcHgpXSBhcHBlYXJhbmNlLW5vbmUgZmxleC0xIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMS41IHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBweC0zIHB5LTAuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tYWxsIGZvY3VzLXZpc2libGU6Ym9yZGVyLXJpbmcgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLVszcHhdIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCBtZDpmbGV4LWluaXRpYWwgbWQ6cHgtNCcsXG4gICAgICAgIHZhbHVlID09PSBpdGVtLnZhbHVlID8gJ2JnLWJhY2tncm91bmQgdGV4dC1mb3JlZ3JvdW5kIHNoYWRvdy1zbScgOiAnYmctdHJhbnNwYXJlbnQgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kJ1xuICAgICAgXVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0KGl0ZW0pXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtdC00XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19