pdm-ui-kit 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +168 -3
  2. package/esm2020/lib/components/button-group/button-group.component.mjs +208 -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 +1376 -654
  22. package/fesm2015/pdm-ui-kit.mjs.map +1 -1
  23. package/fesm2020/pdm-ui-kit.mjs +1380 -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,11 +1,11 @@
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 PdmToggleGroupComponent {
5
5
  constructor() {
6
6
  this.items = [];
7
- this.value = '';
8
- this.className = '';
7
+ this.value = "";
8
+ this.className = "";
9
9
  this.valueChange = new EventEmitter();
10
10
  }
11
11
  onSelect(next, disabled) {
@@ -15,10 +15,10 @@ export class PdmToggleGroupComponent {
15
15
  }
16
16
  }
17
17
  PdmToggleGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmToggleGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
- PdmToggleGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmToggleGroupComponent, selector: "pdm-toggle-group", inputs: { items: "items", value: "value", className: "className" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div [ngClass]=\"['inline-flex items-center rounded-md border border-border p-1', className]\" role=\"group\">\n <button\n *ngFor=\"let item of items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n [attr.aria-pressed]=\"item.value === value\"\n [ngClass]=\"[\n 'inline-flex h-8 appearance-none items-center justify-center rounded-sm border-0 bg-transparent px-2.5 text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n item.value === value\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground hover:bg-accent hover:text-accent-foreground'\n ]\"\n (click)=\"onSelect(item.value, item.disabled)\"\n >\n {{ item.label }}\n </button>\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 });
18
+ PdmToggleGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmToggleGroupComponent, selector: "pdm-toggle-group", inputs: { items: "items", value: "value", className: "className" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div\n [ngClass]=\"[\n 'flex flex-wrap items-center rounded-md border border-border p-1 gap-1',\n className,\n ]\"\n role=\"group\"\n>\n <button\n *ngFor=\"let item of items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n [attr.aria-pressed]=\"item.value === value\"\n [ngClass]=\"[\n 'inline-flex h-8 appearance-none items-center justify-center rounded-sm border-0 bg-transparent px-2.5 text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n item.value === value\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground hover:bg-accent hover:text-accent-foreground',\n ]\"\n (click)=\"onSelect(item.value, item.disabled)\"\n >\n {{ item.label }}\n </button>\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 });
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmToggleGroupComponent, decorators: [{
20
20
  type: Component,
21
- args: [{ selector: 'pdm-toggle-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [ngClass]=\"['inline-flex items-center rounded-md border border-border p-1', className]\" role=\"group\">\n <button\n *ngFor=\"let item of items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n [attr.aria-pressed]=\"item.value === value\"\n [ngClass]=\"[\n 'inline-flex h-8 appearance-none items-center justify-center rounded-sm border-0 bg-transparent px-2.5 text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n item.value === value\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground hover:bg-accent hover:text-accent-foreground'\n ]\"\n (click)=\"onSelect(item.value, item.disabled)\"\n >\n {{ item.label }}\n </button>\n</div>\n" }]
21
+ args: [{ selector: "pdm-toggle-group", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [ngClass]=\"[\n 'flex flex-wrap items-center rounded-md border border-border p-1 gap-1',\n className,\n ]\"\n role=\"group\"\n>\n <button\n *ngFor=\"let item of items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n [attr.aria-pressed]=\"item.value === value\"\n [ngClass]=\"[\n 'inline-flex h-8 appearance-none items-center justify-center rounded-sm border-0 bg-transparent px-2.5 text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n item.value === value\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground hover:bg-accent hover:text-accent-foreground',\n ]\"\n (click)=\"onSelect(item.value, item.disabled)\"\n >\n {{ item.label }}\n </button>\n</div>\n", styles: [":host{display:block}\n"] }]
22
22
  }], propDecorators: { items: [{
23
23
  type: Input
24
24
  }], value: [{
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
28
28
  }], valueChange: [{
29
29
  type: Output
30
30
  }] } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtZ3JvdXAvdG9nZ2xlLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtZ3JvdXAvdG9nZ2xlLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQWFoRyxNQUFNLE9BQU8sdUJBQXVCO0lBTHBDO1FBTVcsVUFBSyxHQUF5QixFQUFFLENBQUM7UUFDakMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FPcEQ7SUFMQyxRQUFRLENBQUMsSUFBWSxFQUFFLFFBQWtCO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDOztvSEFYVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixxS0NicEMsKzFCQWlCQTsyRkRKYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUVYLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRtVG9nZ2xlR3JvdXBJdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tdG9nZ2xlLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbVRvZ2dsZUdyb3VwQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaXRlbXM6IFBkbVRvZ2dsZUdyb3VwSXRlbVtdID0gW107XG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIG9uU2VsZWN0KG5leHQ6IHN0cmluZywgZGlzYWJsZWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCFkaXNhYmxlZCAmJiBuZXh0ICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV4dCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIlsnaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgcC0xJywgY2xhc3NOYW1lXVwiIHJvbGU9XCJncm91cFwiPlxuICA8YnV0dG9uXG4gICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwiaXRlbS52YWx1ZSA9PT0gdmFsdWVcIlxuICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICdpbmxpbmUtZmxleCBoLTggYXBwZWFyYW5jZS1ub25lIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLXNtIGJvcmRlci0wIGJnLXRyYW5zcGFyZW50IHB4LTIuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMicsXG4gICAgICBpdGVtLnZhbHVlID09PSB2YWx1ZVxuICAgICAgICA/ICdiZy1hY2NlbnQgdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCdcbiAgICAgICAgOiAndGV4dC1mb3JlZ3JvdW5kIGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJ1xuICAgIF1cIlxuICAgIChjbGljayk9XCJvblNlbGVjdChpdGVtLnZhbHVlLCBpdGVtLmRpc2FibGVkKVwiXG4gID5cbiAgICB7eyBpdGVtLmxhYmVsIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtZ3JvdXAvdG9nZ2xlLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90b2dnbGUtZ3JvdXAvdG9nZ2xlLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDOzs7QUFjdkIsTUFBTSxPQUFPLHVCQUF1QjtJQU5wQztRQU9VLFVBQUssR0FBeUIsRUFBRSxDQUFDO1FBQ2pDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBT25EO0lBTEEsUUFBUSxDQUFDLElBQVksRUFBRSxRQUFrQjtRQUN4QyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVCO0lBQ0YsQ0FBQzs7b0hBWFcsdUJBQXVCO3dHQUF2Qix1QkFBdUIscUtDcEJwQyxpNEJBdUJBOzJGREhhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDQyxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRFdmVudEVtaXR0ZXIsXG5cdElucHV0LFxuXHRPdXRwdXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRtVG9nZ2xlR3JvdXBJdGVtIHtcblx0bGFiZWw6IHN0cmluZztcblx0dmFsdWU6IHN0cmluZztcblx0ZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwicGRtLXRvZ2dsZS1ncm91cFwiLFxuXHR0ZW1wbGF0ZVVybDogXCIuL3RvZ2dsZS1ncm91cC5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZXM6IFtcIjpob3N0IHsgZGlzcGxheTogYmxvY2s7IH1cIl0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQZG1Ub2dnbGVHcm91cENvbXBvbmVudCB7XG5cdEBJbnB1dCgpIGl0ZW1zOiBQZG1Ub2dnbGVHcm91cEl0ZW1bXSA9IFtdO1xuXHRASW5wdXQoKSB2YWx1ZSA9IFwiXCI7XG5cdEBJbnB1dCgpIGNsYXNzTmFtZSA9IFwiXCI7XG5cblx0QE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cblx0b25TZWxlY3QobmV4dDogc3RyaW5nLCBkaXNhYmxlZD86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAoIWRpc2FibGVkICYmIG5leHQgIT09IHRoaXMudmFsdWUpIHtcblx0XHRcdHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXh0KTtcblx0XHR9XG5cdH1cbn1cbiIsIjxkaXZcbiAgW25nQ2xhc3NdPVwiW1xuICAgICdmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciBwLTEgZ2FwLTEnLFxuICAgIGNsYXNzTmFtZSxcbiAgXVwiXG4gIHJvbGU9XCJncm91cFwiXG4+XG4gIDxidXR0b25cbiAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpdGVtLnZhbHVlID09PSB2YWx1ZVwiXG4gICAgW25nQ2xhc3NdPVwiW1xuICAgICAgJ2lubGluZS1mbGV4IGgtOCBhcHBlYXJhbmNlLW5vbmUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtc20gYm9yZGVyLTAgYmctdHJhbnNwYXJlbnQgcHgtMi41IHRleHQtc20gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLW9mZnNldC0yJyxcbiAgICAgIGl0ZW0udmFsdWUgPT09IHZhbHVlXG4gICAgICAgID8gJ2JnLWFjY2VudCB0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJ1xuICAgICAgICA6ICd0ZXh0LWZvcmVncm91bmQgaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQnLFxuICAgIF1cIlxuICAgIChjbGljayk9XCJvblNlbGVjdChpdGVtLnZhbHVlLCBpdGVtLmRpc2FibGVkKVwiXG4gID5cbiAgICB7eyBpdGVtLmxhYmVsIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -1,33 +1,176 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, HostListener, Input, ViewChild, } from "@angular/core";
2
+ import { TemplatePortal } from "@angular/cdk/portal";
3
+ import { mergeOverlayPanelClass, OVERLAY_BASE_Z_INDEX, } from "../../overlay/z-index-helper";
2
4
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
5
+ import * as i1 from "@angular/cdk/overlay";
6
+ import * as i2 from "@angular/common";
4
7
  export class PdmTooltipComponent {
5
- constructor() {
6
- this.text = '';
7
- this.side = 'top';
8
- this.className = '';
8
+ constructor(overlay, viewContainerRef, elementRef, cdr) {
9
+ this.overlay = overlay;
10
+ this.viewContainerRef = viewContainerRef;
11
+ this.elementRef = elementRef;
12
+ this.cdr = cdr;
13
+ this.text = "";
14
+ this.side = "top";
15
+ this.className = "";
9
16
  this.open = false;
17
+ this.overlayRef = null;
10
18
  }
11
- get positionClass() {
12
- if (this.side === 'bottom')
13
- return 'top-full left-1/2 -translate-x-1/2 mt-2';
14
- if (this.side === 'left')
15
- return 'right-full top-1/2 -translate-y-1/2 mr-2';
16
- if (this.side === 'right')
17
- return 'left-full top-1/2 -translate-y-1/2 ml-2';
18
- return 'bottom-full left-1/2 -translate-x-1/2 mb-2';
19
+ ngOnDestroy() {
20
+ this.destroyOverlay();
21
+ }
22
+ onMouseEnter() {
23
+ this.show();
24
+ }
25
+ onMouseLeave() {
26
+ this.hide();
27
+ }
28
+ onFocusIn() {
29
+ this.show();
30
+ }
31
+ onFocusOut() {
32
+ this.hide();
33
+ }
34
+ show() {
35
+ if (this.open || !this.text)
36
+ return;
37
+ this.open = true;
38
+ this.cdr.markForCheck();
39
+ this.createOverlay();
40
+ }
41
+ hide() {
42
+ if (!this.open)
43
+ return;
44
+ this.open = false;
45
+ this.cdr.markForCheck();
46
+ this.destroyOverlay();
47
+ }
48
+ createOverlay() {
49
+ if (this.overlayRef)
50
+ return;
51
+ const triggerEl = this.elementRef.nativeElement.querySelector(":scope > *") ||
52
+ this.elementRef.nativeElement;
53
+ const positionStrategy = this.overlay
54
+ .position()
55
+ .flexibleConnectedTo(triggerEl)
56
+ .withPositions(this.getPositionConfigs())
57
+ .withFlexibleDimensions(false)
58
+ .withPush(true);
59
+ const panelClass = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX);
60
+ this.overlayRef = this.overlay.create({
61
+ positionStrategy,
62
+ panelClass,
63
+ });
64
+ const portal = new TemplatePortal(this.tooltipTemplate, this.viewContainerRef);
65
+ this.overlayRef.attach(portal);
66
+ }
67
+ destroyOverlay() {
68
+ if (this.overlayRef) {
69
+ this.overlayRef.detach();
70
+ this.overlayRef.dispose();
71
+ this.overlayRef = null;
72
+ }
73
+ }
74
+ getPositionConfigs() {
75
+ const offset = 4;
76
+ switch (this.side) {
77
+ case "bottom":
78
+ return [
79
+ {
80
+ originX: "center",
81
+ originY: "bottom",
82
+ overlayX: "center",
83
+ overlayY: "top",
84
+ offsetY: offset,
85
+ },
86
+ {
87
+ originX: "center",
88
+ originY: "top",
89
+ overlayX: "center",
90
+ overlayY: "bottom",
91
+ offsetY: -offset,
92
+ },
93
+ ];
94
+ case "left":
95
+ return [
96
+ {
97
+ originX: "start",
98
+ originY: "center",
99
+ overlayX: "end",
100
+ overlayY: "center",
101
+ offsetX: -offset,
102
+ },
103
+ {
104
+ originX: "end",
105
+ originY: "center",
106
+ overlayX: "start",
107
+ overlayY: "center",
108
+ offsetX: offset,
109
+ },
110
+ ];
111
+ case "right":
112
+ return [
113
+ {
114
+ originX: "end",
115
+ originY: "center",
116
+ overlayX: "start",
117
+ overlayY: "center",
118
+ offsetX: offset,
119
+ },
120
+ {
121
+ originX: "start",
122
+ originY: "center",
123
+ overlayX: "end",
124
+ overlayY: "center",
125
+ offsetX: -offset,
126
+ },
127
+ ];
128
+ case "top":
129
+ default:
130
+ return [
131
+ {
132
+ originX: "center",
133
+ originY: "top",
134
+ overlayX: "center",
135
+ overlayY: "bottom",
136
+ offsetY: -offset,
137
+ },
138
+ {
139
+ originX: "center",
140
+ originY: "bottom",
141
+ overlayX: "center",
142
+ overlayY: "top",
143
+ offsetY: offset,
144
+ },
145
+ ];
146
+ }
19
147
  }
20
148
  }
21
- PdmTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
- PdmTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmTooltipComponent, selector: "pdm-tooltip", inputs: { text: "text", side: "side", className: "className" }, ngImport: i0, template: "<span class=\"relative inline-flex\" [ngClass]=\"className\" (mouseenter)=\"open = true\" (mouseleave)=\"open = false\" (focusin)=\"open = true\" (focusout)=\"open = false\">\n <ng-content></ng-content>\n <span *ngIf=\"open\" [ngClass]=\"['pointer-events-none absolute z-[70] overflow-hidden rounded-md bg-foreground px-3 py-1.5 text-xs text-background animate-in fade-in-0 zoom-in-95', positionClass]\">\n {{ text }}\n </span>\n</span>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
149
+ PdmTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmTooltipComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
150
+ PdmTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmTooltipComponent, selector: "pdm-tooltip", inputs: { text: "text", side: "side", className: "className" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focusin": "onFocusIn()", "focusout": "onFocusOut()" } }, viewQueries: [{ propertyName: "tooltipTemplate", first: true, predicate: ["tooltipTemplate"], descendants: true }], ngImport: i0, template: "<span\n class=\"relative inline-flex\"\n [ngClass]=\"className\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n>\n <ng-content></ng-content>\n\n <!-- Template for CDK Overlay -->\n <ng-template #tooltipTemplate>\n <span\n class=\"pointer-events-none overflow-hidden rounded-md bg-foreground px-3 py-1.5 text-xs text-background animate-in fade-in-0 zoom-in-95\"\n >\n {{ text }}\n </span>\n </ng-template>\n</span>\n", styles: [":host{display:inline-flex}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmTooltipComponent, decorators: [{
24
152
  type: Component,
25
- args: [{ selector: 'pdm-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"relative inline-flex\" [ngClass]=\"className\" (mouseenter)=\"open = true\" (mouseleave)=\"open = false\" (focusin)=\"open = true\" (focusout)=\"open = false\">\n <ng-content></ng-content>\n <span *ngIf=\"open\" [ngClass]=\"['pointer-events-none absolute z-[70] overflow-hidden rounded-md bg-foreground px-3 py-1.5 text-xs text-background animate-in fade-in-0 zoom-in-95', positionClass]\">\n {{ text }}\n </span>\n</span>\n" }]
26
- }], propDecorators: { text: [{
153
+ args: [{ selector: "pdm-tooltip", changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\n class=\"relative inline-flex\"\n [ngClass]=\"className\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n>\n <ng-content></ng-content>\n\n <!-- Template for CDK Overlay -->\n <ng-template #tooltipTemplate>\n <span\n class=\"pointer-events-none overflow-hidden rounded-md bg-foreground px-3 py-1.5 text-xs text-background animate-in fade-in-0 zoom-in-95\"\n >\n {{ text }}\n </span>\n </ng-template>\n</span>\n", styles: [":host{display:inline-flex}\n"] }]
154
+ }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { text: [{
27
155
  type: Input
28
156
  }], side: [{
29
157
  type: Input
30
158
  }], className: [{
31
159
  type: Input
160
+ }], tooltipTemplate: [{
161
+ type: ViewChild,
162
+ args: ["tooltipTemplate"]
163
+ }], onMouseEnter: [{
164
+ type: HostListener,
165
+ args: ["mouseenter"]
166
+ }], onMouseLeave: [{
167
+ type: HostListener,
168
+ args: ["mouseleave"]
169
+ }], onFocusIn: [{
170
+ type: HostListener,
171
+ args: ["focusin"]
172
+ }], onFocusOut: [{
173
+ type: HostListener,
174
+ args: ["focusout"]
32
175
  }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8xRSxNQUFNLE9BQU8sbUJBQW1CO0lBTGhDO1FBTVcsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFNBQUksR0FBd0MsS0FBSyxDQUFDO1FBQ2xELGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDeEIsU0FBSSxHQUFHLEtBQUssQ0FBQztLQVFkO0lBTkMsSUFBSSxhQUFhO1FBQ2YsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLHlDQUF5QyxDQUFDO1FBQzdFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNO1lBQUUsT0FBTywwQ0FBMEMsQ0FBQztRQUM1RSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTztZQUFFLE9BQU8seUNBQXlDLENBQUM7UUFDNUUsT0FBTyw0Q0FBNEMsQ0FBQztJQUN0RCxDQUFDOztnSEFYVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixtSENQaEMsOGJBTUE7MkZEQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWEsbUJBRU4sdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLXRvb2x0aXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbVRvb2x0aXBDb21wb25lbnQge1xuICBASW5wdXQoKSB0ZXh0ID0gJyc7XG4gIEBJbnB1dCgpIHNpZGU6ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnID0gJ3RvcCc7XG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuICBvcGVuID0gZmFsc2U7XG5cbiAgZ2V0IHBvc2l0aW9uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zaWRlID09PSAnYm90dG9tJykgcmV0dXJuICd0b3AtZnVsbCBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIG10LTInO1xuICAgIGlmICh0aGlzLnNpZGUgPT09ICdsZWZ0JykgcmV0dXJuICdyaWdodC1mdWxsIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBtci0yJztcbiAgICBpZiAodGhpcy5zaWRlID09PSAncmlnaHQnKSByZXR1cm4gJ2xlZnQtZnVsbCB0b3AtMS8yIC10cmFuc2xhdGUteS0xLzIgbWwtMic7XG4gICAgcmV0dXJuICdib3R0b20tZnVsbCBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIG1iLTInO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cInJlbGF0aXZlIGlubGluZS1mbGV4XCIgW25nQ2xhc3NdPVwiY2xhc3NOYW1lXCIgKG1vdXNlZW50ZXIpPVwib3BlbiA9IHRydWVcIiAobW91c2VsZWF2ZSk9XCJvcGVuID0gZmFsc2VcIiAoZm9jdXNpbik9XCJvcGVuID0gdHJ1ZVwiIChmb2N1c291dCk9XCJvcGVuID0gZmFsc2VcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8c3BhbiAqbmdJZj1cIm9wZW5cIiBbbmdDbGFzc109XCJbJ3BvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgei1bNzBdIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJnLWZvcmVncm91bmQgcHgtMyBweS0xLjUgdGV4dC14cyB0ZXh0LWJhY2tncm91bmQgYW5pbWF0ZS1pbiBmYWRlLWluLTAgem9vbS1pbi05NScsIHBvc2l0aW9uQ2xhc3NdXCI+XG4gICAge3sgdGV4dCB9fVxuICA8L3NwYW4+XG48L3NwYW4+XG4iXX0=
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxTQUFTLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsb0JBQW9CLEdBQ3BCLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFRdEMsTUFBTSxPQUFPLG1CQUFtQjtJQVUvQixZQUNrQixPQUFnQixFQUNoQixnQkFBa0MsRUFDbEMsVUFBbUMsRUFDbkMsR0FBc0I7UUFIdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBYi9CLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixTQUFJLEdBQXdDLEtBQUssQ0FBQztRQUNsRCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBSXhCLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDTCxlQUFVLEdBQXNCLElBQUksQ0FBQztJQU8xQyxDQUFDO0lBRUosV0FBVztRQUNWLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR0QsWUFBWTtRQUNYLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFHRCxZQUFZO1FBQ1gsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2IsQ0FB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aUI7Z0JBaUI1QixZQUFZO3NCQURYLFlBQVk7dUJBQUMsWUFBWTtnQkFNMUIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLFlBQVk7Z0JBTTFCLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTO2dCQU12QixVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0Q29tcG9uZW50LFxuXHRFbGVtZW50UmVmLFxuXHRIb3N0TGlzdGVuZXIsXG5cdElucHV0LFxuXHRPbkRlc3Ryb3ksXG5cdFZpZXdDaGlsZCxcblx0Vmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYsIENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQge1xuXHRtZXJnZU92ZXJsYXlQYW5lbENsYXNzLFxuXHRPVkVSTEFZX0JBU0VfWl9JTkRFWCxcbn0gZnJvbSBcIi4uLy4uL292ZXJsYXkvei1pbmRleC1oZWxwZXJcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcInBkbS10b29sdGlwXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vdG9vbHRpcC5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZXM6IFtcIjpob3N0IHsgZGlzcGxheTogaW5saW5lLWZsZXg7IH1cIl0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQZG1Ub29sdGlwQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblx0QElucHV0KCkgdGV4dCA9IFwiXCI7XG5cdEBJbnB1dCgpIHNpZGU6IFwidG9wXCIgfCBcInJpZ2h0XCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCIgPSBcInRvcFwiO1xuXHRASW5wdXQoKSBjbGFzc05hbWUgPSBcIlwiO1xuXG5cdEBWaWV3Q2hpbGQoXCJ0b29sdGlwVGVtcGxhdGVcIikgdG9vbHRpcFRlbXBsYXRlOiBhbnk7XG5cblx0b3BlbiA9IGZhbHNlO1xuXHRwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXk6IE92ZXJsYXksXG5cdFx0cHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG5cdFx0cHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuXHQpIHt9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0dGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIilcblx0b25Nb3VzZUVudGVyKCk6IHZvaWQge1xuXHRcdHRoaXMuc2hvdygpO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIilcblx0b25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuXHRcdHRoaXMuaGlkZSgpO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcihcImZvY3VzaW5cIilcblx0b25Gb2N1c0luKCk6IHZvaWQge1xuXHRcdHRoaXMuc2hvdygpO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcihcImZvY3Vzb3V0XCIpXG5cdG9uRm9jdXNPdXQoKTogdm9pZCB7XG5cdFx0dGhpcy5oaWRlKCk7XG5cdH1cblxuXHRwcml2YXRlIHNob3coKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMub3BlbiB8fCAhdGhpcy50ZXh0KSByZXR1cm47XG5cblx0XHR0aGlzLm9wZW4gPSB0cnVlO1xuXHRcdHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXHRcdHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuXHR9XG5cblx0cHJpdmF0ZSBoaWRlKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5vcGVuKSByZXR1cm47XG5cblx0XHR0aGlzLm9wZW4gPSBmYWxzZTtcblx0XHR0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblx0XHR0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMub3ZlcmxheVJlZikgcmV0dXJuO1xuXG5cdFx0Y29uc3QgdHJpZ2dlckVsID1cblx0XHRcdHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCI6c2NvcGUgPiAqXCIpIHx8XG5cdFx0XHR0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuXHRcdGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcblx0XHRcdC5wb3NpdGlvbigpXG5cdFx0XHQuZmxleGlibGVDb25uZWN0ZWRUbyh0cmlnZ2VyRWwpXG5cdFx0XHQud2l0aFBvc2l0aW9ucyh0aGlzLmdldFBvc2l0aW9uQ29uZmlncygpKVxuXHRcdFx0LndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG5cdFx0XHQud2l0aFB1c2godHJ1ZSk7XG5cblx0XHRjb25zdCBwYW5lbENsYXNzID0gbWVyZ2VPdmVybGF5UGFuZWxDbGFzcyhPVkVSTEFZX0JBU0VfWl9JTkRFWCk7XG5cblx0XHR0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcblx0XHRcdHBvc2l0aW9uU3RyYXRlZ3ksXG5cdFx0XHRwYW5lbENsYXNzLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKFxuXHRcdFx0dGhpcy50b29sdGlwVGVtcGxhdGUsXG5cdFx0XHR0aGlzLnZpZXdDb250YWluZXJSZWYsXG5cdFx0KTtcblx0XHR0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG5cdH1cblxuXHRwcml2YXRlIGRlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcblx0XHRcdHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcblx0XHRcdHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG5cdFx0XHR0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgZ2V0UG9zaXRpb25Db25maWdzKCk6IENvbm5lY3RlZFBvc2l0aW9uW10ge1xuXHRcdGNvbnN0IG9mZnNldCA9IDQ7XG5cblx0XHRzd2l0Y2ggKHRoaXMuc2lkZSkge1xuXHRcdFx0Y2FzZSBcImJvdHRvbVwiOlxuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9yaWdpblg6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRvcmlnaW5ZOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0b3ZlcmxheVg6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRvdmVybGF5WTogXCJ0b3BcIixcblx0XHRcdFx0XHRcdG9mZnNldFk6IG9mZnNldCxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9yaWdpblg6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRvcmlnaW5ZOiBcInRvcFwiLFxuXHRcdFx0XHRcdFx0b3ZlcmxheVg6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRvdmVybGF5WTogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdG9mZnNldFk6IC1vZmZzZXQsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XTtcblx0XHRcdGNhc2UgXCJsZWZ0XCI6XG5cdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0b3JpZ2luWDogXCJzdGFydFwiLFxuXHRcdFx0XHRcdFx0b3JpZ2luWTogXCJjZW50ZXJcIixcblx0XHRcdFx0XHRcdG92ZXJsYXlYOiBcImVuZFwiLFxuXHRcdFx0XHRcdFx0b3ZlcmxheVk6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRvZmZzZXRYOiAtb2Zmc2V0LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0b3JpZ2luWDogXCJlbmRcIixcblx0XHRcdFx0XHRcdG9yaWdpblk6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRvdmVybGF5WDogXCJzdGFydFwiLFxuXHRcdFx0XHRcdFx0b3ZlcmxheVk6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRvZmZzZXRYOiBvZmZzZXQsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XTtcblx0XHRcdGNhc2UgXCJyaWdodFwiOlxuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9yaWdpblg6IFwiZW5kXCIsXG5cdFx0XHRcdFx0XHRvcmlnaW5ZOiBcImNlbnRlclwiLFxuXHRcdFx0XHRcdFx0b3ZlcmxheVg6IFwic3RhcnRcIixcblx0XHRcdFx0XHRcdG92ZXJsYXlZOiBcImNlbnRlclwiLFxuXHRcdFx0XHRcdFx0b2Zmc2V0WDogb2Zmc2V0LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0b3JpZ2luWDogXCJzdGFydFwiLFxuXHRcdFx0XHRcdFx0b3JpZ2luWTogXCJjZW50ZXJcIixcblx0XHRcdFx0XHRcdG92ZXJsYXlYOiBcImVuZFwiLFxuXHRcdFx0XHRcdFx0b3ZlcmxheVk6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRvZmZzZXRYOiAtb2Zmc2V0LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF07XG5cdFx0XHRjYXNlIFwidG9wXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9yaWdpblg6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRvcmlnaW5ZOiBcInRvcFwiLFxuXHRcdFx0XHRcdFx0b3ZlcmxheVg6IFwiY2VudGVyXCIsXG5cdFx0XHRcdFx0XHRvdmVybGF5WTogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdG9mZnNldFk6IC1vZmZzZXQsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRvcmlnaW5YOiBcImNlbnRlclwiLFxuXHRcdFx0XHRcdFx0b3JpZ2luWTogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdG92ZXJsYXlYOiBcImNlbnRlclwiLFxuXHRcdFx0XHRcdFx0b3ZlcmxheVk6IFwidG9wXCIsXG5cdFx0XHRcdFx0XHRvZmZzZXRZOiBvZmZzZXQsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XTtcblx0XHR9XG5cdH1cbn1cbiIsIjxzcGFuXG4gIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXhcIlxuICBbbmdDbGFzc109XCJjbGFzc05hbWVcIlxuICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiXG4gIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCJcbiAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcbj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gIDwhLS0gVGVtcGxhdGUgZm9yIENESyBPdmVybGF5IC0tPlxuICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBUZW1wbGF0ZT5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJwb2ludGVyLWV2ZW50cy1ub25lIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJnLWZvcmVncm91bmQgcHgtMyBweS0xLjUgdGV4dC14cyB0ZXh0LWJhY2tncm91bmQgYW5pbWF0ZS1pbiBmYWRlLWluLTAgem9vbS1pbi05NVwiXG4gICAgPlxuICAgICAge3sgdGV4dCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvc3Bhbj5cbiJdfQ==
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Z-Index helper for overlay components.
3
+ *
4
+ * CRITICAL: Consumer custom panelClass MUST NOT replace the base z-index.
5
+ * This helper ensures z-index is preserved when merging custom classes.
6
+ */
7
+ /**
8
+ * Base z-index class for overlays - MUST be included in any overlay panel.
9
+ * This ensures overlays appear above modals (z-50) and drawers (z-40).
10
+ */
11
+ export const OVERLAY_BASE_Z_INDEX = "z-[70]";
12
+ /**
13
+ * Merge consumer's panelClass with our base z-index.
14
+ * Consumer classes are APPENDED, not replacing our z-index guarantee.
15
+ *
16
+ * @param baseZIndex - Base z-index class to enforce (default: OVERLAY_BASE_Z_INDEX)
17
+ * @param consumerClasses - Optional additional classes from consumer
18
+ * @returns Array of classes safe for CDK Overlay panelClass
19
+ */
20
+ export function mergeOverlayPanelClass(baseZIndex = OVERLAY_BASE_Z_INDEX, consumerClasses) {
21
+ const baseClasses = baseZIndex.split(" ");
22
+ if (!consumerClasses) {
23
+ return baseClasses;
24
+ }
25
+ const consumerClassArray = Array.isArray(consumerClasses)
26
+ ? consumerClasses
27
+ : consumerClasses.split(" ");
28
+ // Consumer classes are appended AFTER base classes
29
+ // This ensures z-index from baseClasses is preserved first
30
+ return [...baseClasses, ...consumerClassArray];
31
+ }
32
+ /**
33
+ * Create OverlayConfig with guaranteed z-index.
34
+ * Use this instead of direct OverlayConfig to ensure z-index enforcement.
35
+ *
36
+ * @param baseConfig - Base overlay configuration
37
+ * @param consumerPanelClass - Optional consumer panelClass to merge
38
+ * @returns OverlayConfig with z-index guarantee
39
+ */
40
+ export function createZIndexEnforcedOverlay(baseConfig, consumerPanelClass) {
41
+ const mergedClasses = mergeOverlayPanelClass(OVERLAY_BASE_Z_INDEX, consumerPanelClass);
42
+ const existingPanelClass = baseConfig.panelClass;
43
+ if (existingPanelClass) {
44
+ const existingArray = Array.isArray(existingPanelClass)
45
+ ? existingPanelClass
46
+ : existingPanelClass.split(" ");
47
+ return {
48
+ ...baseConfig,
49
+ panelClass: [...mergedClasses, ...existingArray],
50
+ };
51
+ }
52
+ return {
53
+ ...baseConfig,
54
+ panelClass: mergedClasses,
55
+ };
56
+ }
57
+ /**
58
+ * Helper to extract z-index from a class string for debugging.
59
+ */
60
+ export function extractZIndex(classes) {
61
+ const classArray = Array.isArray(classes) ? classes : classes.split(" ");
62
+ for (const cls of classArray) {
63
+ if (cls.startsWith("z-") || cls.startsWith("z-[")) {
64
+ return cls;
65
+ }
66
+ }
67
+ return null;
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiei1pbmRleC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL292ZXJsYXkvei1pbmRleC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7Ozs7O0dBS0c7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQUM7QUFFN0M7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDckMsYUFBcUIsb0JBQW9CLEVBQ3pDLGVBQW1DO0lBRW5DLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFMUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtRQUNyQixPQUFPLFdBQVcsQ0FBQztLQUNuQjtJQUVELE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDeEQsQ0FBQyxDQUFDLGVBQWU7UUFDakIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUIsbURBQW1EO0lBQ25ELDJEQUEyRDtJQUMzRCxPQUFPLENBQUMsR0FBRyxXQUFXLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUMxQyxVQUF5QixFQUN6QixrQkFBc0M7SUFFdEMsTUFBTSxhQUFhLEdBQUcsc0JBQXNCLENBQzNDLG9CQUFvQixFQUNwQixrQkFBa0IsQ0FDbEIsQ0FBQztJQUVGLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztJQUVqRCxJQUFJLGtCQUFrQixFQUFFO1FBQ3ZCLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7WUFDdEQsQ0FBQyxDQUFDLGtCQUFrQjtZQUNwQixDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLE9BQU87WUFDTixHQUFHLFVBQVU7WUFDYixVQUFVLEVBQUUsQ0FBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLGFBQWEsQ0FBQztTQUNoRCxDQUFDO0tBQ0Y7SUFFRCxPQUFPO1FBQ04sR0FBRyxVQUFVO1FBQ2IsVUFBVSxFQUFFLGFBQWE7S0FDekIsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBMEI7SUFDdkQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXpFLEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO1FBQzdCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xELE9BQU8sR0FBRyxDQUFDO1NBQ1g7S0FDRDtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheUNvbmZpZyB7XG5cdHBhbmVsQ2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXTtcblx0Ly8gLi4uIG90aGVyIHByb3BlcnRpZXNcbn1cblxuLyoqXG4gKiBaLUluZGV4IGhlbHBlciBmb3Igb3ZlcmxheSBjb21wb25lbnRzLlxuICpcbiAqIENSSVRJQ0FMOiBDb25zdW1lciBjdXN0b20gcGFuZWxDbGFzcyBNVVNUIE5PVCByZXBsYWNlIHRoZSBiYXNlIHotaW5kZXguXG4gKiBUaGlzIGhlbHBlciBlbnN1cmVzIHotaW5kZXggaXMgcHJlc2VydmVkIHdoZW4gbWVyZ2luZyBjdXN0b20gY2xhc3Nlcy5cbiAqL1xuXG4vKipcbiAqIEJhc2Ugei1pbmRleCBjbGFzcyBmb3Igb3ZlcmxheXMgLSBNVVNUIGJlIGluY2x1ZGVkIGluIGFueSBvdmVybGF5IHBhbmVsLlxuICogVGhpcyBlbnN1cmVzIG92ZXJsYXlzIGFwcGVhciBhYm92ZSBtb2RhbHMgKHotNTApIGFuZCBkcmF3ZXJzICh6LTQwKS5cbiAqL1xuZXhwb3J0IGNvbnN0IE9WRVJMQVlfQkFTRV9aX0lOREVYID0gXCJ6LVs3MF1cIjtcblxuLyoqXG4gKiBNZXJnZSBjb25zdW1lcidzIHBhbmVsQ2xhc3Mgd2l0aCBvdXIgYmFzZSB6LWluZGV4LlxuICogQ29uc3VtZXIgY2xhc3NlcyBhcmUgQVBQRU5ERUQsIG5vdCByZXBsYWNpbmcgb3VyIHotaW5kZXggZ3VhcmFudGVlLlxuICpcbiAqIEBwYXJhbSBiYXNlWkluZGV4IC0gQmFzZSB6LWluZGV4IGNsYXNzIHRvIGVuZm9yY2UgKGRlZmF1bHQ6IE9WRVJMQVlfQkFTRV9aX0lOREVYKVxuICogQHBhcmFtIGNvbnN1bWVyQ2xhc3NlcyAtIE9wdGlvbmFsIGFkZGl0aW9uYWwgY2xhc3NlcyBmcm9tIGNvbnN1bWVyXG4gKiBAcmV0dXJucyBBcnJheSBvZiBjbGFzc2VzIHNhZmUgZm9yIENESyBPdmVybGF5IHBhbmVsQ2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlT3ZlcmxheVBhbmVsQ2xhc3MoXG5cdGJhc2VaSW5kZXg6IHN0cmluZyA9IE9WRVJMQVlfQkFTRV9aX0lOREVYLFxuXHRjb25zdW1lckNsYXNzZXM/OiBzdHJpbmcgfCBzdHJpbmdbXSxcbik6IHN0cmluZ1tdIHtcblx0Y29uc3QgYmFzZUNsYXNzZXMgPSBiYXNlWkluZGV4LnNwbGl0KFwiIFwiKTtcblxuXHRpZiAoIWNvbnN1bWVyQ2xhc3Nlcykge1xuXHRcdHJldHVybiBiYXNlQ2xhc3Nlcztcblx0fVxuXG5cdGNvbnN0IGNvbnN1bWVyQ2xhc3NBcnJheSA9IEFycmF5LmlzQXJyYXkoY29uc3VtZXJDbGFzc2VzKVxuXHRcdD8gY29uc3VtZXJDbGFzc2VzXG5cdFx0OiBjb25zdW1lckNsYXNzZXMuc3BsaXQoXCIgXCIpO1xuXG5cdC8vIENvbnN1bWVyIGNsYXNzZXMgYXJlIGFwcGVuZGVkIEFGVEVSIGJhc2UgY2xhc3Nlc1xuXHQvLyBUaGlzIGVuc3VyZXMgei1pbmRleCBmcm9tIGJhc2VDbGFzc2VzIGlzIHByZXNlcnZlZCBmaXJzdFxuXHRyZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAuLi5jb25zdW1lckNsYXNzQXJyYXldO1xufVxuXG4vKipcbiAqIENyZWF0ZSBPdmVybGF5Q29uZmlnIHdpdGggZ3VhcmFudGVlZCB6LWluZGV4LlxuICogVXNlIHRoaXMgaW5zdGVhZCBvZiBkaXJlY3QgT3ZlcmxheUNvbmZpZyB0byBlbnN1cmUgei1pbmRleCBlbmZvcmNlbWVudC5cbiAqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyAtIEJhc2Ugb3ZlcmxheSBjb25maWd1cmF0aW9uXG4gKiBAcGFyYW0gY29uc3VtZXJQYW5lbENsYXNzIC0gT3B0aW9uYWwgY29uc3VtZXIgcGFuZWxDbGFzcyB0byBtZXJnZVxuICogQHJldHVybnMgT3ZlcmxheUNvbmZpZyB3aXRoIHotaW5kZXggZ3VhcmFudGVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVaSW5kZXhFbmZvcmNlZE92ZXJsYXkoXG5cdGJhc2VDb25maWc6IE92ZXJsYXlDb25maWcsXG5cdGNvbnN1bWVyUGFuZWxDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdLFxuKTogT3ZlcmxheUNvbmZpZyB7XG5cdGNvbnN0IG1lcmdlZENsYXNzZXMgPSBtZXJnZU92ZXJsYXlQYW5lbENsYXNzKFxuXHRcdE9WRVJMQVlfQkFTRV9aX0lOREVYLFxuXHRcdGNvbnN1bWVyUGFuZWxDbGFzcyxcblx0KTtcblxuXHRjb25zdCBleGlzdGluZ1BhbmVsQ2xhc3MgPSBiYXNlQ29uZmlnLnBhbmVsQ2xhc3M7XG5cblx0aWYgKGV4aXN0aW5nUGFuZWxDbGFzcykge1xuXHRcdGNvbnN0IGV4aXN0aW5nQXJyYXkgPSBBcnJheS5pc0FycmF5KGV4aXN0aW5nUGFuZWxDbGFzcylcblx0XHRcdD8gZXhpc3RpbmdQYW5lbENsYXNzXG5cdFx0XHQ6IGV4aXN0aW5nUGFuZWxDbGFzcy5zcGxpdChcIiBcIik7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uYmFzZUNvbmZpZyxcblx0XHRcdHBhbmVsQ2xhc3M6IFsuLi5tZXJnZWRDbGFzc2VzLCAuLi5leGlzdGluZ0FycmF5XSxcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHQuLi5iYXNlQ29uZmlnLFxuXHRcdHBhbmVsQ2xhc3M6IG1lcmdlZENsYXNzZXMsXG5cdH07XG59XG5cbi8qKlxuICogSGVscGVyIHRvIGV4dHJhY3Qgei1pbmRleCBmcm9tIGEgY2xhc3Mgc3RyaW5nIGZvciBkZWJ1Z2dpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0WkluZGV4KGNsYXNzZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nIHwgbnVsbCB7XG5cdGNvbnN0IGNsYXNzQXJyYXkgPSBBcnJheS5pc0FycmF5KGNsYXNzZXMpID8gY2xhc3NlcyA6IGNsYXNzZXMuc3BsaXQoXCIgXCIpO1xuXG5cdGZvciAoY29uc3QgY2xzIG9mIGNsYXNzQXJyYXkpIHtcblx0XHRpZiAoY2xzLnN0YXJ0c1dpdGgoXCJ6LVwiKSB8fCBjbHMuc3RhcnRzV2l0aChcInotW1wiKSkge1xuXHRcdFx0cmV0dXJuIGNscztcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbnVsbDtcbn1cbiJdfQ==
@@ -5,15 +5,15 @@
5
5
  * 1. base (z-0) - Elementos normales del DOM
6
6
  * 2. dropdown (z-10) - Selects, combobox, date-pickers
7
7
  * 3. sticky (z-20) - Headers, navigation bars
8
- * 4. overlay (z-30) - Popovers, hover cards, context menus
8
+ * 4. drawerBackdrop (z-30) - Backdrop de drawers
9
9
  * 5. drawer (z-40) - Sidebar drawer, sheets laterales
10
- * 6. modal (z-50) - Dialogs, alert-dialogs
11
- * 7. modal-backdrop (z-40) - Backdrop de modals
12
- * 8. popover (z-60) - Tooltips, dropdowns DENTRO de modals
10
+ * 6. modalBackdrop (z-40) - Backdrop de modals ( mismo nivel que drawer)
11
+ * 7. modal (z-50) - Dialogs, alert-dialogs
12
+ * 8. popover (z-[70]) - Tooltips, dropdowns DENTRO de modals
13
13
  * 9. toast (z-[100]) - Notificaciones que deben estar sobre TODO
14
14
  *
15
15
  * REGLA CRÍTICA:
16
- * - Componentes overlay (select options, dropdown menu, tooltip) SIEMPRE z-60 o mayor
16
+ * - Componentes overlay (select options, dropdown menu, tooltip) SIEMPRE z-[70] o mayor
17
17
  * - Esto permite que funcionen DENTRO de modals (z-50)
18
18
  * - Backdrop de modal debe ser z-40 para estar DEBAJO del contenido del modal (z-50)
19
19
  */
@@ -21,57 +21,53 @@ export const Z_INDEX = {
21
21
  /**
22
22
  * Base - contenido normal del DOM
23
23
  */
24
- base: 'z-0',
24
+ base: "z-0",
25
25
  /**
26
26
  * Dropdown - Selects, combobox, date-pickers
27
- * Debe estar SOBRE contenido normal pero BAJO modals
27
+ * Debe estar SOBRE contenido normal pero BAJO overlays
28
28
  */
29
- dropdown: 'z-10',
29
+ dropdown: "z-10",
30
30
  /**
31
31
  * Sticky - Headers, navigation fija
32
32
  */
33
- sticky: 'z-20',
34
- /**
35
- * Overlay - Popovers, hover cards, context menus
36
- * Debe estar SOBRE sticky pero BAJO modals
37
- */
38
- overlay: 'z-30',
33
+ sticky: "z-20",
39
34
  /**
40
35
  * Drawer backdrop - Backdrop de sidebar drawer
41
- * Debe estar DEBAJO del drawer panel
36
+ * Debe estar DEBAJO del drawer panel y DEBAJO de modals
42
37
  */
43
- drawerBackdrop: 'z-40',
38
+ drawerBackdrop: "z-30",
44
39
  /**
45
40
  * Drawer - Sidebar drawer, sheets laterales
46
41
  * Debe estar SOBRE su backdrop pero BAJO modals
47
42
  */
48
- drawer: 'z-50',
43
+ drawer: "z-40",
49
44
  /**
50
45
  * Modal backdrop - Backdrop de dialogs
51
- * Debe estar SOBRE drawers pero DEBAJO del contenido del modal
46
+ * Mismo nivel que drawer backdrop (z-40)
52
47
  */
53
- modalBackdrop: 'z-50',
48
+ modalBackdrop: "z-40",
54
49
  /**
55
- * Modal - Dialogs, alert-dialogs, sheets
50
+ * Modal - Dialogs, alert-dialogs
56
51
  * Debe estar SOBRE su backdrop
57
52
  */
58
- modal: 'z-[60]',
53
+ modal: "z-50",
59
54
  /**
60
55
  * Popover - Tooltips, dropdowns, selects options DENTRO de modals
61
56
  * CRÍTICO: Debe ser MAYOR que modal (z-50) para aparecer sobre modals
57
+ * USAR SIEMPRE mergeOverlayPanelClass() para asegurar este valor
62
58
  */
63
- popover: 'z-[70]',
59
+ popover: "z-[70]",
64
60
  /**
65
61
  * Toast - Notificaciones globales
66
62
  * Debe estar sobre TODO
67
63
  */
68
- toast: 'z-[100]'
64
+ toast: "z-[100]",
69
65
  };
70
66
  /**
71
67
  * Helper para debugging z-index issues
72
68
  */
73
69
  export function logZIndexStack(element) {
74
- if (typeof window === 'undefined')
70
+ if (typeof window === "undefined")
75
71
  return;
76
72
  let current = element;
77
73
  const stack = [];
@@ -79,15 +75,16 @@ export function logZIndexStack(element) {
79
75
  const computed = window.getComputedStyle(current);
80
76
  const zIndex = computed.zIndex;
81
77
  const position = computed.position;
82
- if (zIndex !== 'auto') {
78
+ if (zIndex !== "auto") {
83
79
  stack.push({
84
- element: current.tagName + (current.className ? `.${current.className.split(' ')[0]}` : ''),
80
+ element: current.tagName +
81
+ (current.className ? `.${current.className.split(" ")[0]}` : ""),
85
82
  zIndex,
86
- position
83
+ position,
87
84
  });
88
85
  }
89
86
  current = current.parentElement;
90
87
  }
91
88
  console.table(stack);
92
89
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiei1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvei1pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCOztPQUVHO0lBQ0gsSUFBSSxFQUFFLEtBQUs7SUFFWDs7O09BR0c7SUFDSCxRQUFRLEVBQUUsTUFBTTtJQUVoQjs7T0FFRztJQUNILE1BQU0sRUFBRSxNQUFNO0lBRWQ7OztPQUdHO0lBQ0gsT0FBTyxFQUFFLE1BQU07SUFFZjs7O09BR0c7SUFDSCxjQUFjLEVBQUUsTUFBTTtJQUV0Qjs7O09BR0c7SUFDSCxNQUFNLEVBQUUsTUFBTTtJQUVkOzs7T0FHRztJQUNILGFBQWEsRUFBRSxNQUFNO0lBRXJCOzs7T0FHRztJQUNILEtBQUssRUFBRSxRQUFRO0lBRWY7OztPQUdHO0lBQ0gsT0FBTyxFQUFFLFFBQVE7SUFFakI7OztPQUdHO0lBQ0gsS0FBSyxFQUFFLFNBQVM7Q0FDUixDQUFDO0FBRVg7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQW9CO0lBQ2pELElBQUksT0FBTyxNQUFNLEtBQUssV0FBVztRQUFFLE9BQU87SUFFMUMsSUFBSSxPQUFPLEdBQXVCLE9BQU8sQ0FBQztJQUMxQyxNQUFNLEtBQUssR0FBaUUsRUFBRSxDQUFDO0lBRS9FLE9BQU8sT0FBTyxJQUFJLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQzNDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQy9CLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFFbkMsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO1lBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0YsTUFBTTtnQkFDTixRQUFRO2FBQ1QsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztLQUNqQztJQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogWi1JbmRleCBTY2FsZSAtIFNpc3RlbWEgY2VudHJhbGl6YWRvIGRlIHotaW5kZXhcbiAqIFxuICogSkVSQVJRVcONQSAoZGUgbWVub3IgYSBtYXlvcik6XG4gKiAxLiBiYXNlICh6LTApIC0gRWxlbWVudG9zIG5vcm1hbGVzIGRlbCBET01cbiAqIDIuIGRyb3Bkb3duICh6LTEwKSAtIFNlbGVjdHMsIGNvbWJvYm94LCBkYXRlLXBpY2tlcnNcbiAqIDMuIHN0aWNreSAoei0yMCkgLSBIZWFkZXJzLCBuYXZpZ2F0aW9uIGJhcnNcbiAqIDQuIG92ZXJsYXkgKHotMzApIC0gUG9wb3ZlcnMsIGhvdmVyIGNhcmRzLCBjb250ZXh0IG1lbnVzXG4gKiA1LiBkcmF3ZXIgKHotNDApIC0gU2lkZWJhciBkcmF3ZXIsIHNoZWV0cyBsYXRlcmFsZXNcbiAqIDYuIG1vZGFsICh6LTUwKSAtIERpYWxvZ3MsIGFsZXJ0LWRpYWxvZ3NcbiAqIDcuIG1vZGFsLWJhY2tkcm9wICh6LTQwKSAtIEJhY2tkcm9wIGRlIG1vZGFsc1xuICogOC4gcG9wb3ZlciAoei02MCkgLSBUb29sdGlwcywgZHJvcGRvd25zIERFTlRSTyBkZSBtb2RhbHNcbiAqIDkuIHRvYXN0ICh6LVsxMDBdKSAtIE5vdGlmaWNhY2lvbmVzIHF1ZSBkZWJlbiBlc3RhciBzb2JyZSBUT0RPXG4gKiBcbiAqIFJFR0xBIENSw41USUNBOiBcbiAqIC0gQ29tcG9uZW50ZXMgb3ZlcmxheSAoc2VsZWN0IG9wdGlvbnMsIGRyb3Bkb3duIG1lbnUsIHRvb2x0aXApIFNJRU1QUkUgei02MCBvIG1heW9yXG4gKiAtIEVzdG8gcGVybWl0ZSBxdWUgZnVuY2lvbmVuIERFTlRSTyBkZSBtb2RhbHMgKHotNTApXG4gKiAtIEJhY2tkcm9wIGRlIG1vZGFsIGRlYmUgc2VyIHotNDAgcGFyYSBlc3RhciBERUJBSk8gZGVsIGNvbnRlbmlkbyBkZWwgbW9kYWwgKHotNTApXG4gKi9cblxuZXhwb3J0IGNvbnN0IFpfSU5ERVggPSB7XG4gIC8qKlxuICAgKiBCYXNlIC0gY29udGVuaWRvIG5vcm1hbCBkZWwgRE9NXG4gICAqL1xuICBiYXNlOiAnei0wJyxcbiAgXG4gIC8qKlxuICAgKiBEcm9wZG93biAtIFNlbGVjdHMsIGNvbWJvYm94LCBkYXRlLXBpY2tlcnNcbiAgICogRGViZSBlc3RhciBTT0JSRSBjb250ZW5pZG8gbm9ybWFsIHBlcm8gQkFKTyBtb2RhbHNcbiAgICovXG4gIGRyb3Bkb3duOiAnei0xMCcsXG4gIFxuICAvKipcbiAgICogU3RpY2t5IC0gSGVhZGVycywgbmF2aWdhdGlvbiBmaWphXG4gICAqL1xuICBzdGlja3k6ICd6LTIwJyxcbiAgXG4gIC8qKlxuICAgKiBPdmVybGF5IC0gUG9wb3ZlcnMsIGhvdmVyIGNhcmRzLCBjb250ZXh0IG1lbnVzXG4gICAqIERlYmUgZXN0YXIgU09CUkUgc3RpY2t5IHBlcm8gQkFKTyBtb2RhbHNcbiAgICovXG4gIG92ZXJsYXk6ICd6LTMwJyxcbiAgXG4gIC8qKlxuICAgKiBEcmF3ZXIgYmFja2Ryb3AgLSBCYWNrZHJvcCBkZSBzaWRlYmFyIGRyYXdlclxuICAgKiBEZWJlIGVzdGFyIERFQkFKTyBkZWwgZHJhd2VyIHBhbmVsXG4gICAqL1xuICBkcmF3ZXJCYWNrZHJvcDogJ3otNDAnLFxuICBcbiAgLyoqXG4gICAqIERyYXdlciAtIFNpZGViYXIgZHJhd2VyLCBzaGVldHMgbGF0ZXJhbGVzXG4gICAqIERlYmUgZXN0YXIgU09CUkUgc3UgYmFja2Ryb3AgcGVybyBCQUpPIG1vZGFsc1xuICAgKi9cbiAgZHJhd2VyOiAnei01MCcsXG4gIFxuICAvKipcbiAgICogTW9kYWwgYmFja2Ryb3AgLSBCYWNrZHJvcCBkZSBkaWFsb2dzXG4gICAqIERlYmUgZXN0YXIgU09CUkUgZHJhd2VycyBwZXJvIERFQkFKTyBkZWwgY29udGVuaWRvIGRlbCBtb2RhbFxuICAgKi9cbiAgbW9kYWxCYWNrZHJvcDogJ3otNTAnLFxuICBcbiAgLyoqXG4gICAqIE1vZGFsIC0gRGlhbG9ncywgYWxlcnQtZGlhbG9ncywgc2hlZXRzXG4gICAqIERlYmUgZXN0YXIgU09CUkUgc3UgYmFja2Ryb3BcbiAgICovXG4gIG1vZGFsOiAnei1bNjBdJyxcbiAgXG4gIC8qKlxuICAgKiBQb3BvdmVyIC0gVG9vbHRpcHMsIGRyb3Bkb3ducywgc2VsZWN0cyBvcHRpb25zIERFTlRSTyBkZSBtb2RhbHNcbiAgICogQ1LDjVRJQ086IERlYmUgc2VyIE1BWU9SIHF1ZSBtb2RhbCAoei01MCkgcGFyYSBhcGFyZWNlciBzb2JyZSBtb2RhbHNcbiAgICovXG4gIHBvcG92ZXI6ICd6LVs3MF0nLFxuICBcbiAgLyoqXG4gICAqIFRvYXN0IC0gTm90aWZpY2FjaW9uZXMgZ2xvYmFsZXNcbiAgICogRGViZSBlc3RhciBzb2JyZSBUT0RPXG4gICAqL1xuICB0b2FzdDogJ3otWzEwMF0nXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIEhlbHBlciBwYXJhIGRlYnVnZ2luZyB6LWluZGV4IGlzc3Vlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nWkluZGV4U3RhY2soZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gIFxuICBsZXQgY3VycmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDtcbiAgY29uc3Qgc3RhY2s6IEFycmF5PHsgZWxlbWVudDogc3RyaW5nOyB6SW5kZXg6IHN0cmluZzsgcG9zaXRpb246IHN0cmluZyB9PiA9IFtdO1xuICBcbiAgd2hpbGUgKGN1cnJlbnQgJiYgY3VycmVudCAhPT0gZG9jdW1lbnQuYm9keSkge1xuICAgIGNvbnN0IGNvbXB1dGVkID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY3VycmVudCk7XG4gICAgY29uc3QgekluZGV4ID0gY29tcHV0ZWQuekluZGV4O1xuICAgIGNvbnN0IHBvc2l0aW9uID0gY29tcHV0ZWQucG9zaXRpb247XG4gICAgXG4gICAgaWYgKHpJbmRleCAhPT0gJ2F1dG8nKSB7XG4gICAgICBzdGFjay5wdXNoKHtcbiAgICAgICAgZWxlbWVudDogY3VycmVudC50YWdOYW1lICsgKGN1cnJlbnQuY2xhc3NOYW1lID8gYC4ke2N1cnJlbnQuY2xhc3NOYW1lLnNwbGl0KCcgJylbMF19YCA6ICcnKSxcbiAgICAgICAgekluZGV4LFxuICAgICAgICBwb3NpdGlvblxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgXG4gIGNvbnNvbGUudGFibGUoc3RhY2spO1xufVxuIl19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiei1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvei1pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3RCOztPQUVHO0lBQ0gsSUFBSSxFQUFFLEtBQUs7SUFFWDs7O09BR0c7SUFDSCxRQUFRLEVBQUUsTUFBTTtJQUVoQjs7T0FFRztJQUNILE1BQU0sRUFBRSxNQUFNO0lBRWQ7OztPQUdHO0lBQ0gsY0FBYyxFQUFFLE1BQU07SUFFdEI7OztPQUdHO0lBQ0gsTUFBTSxFQUFFLE1BQU07SUFFZDs7O09BR0c7SUFDSCxhQUFhLEVBQUUsTUFBTTtJQUVyQjs7O09BR0c7SUFDSCxLQUFLLEVBQUUsTUFBTTtJQUViOzs7O09BSUc7SUFDSCxPQUFPLEVBQUUsUUFBUTtJQUVqQjs7O09BR0c7SUFDSCxLQUFLLEVBQUUsU0FBUztDQUNQLENBQUM7QUFFWDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBb0I7SUFDbEQsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXO1FBQUUsT0FBTztJQUUxQyxJQUFJLE9BQU8sR0FBdUIsT0FBTyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUNWLEVBQUUsQ0FBQztJQUVKLE9BQU8sT0FBTyxJQUFJLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQy9CLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFFbkMsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO1lBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsT0FBTyxFQUNOLE9BQU8sQ0FBQyxPQUFPO29CQUNmLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pFLE1BQU07Z0JBQ04sUUFBUTthQUNSLENBQUMsQ0FBQztTQUNIO1FBRUQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7S0FDaEM7SUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFotSW5kZXggU2NhbGUgLSBTaXN0ZW1hIGNlbnRyYWxpemFkbyBkZSB6LWluZGV4XG4gKlxuICogSkVSQVJRVcONQSAoZGUgbWVub3IgYSBtYXlvcik6XG4gKiAxLiBiYXNlICh6LTApIC0gRWxlbWVudG9zIG5vcm1hbGVzIGRlbCBET01cbiAqIDIuIGRyb3Bkb3duICh6LTEwKSAtIFNlbGVjdHMsIGNvbWJvYm94LCBkYXRlLXBpY2tlcnNcbiAqIDMuIHN0aWNreSAoei0yMCkgLSBIZWFkZXJzLCBuYXZpZ2F0aW9uIGJhcnNcbiAqIDQuIGRyYXdlckJhY2tkcm9wICh6LTMwKSAtIEJhY2tkcm9wIGRlIGRyYXdlcnNcbiAqIDUuIGRyYXdlciAoei00MCkgLSBTaWRlYmFyIGRyYXdlciwgc2hlZXRzIGxhdGVyYWxlc1xuICogNi4gbW9kYWxCYWNrZHJvcCAoei00MCkgLSBCYWNrZHJvcCBkZSBtb2RhbHMgKCBtaXNtbyBuaXZlbCBxdWUgZHJhd2VyKVxuICogNy4gbW9kYWwgKHotNTApIC0gRGlhbG9ncywgYWxlcnQtZGlhbG9nc1xuICogOC4gcG9wb3ZlciAoei1bNzBdKSAtIFRvb2x0aXBzLCBkcm9wZG93bnMgREVOVFJPIGRlIG1vZGFsc1xuICogOS4gdG9hc3QgKHotWzEwMF0pIC0gTm90aWZpY2FjaW9uZXMgcXVlIGRlYmVuIGVzdGFyIHNvYnJlIFRPRE9cbiAqXG4gKiBSRUdMQSBDUsONVElDQTpcbiAqIC0gQ29tcG9uZW50ZXMgb3ZlcmxheSAoc2VsZWN0IG9wdGlvbnMsIGRyb3Bkb3duIG1lbnUsIHRvb2x0aXApIFNJRU1QUkUgei1bNzBdIG8gbWF5b3JcbiAqIC0gRXN0byBwZXJtaXRlIHF1ZSBmdW5jaW9uZW4gREVOVFJPIGRlIG1vZGFscyAoei01MClcbiAqIC0gQmFja2Ryb3AgZGUgbW9kYWwgZGViZSBzZXIgei00MCBwYXJhIGVzdGFyIERFQkFKTyBkZWwgY29udGVuaWRvIGRlbCBtb2RhbCAoei01MClcbiAqL1xuXG5leHBvcnQgY29uc3QgWl9JTkRFWCA9IHtcblx0LyoqXG5cdCAqIEJhc2UgLSBjb250ZW5pZG8gbm9ybWFsIGRlbCBET01cblx0ICovXG5cdGJhc2U6IFwiei0wXCIsXG5cblx0LyoqXG5cdCAqIERyb3Bkb3duIC0gU2VsZWN0cywgY29tYm9ib3gsIGRhdGUtcGlja2Vyc1xuXHQgKiBEZWJlIGVzdGFyIFNPQlJFIGNvbnRlbmlkbyBub3JtYWwgcGVybyBCQUpPIG92ZXJsYXlzXG5cdCAqL1xuXHRkcm9wZG93bjogXCJ6LTEwXCIsXG5cblx0LyoqXG5cdCAqIFN0aWNreSAtIEhlYWRlcnMsIG5hdmlnYXRpb24gZmlqYVxuXHQgKi9cblx0c3RpY2t5OiBcInotMjBcIixcblxuXHQvKipcblx0ICogRHJhd2VyIGJhY2tkcm9wIC0gQmFja2Ryb3AgZGUgc2lkZWJhciBkcmF3ZXJcblx0ICogRGViZSBlc3RhciBERUJBSk8gZGVsIGRyYXdlciBwYW5lbCB5IERFQkFKTyBkZSBtb2RhbHNcblx0ICovXG5cdGRyYXdlckJhY2tkcm9wOiBcInotMzBcIixcblxuXHQvKipcblx0ICogRHJhd2VyIC0gU2lkZWJhciBkcmF3ZXIsIHNoZWV0cyBsYXRlcmFsZXNcblx0ICogRGViZSBlc3RhciBTT0JSRSBzdSBiYWNrZHJvcCBwZXJvIEJBSk8gbW9kYWxzXG5cdCAqL1xuXHRkcmF3ZXI6IFwiei00MFwiLFxuXG5cdC8qKlxuXHQgKiBNb2RhbCBiYWNrZHJvcCAtIEJhY2tkcm9wIGRlIGRpYWxvZ3Ncblx0ICogTWlzbW8gbml2ZWwgcXVlIGRyYXdlciBiYWNrZHJvcCAoei00MClcblx0ICovXG5cdG1vZGFsQmFja2Ryb3A6IFwiei00MFwiLFxuXG5cdC8qKlxuXHQgKiBNb2RhbCAtIERpYWxvZ3MsIGFsZXJ0LWRpYWxvZ3Ncblx0ICogRGViZSBlc3RhciBTT0JSRSBzdSBiYWNrZHJvcFxuXHQgKi9cblx0bW9kYWw6IFwiei01MFwiLFxuXG5cdC8qKlxuXHQgKiBQb3BvdmVyIC0gVG9vbHRpcHMsIGRyb3Bkb3ducywgc2VsZWN0cyBvcHRpb25zIERFTlRSTyBkZSBtb2RhbHNcblx0ICogQ1LDjVRJQ086IERlYmUgc2VyIE1BWU9SIHF1ZSBtb2RhbCAoei01MCkgcGFyYSBhcGFyZWNlciBzb2JyZSBtb2RhbHNcblx0ICogVVNBUiBTSUVNUFJFIG1lcmdlT3ZlcmxheVBhbmVsQ2xhc3MoKSBwYXJhIGFzZWd1cmFyIGVzdGUgdmFsb3Jcblx0ICovXG5cdHBvcG92ZXI6IFwiei1bNzBdXCIsXG5cblx0LyoqXG5cdCAqIFRvYXN0IC0gTm90aWZpY2FjaW9uZXMgZ2xvYmFsZXNcblx0ICogRGViZSBlc3RhciBzb2JyZSBUT0RPXG5cdCAqL1xuXHR0b2FzdDogXCJ6LVsxMDBdXCIsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIEhlbHBlciBwYXJhIGRlYnVnZ2luZyB6LWluZGV4IGlzc3Vlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nWkluZGV4U3RhY2soZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcblxuXHRsZXQgY3VycmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDtcblx0Y29uc3Qgc3RhY2s6IEFycmF5PHsgZWxlbWVudDogc3RyaW5nOyB6SW5kZXg6IHN0cmluZzsgcG9zaXRpb246IHN0cmluZyB9PiA9XG5cdFx0W107XG5cblx0d2hpbGUgKGN1cnJlbnQgJiYgY3VycmVudCAhPT0gZG9jdW1lbnQuYm9keSkge1xuXHRcdGNvbnN0IGNvbXB1dGVkID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY3VycmVudCk7XG5cdFx0Y29uc3QgekluZGV4ID0gY29tcHV0ZWQuekluZGV4O1xuXHRcdGNvbnN0IHBvc2l0aW9uID0gY29tcHV0ZWQucG9zaXRpb247XG5cblx0XHRpZiAoekluZGV4ICE9PSBcImF1dG9cIikge1xuXHRcdFx0c3RhY2sucHVzaCh7XG5cdFx0XHRcdGVsZW1lbnQ6XG5cdFx0XHRcdFx0Y3VycmVudC50YWdOYW1lICtcblx0XHRcdFx0XHQoY3VycmVudC5jbGFzc05hbWUgPyBgLiR7Y3VycmVudC5jbGFzc05hbWUuc3BsaXQoXCIgXCIpWzBdfWAgOiBcIlwiKSxcblx0XHRcdFx0ekluZGV4LFxuXHRcdFx0XHRwb3NpdGlvbixcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudEVsZW1lbnQ7XG5cdH1cblxuXHRjb25zb2xlLnRhYmxlKHN0YWNrKTtcbn1cbiJdfQ==