cloud-ide-element 1.0.2 → 1.0.5

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 (54) hide show
  1. package/README.md +63 -271
  2. package/fesm2022/cloud-ide-element.mjs +614 -618
  3. package/fesm2022/cloud-ide-element.mjs.map +1 -1
  4. package/index.d.ts +1362 -3
  5. package/package.json +4 -31
  6. package/esm2022/cloud-ide-element.mjs +0 -5
  7. package/esm2022/lib/components/confirmation-modal/confirmation-modal.component.mjs +0 -182
  8. package/esm2022/lib/components/data-grid/data-grid.component.mjs +0 -1363
  9. package/esm2022/lib/components/data-grid/data-grid.types.mjs +0 -37
  10. package/esm2022/lib/components/dropdown/dropdown.component.mjs +0 -396
  11. package/esm2022/lib/components/global-notifications/global-notifications.component.mjs +0 -30
  12. package/esm2022/lib/components/json-editor/json-editor.component.mjs +0 -521
  13. package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +0 -33
  14. package/esm2022/lib/components/toast-notification/toast-notification.component.mjs +0 -152
  15. package/esm2022/lib/elements/button/cide-ele-button.component.mjs +0 -249
  16. package/esm2022/lib/elements/file-input/file-input.component.mjs +0 -83
  17. package/esm2022/lib/elements/icon/icon.component.mjs +0 -26
  18. package/esm2022/lib/elements/input/input.component.mjs +0 -467
  19. package/esm2022/lib/elements/select/select.component.mjs +0 -471
  20. package/esm2022/lib/elements/spinner/spinner.component.mjs +0 -32
  21. package/esm2022/lib/elements/tab/cide-ele-tab.component.mjs +0 -74
  22. package/esm2022/lib/elements/textarea/textarea.component.mjs +0 -157
  23. package/esm2022/lib/services/confirmation.service.mjs +0 -151
  24. package/esm2022/lib/services/dropdown-manager.service.mjs +0 -93
  25. package/esm2022/lib/services/notification.service.mjs +0 -196
  26. package/esm2022/lib/utils/directives/resizer/resizer.directive.mjs +0 -231
  27. package/esm2022/lib/utils/directives/tooltip/tooltip.directive.mjs +0 -294
  28. package/esm2022/lib/utils/pipes/capitalize/capitalize.pipe.mjs +0 -38
  29. package/esm2022/lib/utils/services/elements/elements.service.mjs +0 -39
  30. package/esm2022/public-api.mjs +0 -31
  31. package/lib/components/confirmation-modal/confirmation-modal.component.d.ts +0 -16
  32. package/lib/components/data-grid/data-grid.component.d.ts +0 -244
  33. package/lib/components/data-grid/data-grid.types.d.ts +0 -146
  34. package/lib/components/dropdown/dropdown.component.d.ts +0 -75
  35. package/lib/components/global-notifications/global-notifications.component.d.ts +0 -5
  36. package/lib/components/json-editor/json-editor.component.d.ts +0 -116
  37. package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +0 -11
  38. package/lib/components/toast-notification/toast-notification.component.d.ts +0 -13
  39. package/lib/elements/button/cide-ele-button.component.d.ts +0 -85
  40. package/lib/elements/file-input/file-input.component.d.ts +0 -25
  41. package/lib/elements/icon/icon.component.d.ts +0 -9
  42. package/lib/elements/input/input.component.d.ts +0 -182
  43. package/lib/elements/select/select.component.d.ts +0 -91
  44. package/lib/elements/spinner/spinner.component.d.ts +0 -19
  45. package/lib/elements/tab/cide-ele-tab.component.d.ts +0 -26
  46. package/lib/elements/textarea/textarea.component.d.ts +0 -47
  47. package/lib/services/confirmation.service.d.ts +0 -65
  48. package/lib/services/dropdown-manager.service.d.ts +0 -22
  49. package/lib/services/notification.service.d.ts +0 -81
  50. package/lib/utils/directives/resizer/resizer.directive.d.ts +0 -44
  51. package/lib/utils/directives/tooltip/tooltip.directive.d.ts +0 -43
  52. package/lib/utils/pipes/capitalize/capitalize.pipe.d.ts +0 -7
  53. package/lib/utils/services/elements/elements.service.d.ts +0 -12
  54. package/public-api.d.ts +0 -22
@@ -1,32 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, Input } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- export class CideSpinnerComponent {
6
- constructor() {
7
- /**
8
- * @description
9
- * Holds the size of the component like Small, Extra small, Large
10
- * by Default it takes small size
11
- * or the size set by the project setup service
12
- * or it will beset for individual component
13
- *
14
- * Size Appled
15
- * Component level then setup service then finally default md
16
- * Options: "xs" | "sm" | "md" | "lg" | "xl" | "xxl"
17
- */
18
- this.size = "sm";
19
- this.type = "pill-spinner";
20
- }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CideSpinnerComponent, isStandalone: true, selector: "cide-ele-spinner", inputs: { size: "size", type: "type" }, ngImport: i0, template: "@if (type === \"spinner\") {\r\n<svg class=\"cide-spinner tw-m-auto\"\r\n [ngClass]=\"{'tw-max-w-6 tw-p-1': (size === 'xs'), 'tw-max-w-10 tw-p-2': (size === 'sm')}\" viewBox=\"0 0 24 24\">\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n</svg>\r\n}\r\n@else {\r\n<div class=\"cide-pill-loader tw-select-none\" [ngClass]=\"{'tw-h-4': (size === 'xs')}\">\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n</div>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideSpinnerComponent, decorators: [{
25
- type: Component,
26
- args: [{ selector: 'cide-ele-spinner', standalone: true, imports: [CommonModule], template: "@if (type === \"spinner\") {\r\n<svg class=\"cide-spinner tw-m-auto\"\r\n [ngClass]=\"{'tw-max-w-6 tw-p-1': (size === 'xs'), 'tw-max-w-10 tw-p-2': (size === 'sm')}\" viewBox=\"0 0 24 24\">\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n <circle class=\"cide-spinner__value\" cx=\"12\" cy=\"12\" r=\"10\" />\r\n</svg>\r\n}\r\n@else {\r\n<div class=\"cide-pill-loader tw-select-none\" [ngClass]=\"{'tw-h-4': (size === 'xs')}\">\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n <div class=\"cide-pill\" [ngClass]=\"{'tw-w-1 cide-pill-xs': (size === 'xs')}\"></div>\r\n</div>\r\n}" }]
27
- }], propDecorators: { size: [{
28
- type: Input
29
- }], type: [{
30
- type: Input
31
- }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVVqRCxNQUFNLE9BQU8sb0JBQW9CO0lBUGpDO1FBUUU7Ozs7Ozs7Ozs7V0FVRztRQUNNLFNBQUksR0FBYyxJQUFJLENBQUM7UUFDdkIsU0FBSSxHQUFnQixjQUFjLENBQUM7S0FDN0M7OEdBZFksb0JBQW9CO2tHQUFwQixvQkFBb0Isb0hDWGpDLDZvQ0FrQkMseUREWFcsWUFBWTs7MkZBSVgsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7OEJBZ0JkLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHNwaW5uZXJUeXBlLCB0aGVtZVNpemUgfSBmcm9tICdjbG91ZC1pZGUtbG1zLW1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2lkZS1lbGUtc3Bpbm5lcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3Bpbm5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NwaW5uZXIuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaWRlU3Bpbm5lckNvbXBvbmVudCB7XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogSG9sZHMgdGhlIHNpemUgb2YgdGhlIGNvbXBvbmVudCBsaWtlIFNtYWxsLCBFeHRyYSBzbWFsbCwgTGFyZ2VcclxuICAgKiBieSBEZWZhdWx0IGl0IHRha2VzIHNtYWxsIHNpemVcclxuICAgKiBvciB0aGUgc2l6ZSBzZXQgYnkgdGhlIHByb2plY3Qgc2V0dXAgc2VydmljZVxyXG4gICAqIG9yIGl0IHdpbGwgYmVzZXQgZm9yIGluZGl2aWR1YWwgY29tcG9uZW50XHJcbiAgICogXHJcbiAgICogU2l6ZSBBcHBsZWQgXHJcbiAgICogQ29tcG9uZW50IGxldmVsIHRoZW4gc2V0dXAgc2VydmljZSB0aGVuIGZpbmFsbHkgZGVmYXVsdCBtZFxyXG4gICAqICBPcHRpb25zOiBcInhzXCIgfCBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgfCBcInhsXCIgfCBcInh4bFwiIFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNpemU6IHRoZW1lU2l6ZSA9IFwic21cIjtcclxuICBASW5wdXQoKSB0eXBlOiBzcGlubmVyVHlwZSA9IFwicGlsbC1zcGlubmVyXCI7XHJcbn1cclxuIiwiQGlmICh0eXBlID09PSBcInNwaW5uZXJcIikge1xyXG48c3ZnIGNsYXNzPVwiY2lkZS1zcGlubmVyIHR3LW0tYXV0b1wiXHJcbiAgICBbbmdDbGFzc109XCJ7J3R3LW1heC13LTYgdHctcC0xJzogKHNpemUgPT09ICd4cycpLCAndHctbWF4LXctMTAgdHctcC0yJzogKHNpemUgPT09ICdzbScpfVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cclxuICAgIDxjaXJjbGUgY2xhc3M9XCJjaWRlLXNwaW5uZXJfX3ZhbHVlXCIgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiAvPlxyXG4gICAgPGNpcmNsZSBjbGFzcz1cImNpZGUtc3Bpbm5lcl9fdmFsdWVcIiBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIC8+XHJcbiAgICA8Y2lyY2xlIGNsYXNzPVwiY2lkZS1zcGlubmVyX192YWx1ZVwiIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgLz5cclxuICAgIDxjaXJjbGUgY2xhc3M9XCJjaWRlLXNwaW5uZXJfX3ZhbHVlXCIgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiAvPlxyXG4gICAgPGNpcmNsZSBjbGFzcz1cImNpZGUtc3Bpbm5lcl9fdmFsdWVcIiBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIC8+XHJcbiAgICA8Y2lyY2xlIGNsYXNzPVwiY2lkZS1zcGlubmVyX192YWx1ZVwiIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgLz5cclxuPC9zdmc+XHJcbn1cclxuQGVsc2Uge1xyXG48ZGl2IGNsYXNzPVwiY2lkZS1waWxsLWxvYWRlciB0dy1zZWxlY3Qtbm9uZVwiIFtuZ0NsYXNzXT1cInsndHctaC00JzogKHNpemUgPT09ICd4cycpfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNpZGUtcGlsbFwiIFtuZ0NsYXNzXT1cInsndHctdy0xIGNpZGUtcGlsbC14cyc6IChzaXplID09PSAneHMnKX1cIj48L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjaWRlLXBpbGxcIiBbbmdDbGFzc109XCJ7J3R3LXctMSBjaWRlLXBpbGwteHMnOiAoc2l6ZSA9PT0gJ3hzJyl9XCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2lkZS1waWxsXCIgW25nQ2xhc3NdPVwieyd0dy13LTEgY2lkZS1waWxsLXhzJzogKHNpemUgPT09ICd4cycpfVwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNpZGUtcGlsbFwiIFtuZ0NsYXNzXT1cInsndHctdy0xIGNpZGUtcGlsbC14cyc6IChzaXplID09PSAneHMnKX1cIj48L2Rpdj5cclxuPC9kaXY+XHJcbn0iXX0=
@@ -1,74 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, signal } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from "@angular/core";
4
- export class CideEleTabComponent {
5
- constructor() {
6
- this.tabs = [];
7
- this.size = 'md';
8
- this.variant = 'default';
9
- this.fullWidth = false;
10
- this.disabled = false;
11
- this.tabChange = new EventEmitter();
12
- this.activeTab = signal('');
13
- }
14
- ngOnInit() {
15
- // Set initial active tab
16
- if (this.activeTabId) {
17
- this.activeTab.set(this.activeTabId);
18
- }
19
- else if (this.tabs.length > 0) {
20
- const firstEnabledTab = this.tabs.find(tab => !tab.disabled);
21
- if (firstEnabledTab) {
22
- this.activeTab.set(firstEnabledTab.id);
23
- }
24
- }
25
- }
26
- onTabClick(tab) {
27
- if (tab.disabled || this.disabled)
28
- return;
29
- this.activeTab.set(tab.id);
30
- this.tabChange.emit(tab);
31
- }
32
- isActive(tabId) {
33
- return this.activeTab() === tabId;
34
- }
35
- getTabClasses(tab) {
36
- const baseClasses = 'cide-tab-item';
37
- const sizeClass = `cide-tab-${this.size}`;
38
- const variantClass = `cide-tab-${this.variant}`;
39
- const activeClass = this.isActive(tab.id) ? 'cide-tab-active' : '';
40
- const disabledClass = (tab.disabled || this.disabled) ? 'cide-tab-disabled' : '';
41
- return [baseClasses, sizeClass, variantClass, activeClass, disabledClass]
42
- .filter(Boolean)
43
- .join(' ');
44
- }
45
- getContainerClasses() {
46
- const baseClasses = 'cide-tab-container';
47
- const variantClass = `cide-tab-container-${this.variant}`;
48
- const fullWidthClass = this.fullWidth ? 'cide-tab-full-width' : '';
49
- return [baseClasses, variantClass, fullWidthClass]
50
- .filter(Boolean)
51
- .join(' ');
52
- }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideEleTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CideEleTabComponent, isStandalone: true, selector: "cide-ele-tab", inputs: { tabs: "tabs", activeTabId: "activeTabId", size: "size", variant: "variant", fullWidth: "fullWidth", disabled: "disabled" }, outputs: { tabChange: "tabChange" }, ngImport: i0, template: "<div [class]=\"getContainerClasses()\">\r\n @for (tab of tabs; track tab.id) {\r\n <button\r\n type=\"button\"\r\n [class]=\"getTabClasses(tab)\"\r\n [disabled]=\"tab.disabled || disabled\"\r\n (click)=\"onTabClick(tab)\"\r\n [attr.aria-selected]=\"isActive(tab.id)\"\r\n [attr.aria-controls]=\"'panel-' + tab.id\"\r\n role=\"tab\">\r\n \r\n @if (tab.icon) {\r\n <span class=\"cide-tab-icon\">{{ tab.icon }}</span>\r\n }\r\n \r\n <span class=\"cide-tab-label\">{{ tab.label }}</span>\r\n \r\n @if (tab.badge) {\r\n <span class=\"cide-tab-badge\">{{ tab.badge }}</span>\r\n }\r\n </button>\r\n }\r\n</div> ", styles: [".cide-tab-container{display:flex;border-bottom:1px solid #e5e7eb;overflow-x:auto;scrollbar-width:none}.cide-tab-container::-webkit-scrollbar{display:none}.cide-tab-container.cide-tab-full-width .cide-tab-item{flex:1}.cide-tab-container.cide-tab-container-pills{border-bottom:none;gap:.25rem;padding:.25rem;background:#f9fafb;border-radius:.375rem}.cide-tab-container.cide-tab-container-underline{border-bottom:2px solid #e5e7eb}.cide-tab-item{display:inline-flex;align-items:center;gap:.375rem;border:none;background:none;cursor:pointer;transition:all .15s ease;font-weight:500;color:#6b7280;white-space:nowrap;outline:none}.cide-tab-item:hover:not(.cide-tab-disabled){color:#374151}.cide-tab-item:focus-visible{outline:2px solid var(--cide-theme-primary-color);outline-offset:2px}.cide-tab-item.cide-tab-active{color:var(--cide-theme-primary-color)}.cide-tab-item.cide-tab-disabled{opacity:.5;cursor:not-allowed}.cide-tab-sm{padding:.375rem .75rem;font-size:.875rem}.cide-tab-sm .cide-tab-icon{font-size:.75rem}.cide-tab-sm .cide-tab-badge{font-size:.625rem;padding:.125rem .375rem}.cide-tab-md{padding:.5rem 1rem;font-size:.875rem}.cide-tab-md .cide-tab-icon{font-size:.875rem}.cide-tab-md .cide-tab-badge{font-size:.75rem;padding:.125rem .5rem}.cide-tab-lg{padding:.75rem 1.25rem;font-size:1rem}.cide-tab-lg .cide-tab-icon{font-size:1rem}.cide-tab-lg .cide-tab-badge{font-size:.75rem;padding:.25rem .5rem}.cide-tab-default{border-bottom:2px solid transparent}.cide-tab-default.cide-tab-active{border-bottom-color:var(--cide-theme-primary-color)}.cide-tab-pills{border-radius:.25rem}.cide-tab-pills:hover:not(.cide-tab-disabled){background:#f3f4f6}.cide-tab-pills.cide-tab-active{background:#fff;color:#374151;box-shadow:0 1px 2px #0000000d}.cide-tab-underline{border-bottom:2px solid transparent;position:relative}.cide-tab-underline.cide-tab-active:after{content:\"\";position:absolute;bottom:-2px;left:0;right:0;height:2px;background:var(--cide-theme-primary-color);border-radius:1px 1px 0 0}.cide-tab-icon{display:inline-flex;align-items:center;flex-shrink:0}.cide-tab-label{display:inline-flex;align-items:center}.cide-tab-badge{display:inline-flex;align-items:center;justify-content:center;background:#dc2626;color:#fff;border-radius:9999px;font-weight:600;min-width:1.25rem;height:1.25rem;line-height:1}.cide-tab-active .cide-tab-badge{background:var(--cide-theme-primary-color)}@media (max-width: 640px){.cide-tab-container{gap:0}.cide-tab-item .cide-tab-label{display:none}.cide-tab-item:not(:has(.cide-tab-icon)) .cide-tab-label{display:inline-flex}.cide-tab-sm{padding:.25rem .5rem}.cide-tab-md{padding:.375rem .75rem}.cide-tab-lg{padding:.5rem 1rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
55
- }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideEleTabComponent, decorators: [{
57
- type: Component,
58
- args: [{ selector: 'cide-ele-tab', standalone: true, imports: [CommonModule], template: "<div [class]=\"getContainerClasses()\">\r\n @for (tab of tabs; track tab.id) {\r\n <button\r\n type=\"button\"\r\n [class]=\"getTabClasses(tab)\"\r\n [disabled]=\"tab.disabled || disabled\"\r\n (click)=\"onTabClick(tab)\"\r\n [attr.aria-selected]=\"isActive(tab.id)\"\r\n [attr.aria-controls]=\"'panel-' + tab.id\"\r\n role=\"tab\">\r\n \r\n @if (tab.icon) {\r\n <span class=\"cide-tab-icon\">{{ tab.icon }}</span>\r\n }\r\n \r\n <span class=\"cide-tab-label\">{{ tab.label }}</span>\r\n \r\n @if (tab.badge) {\r\n <span class=\"cide-tab-badge\">{{ tab.badge }}</span>\r\n }\r\n </button>\r\n }\r\n</div> ", styles: [".cide-tab-container{display:flex;border-bottom:1px solid #e5e7eb;overflow-x:auto;scrollbar-width:none}.cide-tab-container::-webkit-scrollbar{display:none}.cide-tab-container.cide-tab-full-width .cide-tab-item{flex:1}.cide-tab-container.cide-tab-container-pills{border-bottom:none;gap:.25rem;padding:.25rem;background:#f9fafb;border-radius:.375rem}.cide-tab-container.cide-tab-container-underline{border-bottom:2px solid #e5e7eb}.cide-tab-item{display:inline-flex;align-items:center;gap:.375rem;border:none;background:none;cursor:pointer;transition:all .15s ease;font-weight:500;color:#6b7280;white-space:nowrap;outline:none}.cide-tab-item:hover:not(.cide-tab-disabled){color:#374151}.cide-tab-item:focus-visible{outline:2px solid var(--cide-theme-primary-color);outline-offset:2px}.cide-tab-item.cide-tab-active{color:var(--cide-theme-primary-color)}.cide-tab-item.cide-tab-disabled{opacity:.5;cursor:not-allowed}.cide-tab-sm{padding:.375rem .75rem;font-size:.875rem}.cide-tab-sm .cide-tab-icon{font-size:.75rem}.cide-tab-sm .cide-tab-badge{font-size:.625rem;padding:.125rem .375rem}.cide-tab-md{padding:.5rem 1rem;font-size:.875rem}.cide-tab-md .cide-tab-icon{font-size:.875rem}.cide-tab-md .cide-tab-badge{font-size:.75rem;padding:.125rem .5rem}.cide-tab-lg{padding:.75rem 1.25rem;font-size:1rem}.cide-tab-lg .cide-tab-icon{font-size:1rem}.cide-tab-lg .cide-tab-badge{font-size:.75rem;padding:.25rem .5rem}.cide-tab-default{border-bottom:2px solid transparent}.cide-tab-default.cide-tab-active{border-bottom-color:var(--cide-theme-primary-color)}.cide-tab-pills{border-radius:.25rem}.cide-tab-pills:hover:not(.cide-tab-disabled){background:#f3f4f6}.cide-tab-pills.cide-tab-active{background:#fff;color:#374151;box-shadow:0 1px 2px #0000000d}.cide-tab-underline{border-bottom:2px solid transparent;position:relative}.cide-tab-underline.cide-tab-active:after{content:\"\";position:absolute;bottom:-2px;left:0;right:0;height:2px;background:var(--cide-theme-primary-color);border-radius:1px 1px 0 0}.cide-tab-icon{display:inline-flex;align-items:center;flex-shrink:0}.cide-tab-label{display:inline-flex;align-items:center}.cide-tab-badge{display:inline-flex;align-items:center;justify-content:center;background:#dc2626;color:#fff;border-radius:9999px;font-weight:600;min-width:1.25rem;height:1.25rem;line-height:1}.cide-tab-active .cide-tab-badge{background:var(--cide-theme-primary-color)}@media (max-width: 640px){.cide-tab-container{gap:0}.cide-tab-item .cide-tab-label{display:none}.cide-tab-item:not(:has(.cide-tab-icon)) .cide-tab-label{display:inline-flex}.cide-tab-sm{padding:.25rem .5rem}.cide-tab-md{padding:.375rem .75rem}.cide-tab-lg{padding:.5rem 1rem}}\n"] }]
59
- }], propDecorators: { tabs: [{
60
- type: Input
61
- }], activeTabId: [{
62
- type: Input
63
- }], size: [{
64
- type: Input
65
- }], variant: [{
66
- type: Input
67
- }], fullWidth: [{
68
- type: Input
69
- }], disabled: [{
70
- type: Input
71
- }], tabChange: [{
72
- type: Output
73
- }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lkZS1lbGUtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1lbGVtZW50L3NyYy9saWIvZWxlbWVudHMvdGFiL2NpZGUtZWxlLXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL3RhYi9jaWRlLWVsZS10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWlCL0MsTUFBTSxPQUFPLG1CQUFtQjtJQVBoQztRQVFXLFNBQUksR0FBYyxFQUFFLENBQUM7UUFFckIsU0FBSSxHQUF1QixJQUFJLENBQUM7UUFDaEMsWUFBTyxHQUFzQyxTQUFTLENBQUM7UUFDdkQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRWxELGNBQVMsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7S0E4Q2hDO0lBNUNDLFFBQVE7UUFDTix5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0QsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFZO1FBQ3JCLElBQUksR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFZO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxZQUFZLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFlBQVksR0FBRyxZQUFZLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRSxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRWpGLE9BQU8sQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDO2FBQ3RFLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVuRSxPQUFPLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLENBQUM7YUFDL0MsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNmLENBQUM7OEdBdkRVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLG1QQ2xCaEMsZ3NCQXNCTyxtcUZEUkssWUFBWTs7MkZBSVgsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7OEJBS2QsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBzaWduYWwsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJJdGVtIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgYmFkZ2U/OiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2lkZS1lbGUtdGFiJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaWRlLWVsZS10YWIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NpZGUtZWxlLXRhYi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaWRlRWxlVGFiQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB0YWJzOiBUYWJJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKSBhY3RpdmVUYWJJZD86IHN0cmluZztcclxuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJyB8ICdsZycgPSAnbWQnO1xyXG4gIEBJbnB1dCgpIHZhcmlhbnQ6ICdkZWZhdWx0JyB8ICdwaWxscycgfCAndW5kZXJsaW5lJyA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBmdWxsV2lkdGggPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJJdGVtPigpO1xyXG5cclxuICBhY3RpdmVUYWIgPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gU2V0IGluaXRpYWwgYWN0aXZlIHRhYlxyXG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiSWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIuc2V0KHRoaXMuYWN0aXZlVGFiSWQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmaXJzdEVuYWJsZWRUYWIgPSB0aGlzLnRhYnMuZmluZCh0YWIgPT4gIXRhYi5kaXNhYmxlZCk7XHJcbiAgICAgIGlmIChmaXJzdEVuYWJsZWRUYWIpIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZVRhYi5zZXQoZmlyc3RFbmFibGVkVGFiLmlkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25UYWJDbGljayh0YWI6IFRhYkl0ZW0pIHtcclxuICAgIGlmICh0YWIuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgXHJcbiAgICB0aGlzLmFjdGl2ZVRhYi5zZXQodGFiLmlkKTtcclxuICAgIHRoaXMudGFiQ2hhbmdlLmVtaXQodGFiKTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKHRhYklkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVRhYigpID09PSB0YWJJZDtcclxuICB9XHJcblxyXG4gIGdldFRhYkNsYXNzZXModGFiOiBUYWJJdGVtKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gJ2NpZGUtdGFiLWl0ZW0nO1xyXG4gICAgY29uc3Qgc2l6ZUNsYXNzID0gYGNpZGUtdGFiLSR7dGhpcy5zaXplfWA7XHJcbiAgICBjb25zdCB2YXJpYW50Q2xhc3MgPSBgY2lkZS10YWItJHt0aGlzLnZhcmlhbnR9YDtcclxuICAgIGNvbnN0IGFjdGl2ZUNsYXNzID0gdGhpcy5pc0FjdGl2ZSh0YWIuaWQpID8gJ2NpZGUtdGFiLWFjdGl2ZScgOiAnJztcclxuICAgIGNvbnN0IGRpc2FibGVkQ2xhc3MgPSAodGFiLmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpID8gJ2NpZGUtdGFiLWRpc2FibGVkJyA6ICcnO1xyXG4gICAgXHJcbiAgICByZXR1cm4gW2Jhc2VDbGFzc2VzLCBzaXplQ2xhc3MsIHZhcmlhbnRDbGFzcywgYWN0aXZlQ2xhc3MsIGRpc2FibGVkQ2xhc3NdXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgLmpvaW4oJyAnKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRhaW5lckNsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gJ2NpZGUtdGFiLWNvbnRhaW5lcic7XHJcbiAgICBjb25zdCB2YXJpYW50Q2xhc3MgPSBgY2lkZS10YWItY29udGFpbmVyLSR7dGhpcy52YXJpYW50fWA7XHJcbiAgICBjb25zdCBmdWxsV2lkdGhDbGFzcyA9IHRoaXMuZnVsbFdpZHRoID8gJ2NpZGUtdGFiLWZ1bGwtd2lkdGgnIDogJyc7XHJcbiAgICBcclxuICAgIHJldHVybiBbYmFzZUNsYXNzZXMsIHZhcmlhbnRDbGFzcywgZnVsbFdpZHRoQ2xhc3NdXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgLmpvaW4oJyAnKTtcclxuICB9XHJcbn0gIiwiPGRpdiBbY2xhc3NdPVwiZ2V0Q29udGFpbmVyQ2xhc3NlcygpXCI+XHJcbiAgQGZvciAodGFiIG9mIHRhYnM7IHRyYWNrIHRhYi5pZCkge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgW2NsYXNzXT1cImdldFRhYkNsYXNzZXModGFiKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWQgfHwgZGlzYWJsZWRcIlxyXG4gICAgICAoY2xpY2spPVwib25UYWJDbGljayh0YWIpXCJcclxuICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0FjdGl2ZSh0YWIuaWQpXCJcclxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCIncGFuZWwtJyArIHRhYi5pZFwiXHJcbiAgICAgIHJvbGU9XCJ0YWJcIj5cclxuICAgICAgXHJcbiAgICAgIEBpZiAodGFiLmljb24pIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNpZGUtdGFiLWljb25cIj57eyB0YWIuaWNvbiB9fTwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgPHNwYW4gY2xhc3M9XCJjaWRlLXRhYi1sYWJlbFwiPnt7IHRhYi5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgXHJcbiAgICAgIEBpZiAodGFiLmJhZGdlKSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjaWRlLXRhYi1iYWRnZVwiPnt7IHRhYi5iYWRnZSB9fTwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgPC9idXR0b24+XHJcbiAgfVxyXG48L2Rpdj4gIl19
@@ -1,157 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';
3
- import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/forms";
7
- export class CideTextareaComponent {
8
- constructor() {
9
- this.label = '';
10
- this.labelHide = false;
11
- this.placeholder = '';
12
- this.helperText = '';
13
- this.errorText = '';
14
- this.required = false;
15
- this.disabled = false;
16
- this.minlength = 0;
17
- this.maxlength = 0;
18
- this.rows = 3;
19
- this.id = '';
20
- this.ngModel = '';
21
- this.size = 'sm';
22
- this.fill = 'outline';
23
- this.labelPlacement = 'fixed';
24
- this.labelDir = 'start';
25
- this.leadingIcon = '';
26
- this.trailingIcon = '';
27
- this.clearInput = false;
28
- this.trailingIconInternal = '';
29
- this.isTrailingIconAllwedClick = false;
30
- this.ngModelChange = new EventEmitter();
31
- this.isTouched = false;
32
- this.isValid = true;
33
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
34
- this.onChange = (value) => { };
35
- this.onTouched = () => { };
36
- this.onValidate = () => { };
37
- }
38
- ngOnInit() {
39
- this.validateValue(this.ngModel);
40
- }
41
- ngOnChanges(changes) {
42
- if (changes['ngModel']) {
43
- this.validateValue(this.ngModel);
44
- }
45
- }
46
- writeValue(value) {
47
- this.ngModel = value;
48
- this.validateValue(value);
49
- }
50
- registerOnChange(fn) {
51
- this.onChange = fn;
52
- }
53
- registerOnTouched(fn) {
54
- this.onTouched = fn;
55
- }
56
- setDisabledState(isDisabled) {
57
- this.disabled = isDisabled;
58
- }
59
- validate(control) {
60
- return this.validateValue(control.value);
61
- }
62
- validateValue(value) {
63
- console.log('validateValue', value);
64
- this.isValid = true;
65
- return null;
66
- }
67
- onInput(event) {
68
- const value = event.target.value;
69
- this.ngModel = value;
70
- this.onChange(value);
71
- this.ngModelChange.emit(value);
72
- this.validateValue(value);
73
- }
74
- onBlur() {
75
- this.isTouched = true;
76
- this.onTouched();
77
- }
78
- ClearInputValue() {
79
- this.ngModel = '';
80
- this.onChange('');
81
- this.ngModelChange.emit('');
82
- this.validateValue('');
83
- }
84
- trailingIconClick() {
85
- // For future extensibility (e.g., password visibility)
86
- // For now, just emit event or toggle icon if needed
87
- }
88
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideTextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
89
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: CideTextareaComponent, isStandalone: true, selector: "cide-ele-textarea", inputs: { label: "label", labelHide: "labelHide", placeholder: "placeholder", helperText: "helperText", errorText: "errorText", required: "required", disabled: "disabled", minlength: "minlength", maxlength: "maxlength", rows: "rows", id: "id", ngModel: "ngModel", size: "size", fill: "fill", labelPlacement: "labelPlacement", labelDir: "labelDir", leadingIcon: "leadingIcon", trailingIcon: "trailingIcon", clearInput: "clearInput" }, outputs: { ngModelChange: "ngModelChange" }, providers: [
90
- {
91
- provide: NG_VALUE_ACCESSOR,
92
- useExisting: forwardRef(() => CideTextareaComponent),
93
- multi: true
94
- },
95
- {
96
- provide: NG_VALIDATORS,
97
- multi: true,
98
- useExisting: forwardRef(() => CideTextareaComponent),
99
- }
100
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"cide-textarea\" [ngClass]=\"{\r\n 'cide-element-size-xxs': (size === '2xs'),\r\n 'cide-element-size-xs': (size === 'xs'),\r\n 'cide-element-size-sm': (size === 'sm'),\r\n 'cide-element-size-md': (size === 'md'),\r\n 'cide-element-size-lg': (size === 'lg'),\r\n 'cide-element-input-label-floating': (labelPlacement === 'floating'),\r\n 'cide-element-input-label-start': (labelDir === 'start'),\r\n 'cide-element-input-label-end': (labelDir === 'end'),\r\n 'cide-element-input-label-fixed': (labelPlacement === 'fixed'),\r\n 'cide-element-input-label-less': (!label || labelHide),\r\n 'cide-element-style-outline': (fill === 'outline'),\r\n 'cide-element-style-solid': (fill === 'solid'),\r\n 'cide-element-style-standard': (fill === 'standard'),\r\n}\">\r\n <label *ngIf=\"label && !labelHide\" [for]=\"id\" class=\"cide-textarea-label\">{{ label }}</label>\r\n <div class=\"cide-element-input-wrapper\">\r\n <!-- Leading Icon -->\r\n <span class=\"cide-input-leading-icon-wrapper\" *ngIf=\"leadingIcon\">\r\n <span class=\"cide-input-leading-icon material-symbols-outlined tw-text-center\">{{leadingIcon}}</span>\r\n </span>\r\n <!-- Trailing Icon -->\r\n <span class=\"tw-absolute cide-input-trailing-icon -tw-bottom-1 tw-select-none tw-right-0\"\r\n *ngIf=\"trailingIconInternal\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"\r\n [ngClass]=\"{'tw-cursor-pointer': isTrailingIconAllwedClick}\" [attr.tabindex]=\"false\"\r\n (click)=\"trailingIconClick()\" (keyup)=\"trailingIconClick()\">{{trailingIconInternal}}</span>\r\n </span>\r\n <!-- Clear -->\r\n <button class=\"cide-input-clear\" *ngIf=\"clearInput && ngModel\" (click)=\"ClearInputValue()\">\r\n <span class=\"cide-input-clear-icon material-symbols-outlined\">close</span>\r\n </button>\r\n <!-- Textarea -->\r\n <textarea [id]=\"id\" [attr.placeholder]=\"placeholder\" [attr.rows]=\"rows\"\r\n [attr.minlength]=\"minlength > 0 ? minlength : null\" [attr.maxlength]=\"maxlength > 0 ? maxlength : null\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"ngModel\" (input)=\"onInput($event)\" (blur)=\"onBlur()\"\r\n [ngClass]=\"[((label && labelPlacement === 'fixed') ? 'tw-rounded-e-md tw-rounded-es-md' : 'tw-rounded-md '), (!leadingIcon ? 'tw-pl-1' : ''), (trailingIconInternal ? 'tw-pr-8': ''), (!trailingIconInternal ? 'tw-pr-1' : ''), ((size === 'md') ? 'tw-h-8 tw-pt-0.5 tw-pb-0' : (size === 'sm' ? '' : '')), (labelHide ? '!tw-mt-0' : '')]\"\r\n class=\"cide-textarea-input tw-m-0 tw-w-full tw-bg-transparent tw-overflow-hidden tw-border-solid tw-py-[1px] tw-outline-none\"></textarea>\r\n </div>\r\n <span *ngIf=\"(errorText || helperText) && !isValid\" class=\"cide-textarea-help-error-text\">{{ errorText || helperText\r\n }}</span>\r\n <span *ngIf=\"helperText && isValid\" class=\"cide-textarea-help-error-text\">{{ helperText }}</span>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
101
- }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CideTextareaComponent, decorators: [{
103
- type: Component,
104
- args: [{ selector: 'cide-ele-textarea', standalone: true, imports: [CommonModule, FormsModule], providers: [
105
- {
106
- provide: NG_VALUE_ACCESSOR,
107
- useExisting: forwardRef(() => CideTextareaComponent),
108
- multi: true
109
- },
110
- {
111
- provide: NG_VALIDATORS,
112
- multi: true,
113
- useExisting: forwardRef(() => CideTextareaComponent),
114
- }
115
- ], template: "<div class=\"cide-textarea\" [ngClass]=\"{\r\n 'cide-element-size-xxs': (size === '2xs'),\r\n 'cide-element-size-xs': (size === 'xs'),\r\n 'cide-element-size-sm': (size === 'sm'),\r\n 'cide-element-size-md': (size === 'md'),\r\n 'cide-element-size-lg': (size === 'lg'),\r\n 'cide-element-input-label-floating': (labelPlacement === 'floating'),\r\n 'cide-element-input-label-start': (labelDir === 'start'),\r\n 'cide-element-input-label-end': (labelDir === 'end'),\r\n 'cide-element-input-label-fixed': (labelPlacement === 'fixed'),\r\n 'cide-element-input-label-less': (!label || labelHide),\r\n 'cide-element-style-outline': (fill === 'outline'),\r\n 'cide-element-style-solid': (fill === 'solid'),\r\n 'cide-element-style-standard': (fill === 'standard'),\r\n}\">\r\n <label *ngIf=\"label && !labelHide\" [for]=\"id\" class=\"cide-textarea-label\">{{ label }}</label>\r\n <div class=\"cide-element-input-wrapper\">\r\n <!-- Leading Icon -->\r\n <span class=\"cide-input-leading-icon-wrapper\" *ngIf=\"leadingIcon\">\r\n <span class=\"cide-input-leading-icon material-symbols-outlined tw-text-center\">{{leadingIcon}}</span>\r\n </span>\r\n <!-- Trailing Icon -->\r\n <span class=\"tw-absolute cide-input-trailing-icon -tw-bottom-1 tw-select-none tw-right-0\"\r\n *ngIf=\"trailingIconInternal\">\r\n <span class=\"material-symbols-outlined tw-w-8 tw-text-center !tw-text-2xl\"\r\n [ngClass]=\"{'tw-cursor-pointer': isTrailingIconAllwedClick}\" [attr.tabindex]=\"false\"\r\n (click)=\"trailingIconClick()\" (keyup)=\"trailingIconClick()\">{{trailingIconInternal}}</span>\r\n </span>\r\n <!-- Clear -->\r\n <button class=\"cide-input-clear\" *ngIf=\"clearInput && ngModel\" (click)=\"ClearInputValue()\">\r\n <span class=\"cide-input-clear-icon material-symbols-outlined\">close</span>\r\n </button>\r\n <!-- Textarea -->\r\n <textarea [id]=\"id\" [attr.placeholder]=\"placeholder\" [attr.rows]=\"rows\"\r\n [attr.minlength]=\"minlength > 0 ? minlength : null\" [attr.maxlength]=\"maxlength > 0 ? maxlength : null\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"ngModel\" (input)=\"onInput($event)\" (blur)=\"onBlur()\"\r\n [ngClass]=\"[((label && labelPlacement === 'fixed') ? 'tw-rounded-e-md tw-rounded-es-md' : 'tw-rounded-md '), (!leadingIcon ? 'tw-pl-1' : ''), (trailingIconInternal ? 'tw-pr-8': ''), (!trailingIconInternal ? 'tw-pr-1' : ''), ((size === 'md') ? 'tw-h-8 tw-pt-0.5 tw-pb-0' : (size === 'sm' ? '' : '')), (labelHide ? '!tw-mt-0' : '')]\"\r\n class=\"cide-textarea-input tw-m-0 tw-w-full tw-bg-transparent tw-overflow-hidden tw-border-solid tw-py-[1px] tw-outline-none\"></textarea>\r\n </div>\r\n <span *ngIf=\"(errorText || helperText) && !isValid\" class=\"cide-textarea-help-error-text\">{{ errorText || helperText\r\n }}</span>\r\n <span *ngIf=\"helperText && isValid\" class=\"cide-textarea-help-error-text\">{{ helperText }}</span>\r\n</div>" }]
116
- }], propDecorators: { label: [{
117
- type: Input
118
- }], labelHide: [{
119
- type: Input
120
- }], placeholder: [{
121
- type: Input
122
- }], helperText: [{
123
- type: Input
124
- }], errorText: [{
125
- type: Input
126
- }], required: [{
127
- type: Input
128
- }], disabled: [{
129
- type: Input
130
- }], minlength: [{
131
- type: Input
132
- }], maxlength: [{
133
- type: Input
134
- }], rows: [{
135
- type: Input
136
- }], id: [{
137
- type: Input
138
- }], ngModel: [{
139
- type: Input
140
- }], size: [{
141
- type: Input
142
- }], fill: [{
143
- type: Input
144
- }], labelPlacement: [{
145
- type: Input
146
- }], labelDir: [{
147
- type: Input
148
- }], leadingIcon: [{
149
- type: Input
150
- }], trailingIcon: [{
151
- type: Input
152
- }], clearInput: [{
153
- type: Input
154
- }], ngModelChange: [{
155
- type: Output
156
- }] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xvdWQtaWRlLWVsZW1lbnQvc3JjL2xpYi9lbGVtZW50cy90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL2VsZW1lbnRzL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBeUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBK0IsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQXNCbkosTUFBTSxPQUFPLHFCQUFxQjtJQW5CbEM7UUFvQlcsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLFNBQUksR0FBb0IsQ0FBQyxDQUFDO1FBQzFCLE9BQUUsR0FBVyxFQUFFLENBQUM7UUFDaEIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixTQUFJLEdBQWMsSUFBSSxDQUFDO1FBQ3ZCLFNBQUksR0FBcUIsU0FBUyxDQUFDO1FBQ25DLG1CQUFjLEdBQXVCLE9B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QUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRoZW1lU2l6ZSwgZWxlbWVudFN0eWxlVHlwZSwgbGFiZWxQbGFjZW1lbnRUeXBlLCBsYWJlbERpclR5cGUgfSBmcm9tICdjbG91ZC1pZGUtbG1zLW1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2lkZS1lbGUtdGV4dGFyZWEnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50LnNjc3MnLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2lkZVRleHRhcmVhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaWRlVGV4dGFyZWFDb21wb25lbnQpLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDaWRlVGV4dGFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbGFiZWxIaWRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGVscGVyVGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yVGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1pbmxlbmd0aDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbWF4bGVuZ3RoOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSByb3dzOiBudW1iZXIgfCBzdHJpbmcgPSAzO1xuICBASW5wdXQoKSBpZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG5nTW9kZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaXplOiB0aGVtZVNpemUgPSAnc20nO1xuICBASW5wdXQoKSBmaWxsOiBlbGVtZW50U3R5bGVUeXBlID0gJ291dGxpbmUnO1xuICBASW5wdXQoKSBsYWJlbFBsYWNlbWVudDogbGFiZWxQbGFjZW1lbnRUeXBlID0gJ2ZpeGVkJztcbiAgQElucHV0KCkgbGFiZWxEaXI6IGxhYmVsRGlyVHlwZSA9ICdzdGFydCc7XG4gIEBJbnB1dCgpIGxlYWRpbmdJY29uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdHJhaWxpbmdJY29uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY2xlYXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xuICB0cmFpbGluZ0ljb25JbnRlcm5hbDogc3RyaW5nID0gJyc7XG4gIGlzVHJhaWxpbmdJY29uQWxsd2VkQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIG5nTW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBpc1RvdWNoZWQgPSBmYWxzZTtcbiAgaXNWYWxpZCA9IHRydWU7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBvbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG4gIG9uVmFsaWRhdGUgPSAoKSA9PiB7fTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5uZ01vZGVsKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snbmdNb2RlbCddKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5uZ01vZGVsKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm5nTW9kZWwgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVZhbHVlKGNvbnRyb2wudmFsdWUpO1xuICB9XG5cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnNvbGUubG9nKCd2YWxpZGF0ZVZhbHVlJywgdmFsdWUpO1xuICAgIHRoaXMuaXNWYWxpZCA9IHRydWU7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBvbklucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLm5nTW9kZWwgPSB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLmlzVG91Y2hlZCA9IHRydWU7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIENsZWFySW5wdXRWYWx1ZSgpIHtcbiAgICB0aGlzLm5nTW9kZWwgPSAnJztcbiAgICB0aGlzLm9uQ2hhbmdlKCcnKTtcbiAgICB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCgnJyk7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKCcnKTtcbiAgfVxuXG4gIHRyYWlsaW5nSWNvbkNsaWNrKCkge1xuICAgIC8vIEZvciBmdXR1cmUgZXh0ZW5zaWJpbGl0eSAoZS5nLiwgcGFzc3dvcmQgdmlzaWJpbGl0eSlcbiAgICAvLyBGb3Igbm93LCBqdXN0IGVtaXQgZXZlbnQgb3IgdG9nZ2xlIGljb24gaWYgbmVlZGVkXG4gIH1cbn0gIiwiPGRpdiBjbGFzcz1cImNpZGUtdGV4dGFyZWFcIiBbbmdDbGFzc109XCJ7XHJcbiAgJ2NpZGUtZWxlbWVudC1zaXplLXh4cyc6IChzaXplID09PSAnMnhzJyksXHJcbiAgJ2NpZGUtZWxlbWVudC1zaXplLXhzJzogKHNpemUgPT09ICd4cycpLFxyXG4gICdjaWRlLWVsZW1lbnQtc2l6ZS1zbSc6IChzaXplID09PSAnc20nKSxcclxuICAnY2lkZS1lbGVtZW50LXNpemUtbWQnOiAoc2l6ZSA9PT0gJ21kJyksXHJcbiAgJ2NpZGUtZWxlbWVudC1zaXplLWxnJzogKHNpemUgPT09ICdsZycpLFxyXG4gICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtZmxvYXRpbmcnOiAobGFiZWxQbGFjZW1lbnQgPT09ICdmbG9hdGluZycpLFxyXG4gICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtc3RhcnQnOiAobGFiZWxEaXIgPT09ICdzdGFydCcpLFxyXG4gICdjaWRlLWVsZW1lbnQtaW5wdXQtbGFiZWwtZW5kJzogKGxhYmVsRGlyID09PSAnZW5kJyksXHJcbiAgJ2NpZGUtZWxlbWVudC1pbnB1dC1sYWJlbC1maXhlZCc6IChsYWJlbFBsYWNlbWVudCA9PT0gJ2ZpeGVkJyksXHJcbiAgJ2NpZGUtZWxlbWVudC1pbnB1dC1sYWJlbC1sZXNzJzogKCFsYWJlbCB8fCBsYWJlbEhpZGUpLFxyXG4gICdjaWRlLWVsZW1lbnQtc3R5bGUtb3V0bGluZSc6IChmaWxsID09PSAnb3V0bGluZScpLFxyXG4gICdjaWRlLWVsZW1lbnQtc3R5bGUtc29saWQnOiAoZmlsbCA9PT0gJ3NvbGlkJyksXHJcbiAgJ2NpZGUtZWxlbWVudC1zdHlsZS1zdGFuZGFyZCc6IChmaWxsID09PSAnc3RhbmRhcmQnKSxcclxufVwiPlxyXG4gIDxsYWJlbCAqbmdJZj1cImxhYmVsICYmICFsYWJlbEhpZGVcIiBbZm9yXT1cImlkXCIgY2xhc3M9XCJjaWRlLXRleHRhcmVhLWxhYmVsXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxyXG4gIDxkaXYgY2xhc3M9XCJjaWRlLWVsZW1lbnQtaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgPCEtLSBMZWFkaW5nIEljb24gLS0+XHJcbiAgICA8c3BhbiBjbGFzcz1cImNpZGUtaW5wdXQtbGVhZGluZy1pY29uLXdyYXBwZXJcIiAqbmdJZj1cImxlYWRpbmdJY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY2lkZS1pbnB1dC1sZWFkaW5nLWljb24gbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0dy10ZXh0LWNlbnRlclwiPnt7bGVhZGluZ0ljb259fTwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuICAgIDwhLS0gVHJhaWxpbmcgSWNvbiAtLT5cclxuICAgIDxzcGFuIGNsYXNzPVwidHctYWJzb2x1dGUgY2lkZS1pbnB1dC10cmFpbGluZy1pY29uIC10dy1ib3R0b20tMSB0dy1zZWxlY3Qtbm9uZSB0dy1yaWdodC0wXCJcclxuICAgICAgKm5nSWY9XCJ0cmFpbGluZ0ljb25JbnRlcm5hbFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdHctdy04IHR3LXRleHQtY2VudGVyICF0dy10ZXh0LTJ4bFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyd0dy1jdXJzb3ItcG9pbnRlcic6IGlzVHJhaWxpbmdJY29uQWxsd2VkQ2xpY2t9XCIgW2F0dHIudGFiaW5kZXhdPVwiZmFsc2VcIlxyXG4gICAgICAgIChjbGljayk9XCJ0cmFpbGluZ0ljb25DbGljaygpXCIgKGtleXVwKT1cInRyYWlsaW5nSWNvbkNsaWNrKClcIj57e3RyYWlsaW5nSWNvbkludGVybmFsfX08L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8IS0tIENsZWFyIC0tPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImNpZGUtaW5wdXQtY2xlYXJcIiAqbmdJZj1cImNsZWFySW5wdXQgJiYgbmdNb2RlbFwiIChjbGljayk9XCJDbGVhcklucHV0VmFsdWUoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImNpZGUtaW5wdXQtY2xlYXItaWNvbiBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+Y2xvc2U8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDwhLS0gVGV4dGFyZWEgLS0+XHJcbiAgICA8dGV4dGFyZWEgW2lkXT1cImlkXCIgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbYXR0ci5yb3dzXT1cInJvd3NcIlxyXG4gICAgICBbYXR0ci5taW5sZW5ndGhdPVwibWlubGVuZ3RoID4gMCA/IG1pbmxlbmd0aCA6IG51bGxcIiBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoID4gMCA/IG1heGxlbmd0aCA6IG51bGxcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbKG5nTW9kZWwpXT1cIm5nTW9kZWxcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICBbbmdDbGFzc109XCJbKChsYWJlbCAmJiBsYWJlbFBsYWNlbWVudCA9PT0gJ2ZpeGVkJykgPyAndHctcm91bmRlZC1lLW1kIHR3LXJvdW5kZWQtZXMtbWQnIDogJ3R3LXJvdW5kZWQtbWQgJyksICghbGVhZGluZ0ljb24gPyAndHctcGwtMScgOiAnJyksICh0cmFpbGluZ0ljb25JbnRlcm5hbCA/ICd0dy1wci04JzogJycpLCAoIXRyYWlsaW5nSWNvbkludGVybmFsID8gJ3R3LXByLTEnIDogJycpLCAoKHNpemUgPT09ICdtZCcpID8gJ3R3LWgtOCB0dy1wdC0wLjUgdHctcGItMCcgOiAoc2l6ZSA9PT0gJ3NtJyA/ICcnIDogJycpKSwgKGxhYmVsSGlkZSA/ICchdHctbXQtMCcgOiAnJyldXCJcclxuICAgICAgY2xhc3M9XCJjaWRlLXRleHRhcmVhLWlucHV0IHR3LW0tMCB0dy13LWZ1bGwgdHctYmctdHJhbnNwYXJlbnQgdHctb3ZlcmZsb3ctaGlkZGVuIHR3LWJvcmRlci1zb2xpZCB0dy1weS1bMXB4XSB0dy1vdXRsaW5lLW5vbmVcIj48L3RleHRhcmVhPlxyXG4gIDwvZGl2PlxyXG4gIDxzcGFuICpuZ0lmPVwiKGVycm9yVGV4dCB8fCBoZWxwZXJUZXh0KSAmJiAhaXNWYWxpZFwiIGNsYXNzPVwiY2lkZS10ZXh0YXJlYS1oZWxwLWVycm9yLXRleHRcIj57eyBlcnJvclRleHQgfHwgaGVscGVyVGV4dFxyXG4gICAgfX08L3NwYW4+XHJcbiAgPHNwYW4gKm5nSWY9XCJoZWxwZXJUZXh0ICYmIGlzVmFsaWRcIiBjbGFzcz1cImNpZGUtdGV4dGFyZWEtaGVscC1lcnJvci10ZXh0XCI+e3sgaGVscGVyVGV4dCB9fTwvc3Bhbj5cclxuPC9kaXY+Il19
@@ -1,151 +0,0 @@
1
- import { Injectable, signal, computed } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ConfirmationService {
4
- constructor() {
5
- this.confirmationQueue = signal([]);
6
- this.currentRequest = signal(null);
7
- // Computed signals
8
- this.hasActiveConfirmation = computed(() => this.currentRequest() !== null);
9
- this.queueLength = computed(() => this.confirmationQueue().length);
10
- }
11
- /**
12
- * Ask for confirmation with a simple yes/no dialog
13
- */
14
- ask(options) {
15
- return new Promise((resolve, reject) => {
16
- const request = {
17
- id: this.generateId(),
18
- title: options.title,
19
- message: options.message,
20
- type: options.type || 'warning',
21
- icon: options.icon || this.getDefaultIcon(options.type || 'warning'),
22
- confirmText: options.confirmText || 'Confirm',
23
- cancelText: options.cancelText || 'Cancel',
24
- resolve: (value) => resolve(value),
25
- reject
26
- };
27
- this.addToQueue(request);
28
- });
29
- }
30
- /**
31
- * Ask for confirmation with custom template and return custom data
32
- */
33
- askWithTemplate(options) {
34
- return new Promise((resolve, reject) => {
35
- const request = {
36
- id: this.generateId(),
37
- title: options.title,
38
- message: options.message,
39
- type: options.type || 'info',
40
- icon: options.icon || this.getDefaultIcon(options.type || 'info'),
41
- confirmText: options.confirmText || 'Confirm',
42
- cancelText: options.cancelText || 'Cancel',
43
- customTemplate: options.customTemplate,
44
- customData: options.customData,
45
- resolve: (value) => resolve(value),
46
- reject
47
- };
48
- // Cast to unknown for queue compatibility
49
- this.addToQueue(request);
50
- });
51
- }
52
- /**
53
- * Quick confirmation for dangerous actions
54
- */
55
- confirmDelete(itemName) {
56
- return this.ask({
57
- title: 'Confirm Delete',
58
- message: itemName ? `Are you sure you want to delete "${itemName}"? This action cannot be undone.` : 'Are you sure you want to delete this item? This action cannot be undone.',
59
- type: 'danger',
60
- icon: 'delete_forever',
61
- confirmText: 'Delete',
62
- cancelText: 'Cancel'
63
- });
64
- }
65
- /**
66
- * Quick confirmation for permanent actions
67
- */
68
- confirmPermanentAction(action, itemName) {
69
- return this.ask({
70
- title: `Confirm ${action}`,
71
- message: itemName ? `Are you sure you want to ${action.toLowerCase()} "${itemName}"? This action cannot be undone.` : `Are you sure you want to ${action.toLowerCase()}? This action cannot be undone.`,
72
- type: 'danger',
73
- icon: 'warning',
74
- confirmText: action,
75
- cancelText: 'Cancel'
76
- });
77
- }
78
- /**
79
- * Quick confirmation for safe actions
80
- */
81
- confirmSafeAction(action, itemName) {
82
- return this.ask({
83
- title: `Confirm ${action}`,
84
- message: itemName ? `Are you sure you want to ${action.toLowerCase()} "${itemName}"?` : `Are you sure you want to ${action.toLowerCase()}?`,
85
- type: 'info',
86
- icon: 'info',
87
- confirmText: action,
88
- cancelText: 'Cancel'
89
- });
90
- }
91
- // Internal methods
92
- addToQueue(request) {
93
- this.confirmationQueue.update(queue => [...queue, request]);
94
- this.processQueue();
95
- }
96
- processQueue() {
97
- if (this.currentRequest() || this.confirmationQueue().length === 0) {
98
- return;
99
- }
100
- const nextRequest = this.confirmationQueue()[0];
101
- this.currentRequest.set(nextRequest);
102
- }
103
- confirmCurrentRequest(data) {
104
- const request = this.currentRequest();
105
- if (!request)
106
- return;
107
- request.resolve(data !== undefined ? data : true);
108
- this.removeCurrentRequest();
109
- }
110
- cancelCurrentRequest() {
111
- const request = this.currentRequest();
112
- if (!request)
113
- return;
114
- request.reject(new Error('User cancelled'));
115
- this.removeCurrentRequest();
116
- }
117
- removeCurrentRequest() {
118
- this.confirmationQueue.update(queue => queue.slice(1));
119
- this.currentRequest.set(null);
120
- // Process next request if any
121
- setTimeout(() => this.processQueue(), 100);
122
- }
123
- generateId() {
124
- return `confirmation-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
125
- }
126
- getDefaultIcon(type) {
127
- const iconMap = {
128
- danger: 'error',
129
- warning: 'warning',
130
- info: 'info',
131
- success: 'check_circle'
132
- };
133
- return iconMap[type];
134
- }
135
- // Public getters for components
136
- getCurrentRequest() {
137
- return this.currentRequest;
138
- }
139
- getHasActiveConfirmation() {
140
- return this.hasActiveConfirmation;
141
- }
142
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
143
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConfirmationService, providedIn: 'root' }); }
144
- }
145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConfirmationService, decorators: [{
146
- type: Injectable,
147
- args: [{
148
- providedIn: 'root'
149
- }]
150
- }], ctorParameters: () => [] });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUE4QjFFLE1BQU0sT0FBTyxtQkFBbUI7SUFROUI7UUFQUSxzQkFBaUIsR0FBRyxNQUFNLENBQWlDLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELG1CQUFjLEdBQUcsTUFBTSxDQUFzQyxJQUFJLENBQUMsQ0FBQztRQUUzRSxtQkFBbUI7UUFDbkIsMEJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUN2RSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUvQyxDQUFDO0lBRWhCOztPQUVHO0lBQ0gsR0FBRyxDQUFDLE9BQXFDO1FBQ3ZDLE9BQU8sSUFBSSxPQUFPLENBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDOUMsTUFBTSxPQUFPLEdBQWlDO2dCQUM1QyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDckIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2dCQUNwQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLFNBQVM7Z0JBQy9CLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUM7Z0JBQ3BFLFdB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O1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIsOEJBQThCO1FBQzlCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pGLENBQUM7SUFFTyxjQUFjLENBQUMsSUFBK0M7UUFDcEUsTUFBTSxPQUFPLEdBQUc7WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLGNBQWM7U0FDeEIsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQzs4R0E3SlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgY29tcHV0ZWQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1hdGlvblJlcXVlc3Q8VCA9IHVua25vd24+IHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIHR5cGU6ICdkYW5nZXInIHwgJ3dhcm5pbmcnIHwgJ2luZm8nIHwgJ3N1Y2Nlc3MnO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XHJcbiAgY2FuY2VsVGV4dD86IHN0cmluZztcclxuICBjdXN0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIGN1c3RvbURhdGE/OiBUO1xyXG4gIHJlc29sdmU6ICh2YWx1ZTogYm9vbGVhbiB8IFQpID0+IHZvaWQ7XHJcbiAgcmVqZWN0OiAocmVhc29uPzogdW5rbm93bikgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtYXRpb25PcHRpb25zPFQgPSB1bmtub3duPiB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgdHlwZT86ICdkYW5nZXInIHwgJ3dhcm5pbmcnIHwgJ2luZm8nIHwgJ3N1Y2Nlc3MnO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XHJcbiAgY2FuY2VsVGV4dD86IHN0cmluZztcclxuICBjdXN0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xyXG4gIGN1c3RvbURhdGE/OiBUO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb25maXJtYXRpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIGNvbmZpcm1hdGlvblF1ZXVlID0gc2lnbmFsPENvbmZpcm1hdGlvblJlcXVlc3Q8dW5rbm93bj5bXT4oW10pO1xyXG4gIHByaXZhdGUgY3VycmVudFJlcXVlc3QgPSBzaWduYWw8Q29uZmlybWF0aW9uUmVxdWVzdDx1bmtub3duPiB8IG51bGw+KG51bGwpO1xyXG4gIFxyXG4gIC8vIENvbXB1dGVkIHNpZ25hbHNcclxuICBoYXNBY3RpdmVDb25maXJtYXRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN1cnJlbnRSZXF1ZXN0KCkgIT09IG51bGwpO1xyXG4gIHF1ZXVlTGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maXJtYXRpb25RdWV1ZSgpLmxlbmd0aCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgLyoqXHJcbiAgICogQXNrIGZvciBjb25maXJtYXRpb24gd2l0aCBhIHNpbXBsZSB5ZXMvbm8gZGlhbG9nXHJcbiAgICovXHJcbiAgYXNrKG9wdGlvbnM6IENvbmZpcm1hdGlvbk9wdGlvbnM8dW5rbm93bj4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IENvbmZpcm1hdGlvblJlcXVlc3Q8dW5rbm93bj4gPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVJZCgpLFxyXG4gICAgICAgIHRpdGxlOiBvcHRpb25zLnRpdGxlLFxyXG4gICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMubWVzc2FnZSxcclxuICAgICAgICB0eXBlOiBvcHRpb25zLnR5cGUgfHwgJ3dhcm5pbmcnLFxyXG4gICAgICAgIGljb246IG9wdGlvbnMuaWNvbiB8fCB0aGlzLmdldERlZmF1bHRJY29uKG9wdGlvbnMudHlwZSB8fCAnd2FybmluZycpLFxyXG4gICAgICAgIGNvbmZpcm1UZXh0OiBvcHRpb25zLmNvbmZpcm1UZXh0IHx8ICdDb25maXJtJyxcclxuICAgICAgICBjYW5jZWxUZXh0OiBvcHRpb25zLmNhbmNlbFRleHQgfHwgJ0NhbmNlbCcsXHJcbiAgICAgICAgcmVzb2x2ZTogKHZhbHVlOiBib29sZWFuIHwgdW5rbm93bikgPT4gcmVzb2x2ZSh2YWx1ZSBhcyBib29sZWFuKSxcclxuICAgICAgICByZWplY3RcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuYWRkVG9RdWV1ZShyZXF1ZXN0KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXNrIGZvciBjb25maXJtYXRpb24gd2l0aCBjdXN0b20gdGVtcGxhdGUgYW5kIHJldHVybiBjdXN0b20gZGF0YVxyXG4gICAqL1xyXG4gIGFza1dpdGhUZW1wbGF0ZTxUID0gdW5rbm93bj4ob3B0aW9uczogQ29uZmlybWF0aW9uT3B0aW9uczxUPiAmIHsgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IH0pOiBQcm9taXNlPFQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IENvbmZpcm1hdGlvblJlcXVlc3Q8VD4gPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVJZCgpLFxyXG4gICAgICAgIHRpdGxlOiBvcHRpb25zLnRpdGxlLFxyXG4gICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMubWVzc2FnZSxcclxuICAgICAgICB0eXBlOiBvcHRpb25zLnR5cGUgfHwgJ2luZm8nLFxyXG4gICAgICAgIGljb246IG9wdGlvbnMuaWNvbiB8fCB0aGlzLmdldERlZmF1bHRJY29uKG9wdGlvbnMudHlwZSB8fCAnaW5mbycpLFxyXG4gICAgICAgIGNvbmZpcm1UZXh0OiBvcHRpb25zLmNvbmZpcm1UZXh0IHx8ICdDb25maXJtJyxcclxuICAgICAgICBjYW5jZWxUZXh0OiBvcHRpb25zLmNhbmNlbFRleHQgfHwgJ0NhbmNlbCcsXHJcbiAgICAgICAgY3VzdG9tVGVtcGxhdGU6IG9wdGlvbnMuY3VzdG9tVGVtcGxhdGUsXHJcbiAgICAgICAgY3VzdG9tRGF0YTogb3B0aW9ucy5jdXN0b21EYXRhLFxyXG4gICAgICAgIHJlc29sdmU6ICh2YWx1ZTogYm9vbGVhbiB8IFQpID0+IHJlc29sdmUodmFsdWUgYXMgVCksXHJcbiAgICAgICAgcmVqZWN0XHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvLyBDYXN0IHRvIHVua25vd24gZm9yIHF1ZXVlIGNvbXBhdGliaWxpdHlcclxuICAgICAgdGhpcy5hZGRUb1F1ZXVlKHJlcXVlc3QgYXMgQ29uZmlybWF0aW9uUmVxdWVzdDx1bmtub3duPik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFF1aWNrIGNvbmZpcm1hdGlvbiBmb3IgZGFuZ2Vyb3VzIGFjdGlvbnNcclxuICAgKi9cclxuICBjb25maXJtRGVsZXRlKGl0ZW1OYW1lPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5hc2soe1xyXG4gICAgICB0aXRsZTogJ0NvbmZpcm0gRGVsZXRlJyxcclxuICAgICAgbWVzc2FnZTogaXRlbU5hbWUgPyBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBcIiR7aXRlbU5hbWV9XCI/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuYCA6ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgaXRlbT8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4nLFxyXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcclxuICAgICAgaWNvbjogJ2RlbGV0ZV9mb3JldmVyJyxcclxuICAgICAgY29uZmlybVRleHQ6ICdEZWxldGUnLFxyXG4gICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBRdWljayBjb25maXJtYXRpb24gZm9yIHBlcm1hbmVudCBhY3Rpb25zXHJcbiAgICovXHJcbiAgY29uZmlybVBlcm1hbmVudEFjdGlvbihhY3Rpb246IHN0cmluZywgaXRlbU5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmFzayh7XHJcbiAgICAgIHRpdGxlOiBgQ29uZmlybSAke2FjdGlvbn1gLFxyXG4gICAgICBtZXNzYWdlOiBpdGVtTmFtZSA/IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gJHthY3Rpb24udG9Mb3dlckNhc2UoKX0gXCIke2l0ZW1OYW1lfVwiPyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLmAgOiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvICR7YWN0aW9uLnRvTG93ZXJDYXNlKCl9PyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLmAsXHJcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxyXG4gICAgICBpY29uOiAnd2FybmluZycsXHJcbiAgICAgIGNvbmZpcm1UZXh0OiBhY3Rpb24sXHJcbiAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWwnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFF1aWNrIGNvbmZpcm1hdGlvbiBmb3Igc2FmZSBhY3Rpb25zXHJcbiAgICovXHJcbiAgY29uZmlybVNhZmVBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIGl0ZW1OYW1lPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5hc2soe1xyXG4gICAgICB0aXRsZTogYENvbmZpcm0gJHthY3Rpb259YCxcclxuICAgICAgbWVzc2FnZTogaXRlbU5hbWUgPyBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvICR7YWN0aW9uLnRvTG93ZXJDYXNlKCl9IFwiJHtpdGVtTmFtZX1cIj9gIDogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byAke2FjdGlvbi50b0xvd2VyQ2FzZSgpfT9gLFxyXG4gICAgICB0eXBlOiAnaW5mbycsXHJcbiAgICAgIGljb246ICdpbmZvJyxcclxuICAgICAgY29uZmlybVRleHQ6IGFjdGlvbixcclxuICAgICAgY2FuY2VsVGV4dDogJ0NhbmNlbCdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gSW50ZXJuYWwgbWV0aG9kc1xyXG4gIHByaXZhdGUgYWRkVG9RdWV1ZShyZXF1ZXN0OiBDb25maXJtYXRpb25SZXF1ZXN0PHVua25vd24+KTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblF1ZXVlLnVwZGF0ZShxdWV1ZSA9PiBbLi4ucXVldWUsIHJlcXVlc3RdKTtcclxuICAgIHRoaXMucHJvY2Vzc1F1ZXVlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NRdWV1ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRSZXF1ZXN0KCkgfHwgdGhpcy5jb25maXJtYXRpb25RdWV1ZSgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV4dFJlcXVlc3QgPSB0aGlzLmNvbmZpcm1hdGlvblF1ZXVlKClbMF07XHJcbiAgICB0aGlzLmN1cnJlbnRSZXF1ZXN0LnNldChuZXh0UmVxdWVzdCk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtQ3VycmVudFJlcXVlc3QoZGF0YT86IHVua25vd24pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmN1cnJlbnRSZXF1ZXN0KCk7XHJcbiAgICBpZiAoIXJlcXVlc3QpIHJldHVybjtcclxuXHJcbiAgICByZXF1ZXN0LnJlc29sdmUoZGF0YSAhPT0gdW5kZWZpbmVkID8gZGF0YSA6IHRydWUpO1xyXG4gICAgdGhpcy5yZW1vdmVDdXJyZW50UmVxdWVzdCgpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsQ3VycmVudFJlcXVlc3QoKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5jdXJyZW50UmVxdWVzdCgpO1xyXG4gICAgaWYgKCFyZXF1ZXN0KSByZXR1cm47XHJcblxyXG4gICAgcmVxdWVzdC5yZWplY3QobmV3IEVycm9yKCdVc2VyIGNhbmNlbGxlZCcpKTtcclxuICAgIHRoaXMucmVtb3ZlQ3VycmVudFJlcXVlc3QoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ3VycmVudFJlcXVlc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblF1ZXVlLnVwZGF0ZShxdWV1ZSA9PiBxdWV1ZS5zbGljZSgxKSk7XHJcbiAgICB0aGlzLmN1cnJlbnRSZXF1ZXN0LnNldChudWxsKTtcclxuICAgIFxyXG4gICAgLy8gUHJvY2VzcyBuZXh0IHJlcXVlc3QgaWYgYW55XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucHJvY2Vzc1F1ZXVlKCksIDEwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgY29uZmlybWF0aW9uLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEljb24odHlwZTogJ2RhbmdlcicgfCAnd2FybmluZycgfCAnaW5mbycgfCAnc3VjY2VzcycpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgaWNvbk1hcCA9IHtcclxuICAgICAgZGFuZ2VyOiAnZXJyb3InLFxyXG4gICAgICB3YXJuaW5nOiAnd2FybmluZycsXHJcbiAgICAgIGluZm86ICdpbmZvJyxcclxuICAgICAgc3VjY2VzczogJ2NoZWNrX2NpcmNsZSdcclxuICAgIH07XHJcbiAgICByZXR1cm4gaWNvbk1hcFt0eXBlXTtcclxuICB9XHJcblxyXG4gIC8vIFB1YmxpYyBnZXR0ZXJzIGZvciBjb21wb25lbnRzXHJcbiAgZ2V0Q3VycmVudFJlcXVlc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UmVxdWVzdDtcclxuICB9XHJcblxyXG4gIGdldEhhc0FjdGl2ZUNvbmZpcm1hdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmhhc0FjdGl2ZUNvbmZpcm1hdGlvbjtcclxuICB9XHJcbn1cclxuIl19
@@ -1,93 +0,0 @@
1
- import { Injectable, signal } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class DropdownManagerService {
4
- constructor() {
5
- this.activeDropdowns = signal(new Map());
6
- this.initializeGlobalListeners();
7
- }
8
- initializeGlobalListeners() {
9
- // Global document click listener
10
- this.documentClickListener = (event) => {
11
- this.handleDocumentClick(event);
12
- };
13
- // Global escape key listener
14
- this.escapeKeyListener = (event) => {
15
- if (event.key === 'Escape') {
16
- this.closeAllDropdowns();
17
- }
18
- };
19
- // Add listeners
20
- document.addEventListener('click', this.documentClickListener, true);
21
- document.addEventListener('keydown', this.escapeKeyListener, true);
22
- }
23
- registerDropdown(dropdown) {
24
- // Close any existing dropdowns before opening a new one
25
- this.closeAllDropdowns();
26
- this.activeDropdowns.update(map => {
27
- const newMap = new Map(map);
28
- newMap.set(dropdown.id, dropdown);
29
- return newMap;
30
- });
31
- }
32
- unregisterDropdown(id) {
33
- this.activeDropdowns.update(map => {
34
- const newMap = new Map(map);
35
- newMap.delete(id);
36
- return newMap;
37
- });
38
- }
39
- closeAllDropdowns() {
40
- const dropdowns = this.activeDropdowns();
41
- dropdowns.forEach(dropdown => {
42
- dropdown.close();
43
- });
44
- this.activeDropdowns.set(new Map());
45
- }
46
- closeDropdown(id) {
47
- const dropdowns = this.activeDropdowns();
48
- const dropdown = dropdowns.get(id);
49
- if (dropdown) {
50
- dropdown.close();
51
- this.unregisterDropdown(id);
52
- }
53
- }
54
- isDropdownOpen(id) {
55
- return this.activeDropdowns().has(id);
56
- }
57
- handleDocumentClick(event) {
58
- const dropdowns = this.activeDropdowns();
59
- if (dropdowns.size === 0) {
60
- return;
61
- }
62
- // Check if click is inside any open dropdown
63
- const target = event.target;
64
- let isClickInsideDropdown = false;
65
- dropdowns.forEach(dropdown => {
66
- if (dropdown.element && dropdown.element.contains(target)) {
67
- isClickInsideDropdown = true;
68
- }
69
- });
70
- // If click is outside all dropdowns, close them
71
- if (!isClickInsideDropdown) {
72
- this.closeAllDropdowns();
73
- }
74
- }
75
- ngOnDestroy() {
76
- // Clean up global listeners
77
- if (this.documentClickListener) {
78
- document.removeEventListener('click', this.documentClickListener, true);
79
- }
80
- if (this.escapeKeyListener) {
81
- document.removeEventListener('keydown', this.escapeKeyListener, true);
82
- }
83
- }
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DropdownManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
85
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DropdownManagerService, providedIn: 'root' }); }
86
- }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DropdownManagerService, decorators: [{
88
- type: Injectable,
89
- args: [{
90
- providedIn: 'root'
91
- }]
92
- }], ctorParameters: () => [] });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xvdWQtaWRlLWVsZW1lbnQvc3JjL2xpYi9zZXJ2aWNlcy9kcm9wZG93bi1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBV25ELE1BQU0sT0FBTyxzQkFBc0I7SUFLakM7UUFKUSxvQkFBZSxHQUFHLE1BQU0sQ0FBZ0MsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBS3pFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUM7UUFFRiw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQ2hELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLGdCQUFnQjtRQUNoQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBMEI7UUFDekMsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxpQkFBaUIsRUFB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QXNCLGNBRnJCLE1BQU07OzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbnN0YW5jZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBjbG9zZTogKCkgPT4gdm9pZDtcclxuICBlbGVtZW50PzogRWxlbWVudDtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25NYW5hZ2VyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBhY3RpdmVEcm9wZG93bnMgPSBzaWduYWw8TWFwPHN0cmluZywgRHJvcGRvd25JbnN0YW5jZT4+KG5ldyBNYXAoKSk7XHJcbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrTGlzdGVuZXI/OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xyXG4gIHByaXZhdGUgZXNjYXBlS2V5TGlzdGVuZXI/OiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5pbml0aWFsaXplR2xvYmFsTGlzdGVuZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVHbG9iYWxMaXN0ZW5lcnMoKTogdm9pZCB7XHJcbiAgICAvLyBHbG9iYWwgZG9jdW1lbnQgY2xpY2sgbGlzdGVuZXJcclxuICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZURvY3VtZW50Q2xpY2soZXZlbnQpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBHbG9iYWwgZXNjYXBlIGtleSBsaXN0ZW5lclxyXG4gICAgdGhpcy5lc2NhcGVLZXlMaXN0ZW5lciA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICAgIHRoaXMuY2xvc2VBbGxEcm9wZG93bnMoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBBZGQgbGlzdGVuZXJzXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyLCB0cnVlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmVzY2FwZUtleUxpc3RlbmVyLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyRHJvcGRvd24oZHJvcGRvd246IERyb3Bkb3duSW5zdGFuY2UpOiB2b2lkIHtcclxuICAgIC8vIENsb3NlIGFueSBleGlzdGluZyBkcm9wZG93bnMgYmVmb3JlIG9wZW5pbmcgYSBuZXcgb25lXHJcbiAgICB0aGlzLmNsb3NlQWxsRHJvcGRvd25zKCk7XHJcbiAgICBcclxuICAgIHRoaXMuYWN0aXZlRHJvcGRvd25zLnVwZGF0ZShtYXAgPT4ge1xyXG4gICAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XHJcbiAgICAgIG5ld01hcC5zZXQoZHJvcGRvd24uaWQsIGRyb3Bkb3duKTtcclxuICAgICAgcmV0dXJuIG5ld01hcDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdW5yZWdpc3RlckRyb3Bkb3duKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlRHJvcGRvd25zLnVwZGF0ZShtYXAgPT4ge1xyXG4gICAgICBjb25zdCBuZXdNYXAgPSBuZXcgTWFwKG1hcCk7XHJcbiAgICAgIG5ld01hcC5kZWxldGUoaWQpO1xyXG4gICAgICByZXR1cm4gbmV3TWFwO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUFsbERyb3Bkb3ducygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRyb3Bkb3ducyA9IHRoaXMuYWN0aXZlRHJvcGRvd25zKCk7XHJcbiAgICBkcm9wZG93bnMuZm9yRWFjaChkcm9wZG93biA9PiB7XHJcbiAgICAgIGRyb3Bkb3duLmNsb3NlKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWN0aXZlRHJvcGRvd25zLnNldChuZXcgTWFwKCkpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEcm9wZG93bihpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkcm9wZG93bnMgPSB0aGlzLmFjdGl2ZURyb3Bkb3ducygpO1xyXG4gICAgY29uc3QgZHJvcGRvd24gPSBkcm9wZG93bnMuZ2V0KGlkKTtcclxuICAgIGlmIChkcm9wZG93bikge1xyXG4gICAgICBkcm9wZG93bi5jbG9zZSgpO1xyXG4gICAgICB0aGlzLnVucmVnaXN0ZXJEcm9wZG93bihpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0Ryb3Bkb3duT3BlbihpZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEcm9wZG93bnMoKS5oYXMoaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVEb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgZHJvcGRvd25zID0gdGhpcy5hY3RpdmVEcm9wZG93bnMoKTtcclxuICAgIFxyXG4gICAgaWYgKGRyb3Bkb3ducy5zaXplID09PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBpZiBjbGljayBpcyBpbnNpZGUgYW55IG9wZW4gZHJvcGRvd25cclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBFbGVtZW50O1xyXG4gICAgbGV0IGlzQ2xpY2tJbnNpZGVEcm9wZG93biA9IGZhbHNlO1xyXG5cclxuICAgIGRyb3Bkb3ducy5mb3JFYWNoKGRyb3Bkb3duID0+IHtcclxuICAgICAgaWYgKGRyb3Bkb3duLmVsZW1lbnQgJiYgZHJvcGRvd24uZWxlbWVudC5jb250YWlucyh0YXJnZXQpKSB7XHJcbiAgICAgICAgaXNDbGlja0luc2lkZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gSWYgY2xpY2sgaXMgb3V0c2lkZSBhbGwgZHJvcGRvd25zLCBjbG9zZSB0aGVtXHJcbiAgICBpZiAoIWlzQ2xpY2tJbnNpZGVEcm9wZG93bikge1xyXG4gICAgICB0aGlzLmNsb3NlQWxsRHJvcGRvd25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIC8vIENsZWFuIHVwIGdsb2JhbCBsaXN0ZW5lcnNcclxuICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVzY2FwZUtleUxpc3RlbmVyKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmVzY2FwZUtleUxpc3RlbmVyLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19