@acontplus/ng-components 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"acontplus-ng-components.mjs","sources":["../tmp-esm2022/lib/components/cards/dynamic-card/dynamic-card.js","../tmp-esm2022/lib/components/button/button.js","../tmp-esm2022/lib/components/dialog-wrapper/dialog-wrapper.js","../tmp-esm2022/lib/components/icons/user-icon/user-icon.js","../tmp-esm2022/lib/components/icons/svg-icon/svg-icon.js","../tmp-esm2022/lib/components/input-chip/input-chip.js","../tmp-esm2022/lib/components/spinner/spinner.js","../tmp-esm2022/lib/pipes/get-total-pipe.js","../tmp-esm2022/lib/pipes/status-display-pipe.js","../tmp-esm2022/lib/components/tables/dynamic-table/dynamic-table.js","../tmp-esm2022/lib/components/tables/tabulator-table/tabulator-table.js","../tmp-esm2022/lib/services/dialog/advanced-dialog.service.js","../tmp-esm2022/lib/services/overlay-service.js","../tmp-esm2022/lib/services/theme-switcher.js","../tmp-esm2022/lib/models/autocomplete-wrapper-item.js","../tmp-esm2022/lib/services/autocomplete-wrapper-service.js","../tmp-esm2022/lib/components/theme-toggle/theme-toggle.js","../tmp-esm2022/lib/models/mat-table/field-definition.js","../tmp-esm2022/lib/models/mat-table/column-definition.js","../tmp-esm2022/lib/models/mat-table/table-cell-index.js","../tmp-esm2022/lib/models/pagination.js","../tmp-esm2022/lib/components/autocomplete-wrapper/autocomplete-wrapper.js","../tmp-esm2022/lib/directives/to-upper-case.js","../tmp-esm2022/acontplus-ng-components.js"],"sourcesContent":["import { Component, input, output, booleanAttribute, ViewEncapsulation } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/card\";\nimport * as i2 from \"@angular/material/button\";\nimport * as i3 from \"@angular/material/icon\";\n/**\n * A versatile card component that wraps Angular Material's mat-card with additional functionality\n * and customization options. This component provides a consistent card layout with configurable\n * header, content, and action areas.\n *\n * @example\n * <acp-dynamic-card\n * [cardTitle]=\"'Card Title'\"\n * [cardSubtitle]=\"'Card Subtitle'\"\n * [isHeaderVisible]=\"true\"\n * [areActionsVisible]=\"true\"\n * (primaryButtonClicked)=\"onPrimaryAction()\">\n * Card content goes here\n * </acp-dynamic-card>\n */\nexport class DynamicCard {\n // Header inputs\n /**\n * The title text to display in the card header.\n * @default null\n */\n cardTitle = input(null, ...(ngDevMode ? [{ debugName: \"cardTitle\" }] : []));\n /**\n * The subtitle text to display in the card header.\n * @default null\n */\n cardSubtitle = input(null, ...(ngDevMode ? [{ debugName: \"cardSubtitle\" }] : []));\n /**\n * URL for the avatar image to display in the card header.\n * @default null\n */\n avatarImageUrl = input(null, ...(ngDevMode ? [{ debugName: \"avatarImageUrl\" }] : []));\n /**\n * Whether to show the card header section.\n * @default false\n */\n isHeaderVisible = input(false, ...(ngDevMode ? [{ debugName: \"isHeaderVisible\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n // Content inputs\n /**\n * CSS padding value for the card content area.\n * @default '1rem'\n */\n contentPadding = input('1rem', ...(ngDevMode ? [{ debugName: \"contentPadding\" }] : []));\n /**\n * Whether to show a divider between the header and content sections.\n * @default false\n */\n hasDivider = input(false, ...(ngDevMode ? [{ debugName: \"hasDivider\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n // Action inputs\n /**\n * Whether to show the action buttons section.\n * @default false\n */\n areActionsVisible = input(false, ...(ngDevMode ? [{ debugName: \"areActionsVisible\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * Text for the primary action button.\n * @default 'Confirm'\n */\n primaryButtonText = input('Confirm', ...(ngDevMode ? [{ debugName: \"primaryButtonText\" }] : []));\n /**\n * Text for the secondary action button.\n * @default 'Cancel'\n */\n secondaryButtonText = input('Cancel', ...(ngDevMode ? [{ debugName: \"secondaryButtonText\" }] : []));\n /**\n * Material icon name for the primary button.\n * @default null\n */\n primaryButtonIcon = input(null, ...(ngDevMode ? [{ debugName: \"primaryButtonIcon\" }] : []));\n /**\n * Material icon name for the secondary button.\n * @default null\n */\n secondaryButtonIcon = input(null, ...(ngDevMode ? [{ debugName: \"secondaryButtonIcon\" }] : []));\n /**\n * Alignment of the action buttons.\n * @default 'end'\n */\n buttonsPosition = input('end', ...(ngDevMode ? [{ debugName: \"buttonsPosition\" }] : []));\n // Output events\n /**\n * Event emitted when the primary button is clicked.\n */\n primaryButtonClicked = output();\n /**\n * Event emitted when the secondary button is clicked.\n */\n secondaryButtonClicked = output();\n /**\n * Event emitted when the card is clicked.\n */\n cardClicked = output();\n // Methods\n /**\n * Handles the primary button click event.\n * Stops event propagation and emits the primaryButtonClicked event.\n * @param event The click event\n */\n handlePrimaryButtonClick(event) {\n event.stopPropagation();\n this.primaryButtonClicked.emit();\n }\n /**\n * Handles the secondary button click event.\n * Stops event propagation and emits the secondaryButtonClicked event.\n * @param event The click event\n */\n handleSecondaryButtonClick(event) {\n event.stopPropagation();\n this.secondaryButtonClicked.emit();\n }\n /**\n * Handles the card click event.\n * Emits the cardClicked event with the original event.\n * @param event The click event\n */\n handleCardClick(event) {\n this.cardClicked.emit(event);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: DynamicCard, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: DynamicCard, isStandalone: true, selector: \"acp-dynamic-card\", inputs: { cardTitle: { classPropertyName: \"cardTitle\", publicName: \"cardTitle\", isSignal: true, isRequired: false, transformFunction: null }, cardSubtitle: { classPropertyName: \"cardSubtitle\", publicName: \"cardSubtitle\", isSignal: true, isRequired: false, transformFunction: null }, avatarImageUrl: { classPropertyName: \"avatarImageUrl\", publicName: \"avatarImageUrl\", isSignal: true, isRequired: false, transformFunction: null }, isHeaderVisible: { classPropertyName: \"isHeaderVisible\", publicName: \"isHeaderVisible\", isSignal: true, isRequired: false, transformFunction: null }, contentPadding: { classPropertyName: \"contentPadding\", publicName: \"contentPadding\", isSignal: true, isRequired: false, transformFunction: null }, hasDivider: { classPropertyName: \"hasDivider\", publicName: \"hasDivider\", isSignal: true, isRequired: false, transformFunction: null }, areActionsVisible: { classPropertyName: \"areActionsVisible\", publicName: \"areActionsVisible\", isSignal: true, isRequired: false, transformFunction: null }, primaryButtonText: { classPropertyName: \"primaryButtonText\", publicName: \"primaryButtonText\", isSignal: true, isRequired: false, transformFunction: null }, secondaryButtonText: { classPropertyName: \"secondaryButtonText\", publicName: \"secondaryButtonText\", isSignal: true, isRequired: false, transformFunction: null }, primaryButtonIcon: { classPropertyName: \"primaryButtonIcon\", publicName: \"primaryButtonIcon\", isSignal: true, isRequired: false, transformFunction: null }, secondaryButtonIcon: { classPropertyName: \"secondaryButtonIcon\", publicName: \"secondaryButtonIcon\", isSignal: true, isRequired: false, transformFunction: null }, buttonsPosition: { classPropertyName: \"buttonsPosition\", publicName: \"buttonsPosition\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { primaryButtonClicked: \"primaryButtonClicked\", secondaryButtonClicked: \"secondaryButtonClicked\", cardClicked: \"cardClicked\" }, ngImport: i0, template: \"<mat-card\\n appearance=\\\"outlined\\\"\\n (click)=\\\"handleCardClick($event)\\\"\\n [class.mat-card-divider]=\\\"hasDivider()\\\"\\n>\\n @if (isHeaderVisible()) {\\n <mat-card-header>\\n @if (avatarImageUrl()) {\\n <img mat-card-avatar [src]=\\\"avatarImageUrl()\\\" alt=\\\"Card avatar\\\" />\\n } @if (cardTitle()) {\\n <mat-card-title>{{ cardTitle() }}</mat-card-title>\\n } @if (cardSubtitle()) {\\n <mat-card-subtitle>{{ cardSubtitle() }}</mat-card-subtitle>\\n }\\n </mat-card-header>\\n }\\n\\n <mat-card-content [style.padding]=\\\"contentPadding()\\\">\\n <ng-content />\\n </mat-card-content>\\n\\n @if (areActionsVisible()) {\\n <mat-card-actions [align]=\\\"buttonsPosition()\\\">\\n @if (secondaryButtonText()) {\\n <button mat-button color=\\\"warn\\\" (click)=\\\"handleSecondaryButtonClick($event)\\\">\\n @if (secondaryButtonIcon()) {\\n <mat-icon>{{ secondaryButtonIcon() }}</mat-icon>\\n } {{ secondaryButtonText() }}\\n </button>\\n } @if (primaryButtonText()) {\\n <button mat-button color=\\\"primary\\\" (click)=\\\"handlePrimaryButtonClick($event)\\\">\\n @if (primaryButtonIcon()) {\\n <mat-icon>{{ primaryButtonIcon() }}</mat-icon>\\n } {{ primaryButtonText() }}\\n </button>\\n }\\n </mat-card-actions>\\n }\\n</mat-card>\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: MatCardModule }, { kind: \"component\", type: i1.MatCard, selector: \"mat-card\", inputs: [\"appearance\"], exportAs: [\"matCard\"] }, { kind: \"directive\", type: i1.MatCardActions, selector: \"mat-card-actions\", inputs: [\"align\"], exportAs: [\"matCardActions\"] }, { kind: \"directive\", type: i1.MatCardAvatar, selector: \"[mat-card-avatar], [matCardAvatar]\" }, { kind: \"directive\", type: i1.MatCardContent, selector: \"mat-card-content\" }, { kind: \"component\", type: i1.MatCardHeader, selector: \"mat-card-header\" }, { kind: \"directive\", type: i1.MatCardSubtitle, selector: \"mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]\" }, { kind: \"directive\", type: i1.MatCardTitle, selector: \"mat-card-title, [mat-card-title], [matCardTitle]\" }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i2.MatButton, selector: \" button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] \", inputs: [\"matButton\"], exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i3.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: DynamicCard, decorators: [{\n type: Component,\n args: [{ selector: 'acp-dynamic-card', standalone: true, imports: [MatCardModule, MatButtonModule, MatIconModule], encapsulation: ViewEncapsulation.None, template: \"<mat-card\\n appearance=\\\"outlined\\\"\\n (click)=\\\"handleCardClick($event)\\\"\\n [class.mat-card-divider]=\\\"hasDivider()\\\"\\n>\\n @if (isHeaderVisible()) {\\n <mat-card-header>\\n @if (avatarImageUrl()) {\\n <img mat-card-avatar [src]=\\\"avatarImageUrl()\\\" alt=\\\"Card avatar\\\" />\\n } @if (cardTitle()) {\\n <mat-card-title>{{ cardTitle() }}</mat-card-title>\\n } @if (cardSubtitle()) {\\n <mat-card-subtitle>{{ cardSubtitle() }}</mat-card-subtitle>\\n }\\n </mat-card-header>\\n }\\n\\n <mat-card-content [style.padding]=\\\"contentPadding()\\\">\\n <ng-content />\\n </mat-card-content>\\n\\n @if (areActionsVisible()) {\\n <mat-card-actions [align]=\\\"buttonsPosition()\\\">\\n @if (secondaryButtonText()) {\\n <button mat-button color=\\\"warn\\\" (click)=\\\"handleSecondaryButtonClick($event)\\\">\\n @if (secondaryButtonIcon()) {\\n <mat-icon>{{ secondaryButtonIcon() }}</mat-icon>\\n } {{ secondaryButtonText() }}\\n </button>\\n } @if (primaryButtonText()) {\\n <button mat-button color=\\\"primary\\\" (click)=\\\"handlePrimaryButtonClick($event)\\\">\\n @if (primaryButtonIcon()) {\\n <mat-icon>{{ primaryButtonIcon() }}</mat-icon>\\n } {{ primaryButtonText() }}\\n </button>\\n }\\n </mat-card-actions>\\n }\\n</mat-card>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2FyZHMvZHluYW1pYy1jYXJkL2R5bmFtaWMtY2FyZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhcmRzL2R5bmFtaWMtY2FyZC9keW5hbWljLWNhcmQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBRXZEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBU0gsTUFBTSxPQUFPLFdBQVc7SUFDdEIsZ0JBQWdCO0lBQ2hCOzs7T0FHRztJQUNILFNBQVMsR0FBRyxLQUFLLENBQWdCLElBQUkscURBQUMsQ0FBQztJQUV2Qzs7O09BR0c7SUFDSCxZQUFZLEdBQUcsS0FBSyxDQUFnQixJQUFJLHdEQUFDLENBQUM7SUFFMUM7OztPQUdHO0lBQ0gsY0FBYyxHQUFHLEtBQUssQ0FBZ0IsSUFBSSwwREFBQyxDQUFDO0lBRTVDOzs7T0FHRztJQUNILGVBQWUsR0FBRyxLQUFLLENBQUMsS0FBSyxtREFBSSxTQUFTLEVBQUUsZ0JBQWdCLE9BQTdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQUMsQ0FBQztJQUVoRSxpQkFBaUI7SUFDakI7OztPQUdHO0lBQ0gsY0FBYyxHQUFHLEtBQUssQ0FBUyxNQUFNLDBEQUFDLENBQUM7SUFFdkM7OztPQUdHO0lBQ0gsVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLDhDQUFJLFNBQVMsRUFBRSxnQkFBZ0IsT0FBN0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsR0FBQyxDQUFDO0lBRTNELGdCQUFnQjtJQUNoQjs7O09BR0c7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLENBQUMsS0FBSyxxREFBSSxTQUFTLEVBQUUsZ0JBQWdCLE9BQTdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQUMsQ0FBQztJQUVsRTs7O09BR0c7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLENBQUMsU0FBUyw2REFBQyxDQUFDO0lBRXJDOzs7T0FHRztJQUNILG1CQUFtQixHQUFHLEtBQUssQ0FBQyxRQUFRLCtEQUFDLENBQUM7SUFFdEM7OztPQUdHO0lBQ0gsaUJBQWlCLEdBQUcsS0FBSyxDQUFnQixJQUFJLDZEQUFDLENBQUM7SUFFL0M7OztPQUdHO0lBQ0gsbUJBQW1CLEdBQUcsS0FBSyxDQUFnQixJQUFJLCtEQUFDLENBQUM7SUFFakQ7OztPQUdHO0lBQ0gsZUFBZSxHQUFHLEtBQUssQ0FBa0IsS0FBSywyREFBQyxDQUFDO0lBRWhELGdCQUFnQjtJQUNoQjs7T0FFRztJQUNILG9CQUFvQixHQUFHLE1BQU0sRUFBUSxDQUFDO0lBRXRDOztPQUVHO0lBQ0gsc0JBQXNCLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFFeEM7O09BRUc7SUFDSCxXQUFXLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFFOUIsVUFBVTtJQUNWOzs7O09BSUc7SUFDSCx3QkFBd0IsQ0FBQyxLQUFZO1FBQ25DLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCwwQkFBMEIsQ0FBQyxLQUFZO1FBQ3JDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsS0FBWTtRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO3VHQXhIVSxXQUFXOzJGQUFYLFdBQVcsbStEQzVCeEIsNnVDQXVDQSx5RERoQlksYUFBYSx3dUJBQUUsZUFBZSxtWEFBRSxhQUFhOzsyRkFLNUMsV0FBVztrQkFSdkIsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsaUJBR3pDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIGJvb2xlYW5BdHRyaWJ1dGUsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG4vKipcbiAqIEEgdmVyc2F0aWxlIGNhcmQgY29tcG9uZW50IHRoYXQgd3JhcHMgQW5ndWxhciBNYXRlcmlhbCdzIG1hdC1jYXJkIHdpdGggYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5XG4gKiBhbmQgY3VzdG9taXphdGlvbiBvcHRpb25zLiBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgY2FyZCBsYXlvdXQgd2l0aCBjb25maWd1cmFibGVcbiAqIGhlYWRlciwgY29udGVudCwgYW5kIGFjdGlvbiBhcmVhcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPGFjcC1keW5hbWljLWNhcmRcbiAqICAgW2NhcmRUaXRsZV09XCInQ2FyZCBUaXRsZSdcIlxuICogICBbY2FyZFN1YnRpdGxlXT1cIidDYXJkIFN1YnRpdGxlJ1wiXG4gKiAgIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiXG4gKiAgIFthcmVBY3Rpb25zVmlzaWJsZV09XCJ0cnVlXCJcbiAqICAgKHByaW1hcnlCdXR0b25DbGlja2VkKT1cIm9uUHJpbWFyeUFjdGlvbigpXCI+XG4gKiAgIENhcmQgY29udGVudCBnb2VzIGhlcmVcbiAqIDwvYWNwLWR5bmFtaWMtY2FyZD5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLWR5bmFtaWMtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRDYXJkTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1jYXJkLmh0bWwnLFxuICBzdHlsZVVybDogJy4vZHluYW1pYy1jYXJkLnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljQ2FyZCB7XG4gIC8vIEhlYWRlciBpbnB1dHNcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGNhcmQgaGVhZGVyLlxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBjYXJkVGl0bGUgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogVGhlIHN1YnRpdGxlIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgY2FyZCBoZWFkZXIuXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIGNhcmRTdWJ0aXRsZSA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBVUkwgZm9yIHRoZSBhdmF0YXIgaW1hZ2UgdG8gZGlzcGxheSBpbiB0aGUgY2FyZCBoZWFkZXIuXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIGF2YXRhckltYWdlVXJsID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FyZCBoZWFkZXIgc2VjdGlvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGlzSGVhZGVyVmlzaWJsZSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvLyBDb250ZW50IGlucHV0c1xuICAvKipcbiAgICogQ1NTIHBhZGRpbmcgdmFsdWUgZm9yIHRoZSBjYXJkIGNvbnRlbnQgYXJlYS5cbiAgICogQGRlZmF1bHQgJzFyZW0nXG4gICAqL1xuICBjb250ZW50UGFkZGluZyA9IGlucHV0PHN0cmluZz4oJzFyZW0nKTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IGEgZGl2aWRlciBiZXR3ZWVuIHRoZSBoZWFkZXIgYW5kIGNvbnRlbnQgc2VjdGlvbnMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoYXNEaXZpZGVyID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8vIEFjdGlvbiBpbnB1dHNcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgYWN0aW9uIGJ1dHRvbnMgc2VjdGlvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGFyZUFjdGlvbnNWaXNpYmxlID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBUZXh0IGZvciB0aGUgcHJpbWFyeSBhY3Rpb24gYnV0dG9uLlxuICAgKiBAZGVmYXVsdCAnQ29uZmlybSdcbiAgICovXG4gIHByaW1hcnlCdXR0b25UZXh0ID0gaW5wdXQoJ0NvbmZpcm0nKTtcblxuICAvKipcbiAgICogVGV4dCBmb3IgdGhlIHNlY29uZGFyeSBhY3Rpb24gYnV0dG9uLlxuICAgKiBAZGVmYXVsdCAnQ2FuY2VsJ1xuICAgKi9cbiAgc2Vjb25kYXJ5QnV0dG9uVGV4dCA9IGlucHV0KCdDYW5jZWwnKTtcblxuICAvKipcbiAgICogTWF0ZXJpYWwgaWNvbiBuYW1lIGZvciB0aGUgcHJpbWFyeSBidXR0b24uXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIHByaW1hcnlCdXR0b25JY29uID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIE1hdGVyaWFsIGljb24gbmFtZSBmb3IgdGhlIHNlY29uZGFyeSBidXR0b24uXG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIHNlY29uZGFyeUJ1dHRvbkljb24gPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogQWxpZ25tZW50IG9mIHRoZSBhY3Rpb24gYnV0dG9ucy5cbiAgICogQGRlZmF1bHQgJ2VuZCdcbiAgICovXG4gIGJ1dHRvbnNQb3NpdGlvbiA9IGlucHV0PCdzdGFydCcgfCAnZW5kJz4oJ2VuZCcpO1xuXG4gIC8vIE91dHB1dCBldmVudHNcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcHJpbWFyeSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICovXG4gIHByaW1hcnlCdXR0b25DbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2Vjb25kYXJ5IGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgc2Vjb25kYXJ5QnV0dG9uQ2xpY2tlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNhcmQgaXMgY2xpY2tlZC5cbiAgICovXG4gIGNhcmRDbGlja2VkID0gb3V0cHV0PEV2ZW50PigpO1xuXG4gIC8vIE1ldGhvZHNcbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHByaW1hcnkgYnV0dG9uIGNsaWNrIGV2ZW50LlxuICAgKiBTdG9wcyBldmVudCBwcm9wYWdhdGlvbiBhbmQgZW1pdHMgdGhlIHByaW1hcnlCdXR0b25DbGlja2VkIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGNsaWNrIGV2ZW50XG4gICAqL1xuICBoYW5kbGVQcmltYXJ5QnV0dG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5wcmltYXJ5QnV0dG9uQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgc2Vjb25kYXJ5IGJ1dHRvbiBjbGljayBldmVudC5cbiAgICogU3RvcHMgZXZlbnQgcHJvcGFnYXRpb24gYW5kIGVtaXRzIHRoZSBzZWNvbmRhcnlCdXR0b25DbGlja2VkIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGNsaWNrIGV2ZW50XG4gICAqL1xuICBoYW5kbGVTZWNvbmRhcnlCdXR0b25DbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlY29uZGFyeUJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNhcmQgY2xpY2sgZXZlbnQuXG4gICAqIEVtaXRzIHRoZSBjYXJkQ2xpY2tlZCBldmVudCB3aXRoIHRoZSBvcmlnaW5hbCBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBjbGljayBldmVudFxuICAgKi9cbiAgaGFuZGxlQ2FyZENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2FyZENsaWNrZWQuZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxtYXQtY2FyZFxuICBhcHBlYXJhbmNlPVwib3V0bGluZWRcIlxuICAoY2xpY2spPVwiaGFuZGxlQ2FyZENsaWNrKCRldmVudClcIlxuICBbY2xhc3MubWF0LWNhcmQtZGl2aWRlcl09XCJoYXNEaXZpZGVyKClcIlxuPlxuICBAaWYgKGlzSGVhZGVyVmlzaWJsZSgpKSB7XG4gIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgQGlmIChhdmF0YXJJbWFnZVVybCgpKSB7XG4gICAgPGltZyBtYXQtY2FyZC1hdmF0YXIgW3NyY109XCJhdmF0YXJJbWFnZVVybCgpXCIgYWx0PVwiQ2FyZCBhdmF0YXJcIiAvPlxuICAgIH0gQGlmIChjYXJkVGl0bGUoKSkge1xuICAgIDxtYXQtY2FyZC10aXRsZT57eyBjYXJkVGl0bGUoKSB9fTwvbWF0LWNhcmQtdGl0bGU+XG4gICAgfSBAaWYgKGNhcmRTdWJ0aXRsZSgpKSB7XG4gICAgPG1hdC1jYXJkLXN1YnRpdGxlPnt7IGNhcmRTdWJ0aXRsZSgpIH19PC9tYXQtY2FyZC1zdWJ0aXRsZT5cbiAgICB9XG4gIDwvbWF0LWNhcmQtaGVhZGVyPlxuICB9XG5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgW3N0eWxlLnBhZGRpbmddPVwiY29udGVudFBhZGRpbmcoKVwiPlxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cblxuICBAaWYgKGFyZUFjdGlvbnNWaXNpYmxlKCkpIHtcbiAgPG1hdC1jYXJkLWFjdGlvbnMgW2FsaWduXT1cImJ1dHRvbnNQb3NpdGlvbigpXCI+XG4gICAgQGlmIChzZWNvbmRhcnlCdXR0b25UZXh0KCkpIHtcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImhhbmRsZVNlY29uZGFyeUJ1dHRvbkNsaWNrKCRldmVudClcIj5cbiAgICAgIEBpZiAoc2Vjb25kYXJ5QnV0dG9uSWNvbigpKSB7XG4gICAgICA8bWF0LWljb24+e3sgc2Vjb25kYXJ5QnV0dG9uSWNvbigpIH19PC9tYXQtaWNvbj5cbiAgICAgIH0ge3sgc2Vjb25kYXJ5QnV0dG9uVGV4dCgpIH19XG4gICAgPC9idXR0b24+XG4gICAgfSBAaWYgKHByaW1hcnlCdXR0b25UZXh0KCkpIHtcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImhhbmRsZVByaW1hcnlCdXR0b25DbGljaygkZXZlbnQpXCI+XG4gICAgICBAaWYgKHByaW1hcnlCdXR0b25JY29uKCkpIHtcbiAgICAgIDxtYXQtaWNvbj57eyBwcmltYXJ5QnV0dG9uSWNvbigpIH19PC9tYXQtaWNvbj5cbiAgICAgIH0ge3sgcHJpbWFyeUJ1dHRvblRleHQoKSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuICB9XG48L21hdC1jYXJkPlxuIl19","import { Component, input, output, ViewEncapsulation } from '@angular/core';\nimport { MatButton, MatFabButton, MatIconButton, MatMiniFabButton } from '@angular/material/button';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport * as i0 from \"@angular/core\";\nexport class Button {\n variant = input('primary', ...(ngDevMode ? [{ debugName: \"variant\" }] : []));\n text = input('', ...(ngDevMode ? [{ debugName: \"text\" }] : []));\n icon = input('', ...(ngDevMode ? [{ debugName: \"icon\" }] : []));\n disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n type = input('button', ...(ngDevMode ? [{ debugName: \"type\" }] : []));\n matStyle = input('elevated', ...(ngDevMode ? [{ debugName: \"matStyle\" }] : []));\n customClass = input(...(ngDevMode ? [undefined, { debugName: \"customClass\" }] : []));\n extended = input(false, ...(ngDevMode ? [{ debugName: \"extended\" }] : [])); // For extended FAB\n title = input('', ...(ngDevMode ? [{ debugName: \"title\" }] : []));\n ariaLabel = input('', ...(ngDevMode ? [{ debugName: \"ariaLabel\" }] : []));\n name = input('', ...(ngDevMode ? [{ debugName: \"name\" }] : []));\n id = input('', ...(ngDevMode ? [{ debugName: \"id\" }] : []));\n form = input('', ...(ngDevMode ? [{ debugName: \"form\" }] : []));\n tabIndex = input(0, ...(ngDevMode ? [{ debugName: \"tabIndex\" }] : []));\n testId = input('', ...(ngDevMode ? [{ debugName: \"testId\" }] : []));\n handleClick = output();\n getButtonClasses() {\n const classes = {\n [`mat-btn-${this.variant()}`]: true,\n };\n const customClass = this.customClass();\n if (customClass) {\n classes[customClass] = true;\n }\n return classes;\n }\n getDisplayText() {\n const style = this.matStyle();\n if (style === 'icon' || style === 'fab' || style === 'mini-fab') {\n return '';\n }\n return this.text();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: Button, isStandalone: true, selector: \"acp-button\", inputs: { variant: { classPropertyName: \"variant\", publicName: \"variant\", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: \"text\", publicName: \"text\", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: \"icon\", publicName: \"icon\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: true, isRequired: false, transformFunction: null }, matStyle: { classPropertyName: \"matStyle\", publicName: \"matStyle\", isSignal: true, isRequired: false, transformFunction: null }, customClass: { classPropertyName: \"customClass\", publicName: \"customClass\", isSignal: true, isRequired: false, transformFunction: null }, extended: { classPropertyName: \"extended\", publicName: \"extended\", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: \"ariaLabel\", publicName: \"ariaLabel\", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: \"form\", publicName: \"form\", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: true, isRequired: false, transformFunction: null }, testId: { classPropertyName: \"testId\", publicName: \"testId\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { handleClick: \"handleClick\" }, ngImport: i0, template: \"@switch (matStyle()) { @case ('text') {\\n<button\\n matButton\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('elevated') {\\n<button\\n matButton=\\\"elevated\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('outlined') {\\n<button\\n matButton=\\\"outlined\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('tonal') {\\n<button\\n matButton=\\\"tonal\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('icon') {\\n<button\\n matIconButton\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('fab') {\\n<button\\n matFab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('mini-fab') {\\n<button\\n matMiniFab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('extended-fab') {\\n<button\\n matFab\\n extended\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @default {\\n<button\\n matButton=\\\"filled\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} }\\n\\n<ng-template #buttonContent>\\n @if (icon()) {\\n <mat-icon>{{ icon() }}</mat-icon>\\n } @if (getDisplayText()) { {{ getDisplayText() }} }\\n\\n <ng-content />\\n</ng-template>\\n\", styles: [\":root{--acp-secondary: #e0e0e0;--acp-secondary-on: #000000;--acp-success: #4caf50;--acp-success-on: #ffffff;--acp-danger: #ba1a1a;--acp-danger-on: #ffffff;--acp-warning: #ff9800;--acp-warning-on: #000000;--acp-info: #2196f3;--acp-info-on: #ffffff;--acp-dark: #212121;--acp-dark-on: #ffffff}.dark-theme{--acp-secondary: #424242;--acp-secondary-on: #ffffff;--acp-success: #81c784;--acp-success-on: #1b5e20;--acp-danger: #ef5350;--acp-danger-on: #b71c1c;--acp-warning: #ffb74d;--acp-warning-on: #e65100;--acp-info: #64b5f6;--acp-info-on: #0d47a1;--acp-dark: #616161;--acp-dark-on: #ffffff}acp-button{display:inline-block;margin:4px}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label,button[matbutton=tonal] .mdc-button__label,.mat-mdc-fab.mdc-fab--extended .mdc-button__label{display:flex;align-items:center;gap:8px}.mat-mdc-button.mat-btn-secondary,.mat-mdc-unelevated-button.mat-btn-secondary{background-color:var(--acp-secondary)!important;color:var(--acp-secondary-on)!important}.mat-mdc-button.mat-btn-secondary:hover,.mat-mdc-unelevated-button.mat-btn-secondary:hover{background-color:color-mix(in srgb,var(--acp-secondary) 80%,black)!important}.mat-mdc-button.mat-btn-success,.mat-mdc-unelevated-button.mat-btn-success{background-color:var(--acp-success)!important;color:var(--acp-success-on)!important}.mat-mdc-button.mat-btn-danger,.mat-mdc-unelevated-button.mat-btn-danger{background-color:var(--acp-danger)!important;color:var(--acp-danger-on)!important}.mat-mdc-button.mat-btn-warning,.mat-mdc-unelevated-button.mat-btn-warning{background-color:var(--acp-warning)!important;color:var(--acp-warning-on)!important}.mat-mdc-button.mat-btn-info,.mat-mdc-unelevated-button.mat-btn-info{background-color:var(--acp-info)!important;color:var(--acp-info-on)!important}.mat-mdc-button.mat-btn-dark,.mat-mdc-unelevated-button.mat-btn-dark{background-color:var(--acp-dark)!important;color:var(--acp-dark-on)!important}button[matbutton=tonal].mat-btn-success{background-color:color-mix(in srgb,var(--acp-success) 12%,transparent)!important;color:var(--acp-success)!important}button[matbutton=tonal].mat-btn-danger{background-color:color-mix(in srgb,var(--acp-danger) 12%,transparent)!important;color:var(--acp-danger)!important}button[matbutton=tonal].mat-btn-warning{background-color:color-mix(in srgb,var(--acp-warning) 12%,transparent)!important;color:var(--acp-warning)!important}button[matbutton=tonal].mat-btn-info{background-color:color-mix(in srgb,var(--acp-info) 12%,transparent)!important;color:var(--acp-info)!important}button[matbutton=tonal].mat-btn-dark{background-color:color-mix(in srgb,var(--acp-dark) 12%,transparent)!important;color:var(--acp-dark)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-secondary{color:var(--mat-sys-on-surface)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-success{color:var(--acp-success)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-danger{color:var(--acp-danger)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-warning{color:var(--acp-warning)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-info{color:var(--acp-info)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-dark{color:var(--acp-dark)!important}.mat-mdc-raised-button.mat-btn-secondary{background-color:var(--mat-sys-surface-container-low)!important;color:var(--mat-sys-on-surface)!important}.mat-mdc-raised-button.mat-btn-success{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-success)!important}.mat-mdc-raised-button.mat-btn-success:hover{background-color:color-mix(in srgb,var(--acp-success) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-danger{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-danger)!important}.mat-mdc-raised-button.mat-btn-danger:hover{background-color:color-mix(in srgb,var(--acp-danger) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-warning{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-warning)!important}.mat-mdc-raised-button.mat-btn-warning:hover{background-color:color-mix(in srgb,var(--acp-warning) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-info{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-info)!important}.mat-mdc-raised-button.mat-btn-info:hover{background-color:color-mix(in srgb,var(--acp-info) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-dark{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-dark)!important}.mat-mdc-raised-button.mat-btn-dark:hover{background-color:color-mix(in srgb,var(--acp-dark) 12%,transparent)!important}.mat-mdc-outlined-button.mat-btn-secondary{border-color:var(--mat-sys-outline)!important;color:var(--mat-sys-on-surface)!important}.mat-mdc-outlined-button.mat-btn-success{border-color:var(--acp-success)!important;color:var(--acp-success)!important}.mat-mdc-outlined-button.mat-btn-danger{border-color:var(--acp-danger)!important;color:var(--acp-danger)!important}.mat-mdc-outlined-button.mat-btn-warning{border-color:var(--acp-warning)!important;color:var(--acp-warning)!important}.mat-mdc-outlined-button.mat-btn-info{border-color:var(--acp-info)!important;color:var(--acp-info)!important}.mat-mdc-outlined-button.mat-btn-dark{border-color:var(--acp-dark)!important;color:var(--acp-dark)!important}.mat-mdc-fab.mat-btn-secondary,.mat-mdc-mini-fab.mat-btn-secondary{background-color:var(--acp-secondary)!important;color:var(--acp-secondary-on)!important}.mat-mdc-fab.mat-btn-success,.mat-mdc-mini-fab.mat-btn-success{background-color:var(--acp-success)!important;color:var(--acp-success-on)!important}.mat-mdc-fab.mat-btn-danger,.mat-mdc-mini-fab.mat-btn-danger{background-color:var(--acp-danger)!important;color:var(--acp-danger-on)!important}.mat-mdc-fab.mat-btn-warning,.mat-mdc-mini-fab.mat-btn-warning{background-color:var(--acp-warning)!important;color:var(--acp-warning-on)!important}.mat-mdc-fab.mat-btn-info,.mat-mdc-mini-fab.mat-btn-info{background-color:var(--acp-info)!important;color:var(--acp-info-on)!important}.mat-mdc-fab.mat-btn-dark,.mat-mdc-mini-fab.mat-btn-dark{background-color:var(--acp-dark)!important;color:var(--acp-dark-on)!important}.mat-mdc-icon-button.mat-btn-secondary{color:var(--mat-sys-on-surface)!important}.mat-mdc-icon-button.mat-btn-success{color:var(--acp-success)!important}.mat-mdc-icon-button.mat-btn-danger{color:var(--acp-danger)!important}.mat-mdc-icon-button.mat-btn-warning{color:var(--acp-warning)!important}.mat-mdc-icon-button.mat-btn-info{color:var(--acp-info)!important}.mat-mdc-icon-button.mat-btn-dark{color:var(--acp-dark)!important}\\n\"], dependencies: [{ kind: \"component\", type: MatButton, selector: \" button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] \", inputs: [\"matButton\"], exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: MatMiniFabButton, selector: \"button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"component\", type: MatFabButton, selector: \"button[mat-fab], a[mat-fab], button[matFab], a[matFab]\", inputs: [\"extended\"], exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: Button, decorators: [{\n type: Component,\n args: [{ selector: 'acp-button', imports: [\n MatButton,\n NgClass,\n MatIcon,\n MatMiniFabButton,\n MatIconButton,\n MatFabButton,\n NgTemplateOutlet,\n ], encapsulation: ViewEncapsulation.None, template: \"@switch (matStyle()) { @case ('text') {\\n<button\\n matButton\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('elevated') {\\n<button\\n matButton=\\\"elevated\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('outlined') {\\n<button\\n matButton=\\\"outlined\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('tonal') {\\n<button\\n matButton=\\\"tonal\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('icon') {\\n<button\\n matIconButton\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('fab') {\\n<button\\n matFab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('mini-fab') {\\n<button\\n matMiniFab\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @case ('extended-fab') {\\n<button\\n matFab\\n extended\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} @default {\\n<button\\n matButton=\\\"filled\\\"\\n [ngClass]=\\\"getButtonClasses()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [type]=\\\"type()\\\"\\n [title]=\\\"title()\\\"\\n [attr.aria-label]=\\\"ariaLabel() || title()\\\"\\n [attr.name]=\\\"name()\\\"\\n [attr.id]=\\\"id()\\\"\\n [attr.form]=\\\"form()\\\"\\n [attr.tabindex]=\\\"tabIndex()\\\"\\n [attr.data-testid]=\\\"testId()\\\"\\n (click)=\\\"handleClick.emit($event)\\\"\\n>\\n <ng-container [ngTemplateOutlet]=\\\"buttonContent\\\" />\\n</button>\\n} }\\n\\n<ng-template #buttonContent>\\n @if (icon()) {\\n <mat-icon>{{ icon() }}</mat-icon>\\n } @if (getDisplayText()) { {{ getDisplayText() }} }\\n\\n <ng-content />\\n</ng-template>\\n\", styles: [\":root{--acp-secondary: #e0e0e0;--acp-secondary-on: #000000;--acp-success: #4caf50;--acp-success-on: #ffffff;--acp-danger: #ba1a1a;--acp-danger-on: #ffffff;--acp-warning: #ff9800;--acp-warning-on: #000000;--acp-info: #2196f3;--acp-info-on: #ffffff;--acp-dark: #212121;--acp-dark-on: #ffffff}.dark-theme{--acp-secondary: #424242;--acp-secondary-on: #ffffff;--acp-success: #81c784;--acp-success-on: #1b5e20;--acp-danger: #ef5350;--acp-danger-on: #b71c1c;--acp-warning: #ffb74d;--acp-warning-on: #e65100;--acp-info: #64b5f6;--acp-info-on: #0d47a1;--acp-dark: #616161;--acp-dark-on: #ffffff}acp-button{display:inline-block;margin:4px}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label,button[matbutton=tonal] .mdc-button__label,.mat-mdc-fab.mdc-fab--extended .mdc-button__label{display:flex;align-items:center;gap:8px}.mat-mdc-button.mat-btn-secondary,.mat-mdc-unelevated-button.mat-btn-secondary{background-color:var(--acp-secondary)!important;color:var(--acp-secondary-on)!important}.mat-mdc-button.mat-btn-secondary:hover,.mat-mdc-unelevated-button.mat-btn-secondary:hover{background-color:color-mix(in srgb,var(--acp-secondary) 80%,black)!important}.mat-mdc-button.mat-btn-success,.mat-mdc-unelevated-button.mat-btn-success{background-color:var(--acp-success)!important;color:var(--acp-success-on)!important}.mat-mdc-button.mat-btn-danger,.mat-mdc-unelevated-button.mat-btn-danger{background-color:var(--acp-danger)!important;color:var(--acp-danger-on)!important}.mat-mdc-button.mat-btn-warning,.mat-mdc-unelevated-button.mat-btn-warning{background-color:var(--acp-warning)!important;color:var(--acp-warning-on)!important}.mat-mdc-button.mat-btn-info,.mat-mdc-unelevated-button.mat-btn-info{background-color:var(--acp-info)!important;color:var(--acp-info-on)!important}.mat-mdc-button.mat-btn-dark,.mat-mdc-unelevated-button.mat-btn-dark{background-color:var(--acp-dark)!important;color:var(--acp-dark-on)!important}button[matbutton=tonal].mat-btn-success{background-color:color-mix(in srgb,var(--acp-success) 12%,transparent)!important;color:var(--acp-success)!important}button[matbutton=tonal].mat-btn-danger{background-color:color-mix(in srgb,var(--acp-danger) 12%,transparent)!important;color:var(--acp-danger)!important}button[matbutton=tonal].mat-btn-warning{background-color:color-mix(in srgb,var(--acp-warning) 12%,transparent)!important;color:var(--acp-warning)!important}button[matbutton=tonal].mat-btn-info{background-color:color-mix(in srgb,var(--acp-info) 12%,transparent)!important;color:var(--acp-info)!important}button[matbutton=tonal].mat-btn-dark{background-color:color-mix(in srgb,var(--acp-dark) 12%,transparent)!important;color:var(--acp-dark)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-secondary{color:var(--mat-sys-on-surface)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-success{color:var(--acp-success)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-danger{color:var(--acp-danger)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-warning{color:var(--acp-warning)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-info{color:var(--acp-info)!important}.mat-mdc-button:not(.mat-mdc-unelevated-button):not(.mat-mdc-raised-button):not(.mat-mdc-outlined-button).mat-btn-dark{color:var(--acp-dark)!important}.mat-mdc-raised-button.mat-btn-secondary{background-color:var(--mat-sys-surface-container-low)!important;color:var(--mat-sys-on-surface)!important}.mat-mdc-raised-button.mat-btn-success{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-success)!important}.mat-mdc-raised-button.mat-btn-success:hover{background-color:color-mix(in srgb,var(--acp-success) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-danger{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-danger)!important}.mat-mdc-raised-button.mat-btn-danger:hover{background-color:color-mix(in srgb,var(--acp-danger) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-warning{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-warning)!important}.mat-mdc-raised-button.mat-btn-warning:hover{background-color:color-mix(in srgb,var(--acp-warning) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-info{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-info)!important}.mat-mdc-raised-button.mat-btn-info:hover{background-color:color-mix(in srgb,var(--acp-info) 12%,transparent)!important}.mat-mdc-raised-button.mat-btn-dark{background-color:var(--mat-sys-surface-container-low)!important;color:var(--acp-dark)!important}.mat-mdc-raised-button.mat-btn-dark:hover{background-color:color-mix(in srgb,var(--acp-dark) 12%,transparent)!important}.mat-mdc-outlined-button.mat-btn-secondary{border-color:var(--mat-sys-outline)!important;color:var(--mat-sys-on-surface)!important}.mat-mdc-outlined-button.mat-btn-success{border-color:var(--acp-success)!important;color:var(--acp-success)!important}.mat-mdc-outlined-button.mat-btn-danger{border-color:var(--acp-danger)!important;color:var(--acp-danger)!important}.mat-mdc-outlined-button.mat-btn-warning{border-color:var(--acp-warning)!important;color:var(--acp-warning)!important}.mat-mdc-outlined-button.mat-btn-info{border-color:var(--acp-info)!important;color:var(--acp-info)!important}.mat-mdc-outlined-button.mat-btn-dark{border-color:var(--acp-dark)!important;color:var(--acp-dark)!important}.mat-mdc-fab.mat-btn-secondary,.mat-mdc-mini-fab.mat-btn-secondary{background-color:var(--acp-secondary)!important;color:var(--acp-secondary-on)!important}.mat-mdc-fab.mat-btn-success,.mat-mdc-mini-fab.mat-btn-success{background-color:var(--acp-success)!important;color:var(--acp-success-on)!important}.mat-mdc-fab.mat-btn-danger,.mat-mdc-mini-fab.mat-btn-danger{background-color:var(--acp-danger)!important;color:var(--acp-danger-on)!important}.mat-mdc-fab.mat-btn-warning,.mat-mdc-mini-fab.mat-btn-warning{background-color:var(--acp-warning)!important;color:var(--acp-warning-on)!important}.mat-mdc-fab.mat-btn-info,.mat-mdc-mini-fab.mat-btn-info{background-color:var(--acp-info)!important;color:var(--acp-info-on)!important}.mat-mdc-fab.mat-btn-dark,.mat-mdc-mini-fab.mat-btn-dark{background-color:var(--acp-dark)!important;color:var(--acp-dark-on)!important}.mat-mdc-icon-button.mat-btn-secondary{color:var(--mat-sys-on-surface)!important}.mat-mdc-icon-button.mat-btn-success{color:var(--acp-success)!important}.mat-mdc-icon-button.mat-btn-danger{color:var(--acp-danger)!important}.mat-mdc-icon-button.mat-btn-warning{color:var(--acp-warning)!important}.mat-mdc-icon-button.mat-btn-info{color:var(--acp-info)!important}.mat-mdc-icon-button.mat-btn-dark{color:var(--acp-dark)!important}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFrQmpELE1BQU0sT0FBTyxNQUFNO0lBQ2pCLE9BQU8sR0FBRyxLQUFLLENBQWdCLFNBQVMsbURBQUMsQ0FBQztJQUMxQyxJQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsZ0RBQUMsQ0FBQztJQUN6QixJQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsZ0RBQUMsQ0FBQztJQUN6QixRQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssb0RBQUMsQ0FBQztJQUNqQyxJQUFJLEdBQUcsS0FBSyxDQUFhLFFBQVEsZ0RBQUMsQ0FBQztJQUNuQyxRQUFRLEdBQUcsS0FBSyxDQUFzQixVQUFVLG9EQUFDLENBQUM7SUFDbEQsV0FBVyxHQUFHLEtBQUssaUVBQXNCLENBQUM7SUFFMUMsUUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLG9EQUFDLENBQUMsQ0FBQyxtQkFBbUI7SUFDckQsS0FBSyxHQUFHLEtBQUssQ0FBUyxFQUFFLGlEQUFDLENBQUM7SUFDMUIsU0FBUyxHQUFHLEtBQUssQ0FBUyxFQUFFLHFEQUFDLENBQUM7SUFDOUIsSUFBSSxHQUFHLEtBQUssQ0FBUyxFQUFFLGdEQUFDLENBQUM7SUFDekIsRUFBRSxHQUFHLEtBQUssQ0FBUyxFQUFFLDhDQUFDLENBQUM7SUFDdkIsSUFBSSxHQUFHLEtBQUssQ0FBUyxFQUFFLGdEQUFDLENBQUM7SUFDekIsUUFBUSxHQUFHLEtBQUssQ0FBUyxDQUFDLG9EQUFDLENBQUM7SUFDNUIsTUFBTSxHQUFHLEtBQUssQ0FBUyxFQUFFLGtEQUFDLENBQUM7SUFFM0IsV0FBVyxHQUFHLE1BQU0sRUFBVyxDQUFDO0lBRWhDLGdCQUFnQjtRQUNkLE1BQU0sT0FBTyxHQUE0QjtZQUN2QyxDQUFDLFdBQVcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJO1NBQ3BDLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDaEUsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQzt1R0FyQ1UsTUFBTTsyRkFBTixNQUFNLHM3RENyQm5CLG13SUFtS0EsK2lPRDFKSSxTQUFTLHlVQUNULE9BQU8sb0ZBQ1AsT0FBTywySUFDUCxnQkFBZ0IsMkpBQ2hCLGFBQWEsdUtBQ2IsWUFBWSwrSkFDWixnQkFBZ0I7OzJGQU1QLE1BQU07a0JBZmxCLFNBQVM7K0JBQ0UsWUFBWSxXQUNiO3dCQUNQLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGdCQUFnQjtxQkFDakIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbiwgTWF0RmFiQnV0dG9uLCBNYXRJY29uQnV0dG9uLCBNYXRNaW5pRmFiQnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSwgQnV0dG9uVmFyaWFudCwgTWF0ZXJpYWxCdXR0b25TdHlsZSB9IGZyb20gJy4uLy4uL3R5cGVzL2J1dHRvbi10eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLWJ1dHRvbicsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRCdXR0b24sXG4gICAgTmdDbGFzcyxcbiAgICBNYXRJY29uLFxuICAgIE1hdE1pbmlGYWJCdXR0b24sXG4gICAgTWF0SWNvbkJ1dHRvbixcbiAgICBNYXRGYWJCdXR0b24sXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2J1dHRvbi5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uIHtcbiAgdmFyaWFudCA9IGlucHV0PEJ1dHRvblZhcmlhbnQ+KCdwcmltYXJ5Jyk7XG4gIHRleHQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgaWNvbiA9IGlucHV0PHN0cmluZz4oJycpO1xuICBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgdHlwZSA9IGlucHV0PEJ1dHRvblR5cGU+KCdidXR0b24nKTtcbiAgbWF0U3R5bGUgPSBpbnB1dDxNYXRlcmlhbEJ1dHRvblN0eWxlPignZWxldmF0ZWQnKTtcbiAgY3VzdG9tQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgZXh0ZW5kZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7IC8vIEZvciBleHRlbmRlZCBGQUJcbiAgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgYXJpYUxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIG5hbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgaWQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgZm9ybSA9IGlucHV0PHN0cmluZz4oJycpO1xuICB0YWJJbmRleCA9IGlucHV0PG51bWJlcj4oMCk7XG4gIHRlc3RJZCA9IGlucHV0PHN0cmluZz4oJycpO1xuXG4gIGhhbmRsZUNsaWNrID0gb3V0cHV0PHVua25vd24+KCk7XG5cbiAgZ2V0QnV0dG9uQ2xhc3NlcygpOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB7XG4gICAgY29uc3QgY2xhc3NlczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7XG4gICAgICBbYG1hdC1idG4tJHt0aGlzLnZhcmlhbnQoKX1gXTogdHJ1ZSxcbiAgICB9O1xuICAgIGNvbnN0IGN1c3RvbUNsYXNzID0gdGhpcy5jdXN0b21DbGFzcygpO1xuICAgIGlmIChjdXN0b21DbGFzcykge1xuICAgICAgY2xhc3Nlc1tjdXN0b21DbGFzc10gPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIGdldERpc3BsYXlUZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLm1hdFN0eWxlKCk7XG4gICAgaWYgKHN0eWxlID09PSAnaWNvbicgfHwgc3R5bGUgPT09ICdmYWInIHx8IHN0eWxlID09PSAnbWluaS1mYWInKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgfVxufVxuIiwiQHN3aXRjaCAobWF0U3R5bGUoKSkgeyBAY2FzZSAoJ3RleHQnKSB7XG48YnV0dG9uXG4gIG1hdEJ1dHRvblxuICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIFt0eXBlXT1cInR5cGUoKVwiXG4gIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKSB8fCB0aXRsZSgpXCJcbiAgW2F0dHIubmFtZV09XCJuYW1lKClcIlxuICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgW2F0dHIuZm9ybV09XCJmb3JtKClcIlxuICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAoY2xpY2spPVwiaGFuZGxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCIgLz5cbjwvYnV0dG9uPlxufSBAY2FzZSAoJ2VsZXZhdGVkJykge1xuPGJ1dHRvblxuICBtYXRCdXR0b249XCJlbGV2YXRlZFwiXG4gIFtuZ0NsYXNzXT1cImdldEJ1dHRvbkNsYXNzZXMoKVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW3R5cGVdPVwidHlwZSgpXCJcbiAgW3RpdGxlXT1cInRpdGxlKClcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpIHx8IHRpdGxlKClcIlxuICBbYXR0ci5uYW1lXT1cIm5hbWUoKVwiXG4gIFthdHRyLmlkXT1cImlkKClcIlxuICBbYXR0ci5mb3JtXT1cImZvcm0oKVwiXG4gIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICBbYXR0ci5kYXRhLXRlc3RpZF09XCJ0ZXN0SWQoKVwiXG4gIChjbGljayk9XCJoYW5kbGVDbGljay5lbWl0KCRldmVudClcIlxuPlxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbkNvbnRlbnRcIiAvPlxuPC9idXR0b24+XG59IEBjYXNlICgnb3V0bGluZWQnKSB7XG48YnV0dG9uXG4gIG1hdEJ1dHRvbj1cIm91dGxpbmVkXCJcbiAgW25nQ2xhc3NdPVwiZ2V0QnV0dG9uQ2xhc3NlcygpXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICBbdHlwZV09XCJ0eXBlKClcIlxuICBbdGl0bGVdPVwidGl0bGUoKVwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsKCkgfHwgdGl0bGUoKVwiXG4gIFthdHRyLm5hbWVdPVwibmFtZSgpXCJcbiAgW2F0dHIuaWRdPVwiaWQoKVwiXG4gIFthdHRyLmZvcm1dPVwiZm9ybSgpXCJcbiAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCgpXCJcbiAgKGNsaWNrKT1cImhhbmRsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiIC8+XG48L2J1dHRvbj5cbn0gQGNhc2UgKCd0b25hbCcpIHtcbjxidXR0b25cbiAgbWF0QnV0dG9uPVwidG9uYWxcIlxuICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIFt0eXBlXT1cInR5cGUoKVwiXG4gIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKSB8fCB0aXRsZSgpXCJcbiAgW2F0dHIubmFtZV09XCJuYW1lKClcIlxuICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgW2F0dHIuZm9ybV09XCJmb3JtKClcIlxuICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAoY2xpY2spPVwiaGFuZGxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCIgLz5cbjwvYnV0dG9uPlxufSBAY2FzZSAoJ2ljb24nKSB7XG48YnV0dG9uXG4gIG1hdEljb25CdXR0b25cbiAgW25nQ2xhc3NdPVwiZ2V0QnV0dG9uQ2xhc3NlcygpXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICBbdHlwZV09XCJ0eXBlKClcIlxuICBbdGl0bGVdPVwidGl0bGUoKVwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsKCkgfHwgdGl0bGUoKVwiXG4gIFthdHRyLm5hbWVdPVwibmFtZSgpXCJcbiAgW2F0dHIuaWRdPVwiaWQoKVwiXG4gIFthdHRyLmZvcm1dPVwiZm9ybSgpXCJcbiAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCgpXCJcbiAgKGNsaWNrKT1cImhhbmRsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiIC8+XG48L2J1dHRvbj5cbn0gQGNhc2UgKCdmYWInKSB7XG48YnV0dG9uXG4gIG1hdEZhYlxuICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIFt0eXBlXT1cInR5cGUoKVwiXG4gIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKSB8fCB0aXRsZSgpXCJcbiAgW2F0dHIubmFtZV09XCJuYW1lKClcIlxuICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgW2F0dHIuZm9ybV09XCJmb3JtKClcIlxuICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAoY2xpY2spPVwiaGFuZGxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCIgLz5cbjwvYnV0dG9uPlxufSBAY2FzZSAoJ21pbmktZmFiJykge1xuPGJ1dHRvblxuICBtYXRNaW5pRmFiXG4gIFtuZ0NsYXNzXT1cImdldEJ1dHRvbkNsYXNzZXMoKVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW3R5cGVdPVwidHlwZSgpXCJcbiAgW3RpdGxlXT1cInRpdGxlKClcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpIHx8IHRpdGxlKClcIlxuICBbYXR0ci5uYW1lXT1cIm5hbWUoKVwiXG4gIFthdHRyLmlkXT1cImlkKClcIlxuICBbYXR0ci5mb3JtXT1cImZvcm0oKVwiXG4gIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICBbYXR0ci5kYXRhLXRlc3RpZF09XCJ0ZXN0SWQoKVwiXG4gIChjbGljayk9XCJoYW5kbGVDbGljay5lbWl0KCRldmVudClcIlxuPlxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbkNvbnRlbnRcIiAvPlxuPC9idXR0b24+XG59IEBjYXNlICgnZXh0ZW5kZWQtZmFiJykge1xuPGJ1dHRvblxuICBtYXRGYWJcbiAgZXh0ZW5kZWRcbiAgW25nQ2xhc3NdPVwiZ2V0QnV0dG9uQ2xhc3NlcygpXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICBbdHlwZV09XCJ0eXBlKClcIlxuICBbdGl0bGVdPVwidGl0bGUoKVwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsKCkgfHwgdGl0bGUoKVwiXG4gIFthdHRyLm5hbWVdPVwibmFtZSgpXCJcbiAgW2F0dHIuaWRdPVwiaWQoKVwiXG4gIFthdHRyLmZvcm1dPVwiZm9ybSgpXCJcbiAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gIFthdHRyLmRhdGEtdGVzdGlkXT1cInRlc3RJZCgpXCJcbiAgKGNsaWNrKT1cImhhbmRsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiIC8+XG48L2J1dHRvbj5cbn0gQGRlZmF1bHQge1xuPGJ1dHRvblxuICBtYXRCdXR0b249XCJmaWxsZWRcIlxuICBbbmdDbGFzc109XCJnZXRCdXR0b25DbGFzc2VzKClcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIFt0eXBlXT1cInR5cGUoKVwiXG4gIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKSB8fCB0aXRsZSgpXCJcbiAgW2F0dHIubmFtZV09XCJuYW1lKClcIlxuICBbYXR0ci5pZF09XCJpZCgpXCJcbiAgW2F0dHIuZm9ybV09XCJmb3JtKClcIlxuICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGVzdElkKClcIlxuICAoY2xpY2spPVwiaGFuZGxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCIgLz5cbjwvYnV0dG9uPlxufSB9XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uQ29udGVudD5cbiAgQGlmIChpY29uKCkpIHtcbiAgPG1hdC1pY29uPnt7IGljb24oKSB9fTwvbWF0LWljb24+XG4gIH0gQGlmIChnZXREaXNwbGF5VGV4dCgpKSB7IHt7IGdldERpc3BsYXlUZXh0KCkgfX0gfVxuXG4gIDxuZy1jb250ZW50IC8+XG48L25nLXRlbXBsYXRlPlxuIl19","import { Component, ViewContainerRef, ChangeDetectionStrategy, inject, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { MAT_DIALOG_DATA, MatDialogRef, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Button } from '../button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/dialog\";\nimport * as i2 from \"@angular/material/icon\";\n/**\n * A wrapper component for Angular Material dialogs that provides a consistent look and feel,\n * including a draggable header and the ability to dynamically create components inside the dialog.\n *\n * This component is typically used with the AdvancedDialogService's openInWrapper method.\n *\n * @example\n * // In your service or component:\n * this.dialogService.openInWrapper({\n * component: YourDialogContentComponent,\n * title: 'Dialog Title',\n * icon: 'info',\n * data: { message: 'This is some data passed to the dialog content component' }\n * });\n */\nexport class DialogWrapper {\n dialogRef = inject(MatDialogRef);\n config = inject(MAT_DIALOG_DATA);\n /**\n * A template reference that acts as an anchor for dynamic content.\n * This is where the component specified in the config will be rendered.\n */\n contentHost = viewChild.required('contentHost', { read: ViewContainerRef });\n /**\n * A reference to the header element for the z-index focus logic.\n * Used to bring the dialog to the front when clicked.\n */\n header = viewChild('dialogHeader', ...(ngDevMode ? [{ debugName: \"header\" }] : []));\n /**\n * Static counter to track the highest z-index for multiple dialogs.\n * Ensures that the most recently clicked dialog appears on top.\n */\n static lastZIndex = 1000;\n /**\n * Timeout ID for debouncing z-index updates to prevent excessive DOM manipulations.\n */\n bringToFrontTimeoutId = null;\n /**\n * Creates an instance of DialogWrapper.\n *\n * @param dialogRef Reference to the dialog opened via the Material Dialog service\n * @param config Configuration for the dialog wrapper, injected from MAT_DIALOG_DATA\n */\n constructor() {\n // Constructor intentionally empty - required by Angular DI\n }\n /**\n * Lifecycle hook that initializes the dynamic content after the view is ready.\n * Creates the component specified in the config and passes data to it.\n */\n ngAfterViewInit() {\n // Dynamically create the content component after the view is ready.\n this.contentHost().clear();\n const componentRef = this.contentHost().createComponent(this.config.component);\n // Pass the provided data directly to the new component's instance.\n // This requires the content component to have an @Input() property named 'data'.\n if (this.config.data && componentRef.instance) {\n componentRef.instance.data = this.config.data;\n }\n }\n /**\n * Cleanup lifecycle hook to cancel any pending animation frame requests.\n */\n ngOnDestroy() {\n if (this.bringToFrontTimeoutId !== null) {\n cancelAnimationFrame(this.bringToFrontTimeoutId);\n this.bringToFrontTimeoutId = null;\n }\n }\n /**\n * Closes the dialog.\n * Called when the close button in the header is clicked.\n */\n onClose() {\n this.dialogRef.close();\n }\n /**\n * Brings the dialog to the front by adjusting its z-index.\n * Uses requestAnimationFrame to debounce updates and prevent excessive DOM manipulations.\n * Called when the dialog header is clicked.\n */\n bringToFront() {\n // Clear any pending update\n if (this.bringToFrontTimeoutId !== null) {\n cancelAnimationFrame(this.bringToFrontTimeoutId);\n }\n // Schedule the z-index update for the next animation frame\n this.bringToFrontTimeoutId = requestAnimationFrame(() => {\n const pane = this.header()?.nativeElement.closest('.cdk-overlay-pane');\n if (pane) {\n pane.style.zIndex = (++DialogWrapper.lastZIndex).toString();\n }\n this.bringToFrontTimeoutId = null;\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: DialogWrapper, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: DialogWrapper, isStandalone: true, selector: \"acp-dialog-wrapper\", viewQueries: [{ propertyName: \"contentHost\", first: true, predicate: [\"contentHost\"], descendants: true, read: ViewContainerRef, isSignal: true }, { propertyName: \"header\", first: true, predicate: [\"dialogHeader\"], descendants: true, isSignal: true }], ngImport: i0, template: \"@if (!config.hideHeader) {\\n<div\\n class=\\\"acp-dialog-header\\\"\\n cdkDrag\\n cdkDragRootElement=\\\".cdk-overlay-pane\\\"\\n cdkDragHandle\\n #dialogHeader\\n (mousedown)=\\\"bringToFront()\\\"\\n>\\n <h6 mat-dialog-title class=\\\"acp-dialog-title\\\">\\n @if (config.icon) {\\n <mat-icon class=\\\"acp-dialog-title-icon\\\" aria-hidden=\\\"true\\\">{{ config.icon }}</mat-icon>\\n }\\n <span>{{ config.title }}</span>\\n @if (config.showCloseButton !== false) {\\n <acp-button\\n [customClass]=\\\"'acp-dialog-close-btn'\\\"\\n matStyle=\\\"icon\\\"\\n icon=\\\"close\\\"\\n (handleClick)=\\\"onClose()\\\"\\n ariaLabel=\\\"Close Dialog\\\"\\n />\\n }\\n </h6>\\n</div>\\n}\\n\\n<ng-template #contentHost />\\n\", styles: [\".acp-dialog-header{cursor:move;padding:12px 24px;border-bottom:1px solid var(--mat-sys-outline-variant, #dee2e6);color:var(--mat-sys-on-surface, #212529);position:relative}h6[mat-dialog-title].acp-dialog-title{display:flex;align-items:center;font-size:1.2rem;font-weight:500;margin:0;width:100%;padding-right:48px}.acp-dialog-title-icon{margin-right:12px;vertical-align:middle}h6[mat-dialog-title].acp-dialog-title span{flex-grow:1}mat-dialog-content{padding:24px}.acp-dialog-close-btn{position:absolute;top:8px;right:16px}\\n\"], dependencies: [{ kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"directive\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: [\"cdkDragHandleDisabled\"] }, { kind: \"ngmodule\", type: MatDialogModule }, { kind: \"directive\", type: i1.MatDialogTitle, selector: \"[mat-dialog-title], [matDialogTitle]\", inputs: [\"id\"], exportAs: [\"matDialogTitle\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i2.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: Button, selector: \"acp-button\", inputs: [\"variant\", \"text\", \"icon\", \"disabled\", \"type\", \"matStyle\", \"customClass\", \"extended\", \"title\", \"ariaLabel\", \"name\", \"id\", \"form\", \"tabIndex\", \"testId\"], outputs: [\"handleClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: DialogWrapper, decorators: [{\n type: Component,\n args: [{ selector: 'acp-dialog-wrapper', standalone: true, imports: [CdkDrag, CdkDragHandle, MatDialogModule, MatIconModule, Button], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"@if (!config.hideHeader) {\\n<div\\n class=\\\"acp-dialog-header\\\"\\n cdkDrag\\n cdkDragRootElement=\\\".cdk-overlay-pane\\\"\\n cdkDragHandle\\n #dialogHeader\\n (mousedown)=\\\"bringToFront()\\\"\\n>\\n <h6 mat-dialog-title class=\\\"acp-dialog-title\\\">\\n @if (config.icon) {\\n <mat-icon class=\\\"acp-dialog-title-icon\\\" aria-hidden=\\\"true\\\">{{ config.icon }}</mat-icon>\\n }\\n <span>{{ config.title }}</span>\\n @if (config.showCloseButton !== false) {\\n <acp-button\\n [customClass]=\\\"'acp-dialog-close-btn'\\\"\\n matStyle=\\\"icon\\\"\\n icon=\\\"close\\\"\\n (handleClick)=\\\"onClose()\\\"\\n ariaLabel=\\\"Close Dialog\\\"\\n />\\n }\\n </h6>\\n</div>\\n}\\n\\n<ng-template #contentHost />\\n\", styles: [\".acp-dialog-header{cursor:move;padding:12px 24px;border-bottom:1px solid var(--mat-sys-outline-variant, #dee2e6);color:var(--mat-sys-on-surface, #212529);position:relative}h6[mat-dialog-title].acp-dialog-title{display:flex;align-items:center;font-size:1.2rem;font-weight:500;margin:0;width:100%;padding-right:48px}.acp-dialog-title-icon{margin-right:12px;vertical-align:middle}h6[mat-dialog-title].acp-dialog-title span{flex-grow:1}mat-dialog-content{padding:24px}.acp-dialog-close-btn{position:absolute;top:8px;right:16px}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kaWFsb2ctd3JhcHBlci9kaWFsb2ctd3JhcHBlci50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RpYWxvZy13cmFwcGVyL2RpYWxvZy13cmFwcGVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxnQkFBZ0IsRUFHaEIsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixTQUFTLEVBRVQsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFFbkM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFVSCxNQUFNLE9BQU8sYUFBYTtJQUN4QixTQUFTLEdBQUcsTUFBTSxDQUE4QixZQUFZLENBQUMsQ0FBQztJQUM5RCxNQUFNLEdBQUcsTUFBTSxDQUFzQixlQUFlLENBQUMsQ0FBQztJQUV0RDs7O09BR0c7SUFDTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBRXJGOzs7T0FHRztJQUNNLE1BQU0sR0FBRyxTQUFTLENBQWEsY0FBYyxrREFBQyxDQUFDO0lBRXhEOzs7T0FHRztJQUNLLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBRWpDOztPQUVHO0lBQ0sscUJBQXFCLEdBQWtCLElBQUksQ0FBQztJQUVwRDs7Ozs7T0FLRztJQUNIO1FBQ0UsMkRBQTJEO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2Isb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0UsbUVBQW1FO1FBQ25FLGlGQUFpRjtRQUNqRixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM3QyxZQUFZLENBQUMsUUFBZ0IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZO1FBQ1YsMkJBQTJCO1FBQzNCLElBQUksSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCwyREFBMkQ7UUFDM0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtZQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBZ0IsQ0FBQztZQUN0RixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUQsQ0FBQztZQUNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQTFGVSxhQUFhOzJGQUFiLGFBQWEscUtBUXlDLGdCQUFnQixzSkNsRG5GLGlzQkE0QkEsdWtCRFFZLE9BQU8sd2NBQUUsYUFBYSw4RkFBRSxlQUFlLDhLQUFFLGFBQWEsb0xBQUUsTUFBTTs7MkZBTTdELGFBQWE7a0JBVHpCLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsbUJBR3hELHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBpbmplY3QsXG4gIHZpZXdDaGlsZCxcbiAgT25EZXN0cm95LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdIYW5kbGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRGlhbG9nV3JhcHBlckNvbmZpZyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL2J1dHRvbic7XG5cbi8qKlxuICogQSB3cmFwcGVyIGNvbXBvbmVudCBmb3IgQW5ndWxhciBNYXRlcmlhbCBkaWFsb2dzIHRoYXQgcHJvdmlkZXMgYSBjb25zaXN0ZW50IGxvb2sgYW5kIGZlZWwsXG4gKiBpbmNsdWRpbmcgYSBkcmFnZ2FibGUgaGVhZGVyIGFuZCB0aGUgYWJpbGl0eSB0byBkeW5hbWljYWxseSBjcmVhdGUgY29tcG9uZW50cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIHRoZSBBZHZhbmNlZERpYWxvZ1NlcnZpY2UncyBvcGVuSW5XcmFwcGVyIG1ldGhvZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSW4geW91ciBzZXJ2aWNlIG9yIGNvbXBvbmVudDpcbiAqIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuSW5XcmFwcGVyKHtcbiAqICAgY29tcG9uZW50OiBZb3VyRGlhbG9nQ29udGVudENvbXBvbmVudCxcbiAqICAgdGl0bGU6ICdEaWFsb2cgVGl0bGUnLFxuICogICBpY29uOiAnaW5mbycsXG4gKiAgIGRhdGE6IHsgbWVzc2FnZTogJ1RoaXMgaXMgc29tZSBkYXRhIHBhc3NlZCB0byB0aGUgZGlhbG9nIGNvbnRlbnQgY29tcG9uZW50JyB9XG4gKiB9KTtcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLWRpYWxvZy13cmFwcGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Nka0RyYWcsIENka0RyYWdIYW5kbGUsIE1hdERpYWxvZ01vZHVsZSwgTWF0SWNvbk1vZHVsZSwgQnV0dG9uXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy13cmFwcGVyLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctd3JhcHBlci5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dXcmFwcGVyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgZGlhbG9nUmVmID0gaW5qZWN0PE1hdERpYWxvZ1JlZjxEaWFsb2dXcmFwcGVyPj4oTWF0RGlhbG9nUmVmKTtcbiAgY29uZmlnID0gaW5qZWN0PERpYWxvZ1dyYXBwZXJDb25maWc+KE1BVF9ESUFMT0dfREFUQSk7XG5cbiAgLyoqXG4gICAqIEEgdGVtcGxhdGUgcmVmZXJlbmNlIHRoYXQgYWN0cyBhcyBhbiBhbmNob3IgZm9yIGR5bmFtaWMgY29udGVudC5cbiAgICogVGhpcyBpcyB3aGVyZSB0aGUgY29tcG9uZW50IHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIHdpbGwgYmUgcmVuZGVyZWQuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50SG9zdCA9IHZpZXdDaGlsZC5yZXF1aXJlZCgnY29udGVudEhvc3QnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSk7XG5cbiAgLyoqXG4gICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBoZWFkZXIgZWxlbWVudCBmb3IgdGhlIHotaW5kZXggZm9jdXMgbG9naWMuXG4gICAqIFVzZWQgdG8gYnJpbmcgdGhlIGRpYWxvZyB0byB0aGUgZnJvbnQgd2hlbiBjbGlja2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdkaWFsb2dIZWFkZXInKTtcblxuICAvKipcbiAgICogU3RhdGljIGNvdW50ZXIgdG8gdHJhY2sgdGhlIGhpZ2hlc3Qgei1pbmRleCBmb3IgbXVsdGlwbGUgZGlhbG9ncy5cbiAgICogRW5zdXJlcyB0aGF0IHRoZSBtb3N0IHJlY2VudGx5IGNsaWNrZWQgZGlhbG9nIGFwcGVhcnMgb24gdG9wLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgbGFzdFpJbmRleCA9IDEwMDA7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgSUQgZm9yIGRlYm91bmNpbmcgei1pbmRleCB1cGRhdGVzIHRvIHByZXZlbnQgZXhjZXNzaXZlIERPTSBtYW5pcHVsYXRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBicmluZ1RvRnJvbnRUaW1lb3V0SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIERpYWxvZ1dyYXBwZXIuXG4gICAqXG4gICAqIEBwYXJhbSBkaWFsb2dSZWYgUmVmZXJlbmNlIHRvIHRoZSBkaWFsb2cgb3BlbmVkIHZpYSB0aGUgTWF0ZXJpYWwgRGlhbG9nIHNlcnZpY2VcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgZGlhbG9nIHdyYXBwZXIsIGluamVjdGVkIGZyb20gTUFUX0RJQUxPR19EQVRBXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBDb25zdHJ1Y3RvciBpbnRlbnRpb25hbGx5IGVtcHR5IC0gcmVxdWlyZWQgYnkgQW5ndWxhciBESVxuICB9XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZSBob29rIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIGR5bmFtaWMgY29udGVudCBhZnRlciB0aGUgdmlldyBpcyByZWFkeS5cbiAgICogQ3JlYXRlcyB0aGUgY29tcG9uZW50IHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIGFuZCBwYXNzZXMgZGF0YSB0byBpdC5cbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBEeW5hbWljYWxseSBjcmVhdGUgdGhlIGNvbnRlbnQgY29tcG9uZW50IGFmdGVyIHRoZSB2aWV3IGlzIHJlYWR5LlxuICAgIHRoaXMuY29udGVudEhvc3QoKS5jbGVhcigpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29udGVudEhvc3QoKS5jcmVhdGVDb21wb25lbnQodGhpcy5jb25maWcuY29tcG9uZW50KTtcblxuICAgIC8vIFBhc3MgdGhlIHByb3ZpZGVkIGRhdGEgZGlyZWN0bHkgdG8gdGhlIG5ldyBjb21wb25lbnQncyBpbnN0YW5jZS5cbiAgICAvLyBUaGlzIHJlcXVpcmVzIHRoZSBjb250ZW50IGNvbXBvbmVudCB0byBoYXZlIGFuIEBJbnB1dCgpIHByb3BlcnR5IG5hbWVkICdkYXRhJy5cbiAgICBpZiAodGhpcy5jb25maWcuZGF0YSAmJiBjb21wb25lbnRSZWYuaW5zdGFuY2UpIHtcbiAgICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55KS5kYXRhID0gdGhpcy5jb25maWcuZGF0YTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW51cCBsaWZlY3ljbGUgaG9vayB0byBjYW5jZWwgYW55IHBlbmRpbmcgYW5pbWF0aW9uIGZyYW1lIHJlcXVlc3RzLlxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYnJpbmdUb0Zyb250VGltZW91dElkICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmJyaW5nVG9Gcm9udFRpbWVvdXRJZCk7XG4gICAgICB0aGlzLmJyaW5nVG9Gcm9udFRpbWVvdXRJZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZGlhbG9nLlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgY2xvc2UgYnV0dG9uIGluIHRoZSBoZWFkZXIgaXMgY2xpY2tlZC5cbiAgICovXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCcmluZ3MgdGhlIGRpYWxvZyB0byB0aGUgZnJvbnQgYnkgYWRqdXN0aW5nIGl0cyB6LWluZGV4LlxuICAgKiBVc2VzIHJlcXVlc3RBbmltYXRpb25GcmFtZSB0byBkZWJvdW5jZSB1cGRhdGVzIGFuZCBwcmV2ZW50IGV4Y2Vzc2l2ZSBET00gbWFuaXB1bGF0aW9ucy5cbiAgICogQ2FsbGVkIHdoZW4gdGhlIGRpYWxvZyBoZWFkZXIgaXMgY2xpY2tlZC5cbiAgICovXG4gIGJyaW5nVG9Gcm9udCgpOiB2b2lkIHtcbiAgICAvLyBDbGVhciBhbnkgcGVuZGluZyB1cGRhdGVcbiAgICBpZiAodGhpcy5icmluZ1RvRnJvbnRUaW1lb3V0SWQgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYnJpbmdUb0Zyb250VGltZW91dElkKTtcbiAgICB9XG5cbiAgICAvLyBTY2hlZHVsZSB0aGUgei1pbmRleCB1cGRhdGUgZm9yIHRoZSBuZXh0IGFuaW1hdGlvbiBmcmFtZVxuICAgIHRoaXMuYnJpbmdUb0Zyb250VGltZW91dElkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGNvbnN0IHBhbmUgPSB0aGlzLmhlYWRlcigpPy5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJy5jZGstb3ZlcmxheS1wYW5lJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAocGFuZSkge1xuICAgICAgICBwYW5lLnN0eWxlLnpJbmRleCA9ICgrK0RpYWxvZ1dyYXBwZXIubGFzdFpJbmRleCkudG9TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnJpbmdUb0Zyb250VGltZW91dElkID0gbnVsbDtcbiAgICB9KTtcbiAgfVxufVxuIiwiQGlmICghY29uZmlnLmhpZGVIZWFkZXIpIHtcbjxkaXZcbiAgY2xhc3M9XCJhY3AtZGlhbG9nLWhlYWRlclwiXG4gIGNka0RyYWdcbiAgY2RrRHJhZ1Jvb3RFbGVtZW50PVwiLmNkay1vdmVybGF5LXBhbmVcIlxuICBjZGtEcmFnSGFuZGxlXG4gICNkaWFsb2dIZWFkZXJcbiAgKG1vdXNlZG93bik9XCJicmluZ1RvRnJvbnQoKVwiXG4+XG4gIDxoNiBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPVwiYWNwLWRpYWxvZy10aXRsZVwiPlxuICAgIEBpZiAoY29uZmlnLmljb24pIHtcbiAgICA8bWF0LWljb24gY2xhc3M9XCJhY3AtZGlhbG9nLXRpdGxlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBjb25maWcuaWNvbiB9fTwvbWF0LWljb24+XG4gICAgfVxuICAgIDxzcGFuPnt7IGNvbmZpZy50aXRsZSB9fTwvc3Bhbj5cbiAgICBAaWYgKGNvbmZpZy5zaG93Q2xvc2VCdXR0b24gIT09IGZhbHNlKSB7XG4gICAgPGFjcC1idXR0b25cbiAgICAgIFtjdXN0b21DbGFzc109XCInYWNwLWRpYWxvZy1jbG9zZS1idG4nXCJcbiAgICAgIG1hdFN0eWxlPVwiaWNvblwiXG4gICAgICBpY29uPVwiY2xvc2VcIlxuICAgICAgKGhhbmRsZUNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICBhcmlhTGFiZWw9XCJDbG9zZSBEaWFsb2dcIlxuICAgIC8+XG4gICAgfVxuICA8L2g2PlxuPC9kaXY+XG59XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudEhvc3QgLz5cbiJdfQ==","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class UserIcon {\n size = input('35', ...(ngDevMode ? [{ debugName: \"size\" }] : []));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: UserIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.4\", type: UserIcon, isStandalone: true, selector: \"acp-user-icon\", inputs: { size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<svg\\n [attr.width]=\\\"size()\\\"\\n [attr.height]=\\\"size()\\\"\\n version=\\\"1.1\\\"\\n id=\\\"Capa_1\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\\n viewBox=\\\"0 0 480 480\\\"\\n xml:space=\\\"preserve\\\"\\n fill=\\\"#000000\\\"\\n>\\n <g id=\\\"SVGRepo_bgCarrier\\\" stroke-width=\\\"0\\\"></g>\\n <g id=\\\"SVGRepo_tracerCarrier\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"></g>\\n <g id=\\\"SVGRepo_iconCarrier\\\">\\n <g>\\n <g>\\n <circle style=\\\"fill: #b8bac0\\\" cx=\\\"240\\\" cy=\\\"240\\\" r=\\\"240\\\"></circle>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M240,360.07c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611 c2.02,1.235,3.588,3.262,3.894,5.784c3.992,32.484,34.781,56.977,71.625,56.977c36.836,0,67.625-24.496,71.625-56.977 c0.31-2.525,1.844-4.549,3.895-5.78c-3.08-12.233-3.503-28.999-3.517-40.615C293.297,348.079,267.944,360.07,240,360.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #d7dbe0\\\"\\n d=\\\"M310.44,330.174c-18.549,18.477-43.242,29.896-70.44,29.896 c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611c2.02,1.235,3.588,3.262,3.894,5.784 c1.765,14.359,8.778,27.144,19.223,36.954C235.766,405.265,290.437,357.702,310.44,330.174z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M312,160.07H176c-22.055,0-40,17.945-40,40v48c0,61.758,46.656,112,104,112s104-50.242,104-112 v-56C344,174.426,329.648,160.07,312,160.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M296,72.07H192c-15.047,0-27.695,10.438-31.102,24.449C133.359,100.02,112,123.598,112,152.07v40 c0,20.617,8.752,39.851,24,53.52v-45.52c0-22.055,17.945-40,40-40h136c17.648,0,32,14.355,32,32v53.511 c15.251-13.667,24-32.899,24-53.511v-48C368,104.371,335.703,72.07,296,72.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M61.632,400.544C105.562,449.319,169.191,480,240,480s134.438-30.681,178.368-79.456 c-7.66-10.356-18.462-18.77-32.352-22.659c-0.32-0.09-0.641-0.16-0.969-0.207l-63.859-9.582c-0.391-0.059-1.227-0.09-1.625-0.09 c-4.039,0-7.445,3.012-7.938,7.023c-4,32.48-34.789,56.977-71.625,56.977c-36.844,0-67.633-24.492-71.625-56.977 c-0.5-4.129-4.219-7.234-8.141-7.02c-0.469-0.027-0.93,0.012-1.422,0.086l-63.859,9.582c-0.328,0.047-0.648,0.117-0.969,0.207 C80.094,381.775,69.292,390.188,61.632,400.544z\\\"\\n ></path>\\n </g>\\n </g>\\n </g>\\n</svg>\\n\", styles: [\"\"], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: UserIcon, decorators: [{\n type: Component,\n args: [{ selector: 'acp-user-icon', imports: [], encapsulation: ViewEncapsulation.None, template: \"<svg\\n [attr.width]=\\\"size()\\\"\\n [attr.height]=\\\"size()\\\"\\n version=\\\"1.1\\\"\\n id=\\\"Capa_1\\\"\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\\n viewBox=\\\"0 0 480 480\\\"\\n xml:space=\\\"preserve\\\"\\n fill=\\\"#000000\\\"\\n>\\n <g id=\\\"SVGRepo_bgCarrier\\\" stroke-width=\\\"0\\\"></g>\\n <g id=\\\"SVGRepo_tracerCarrier\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"></g>\\n <g id=\\\"SVGRepo_iconCarrier\\\">\\n <g>\\n <g>\\n <circle style=\\\"fill: #b8bac0\\\" cx=\\\"240\\\" cy=\\\"240\\\" r=\\\"240\\\"></circle>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M240,360.07c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611 c2.02,1.235,3.588,3.262,3.894,5.784c3.992,32.484,34.781,56.977,71.625,56.977c36.836,0,67.625-24.496,71.625-56.977 c0.31-2.525,1.844-4.549,3.895-5.78c-3.08-12.233-3.503-28.999-3.517-40.615C293.297,348.079,267.944,360.07,240,360.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #d7dbe0\\\"\\n d=\\\"M310.44,330.174c-18.549,18.477-43.242,29.896-70.44,29.896 c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611c2.02,1.235,3.588,3.262,3.894,5.784 c1.765,14.359,8.778,27.144,19.223,36.954C235.766,405.265,290.437,357.702,310.44,330.174z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #ffffff\\\"\\n d=\\\"M312,160.07H176c-22.055,0-40,17.945-40,40v48c0,61.758,46.656,112,104,112s104-50.242,104-112 v-56C344,174.426,329.648,160.07,312,160.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M296,72.07H192c-15.047,0-27.695,10.438-31.102,24.449C133.359,100.02,112,123.598,112,152.07v40 c0,20.617,8.752,39.851,24,53.52v-45.52c0-22.055,17.945-40,40-40h136c17.648,0,32,14.355,32,32v53.511 c15.251-13.667,24-32.899,24-53.511v-48C368,104.371,335.703,72.07,296,72.07z\\\"\\n ></path>\\n </g>\\n </g>\\n <g>\\n <path\\n style=\\\"fill: #5c546a\\\"\\n d=\\\"M61.632,400.544C105.562,449.319,169.191,480,240,480s134.438-30.681,178.368-79.456 c-7.66-10.356-18.462-18.77-32.352-22.659c-0.32-0.09-0.641-0.16-0.969-0.207l-63.859-9.582c-0.391-0.059-1.227-0.09-1.625-0.09 c-4.039,0-7.445,3.012-7.938,7.023c-4,32.48-34.789,56.977-71.625,56.977c-36.844,0-67.633-24.492-71.625-56.977 c-0.5-4.129-4.219-7.234-8.141-7.02c-0.469-0.027-0.93,0.012-1.422,0.086l-63.859,9.582c-0.328,0.047-0.648,0.117-0.969,0.207 C80.094,381.775,69.292,390.188,61.632,400.544z\\\"\\n ></path>\\n </g>\\n </g>\\n </g>\\n</svg>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pY29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaWNvbnMvdXNlci1pY29uL3VzZXItaWNvbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ljb25zL3VzZXItaWNvbi91c2VyLWljb24uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTcEUsTUFBTSxPQUFPLFFBQVE7SUFDbkIsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLGdEQUFDLENBQUM7dUdBRFIsUUFBUTsyRkFBUixRQUFRLDBNQ1RyQixnckZBMkRBOzsyRkRsRGEsUUFBUTtrQkFQcEIsU0FBUzsrQkFDRSxlQUFlLFdBQ2hCLEVBQUUsaUJBR0ksaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC11c2VyLWljb24nLFxuICBpbXBvcnRzOiBbXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItaWNvbi5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3VzZXItaWNvbi5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlckljb24ge1xuICBzaXplID0gaW5wdXQoJzM1Jyk7XG59XG4iLCI8c3ZnXG4gIFthdHRyLndpZHRoXT1cInNpemUoKVwiXG4gIFthdHRyLmhlaWdodF09XCJzaXplKClcIlxuICB2ZXJzaW9uPVwiMS4xXCJcbiAgaWQ9XCJDYXBhXzFcIlxuICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbiAgdmlld0JveD1cIjAgMCA0ODAgNDgwXCJcbiAgeG1sOnNwYWNlPVwicHJlc2VydmVcIlxuICBmaWxsPVwiIzAwMDAwMFwiXG4+XG4gIDxnIGlkPVwiU1ZHUmVwb19iZ0NhcnJpZXJcIiBzdHJva2Utd2lkdGg9XCIwXCI+PC9nPlxuICA8ZyBpZD1cIlNWR1JlcG9fdHJhY2VyQ2FycmllclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvZz5cbiAgPGcgaWQ9XCJTVkdSZXBvX2ljb25DYXJyaWVyXCI+XG4gICAgPGc+XG4gICAgICA8Zz5cbiAgICAgICAgPGNpcmNsZSBzdHlsZT1cImZpbGw6ICNiOGJhYzBcIiBjeD1cIjI0MFwiIGN5PVwiMjQwXCIgcj1cIjI0MFwiPjwvY2lyY2xlPlxuICAgICAgPC9nPlxuICAgICAgPGc+XG4gICAgICAgIDxnPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBzdHlsZT1cImZpbGw6ICNmZmZmZmZcIlxuICAgICAgICAgICAgZD1cIk0yNDAsMzYwLjA3Yy0yNy45NDQsMC01My4yOTctMTEuOTkxLTcyLjAwMy0zMS4zNzJjLTAuMDE0LDExLjYxNS0wLjQzNiwyOC4zNzktMy41MTYsNDAuNjExIGMyLjAyLDEuMjM1LDMuNTg4LDMuMjYyLDMuODk0LDUuNzg0YzMuOTkyLDMyLjQ4NCwzNC43ODEsNTYuOTc3LDcxLjYyNSw1Ni45NzdjMzYuODM2LDAsNjcuNjI1LTI0LjQ5Niw3MS42MjUtNTYuOTc3IGMwLjMxLTIuNTI1LDEuODQ0LTQuNTQ5LDMuODk1LTUuNzhjLTMuMDgtMTIuMjMzLTMuNTAzLTI4Ljk5OS0zLjUxNy00MC42MTVDMjkzLjI5NywzNDguMDc5LDI2Ny45NDQsMzYwLjA3LDI0MCwzNjAuMDd6XCJcbiAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgICA8Zz5cbiAgICAgICAgPGc+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIHN0eWxlPVwiZmlsbDogI2Q3ZGJlMFwiXG4gICAgICAgICAgICBkPVwiTTMxMC40NCwzMzAuMTc0Yy0xOC41NDksMTguNDc3LTQzLjI0MiwyOS44OTYtNzAuNDQsMjkuODk2IGMtMjcuOTQ0LDAtNTMuMjk3LTExLjk5MS03Mi4wMDMtMzEuMzcyYy0wLjAxNCwxMS42MTUtMC40MzYsMjguMzc5LTMuNTE2LDQwLjYxMWMyLjAyLDEuMjM1LDMuNTg4LDMuMjYyLDMuODk0LDUuNzg0IGMxLjc2NSwxNC4zNTksOC43NzgsMjcuMTQ0LDE5LjIyMywzNi45NTRDMjM1Ljc2Niw0MDUuMjY1LDI5MC40MzcsMzU3LjcwMiwzMTAuNDQsMzMwLjE3NHpcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvZz5cbiAgICAgIDwvZz5cbiAgICAgIDxnPlxuICAgICAgICA8Zz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgc3R5bGU9XCJmaWxsOiAjZmZmZmZmXCJcbiAgICAgICAgICAgIGQ9XCJNMzEyLDE2MC4wN0gxNzZjLTIyLjA1NSwwLTQwLDE3Ljk0NS00MCw0MHY0OGMwLDYxLjc1OCw0Ni42NTYsMTEyLDEwNCwxMTJzMTA0LTUwLjI0MiwxMDQtMTEyIHYtNTZDMzQ0LDE3NC40MjYsMzI5LjY0OCwxNjAuMDcsMzEyLDE2MC4wN3pcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvZz5cbiAgICAgIDwvZz5cbiAgICAgIDxnPlxuICAgICAgICA8Zz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgc3R5bGU9XCJmaWxsOiAjNWM1NDZhXCJcbiAgICAgICAgICAgIGQ9XCJNMjk2LDcyLjA3SDE5MmMtMTUuMDQ3LDAtMjcuNjk1LDEwLjQzOC0zMS4xMDIsMjQuNDQ5QzEzMy4zNTksMTAwLjAyLDExMiwxMjMuNTk4LDExMiwxNTIuMDd2NDAgYzAsMjAuNjE3LDguNzUyLDM5Ljg1MSwyNCw1My41MnYtNDUuNTJjMC0yMi4wNTUsMTcuOTQ1LTQwLDQwLTQwaDEzNmMxNy42NDgsMCwzMiwxNC4zNTUsMzIsMzJ2NTMuNTExIGMxNS4yNTEtMTMuNjY3LDI0LTMyLjg5OSwyNC01My41MTF2LTQ4QzM2OCwxMDQuMzcxLDMzNS43MDMsNzIuMDcsMjk2LDcyLjA3elwiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgICAgPGc+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgc3R5bGU9XCJmaWxsOiAjNWM1NDZhXCJcbiAgICAgICAgICBkPVwiTTYxLjYzMiw0MDAuNTQ0QzEwNS41NjIsNDQ5LjMxOSwxNjkuMTkxLDQ4MCwyNDAsNDgwczEzNC40MzgtMzAuNjgxLDE3OC4zNjgtNzkuNDU2IGMtNy42Ni0xMC4zNTYtMTguNDYyLTE4Ljc3LTMyLjM1Mi0yMi42NTljLTAuMzItMC4wOS0wLjY0MS0wLjE2LTAuOTY5LTAuMjA3bC02My44NTktOS41ODJjLTAuMzkxLTAuMDU5LTEuMjI3LTAuMDktMS42MjUtMC4wOSBjLTQuMDM5LDAtNy40NDUsMy4wMTItNy45MzgsNy4wMjNjLTQsMzIuNDgtMzQuNzg5LDU2Ljk3Ny03MS42MjUsNTYuOTc3Yy0zNi44NDQsMC02Ny42MzMtMjQuNDkyLTcxLjYyNS01Ni45NzcgYy0wLjUtNC4xMjktNC4yMTktNy4yMzQtOC4xNDEtNy4wMmMtMC40NjktMC4wMjctMC45MywwLjAxMi0xLjQyMiwwLjA4NmwtNjMuODU5LDkuNTgyYy0wLjMyOCwwLjA0Ny0wLjY0OCwwLjExNy0wLjk2OSwwLjIwNyBDODAuMDk0LDM4MS43NzUsNjkuMjkyLDM5MC4xODgsNjEuNjMyLDQwMC41NDR6XCJcbiAgICAgICAgPjwvcGF0aD5cbiAgICAgIDwvZz5cbiAgICA8L2c+XG4gIDwvZz5cbjwvc3ZnPlxuIl19","import { Component, input, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SvgIcon {\n id = input('', ...(ngDevMode ? [{ debugName: \"id\" }] : []));\n width = input('40px', ...(ngDevMode ? [{ debugName: \"width\" }] : []));\n height = input('40px', ...(ngDevMode ? [{ debugName: \"height\" }] : []));\n color = input('#414141', ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: SvgIcon, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.4\", type: SvgIcon, isStandalone: true, selector: \"acp-svg-icon\", inputs: { id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: \"width\", publicName: \"width\", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: \"height\", publicName: \"height\", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<svg [attr.width]=\\\"width()\\\" [attr.height]=\\\"height()\\\" [style.color]=\\\"color()\\\">\\n <use [attr.xlink:href]=\\\"'./svg-sprite.svg#' + id()\\\"></use>\\n</svg>\\n\", styles: [\"\"], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: SvgIcon, decorators: [{\n type: Component,\n args: [{ selector: 'acp-svg-icon', imports: [], encapsulation: ViewEncapsulation.None, template: \"<svg [attr.width]=\\\"width()\\\" [attr.height]=\\\"height()\\\" [style.color]=\\\"color()\\\">\\n <use [attr.xlink:href]=\\\"'./svg-sprite.svg#' + id()\\\"></use>\\n</svg>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9pY29ucy9zdmctaWNvbi9zdmctaWNvbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ljb25zL3N2Zy1pY29uL3N2Zy1pY29uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBU3BFLE1BQU0sT0FBTyxPQUFPO0lBQ2xCLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSw4Q0FBQyxDQUFDO0lBQ2YsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLGlEQUFDLENBQUM7SUFDdEIsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLGtEQUFDLENBQUM7SUFDdkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLGlEQUFDLENBQUM7dUdBSmQsT0FBTzsyRkFBUCxPQUFPLDhpQkNUcEIsK0pBR0E7OzJGRE1hLE9BQU87a0JBUG5CLFNBQVM7K0JBQ0UsY0FBYyxXQUNmLEVBQUUsaUJBR0ksaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1zdmctaWNvbicsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3ZnLWljb24uaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zdmctaWNvbi5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU3ZnSWNvbiB7XG4gIGlkID0gaW5wdXQoJycpO1xuICB3aWR0aCA9IGlucHV0KCc0MHB4Jyk7XG4gIGhlaWdodCA9IGlucHV0KCc0MHB4Jyk7XG4gIGNvbG9yID0gaW5wdXQoJyM0MTQxNDEnKTtcbn1cbiIsIjxzdmcgW2F0dHIud2lkdGhdPVwid2lkdGgoKVwiIFthdHRyLmhlaWdodF09XCJoZWlnaHQoKVwiIFtzdHlsZS5jb2xvcl09XCJjb2xvcigpXCI+XG4gIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCInLi9zdmctc3ByaXRlLnN2ZyMnICsgaWQoKVwiPjwvdXNlPlxuPC9zdmc+XG4iXX0=","import { Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { MatChipGrid, MatChipInput, MatChipRow, } from '@angular/material/chips';\nimport { MatFormField, MatLabel, MatHint } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport * as i0 from \"@angular/core\";\nexport class InputChip {\n chips = input.required(...(ngDevMode ? [{ debugName: \"chips\" }] : []));\n labelText = input.required(...(ngDevMode ? [{ debugName: \"labelText\" }] : []));\n placelholder = input('', ...(ngDevMode ? [{ debugName: \"placelholder\" }] : []));\n addOnBlur = true;\n separatorKeysCodes = [ENTER, COMMA];\n announcer = inject(LiveAnnouncer);\n add(event) {\n const value = (event.value || '').trim();\n // Add our fruit\n if (value) {\n this.chips().push(value);\n }\n // Clear the input value\n event.chipInput.clear();\n }\n remove(value) {\n const index = this.chips().indexOf(value);\n if (index >= 0) {\n this.chips().splice(index, 1);\n this.announcer.announce(`Removed ${value}`);\n }\n }\n edit(inputRaw, event) {\n const value = event.value.trim();\n // Remove fruit if it no longer has a name\n if (!value) {\n this.remove(inputRaw);\n return;\n }\n // Edit existing fruit\n const index = this.chips().indexOf(inputRaw);\n if (index >= 0) {\n this.chips()[index] = value.replace(/\\s+/g, '');\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: InputChip, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: InputChip, isStandalone: true, selector: \"acp-input-chip\", inputs: { chips: { classPropertyName: \"chips\", publicName: \"chips\", isSignal: true, isRequired: true, transformFunction: null }, labelText: { classPropertyName: \"labelText\", publicName: \"labelText\", isSignal: true, isRequired: true, transformFunction: null }, placelholder: { classPropertyName: \"placelholder\", publicName: \"placelholder\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<mat-form-field class=\\\"w-100\\\" appearance=\\\"outline\\\">\\n <mat-label>{{ labelText() }}</mat-label>\\n <mat-chip-grid #chipGrid aria-label=\\\"Enter fruits\\\">\\n @for (chip of chips(); track $index) {\\n <mat-chip-row\\n (removed)=\\\"remove(chip)\\\"\\n [editable]=\\\"true\\\"\\n (edited)=\\\"edit(chip, $event)\\\"\\n [aria-description]=\\\"'press enter to edit ' + chip\\\"\\n >\\n {{ chip }}\\n <button matChipRemove [attr.aria-label]=\\\"'remove ' + chip\\\">\\n <mat-icon>cancel</mat-icon>\\n </button>\\n </mat-chip-row>\\n }\\n <input\\n [placeholder]=\\\"placelholder()\\\"\\n [matChipInputFor]=\\\"chipGrid\\\"\\n [matChipInputSeparatorKeyCodes]=\\\"separatorKeysCodes\\\"\\n [matChipInputAddOnBlur]=\\\"addOnBlur\\\"\\n (matChipInputTokenEnd)=\\\"add($event)\\\"\\n />\\n </mat-chip-grid>\\n <mat-hint align=\\\"start\\\"><strong>Ingrese {{ labelText() }} y dale \\\"Enter\\\"</strong> </mat-hint>\\n</mat-form-field>\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: MatFormField, selector: \"mat-form-field\", inputs: [\"hideRequiredMarker\", \"color\", \"floatLabel\", \"appearance\", \"subscriptSizing\", \"hintLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: MatLabel, selector: \"mat-label\" }, { kind: \"component\", type: MatChipRow, selector: \"mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]\", inputs: [\"editable\"], outputs: [\"edited\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"component\", type: MatChipGrid, selector: \"mat-chip-grid\", inputs: [\"disabled\", \"placeholder\", \"required\", \"value\", \"errorStateMatcher\"], outputs: [\"change\", \"valueChange\"] }, { kind: \"directive\", type: MatChipInput, selector: \"input[matChipInputFor]\", inputs: [\"matChipInputFor\", \"matChipInputAddOnBlur\", \"matChipInputSeparatorKeyCodes\", \"placeholder\", \"id\", \"disabled\", \"readonly\", \"matChipInputDisabledInteractive\"], outputs: [\"matChipInputTokenEnd\"], exportAs: [\"matChipInput\", \"matChipInputFor\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: InputChip, decorators: [{\n type: Component,\n args: [{ selector: 'acp-input-chip', imports: [MatFormField, MatLabel, MatChipRow, MatIcon, MatHint, MatChipGrid, MatChipInput], encapsulation: ViewEncapsulation.None, template: \"<mat-form-field class=\\\"w-100\\\" appearance=\\\"outline\\\">\\n <mat-label>{{ labelText() }}</mat-label>\\n <mat-chip-grid #chipGrid aria-label=\\\"Enter fruits\\\">\\n @for (chip of chips(); track $index) {\\n <mat-chip-row\\n (removed)=\\\"remove(chip)\\\"\\n [editable]=\\\"true\\\"\\n (edited)=\\\"edit(chip, $event)\\\"\\n [aria-description]=\\\"'press enter to edit ' + chip\\\"\\n >\\n {{ chip }}\\n <button matChipRemove [attr.aria-label]=\\\"'remove ' + chip\\\">\\n <mat-icon>cancel</mat-icon>\\n </button>\\n </mat-chip-row>\\n }\\n <input\\n [placeholder]=\\\"placelholder()\\\"\\n [matChipInputFor]=\\\"chipGrid\\\"\\n [matChipInputSeparatorKeyCodes]=\\\"separatorKeysCodes\\\"\\n [matChipInputAddOnBlur]=\\\"addOnBlur\\\"\\n (matChipInputTokenEnd)=\\\"add($event)\\\"\\n />\\n </mat-chip-grid>\\n <mat-hint align=\\\"start\\\"><strong>Ingrese {{ labelText() }} y dale \\\"Enter\\\"</strong> </mat-hint>\\n</mat-form-field>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2hpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LWNoaXAvaW5wdXQtY2hpcC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0LWNoaXAvaW5wdXQtY2hpcC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBRUwsV0FBVyxFQUNYLFlBQVksRUFFWixVQUFVLEdBQ1gsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBU3JELE1BQU0sT0FBTyxTQUFTO0lBQ3BCLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxnREFBWSxDQUFDO0lBQ25DLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxvREFBVSxDQUFDO0lBQ3JDLFlBQVksR0FBRyxLQUFLLENBQVMsRUFBRSx3REFBQyxDQUFDO0lBQ2pDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDUixrQkFBa0IsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQVUsQ0FBQztJQUV0RCxTQUFTLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRWxDLEdBQUcsQ0FBQyxLQUF3QjtRQUMxQixNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFekMsZ0JBQWdCO1FBQ2hCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCx3QkFBd0I7UUFDeEIsS0FBSyxDQUFDLFNBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWE7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRTlCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxRQUFnQixFQUFFLEtBQXlCO1FBQzlDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFakMsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQzt1R0E3Q1UsU0FBUzsyRkFBVCxTQUFTLDZkQ3BCdEIsczdCQTBCQSwwRERYWSxZQUFZLDRMQUFFLFFBQVEsc0RBQUUsVUFBVSw4SkFBRSxPQUFPLDJJQUFFLE9BQU8sOEVBQUUsV0FBVyw2S0FBRSxZQUFZOzsyRkFLOUUsU0FBUztrQkFQckIsU0FBUzsrQkFDRSxnQkFBZ0IsV0FDakIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsaUJBRzNFLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNYXRDaGlwRWRpdGVkRXZlbnQsXG4gIE1hdENoaXBHcmlkLFxuICBNYXRDaGlwSW5wdXQsXG4gIE1hdENoaXBJbnB1dEV2ZW50LFxuICBNYXRDaGlwUm93LFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsLCBNYXRIaW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBMaXZlQW5ub3VuY2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLWlucHV0LWNoaXAnLFxuICBpbXBvcnRzOiBbTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCwgTWF0Q2hpcFJvdywgTWF0SWNvbiwgTWF0SGludCwgTWF0Q2hpcEdyaWQsIE1hdENoaXBJbnB1dF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jaGlwLmh0bWwnLFxuICBzdHlsZVVybDogJy4vaW5wdXQtY2hpcC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRDaGlwIHtcbiAgY2hpcHMgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmdbXT4oKTtcbiAgbGFiZWxUZXh0ID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBwbGFjZWxob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgYWRkT25CbHVyID0gdHJ1ZTtcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzID0gW0VOVEVSLCBDT01NQV0gYXMgY29uc3Q7XG5cbiAgYW5ub3VuY2VyID0gaW5qZWN0KExpdmVBbm5vdW5jZXIpO1xuXG4gIGFkZChldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC52YWx1ZSB8fCAnJykudHJpbSgpO1xuXG4gICAgLy8gQWRkIG91ciBmcnVpdFxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5jaGlwcygpLnB1c2godmFsdWUpO1xuICAgIH1cblxuICAgIC8vIENsZWFyIHRoZSBpbnB1dCB2YWx1ZVxuICAgIGV2ZW50LmNoaXBJbnB1dCEuY2xlYXIoKTtcbiAgfVxuXG4gIHJlbW92ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmNoaXBzKCkuaW5kZXhPZih2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5jaGlwcygpLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgIHRoaXMuYW5ub3VuY2VyLmFubm91bmNlKGBSZW1vdmVkICR7dmFsdWV9YCk7XG4gICAgfVxuICB9XG5cbiAgZWRpdChpbnB1dFJhdzogc3RyaW5nLCBldmVudDogTWF0Q2hpcEVkaXRlZEV2ZW50KSB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC52YWx1ZS50cmltKCk7XG5cbiAgICAvLyBSZW1vdmUgZnJ1aXQgaWYgaXQgbm8gbG9uZ2VyIGhhcyBhIG5hbWVcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLnJlbW92ZShpbnB1dFJhdyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRWRpdCBleGlzdGluZyBmcnVpdFxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jaGlwcygpLmluZGV4T2YoaW5wdXRSYXcpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLmNoaXBzKClbaW5kZXhdID0gdmFsdWUucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgfVxuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gIDxtYXQtbGFiZWw+e3sgbGFiZWxUZXh0KCkgfX08L21hdC1sYWJlbD5cbiAgPG1hdC1jaGlwLWdyaWQgI2NoaXBHcmlkIGFyaWEtbGFiZWw9XCJFbnRlciBmcnVpdHNcIj5cbiAgICBAZm9yIChjaGlwIG9mIGNoaXBzKCk7IHRyYWNrICRpbmRleCkge1xuICAgIDxtYXQtY2hpcC1yb3dcbiAgICAgIChyZW1vdmVkKT1cInJlbW92ZShjaGlwKVwiXG4gICAgICBbZWRpdGFibGVdPVwidHJ1ZVwiXG4gICAgICAoZWRpdGVkKT1cImVkaXQoY2hpcCwgJGV2ZW50KVwiXG4gICAgICBbYXJpYS1kZXNjcmlwdGlvbl09XCIncHJlc3MgZW50ZXIgdG8gZWRpdCAnICsgY2hpcFwiXG4gICAgPlxuICAgICAge3sgY2hpcCB9fVxuICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3JlbW92ZSAnICsgY2hpcFwiPlxuICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWNoaXAtcm93PlxuICAgIH1cbiAgICA8aW5wdXRcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWxob2xkZXIoKVwiXG4gICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBHcmlkXCJcbiAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIlxuICAgICAgW21hdENoaXBJbnB1dEFkZE9uQmx1cl09XCJhZGRPbkJsdXJcIlxuICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCJcbiAgICAvPlxuICA8L21hdC1jaGlwLWdyaWQ+XG4gIDxtYXQtaGludCBhbGlnbj1cInN0YXJ0XCI+PHN0cm9uZz5JbmdyZXNlIHt7IGxhYmVsVGV4dCgpIH19IHkgZGFsZSBcIkVudGVyXCI8L3N0cm9uZz4gPC9tYXQtaGludD5cbjwvbWF0LWZvcm0tZmllbGQ+XG4iXX0=","import { Component, ViewEncapsulation } from '@angular/core';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport * as i0 from \"@angular/core\";\nexport class Spinner {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: Spinner, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.4\", type: Spinner, isStandalone: true, selector: \"acp-spinner\", ngImport: i0, template: \"<div class=\\\"acp-spinner\\\">\\n <mat-spinner />\\n</div>\\n\", styles: [\".acp-spinner{display:flex;justify-content:center;align-items:center;height:100%}\\n\"], dependencies: [{ kind: \"component\", type: MatProgressSpinner, selector: \"mat-progress-spinner, mat-spinner\", inputs: [\"color\", \"mode\", \"value\", \"diameter\", \"strokeWidth\"], exportAs: [\"matProgressSpinner\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: Spinner, decorators: [{\n type: Component,\n args: [{ selector: 'acp-spinner', imports: [MatProgressSpinner], encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"acp-spinner\\\">\\n <mat-spinner />\\n</div>\\n\", styles: [\".acp-spinner{display:flex;justify-content:center;align-items:center;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NwaW5uZXIvc3Bpbm5lci50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NwaW5uZXIvc3Bpbm5lci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBU3hFLE1BQU0sT0FBTyxPQUFPO3VHQUFQLE9BQU87MkZBQVAsT0FBTyx1RUNWcEIsMERBR0EsNElERVksa0JBQWtCOzsyRkFLakIsT0FBTztrQkFQbkIsU0FBUzsrQkFDRSxhQUFhLFdBQ2QsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFHZCxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1zcGlubmVyJyxcbiAgaW1wb3J0czogW01hdFByb2dyZXNzU3Bpbm5lcl0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zcGlubmVyLmh0bWwnLFxuICBzdHlsZVVybDogJy4vc3Bpbm5lci5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU3Bpbm5lciB7fVxuIiwiPGRpdiBjbGFzcz1cImFjcC1zcGlubmVyXCI+XG4gIDxtYXQtc3Bpbm5lciAvPlxuPC9kaXY+XG4iXX0=","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class GetTotalPipe {\n transform(colName, dataSource) {\n return this.getTotal(colName, dataSource) || '';\n }\n /**\n * Calculate and return the total (sum) of all the column --> the column must be number\n */\n getTotal(colName, dataSource) {\n const total = dataSource\n .map(row => row[colName])\n .reduce((acc, value) => (value ? acc + Number(value) : acc), 0);\n return total?.toFixed(2);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: GetTotalPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.4\", ngImport: i0, type: GetTotalPipe, isStandalone: true, name: \"getTotal\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: GetTotalPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'getTotal',\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXRvdGFsLXBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvcGlwZXMvZ2V0LXRvdGFsLXBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFNBQVMsQ0FBQyxPQUFlLEVBQUUsVUFBaUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLE9BQWUsRUFBRSxVQUFpQjtRQUN6QyxNQUFNLEtBQUssR0FBRyxVQUFVO2FBQ3JCLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN4QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEUsT0FBTyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7dUdBYlUsWUFBWTtxR0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUp4QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxVQUFVO29CQUNoQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2dldFRvdGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgR2V0VG90YWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShjb2xOYW1lOiBzdHJpbmcsIGRhdGFTb3VyY2U6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRUb3RhbChjb2xOYW1lLCBkYXRhU291cmNlKSB8fCAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgYW5kIHJldHVybiB0aGUgdG90YWwgKHN1bSkgb2YgYWxsIHRoZSBjb2x1bW4gLS0+IHRoZSBjb2x1bW4gbXVzdCBiZSBudW1iZXJcbiAgICovXG4gIGdldFRvdGFsKGNvbE5hbWU6IHN0cmluZywgZGF0YVNvdXJjZTogYW55W10pOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsID0gZGF0YVNvdXJjZVxuICAgICAgLm1hcChyb3cgPT4gcm93W2NvbE5hbWVdKVxuICAgICAgLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4gKHZhbHVlID8gYWNjICsgTnVtYmVyKHZhbHVlKSA6IGFjYyksIDApO1xuICAgIHJldHVybiB0b3RhbD8udG9GaXhlZCgyKTtcbiAgfVxufVxuIl19","import { inject, Pipe } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TranslocoService } from '@jsverse/transloco';\nimport * as i0 from \"@angular/core\";\nexport class StatusDisplayPipe {\n sanitizer = inject(DomSanitizer);\n transloco = inject(TranslocoService, { optional: true });\n transform(isActive, options = {}) {\n const { gender = 'neutral', showIcon = true, customActiveText, customInactiveText, textClass = '', iconClass = '', } = options;\n const text = this.getStatusText(isActive, gender, customActiveText, customInactiveText);\n const icon = isActive ? 'check_circle' : 'cancel';\n const colorClass = isActive ? 'text-green-500' : 'text-red-500';\n const combinedIconClass = `${colorClass} align-middle mr-1 ${iconClass}`.trim();\n const combinedTextClass = `align-middle ${textClass}`.trim();\n let html = '';\n if (showIcon) {\n html += `<mat-icon class=\"${combinedIconClass}\" fontIcon=\"${icon}\"></mat-icon>`;\n }\n html += `<span class=\"${combinedTextClass}\">${text}</span>`;\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n getStatusText(isActive, gender, customActive, customInactive) {\n if (customActive && isActive)\n return customActive;\n if (customInactive && !isActive)\n return customInactive;\n if (!this.transloco)\n return this.getFallbackText(isActive, gender);\n const translationKey = this.getTranslationKey(isActive, gender);\n const translation = this.transloco.translate(translationKey);\n return translation !== translationKey ? translation : this.getFallbackText(isActive, gender);\n }\n getTranslationKey(isActive, gender) {\n const base = isActive ? 'status.active' : 'status.inactive';\n return gender !== 'neutral'\n ? `${base}.${gender}`\n : base;\n }\n getFallbackText(isActive, gender) {\n const lang = this.transloco?.getActiveLang() || 'en';\n const isSpanish = lang.startsWith('es');\n if (!isSpanish) {\n return isActive ? 'Active' : 'Inactive';\n }\n if (isActive) {\n return gender === 'female' ? 'Activa' : 'Activo';\n }\n else {\n return gender === 'female' ? 'Inactiva' : 'Inactivo';\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: StatusDisplayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.4\", ngImport: i0, type: StatusDisplayPipe, isStandalone: true, name: \"statusDisplay\" });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: StatusDisplayPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'statusDisplay',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWRpc3BsYXktcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9waXBlcy9zdGF0dXMtZGlzcGxheS1waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBd0J0RCxNQUFNLE9BQU8saUJBQWlCO0lBQ3BCLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWpFLFNBQVMsQ0FBQyxRQUFpQixFQUFFLFVBQXlCLEVBQUU7UUFDdEQsTUFBTSxFQUNKLE1BQU0sR0FBRyxTQUFTLEVBQ2xCLFFBQVEsR0FBRyxJQUFJLEVBQ2YsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixTQUFTLEdBQUcsRUFBRSxFQUNkLFNBQVMsR0FBRyxFQUFFLEdBQ2YsR0FBRyxPQUFPLENBQUM7UUFFWixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN4RixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ2xELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNoRSxNQUFNLGlCQUFpQixHQUFHLEdBQUcsVUFBVSxzQkFBc0IsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEYsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFN0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksSUFBSSxvQkFBb0IsaUJBQWlCLGVBQWUsSUFBSSxlQUFlLENBQUM7UUFDbEYsQ0FBQztRQUVELElBQUksSUFBSSxnQkFBZ0IsaUJBQWlCLEtBQUssSUFBSSxTQUFTLENBQUM7UUFFNUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxhQUFhLENBQ25CLFFBQWlCLEVBQ2pCLE1BQW9CLEVBQ3BCLFlBQXFCLEVBQ3JCLGNBQXVCO1FBRXZCLElBQUksWUFBWSxJQUFJLFFBQVE7WUFBRSxPQUFPLFlBQVksQ0FBQztRQUNsRCxJQUFJLGNBQWMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLGNBQWMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRW5FLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFN0QsT0FBTyxXQUFXLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxRQUFpQixFQUFFLE1BQW9CO1FBQy9ELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztRQUM1RCxPQUFPLE1BQU0sS0FBSyxTQUFTO1lBQ3pCLENBQUMsQ0FBRSxHQUFHLElBQUksSUFBSSxNQUFNLEVBQXFCO1lBQ3pDLENBQUMsQ0FBRSxJQUF1QixDQUFDO0lBQy9CLENBQUM7SUFFTyxlQUFlLENBQUMsUUFBaUIsRUFBRSxNQUFvQjtRQUM3RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO3VHQW5FVSxpQkFBaUI7cUdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFIN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xuXG50eXBlIFN0YXR1c0dlbmRlciA9ICdtYWxlJyB8ICdmZW1hbGUnIHwgJ25ldXRyYWwnO1xuXG5pbnRlcmZhY2UgU3RhdHVzT3B0aW9ucyB7XG4gIGdlbmRlcj86IFN0YXR1c0dlbmRlcjtcbiAgc2hvd0ljb24/OiBib29sZWFuO1xuICBjdXN0b21BY3RpdmVUZXh0Pzogc3RyaW5nO1xuICBjdXN0b21JbmFjdGl2ZVRleHQ/OiBzdHJpbmc7XG4gIHRleHRDbGFzcz86IHN0cmluZztcbiAgaWNvbkNsYXNzPzogc3RyaW5nO1xufVxuXG50eXBlIFRyYW5zbGF0aW9uS2V5ID1cbiAgfCAnc3RhdHVzLmFjdGl2ZSdcbiAgfCAnc3RhdHVzLmluYWN0aXZlJ1xuICB8ICdzdGF0dXMuYWN0aXZlLm1hbGUnXG4gIHwgJ3N0YXR1cy5hY3RpdmUuZmVtYWxlJ1xuICB8ICdzdGF0dXMuaW5hY3RpdmUubWFsZSdcbiAgfCAnc3RhdHVzLmluYWN0aXZlLmZlbWFsZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3N0YXR1c0Rpc3BsYXknLFxufSlcbmV4cG9ydCBjbGFzcyBTdGF0dXNEaXNwbGF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICBwcml2YXRlIHRyYW5zbG9jbyA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHRyYW5zZm9ybShpc0FjdGl2ZTogYm9vbGVhbiwgb3B0aW9uczogU3RhdHVzT3B0aW9ucyA9IHt9KTogU2FmZUh0bWwge1xuICAgIGNvbnN0IHtcbiAgICAgIGdlbmRlciA9ICduZXV0cmFsJyxcbiAgICAgIHNob3dJY29uID0gdHJ1ZSxcbiAgICAgIGN1c3RvbUFjdGl2ZVRleHQsXG4gICAgICBjdXN0b21JbmFjdGl2ZVRleHQsXG4gICAgICB0ZXh0Q2xhc3MgPSAnJyxcbiAgICAgIGljb25DbGFzcyA9ICcnLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgdGV4dCA9IHRoaXMuZ2V0U3RhdHVzVGV4dChpc0FjdGl2ZSwgZ2VuZGVyLCBjdXN0b21BY3RpdmVUZXh0LCBjdXN0b21JbmFjdGl2ZVRleHQpO1xuICAgIGNvbnN0IGljb24gPSBpc0FjdGl2ZSA/ICdjaGVja19jaXJjbGUnIDogJ2NhbmNlbCc7XG4gICAgY29uc3QgY29sb3JDbGFzcyA9IGlzQWN0aXZlID8gJ3RleHQtZ3JlZW4tNTAwJyA6ICd0ZXh0LXJlZC01MDAnO1xuICAgIGNvbnN0IGNvbWJpbmVkSWNvbkNsYXNzID0gYCR7Y29sb3JDbGFzc30gYWxpZ24tbWlkZGxlIG1yLTEgJHtpY29uQ2xhc3N9YC50cmltKCk7XG4gICAgY29uc3QgY29tYmluZWRUZXh0Q2xhc3MgPSBgYWxpZ24tbWlkZGxlICR7dGV4dENsYXNzfWAudHJpbSgpO1xuXG4gICAgbGV0IGh0bWwgPSAnJztcblxuICAgIGlmIChzaG93SWNvbikge1xuICAgICAgaHRtbCArPSBgPG1hdC1pY29uIGNsYXNzPVwiJHtjb21iaW5lZEljb25DbGFzc31cIiBmb250SWNvbj1cIiR7aWNvbn1cIj48L21hdC1pY29uPmA7XG4gICAgfVxuXG4gICAgaHRtbCArPSBgPHNwYW4gY2xhc3M9XCIke2NvbWJpbmVkVGV4dENsYXNzfVwiPiR7dGV4dH08L3NwYW4+YDtcblxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhdHVzVGV4dChcbiAgICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgICBnZW5kZXI6IFN0YXR1c0dlbmRlcixcbiAgICBjdXN0b21BY3RpdmU/OiBzdHJpbmcsXG4gICAgY3VzdG9tSW5hY3RpdmU/OiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGN1c3RvbUFjdGl2ZSAmJiBpc0FjdGl2ZSkgcmV0dXJuIGN1c3RvbUFjdGl2ZTtcbiAgICBpZiAoY3VzdG9tSW5hY3RpdmUgJiYgIWlzQWN0aXZlKSByZXR1cm4gY3VzdG9tSW5hY3RpdmU7XG4gICAgaWYgKCF0aGlzLnRyYW5zbG9jbykgcmV0dXJuIHRoaXMuZ2V0RmFsbGJhY2tUZXh0KGlzQWN0aXZlLCBnZW5kZXIpO1xuXG4gICAgY29uc3QgdHJhbnNsYXRpb25LZXkgPSB0aGlzLmdldFRyYW5zbGF0aW9uS2V5KGlzQWN0aXZlLCBnZW5kZXIpO1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xvY28udHJhbnNsYXRlKHRyYW5zbGF0aW9uS2V5KTtcblxuICAgIHJldHVybiB0cmFuc2xhdGlvbiAhPT0gdHJhbnNsYXRpb25LZXkgPyB0cmFuc2xhdGlvbiA6IHRoaXMuZ2V0RmFsbGJhY2tUZXh0KGlzQWN0aXZlLCBnZW5kZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmFuc2xhdGlvbktleShpc0FjdGl2ZTogYm9vbGVhbiwgZ2VuZGVyOiBTdGF0dXNHZW5kZXIpOiBUcmFuc2xhdGlvbktleSB7XG4gICAgY29uc3QgYmFzZSA9IGlzQWN0aXZlID8gJ3N0YXR1cy5hY3RpdmUnIDogJ3N0YXR1cy5pbmFjdGl2ZSc7XG4gICAgcmV0dXJuIGdlbmRlciAhPT0gJ25ldXRyYWwnXG4gICAgICA/IChgJHtiYXNlfS4ke2dlbmRlcn1gIGFzIFRyYW5zbGF0aW9uS2V5KVxuICAgICAgOiAoYmFzZSBhcyBUcmFuc2xhdGlvbktleSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZhbGxiYWNrVGV4dChpc0FjdGl2ZTogYm9vbGVhbiwgZ2VuZGVyOiBTdGF0dXNHZW5kZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnRyYW5zbG9jbz8uZ2V0QWN0aXZlTGFuZygpIHx8ICdlbic7XG4gICAgY29uc3QgaXNTcGFuaXNoID0gbGFuZy5zdGFydHNXaXRoKCdlcycpO1xuXG4gICAgaWYgKCFpc1NwYW5pc2gpIHtcbiAgICAgIHJldHVybiBpc0FjdGl2ZSA/ICdBY3RpdmUnIDogJ0luYWN0aXZlJztcbiAgICB9XG5cbiAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgIHJldHVybiBnZW5kZXIgPT09ICdmZW1hbGUnID8gJ0FjdGl2YScgOiAnQWN0aXZvJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdlbmRlciA9PT0gJ2ZlbWFsZScgPyAnSW5hY3RpdmEnIDogJ0luYWN0aXZvJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, ViewContainerRef, input, output, contentChildren, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { MatColumnDef, MatFooterRowDef, MatHeaderRowDef, MatRowDef, MatTable, MatTableDataSource, MatTableModule, } from '@angular/material/table';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { DatePipe, DecimalPipe, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSortModule } from '@angular/material/sort';\nimport { GetTotalPipe } from '../../../pipes';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/table\";\nimport * as i2 from \"@angular/material/checkbox\";\nimport * as i3 from \"@angular/material/sort\";\nimport * as i4 from \"@angular/material/icon\";\nimport * as i5 from \"@angular/material/button\";\nimport * as i6 from \"@angular/material/paginator\";\nexport class DynamicTable {\n componentRefs = [];\n embeddedViews = [];\n cdr = inject(ChangeDetectorRef);\n showExpand = input(false, ...(ngDevMode ? [{ debugName: \"showExpand\" }] : []));\n showFooter = input(false, ...(ngDevMode ? [{ debugName: \"showFooter\" }] : []));\n locale = input('en-US', ...(ngDevMode ? [{ debugName: \"locale\" }] : []));\n highlightRowIndex = input(0, ...(ngDevMode ? [{ debugName: \"highlightRowIndex\" }] : []));\n visibleColumns = [];\n columnDefinitions = [];\n showSelectBox = input(false, ...(ngDevMode ? [{ debugName: \"showSelectBox\" }] : []));\n multipleSelection = input(true, ...(ngDevMode ? [{ debugName: \"multipleSelection\" }] : []));\n tableData = input([], ...(ngDevMode ? [{ debugName: \"tableData\" }] : []));\n rowTemplate = input(null, ...(ngDevMode ? [{ debugName: \"rowTemplate\" }] : []));\n expandedDetail = null;\n enablePagination = input(false, ...(ngDevMode ? [{ debugName: \"enablePagination\" }] : []));\n paginationConfig = null;\n isLoadingData = input(false, ...(ngDevMode ? [{ debugName: \"isLoadingData\" }] : []));\n rowSelected = output();\n copyRow = output();\n showExpanded = output();\n hideExpanded = output();\n pageEvent = output();\n isNormalRow = (_, row) => this.expandedElement !== row;\n isExpandedRow = (_, row) => this.expandedElement === row;\n dataSource = new MatTableDataSource([]);\n selection = new SelectionModel(true, []);\n expandedElement = null;\n columnsToDisplayWithExpand = [];\n headerRowDefs = contentChildren(MatHeaderRowDef, ...(ngDevMode ? [{ debugName: \"headerRowDefs\" }] : []));\n rowDefs = contentChildren(MatRowDef, ...(ngDevMode ? [{ debugName: \"rowDefs\" }] : []));\n footerRowDefs = contentChildren(MatFooterRowDef, ...(ngDevMode ? [{ debugName: \"footerRowDefs\" }] : []));\n columnDefs = contentChildren(MatColumnDef, ...(ngDevMode ? [{ debugName: \"columnDefs\" }] : []));\n table = viewChild.required(MatTable);\n rows = contentChildren(ViewContainerRef, ...(ngDevMode ? [{ debugName: \"rows\" }] : []));\n ngOnInit() {\n this.updateColumnsToDisplay();\n this.initializeSelection();\n }\n ngOnChanges(changes) {\n if (changes['tableData']) {\n this.updateTableData();\n }\n if (changes['showExpand'] || changes['visibleColumns'] || changes['columnDefinitions']) {\n this.updateColumnsToDisplay();\n }\n // Trigger change detection for OnPush strategy\n this.cdr.markForCheck();\n }\n ngAfterContentInit() {\n this.registerTableContent();\n this.initializeTable();\n this.cdr.markForCheck();\n }\n ngOnDestroy() {\n this.cleanupDynamicComponents();\n }\n updateTableData() {\n // Clear selection when new data arrives\n this.selection.clear();\n // Update data source\n this.dataSource.data = this.tableData() || [];\n // Reset expanded element if it's no longer in the new data\n if (this.expandedElement && !this.dataSource.data.includes(this.expandedElement)) {\n this.expandedElement = null;\n }\n // Trigger change detection\n this.cdr.markForCheck();\n }\n updateColumnsToDisplay() {\n if (!this.visibleColumns.length && this.columnDefinitions) {\n this.visibleColumns = this.columnDefinitions.map(col => col.key);\n this.columnDefinitions.forEach((col, index) => (col.index = index));\n }\n const newColumns = [...this.visibleColumns];\n if (this.showSelectBox() && !newColumns.includes('select')) {\n newColumns.unshift('select');\n }\n if (this.showExpand() && this.expandedDetail) {\n if (!this.columnDefinitions?.some(col => col.key === 'expand')) {\n this.columnDefinitions = [\n ...(this.columnDefinitions || []),\n {\n key: 'expand',\n label: '',\n type: 'expand',\n index: this.columnDefinitions?.length || 0,\n },\n ];\n }\n if (!newColumns.includes('expand')) {\n newColumns.push('expand');\n }\n }\n this.columnsToDisplayWithExpand = newColumns;\n }\n initializeSelection() {\n this.selection = new SelectionModel(this.multipleSelection(), []);\n }\n registerTableContent() {\n this.columnDefs().forEach(columnDef => this.table().addColumnDef(columnDef));\n this.rowDefs().forEach(rowDef => this.table().addRowDef(rowDef));\n this.headerRowDefs().forEach(headerRowDef => this.table().addHeaderRowDef(headerRowDef));\n if (this.showFooter()) {\n this.footerRowDefs().forEach(footerRowDef => this.table().addFooterRowDef(footerRowDef));\n }\n else {\n this.footerRowDefs().forEach(footerRowDef => this.table().removeFooterRowDef(footerRowDef));\n }\n }\n initializeTable() {\n this.dataSource = new MatTableDataSource(this.tableData() || []);\n }\n cleanupDynamicComponents() {\n this.componentRefs.forEach(ref => ref.destroy());\n this.embeddedViews.forEach(view => view.destroy());\n }\n isAllSelected() {\n const numSelected = this.selection.selected.length;\n const selectableRows = this.dataSource.data.filter(row => !row.disableSelection);\n return numSelected === selectableRows.length && selectableRows.length > 0;\n }\n masterToggle() {\n if (!this.multipleSelection())\n return;\n if (this.isAllSelected()) {\n this.selection.clear();\n }\n else {\n this.dataSource.data\n .filter(row => !row.disableSelection)\n .forEach(row => this.selection.select(row));\n }\n this.rowSelected.emit(this.selection.selected);\n this.cdr.markForCheck();\n }\n checkboxLabel(row) {\n if (!row) {\n return `${this.isAllSelected() ? 'deselect' : 'select'} all`;\n }\n return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row`;\n }\n selectRow(row) {\n if (row.disableSelection)\n return;\n this.selection.toggle(row);\n this.rowSelected.emit(this.selection.selected);\n this.cdr.markForCheck();\n }\n onExpand(event, element) {\n event.stopPropagation();\n this.expandedElement = this.expandedElement === element ? null : element;\n if (this.expandedElement) {\n this.showExpanded.emit(element);\n }\n else {\n this.hideExpanded.emit(element);\n }\n this.cdr.markForCheck();\n }\n getRowStyle(element) {\n return element.rowStyle || {};\n }\n handlePageEvent(e) {\n this.pageEvent.emit(e);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: DynamicTable, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: DynamicTable, isStandalone: true, selector: \"acp-dynamic-table\", inputs: { showExpand: { classPropertyName: \"showExpand\", publicName: \"showExpand\", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: \"showFooter\", publicName: \"showFooter\", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: \"locale\", publicName: \"locale\", isSignal: true, isRequired: false, transformFunction: null }, highlightRowIndex: { classPropertyName: \"highlightRowIndex\", publicName: \"highlightRowIndex\", isSignal: true, isRequired: false, transformFunction: null }, visibleColumns: { classPropertyName: \"visibleColumns\", publicName: \"visibleColumns\", isSignal: false, isRequired: false, transformFunction: null }, columnDefinitions: { classPropertyName: \"columnDefinitions\", publicName: \"columnDefinitions\", isSignal: false, isRequired: false, transformFunction: null }, showSelectBox: { classPropertyName: \"showSelectBox\", publicName: \"showSelectBox\", isSignal: true, isRequired: false, transformFunction: null }, multipleSelection: { classPropertyName: \"multipleSelection\", publicName: \"multipleSelection\", isSignal: true, isRequired: false, transformFunction: null }, tableData: { classPropertyName: \"tableData\", publicName: \"tableData\", isSignal: true, isRequired: false, transformFunction: null }, rowTemplate: { classPropertyName: \"rowTemplate\", publicName: \"rowTemplate\", isSignal: true, isRequired: false, transformFunction: null }, expandedDetail: { classPropertyName: \"expandedDetail\", publicName: \"expandedDetail\", isSignal: false, isRequired: false, transformFunction: null }, enablePagination: { classPropertyName: \"enablePagination\", publicName: \"enablePagination\", isSignal: true, isRequired: false, transformFunction: null }, paginationConfig: { classPropertyName: \"paginationConfig\", publicName: \"paginationConfig\", isSignal: false, isRequired: false, transformFunction: null }, isLoadingData: { classPropertyName: \"isLoadingData\", publicName: \"isLoadingData\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowSelected: \"rowSelected\", copyRow: \"copyRow\", showExpanded: \"showExpanded\", hideExpanded: \"hideExpanded\", pageEvent: \"pageEvent\" }, queries: [{ propertyName: \"headerRowDefs\", predicate: MatHeaderRowDef, isSignal: true }, { propertyName: \"rowDefs\", predicate: MatRowDef, isSignal: true }, { propertyName: \"footerRowDefs\", predicate: MatFooterRowDef, isSignal: true }, { propertyName: \"columnDefs\", predicate: MatColumnDef, isSignal: true }, { propertyName: \"rows\", predicate: ViewContainerRef, isSignal: true }], viewQueries: [{ propertyName: \"table\", first: true, predicate: MatTable, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: \"<div class=\\\"acp-dynamic-table\\\">\\n <div class=\\\"acp-table-container small-table\\\">\\n <table #sort=\\\"matSort\\\" [dataSource]=\\\"dataSource.data\\\" mat-table matSort>\\n @if (columnDefinitions) {\\n <!-- Checkbox Column -->\\n @if (showSelectBox()) {\\n <ng-container matColumnDef=\\\"select\\\">\\n <th *matHeaderCellDef mat-header-cell>\\n @if (multipleSelection()) {\\n <mat-checkbox\\n (change)=\\\"$event ? masterToggle() : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel()\\\"\\n [checked]=\\\"selection.hasValue() && isAllSelected()\\\"\\n [indeterminate]=\\\"selection.hasValue() && !isAllSelected()\\\"\\n />\\n }\\n </th>\\n <td *matCellDef=\\\"let row\\\" mat-cell>\\n <mat-checkbox\\n (change)=\\\"$event ? selectRow(row) : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel(row)\\\"\\n [checked]=\\\"selection.isSelected(row)\\\"\\n [disabled]=\\\"row.disableSelection\\\"\\n />\\n </td>\\n <td *matFooterCellDef mat-footer-cell></td>\\n </ng-container>\\n }\\n\\n <!-- Dynamic Columns -->\\n @for (col of columnDefinitions; track col.key) {\\n <ng-container [matColumnDef]=\\\"col.key\\\">\\n <th *matHeaderCellDef mat-header-cell>{{ col.label }}</th>\\n\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [ngClass]=\\\"{ highlighted: highlightRowIndex() === i }\\\"\\n >\\n @if (col.key === 'op') {\\n <div class=\\\"d-flex flex-row gap-1\\\">\\n @if (col.templateOutlet) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n } @else if (rowTemplate()) {\\n <ng-container\\n *ngTemplateOutlet=\\\"rowTemplate(); context: { $implicit: element, index: i }\\\"\\n />\\n }\\n </div>\\n } @else { @switch (col.type) { @case ('image') {\\n <img [src]=\\\"element[col.key]\\\" class=\\\"img-fluid img-thumbnail my-1\\\" width=\\\"50\\\" alt=\\\"\\\" />\\n } @case ('number') {\\n <div>{{ element[col.key] | number: '1.2' : locale() }}</div>\\n } @case ('date') {\\n <div>{{ element[col.key] | date: 'dd.MM.yyyy' }}</div>\\n } @case ('expand') {\\n <button mat-icon-button aria-label=\\\"expand row\\\" (click)=\\\"onExpand($event, element)\\\">\\n @if (expandedElement === element) {\\n <mat-icon>keyboard_arrow_up</mat-icon>\\n } @else {\\n <mat-icon>keyboard_arrow_down</mat-icon>\\n }\\n </button>\\n } @case ('template') {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n } @case ('custom') {\\n <ng-container #dynamicContent />\\n } @default {\\n <div>{{ element[col.key] }}</div>\\n } } }\\n </td>\\n\\n <td *matFooterCellDef mat-footer-cell>\\n @if (col.index === 0) {\\n <div>Total</div>\\n } @if (col.hasFooter) {\\n <div>{{ col.key | getTotal: dataSource.data }}</div>\\n }\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Expanded Detail Row -->\\n @if (showExpand() && expandedDetail) {\\n <ng-container matColumnDef=\\\"expandedDetail\\\">\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\"\\n >\\n <div class=\\\"m-0 p-0 acp-detail-expand\\\" [class.acp-expanded]=\\\"element === expandedElement\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"expandedDetail; context: { $implicit: element, index: i }\\\"\\n />\\n </div>\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Header Row -->\\n <tr mat-header-row *matHeaderRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n\\n <!-- Data Rows -->\\n @if (showExpand() && expandedDetail) {\\n <!-- Regular Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand; when: isNormalRow\\\"\\n class=\\\"acp-dynamic-table-row\\\"\\n [class.acp-dynamic-table-expanded-row]=\\\"expandedElement === row\\\"\\n [ngStyle]=\\\"getRowStyle(row)\\\"\\n (click)=\\\"expandedElement = expandedElement === row ? null : row\\\"\\n ></tr>\\n\\n <!-- Expanded Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: ['expandedDetail']; when: isExpandedRow\\\"\\n class=\\\"acp-dynamic-table-detail-row\\\"\\n ></tr>\\n } @else {\\n <!-- Regular Row without expansion -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand\\\"\\n [ngStyle]=\\\"getRowStyle(row)\\\"\\n ></tr>\\n }\\n\\n <!-- No Data Row -->\\n <tr class=\\\"mat-row\\\" *matNoDataRow>\\n <td class=\\\"mat-cell text-center\\\" [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\">\\n No records found\\n </td>\\n </tr>\\n\\n <!-- Footer -->\\n @if (showFooter() && dataSource.data.length > 0) {\\n <tr mat-footer-row *matFooterRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n } }\\n </table>\\n </div>\\n\\n @if (enablePagination() && paginationConfig) {\\n <mat-paginator\\n #paginator\\n [disabled]=\\\"isLoadingData()\\\"\\n (page)=\\\"handlePageEvent($event)\\\"\\n [length]=\\\"paginationConfig.totalRecords\\\"\\n [pageSize]=\\\"paginationConfig.pageSize\\\"\\n [pageSizeOptions]=\\\"paginationConfig.pageSizeOptions || []\\\"\\n [showFirstLastButtons]=\\\"true\\\"\\n [pageIndex]=\\\"paginationConfig.pageIndex\\\"\\n aria-label=\\\"Select page\\\"\\n />\\n }\\n</div>\\n\", styles: [\".acp-dynamic-table{display:block}.acp-dynamic-table .acp-table-container{position:relative;min-height:200px;max-height:400px;overflow:auto}.acp-dynamic-table table{width:100%}.acp-dynamic-table tr.acp-dynamic-table-detail-row{height:0}.acp-dynamic-table tr.acp-dynamic-table-row:not(.acp-dynamic-table-expanded-row):hover{background:var(--mat-sys-surface-variant, whitesmoke)}.acp-dynamic-table tr.acp-dynamic-table-row:not(.acp-dynamic-table-expanded-row):active{background:var(--mat-sys-surface-container, #efefef)}.acp-dynamic-table .acp-dynamic-table-row td{border-bottom-width:0}.acp-dynamic-table .acp-detail-expand{height:0;overflow:hidden;transition:height .15s ease-in-out}.acp-dynamic-table .acp-detail-expand.acp-expanded{height:auto;overflow:visible}@starting-style{.acp-dynamic-table .acp-detail-expand.acp-expanded{height:0}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: MatTableModule }, { kind: \"component\", type: i1.MatTable, selector: \"mat-table, table[mat-table]\", exportAs: [\"matTable\"] }, { kind: \"directive\", type: i1.MatHeaderCellDef, selector: \"[matHeaderCellDef]\" }, { kind: \"directive\", type: i1.MatHeaderRowDef, selector: \"[matHeaderRowDef]\", inputs: [\"matHeaderRowDef\", \"matHeaderRowDefSticky\"] }, { kind: \"directive\", type: i1.MatColumnDef, selector: \"[matColumnDef]\", inputs: [\"matColumnDef\"] }, { kind: \"directive\", type: i1.MatCellDef, selector: \"[matCellDef]\" }, { kind: \"directive\", type: i1.MatRowDef, selector: \"[matRowDef]\", inputs: [\"matRowDefColumns\", \"matRowDefWhen\"] }, { kind: \"directive\", type: i1.MatFooterCellDef, selector: \"[matFooterCellDef]\" }, { kind: \"directive\", type: i1.MatFooterRowDef, selector: \"[matFooterRowDef]\", inputs: [\"matFooterRowDef\", \"matFooterRowDefSticky\"] }, { kind: \"directive\", type: i1.MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\" }, { kind: \"directive\", type: i1.MatCell, selector: \"mat-cell, td[mat-cell]\" }, { kind: \"directive\", type: i1.MatFooterCell, selector: \"mat-footer-cell, td[mat-footer-cell]\" }, { kind: \"component\", type: i1.MatHeaderRow, selector: \"mat-header-row, tr[mat-header-row]\", exportAs: [\"matHeaderRow\"] }, { kind: \"component\", type: i1.MatRow, selector: \"mat-row, tr[mat-row]\", exportAs: [\"matRow\"] }, { kind: \"component\", type: i1.MatFooterRow, selector: \"mat-footer-row, tr[mat-footer-row]\", exportAs: [\"matFooterRow\"] }, { kind: \"directive\", type: i1.MatNoDataRow, selector: \"ng-template[matNoDataRow]\" }, { kind: \"ngmodule\", type: MatCheckboxModule }, { kind: \"component\", type: i2.MatCheckbox, selector: \"mat-checkbox\", inputs: [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-expanded\", \"aria-controls\", \"aria-owns\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"disableRipple\", \"tabIndex\", \"color\", \"disabledInteractive\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }, { kind: \"ngmodule\", type: MatSortModule }, { kind: \"directive\", type: i3.MatSort, selector: \"[matSort]\", inputs: [\"matSortActive\", \"matSortStart\", \"matSortDirection\", \"matSortDisableClear\", \"matSortDisabled\"], outputs: [\"matSortChange\"], exportAs: [\"matSort\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i4.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i5.MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatPaginatorModule }, { kind: \"component\", type: i6.MatPaginator, selector: \"mat-paginator\", inputs: [\"color\", \"pageIndex\", \"length\", \"pageSize\", \"pageSizeOptions\", \"hidePageSize\", \"showFirstLastButtons\", \"selectConfig\", \"disabled\"], outputs: [\"page\"], exportAs: [\"matPaginator\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: GetTotalPipe, name: \"getTotal\" }, { kind: \"pipe\", type: DatePipe, name: \"date\" }, { kind: \"pipe\", type: DecimalPipe, name: \"number\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: DynamicTable, decorators: [{\n type: Component,\n args: [{ selector: 'acp-dynamic-table', standalone: true, imports: [\n MatTableModule,\n MatCheckboxModule,\n MatSortModule,\n MatIconModule,\n MatButtonModule,\n MatPaginatorModule,\n NgClass,\n NgStyle,\n GetTotalPipe,\n DatePipe,\n DecimalPipe,\n NgTemplateOutlet,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"acp-dynamic-table\\\">\\n <div class=\\\"acp-table-container small-table\\\">\\n <table #sort=\\\"matSort\\\" [dataSource]=\\\"dataSource.data\\\" mat-table matSort>\\n @if (columnDefinitions) {\\n <!-- Checkbox Column -->\\n @if (showSelectBox()) {\\n <ng-container matColumnDef=\\\"select\\\">\\n <th *matHeaderCellDef mat-header-cell>\\n @if (multipleSelection()) {\\n <mat-checkbox\\n (change)=\\\"$event ? masterToggle() : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel()\\\"\\n [checked]=\\\"selection.hasValue() && isAllSelected()\\\"\\n [indeterminate]=\\\"selection.hasValue() && !isAllSelected()\\\"\\n />\\n }\\n </th>\\n <td *matCellDef=\\\"let row\\\" mat-cell>\\n <mat-checkbox\\n (change)=\\\"$event ? selectRow(row) : null\\\"\\n (click)=\\\"$event.stopPropagation()\\\"\\n [aria-label]=\\\"checkboxLabel(row)\\\"\\n [checked]=\\\"selection.isSelected(row)\\\"\\n [disabled]=\\\"row.disableSelection\\\"\\n />\\n </td>\\n <td *matFooterCellDef mat-footer-cell></td>\\n </ng-container>\\n }\\n\\n <!-- Dynamic Columns -->\\n @for (col of columnDefinitions; track col.key) {\\n <ng-container [matColumnDef]=\\\"col.key\\\">\\n <th *matHeaderCellDef mat-header-cell>{{ col.label }}</th>\\n\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [ngClass]=\\\"{ highlighted: highlightRowIndex() === i }\\\"\\n >\\n @if (col.key === 'op') {\\n <div class=\\\"d-flex flex-row gap-1\\\">\\n @if (col.templateOutlet) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n } @else if (rowTemplate()) {\\n <ng-container\\n *ngTemplateOutlet=\\\"rowTemplate(); context: { $implicit: element, index: i }\\\"\\n />\\n }\\n </div>\\n } @else { @switch (col.type) { @case ('image') {\\n <img [src]=\\\"element[col.key]\\\" class=\\\"img-fluid img-thumbnail my-1\\\" width=\\\"50\\\" alt=\\\"\\\" />\\n } @case ('number') {\\n <div>{{ element[col.key] | number: '1.2' : locale() }}</div>\\n } @case ('date') {\\n <div>{{ element[col.key] | date: 'dd.MM.yyyy' }}</div>\\n } @case ('expand') {\\n <button mat-icon-button aria-label=\\\"expand row\\\" (click)=\\\"onExpand($event, element)\\\">\\n @if (expandedElement === element) {\\n <mat-icon>keyboard_arrow_up</mat-icon>\\n } @else {\\n <mat-icon>keyboard_arrow_down</mat-icon>\\n }\\n </button>\\n } @case ('template') {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n col.templateOutlet;\\n context: { $implicit: element, index: i }\\n \\\"\\n />\\n } @case ('custom') {\\n <ng-container #dynamicContent />\\n } @default {\\n <div>{{ element[col.key] }}</div>\\n } } }\\n </td>\\n\\n <td *matFooterCellDef mat-footer-cell>\\n @if (col.index === 0) {\\n <div>Total</div>\\n } @if (col.hasFooter) {\\n <div>{{ col.key | getTotal: dataSource.data }}</div>\\n }\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Expanded Detail Row -->\\n @if (showExpand() && expandedDetail) {\\n <ng-container matColumnDef=\\\"expandedDetail\\\">\\n <td\\n mat-cell\\n *matCellDef=\\\"let element; let i = index\\\"\\n [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\"\\n >\\n <div class=\\\"m-0 p-0 acp-detail-expand\\\" [class.acp-expanded]=\\\"element === expandedElement\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"expandedDetail; context: { $implicit: element, index: i }\\\"\\n />\\n </div>\\n </td>\\n </ng-container>\\n }\\n\\n <!-- Header Row -->\\n <tr mat-header-row *matHeaderRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n\\n <!-- Data Rows -->\\n @if (showExpand() && expandedDetail) {\\n <!-- Regular Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand; when: isNormalRow\\\"\\n class=\\\"acp-dynamic-table-row\\\"\\n [class.acp-dynamic-table-expanded-row]=\\\"expandedElement === row\\\"\\n [ngStyle]=\\\"getRowStyle(row)\\\"\\n (click)=\\\"expandedElement = expandedElement === row ? null : row\\\"\\n ></tr>\\n\\n <!-- Expanded Row -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: ['expandedDetail']; when: isExpandedRow\\\"\\n class=\\\"acp-dynamic-table-detail-row\\\"\\n ></tr>\\n } @else {\\n <!-- Regular Row without expansion -->\\n <tr\\n mat-row\\n *matRowDef=\\\"let row; columns: columnsToDisplayWithExpand\\\"\\n [ngStyle]=\\\"getRowStyle(row)\\\"\\n ></tr>\\n }\\n\\n <!-- No Data Row -->\\n <tr class=\\\"mat-row\\\" *matNoDataRow>\\n <td class=\\\"mat-cell text-center\\\" [attr.colspan]=\\\"columnsToDisplayWithExpand.length\\\">\\n No records found\\n </td>\\n </tr>\\n\\n <!-- Footer -->\\n @if (showFooter() && dataSource.data.length > 0) {\\n <tr mat-footer-row *matFooterRowDef=\\\"columnsToDisplayWithExpand\\\"></tr>\\n } }\\n </table>\\n </div>\\n\\n @if (enablePagination() && paginationConfig) {\\n <mat-paginator\\n #paginator\\n [disabled]=\\\"isLoadingData()\\\"\\n (page)=\\\"handlePageEvent($event)\\\"\\n [length]=\\\"paginationConfig.totalRecords\\\"\\n [pageSize]=\\\"paginationConfig.pageSize\\\"\\n [pageSizeOptions]=\\\"paginationConfig.pageSizeOptions || []\\\"\\n [showFirstLastButtons]=\\\"true\\\"\\n [pageIndex]=\\\"paginationConfig.pageIndex\\\"\\n aria-label=\\\"Select page\\\"\\n />\\n }\\n</div>\\n\", styles: [\".acp-dynamic-table{display:block}.acp-dynamic-table .acp-table-container{position:relative;min-height:200px;max-height:400px;overflow:auto}.acp-dynamic-table table{width:100%}.acp-dynamic-table tr.acp-dynamic-table-detail-row{height:0}.acp-dynamic-table tr.acp-dynamic-table-row:not(.acp-dynamic-table-expanded-row):hover{background:var(--mat-sys-surface-variant, whitesmoke)}.acp-dynamic-table tr.acp-dynamic-table-row:not(.acp-dynamic-table-expanded-row):active{background:var(--mat-sys-surface-container, #efefef)}.acp-dynamic-table .acp-dynamic-table-row td{border-bottom-width:0}.acp-dynamic-table .acp-detail-expand{height:0;overflow:hidden;transition:height .15s ease-in-out}.acp-dynamic-table .acp-detail-expand.acp-expanded{height:auto;overflow:visible}@starting-style{.acp-dynamic-table .acp-detail-expand.acp-expanded{height:0}}\\n\"] }]\n }], propDecorators: { visibleColumns: [{\n type: Input\n }], columnDefinitions: [{\n type: Input\n }], expandedDetail: [{\n type: Input\n }], paginationConfig: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBTUwsZ0JBQWdCLEVBR2hCLEtBQUssRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUNmLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsZUFBZSxFQUNmLFNBQVMsRUFDVCxRQUFRLEVBQ1Isa0JBQWtCLEVBQ2xCLGNBQWMsR0FDZixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQWEsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JB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QyxDQUFDO0lBQ3pCLENBQUM7dUdBck1VLFlBQVk7MkZBQVosWUFBWSwrdUVBb0NrQixlQUFlLDBEQUNyQixTQUFTLGdFQUNILGVBQWUsNkRBQ2xCLFlBQVksdURBR2xCLGdCQUFnQixvRkFEWixRQUFRLHFGQ3hHOUMsaTVMQXlLQSxrNEJENUhJLGNBQWMsOGdEQUNkLGlCQUFpQixtYkFDakIsYUFBYSwwUEFDYixhQUFhLG1MQUNiLGVBQWUscU5BQ2Ysa0JBQWtCLG9TQUNsQixPQUFPLG9GQUNQLE9BQU8sMkVBSVAsZ0JBQWdCLCtJQUhoQixZQUFZLDRDQUNaLFFBQVEsd0NBQ1IsV0FBVzs7MkZBUUYsWUFBWTtrQkF0QnhCLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUDt3QkFDUCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsWUFBWTt3QkFDWixRQUFRO3dCQUNSLFdBQVc7d0JBQ1gsZ0JBQWdCO3FCQUNqQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFhNUIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTWF0Q29sdW1uRGVmLFxuICBNYXRGb290ZXJSb3dEZWYsXG4gIE1hdEhlYWRlclJvd0RlZixcbiAgTWF0Um93RGVmLFxuICBNYXRUYWJsZSxcbiAgTWF0VGFibGVEYXRhU291cmNlLFxuICBNYXRUYWJsZU1vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuXG5pbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIE5nQ2xhc3MsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0U29ydE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgR2V0VG90YWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHsgQ29sdW1uRGVmaW5pdGlvbiwgUGFnaW5hdGlvbiwgVGFibGVDb250ZXh0LCBUYWJsZVJvdyB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1keW5hbWljLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE5nQ2xhc3MsXG4gICAgTmdTdHlsZSxcbiAgICBHZXRUb3RhbFBpcGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgRGVjaW1hbFBpcGUsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtdGFibGUuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9keW5hbWljLXRhYmxlLnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1RhYmxlPFQgZXh0ZW5kcyBUYWJsZVJvdz5cbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIHByaXZhdGUgY29tcG9uZW50UmVmczogQ29tcG9uZW50UmVmPHVua25vd24+W10gPSBbXTtcbiAgcHJpdmF0ZSBlbWJlZGRlZFZpZXdzOiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj5bXSA9IFtdO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcmVhZG9ubHkgc2hvd0V4cGFuZCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd0Zvb3RlciA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9jYWxlID0gaW5wdXQoJ2VuLVVTJyk7XG4gIHJlYWRvbmx5IGhpZ2hsaWdodFJvd0luZGV4ID0gaW5wdXQoMCk7XG4gIEBJbnB1dCgpIHZpc2libGVDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5EZWZpbml0aW9uczogQ29sdW1uRGVmaW5pdGlvbjxUPltdID0gW107XG4gIHJlYWRvbmx5IHNob3dTZWxlY3RCb3ggPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IG11bHRpcGxlU2VsZWN0aW9uID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IHRhYmxlRGF0YSA9IGlucHV0PFRbXT4oW10pO1xuICByZWFkb25seSByb3dUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPFRhYmxlQ29udGV4dDxUPj4gfCBudWxsPihudWxsKTtcbiAgQElucHV0KCkgZXhwYW5kZWREZXRhaWw6IFRlbXBsYXRlUmVmPFRhYmxlQ29udGV4dDxUPj4gfCBudWxsID0gbnVsbDtcbiAgcmVhZG9ubHkgZW5hYmxlUGFnaW5hdGlvbiA9IGlucHV0KGZhbHNlKTtcbiAgQElucHV0KCkgcGFnaW5hdGlvbkNvbmZpZzogUGFnaW5hdGlvbiB8IG51bGwgPSBudWxsO1xuICByZWFkb25seSBpc0xvYWRpbmdEYXRhID0gaW5wdXQoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHJvd1NlbGVjdGVkID0gb3V0cHV0PFRbXT4oKTtcbiAgcmVhZG9ubHkgY29weVJvdyA9IG91dHB1dDxUPigpO1xuICByZWFkb25seSBzaG93RXhwYW5kZWQgPSBvdXRwdXQ8VD4oKTtcbiAgcmVhZG9ubHkgaGlkZUV4cGFuZGVkID0gb3V0cHV0PFQ+KCk7XG4gIHJlYWRvbmx5IHBhZ2VFdmVudCA9IG91dHB1dDxQYWdlRXZlbnQ+KCk7XG5cbiAgaXNOb3JtYWxSb3cgPSAoXzogbnVtYmVyLCByb3c6IFQpID0+IHRoaXMuZXhwYW5kZWRFbGVtZW50ICE9PSByb3c7XG4gIGlzRXhwYW5kZWRSb3cgPSAoXzogbnVtYmVyLCByb3c6IFQpID0+IHRoaXMuZXhwYW5kZWRFbGVtZW50ID09PSByb3c7XG5cbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VD4oW10pO1xuICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8VD4odHJ1ZSwgW10pO1xuICBleHBhbmRlZEVsZW1lbnQ6IFQgfCBudWxsID0gbnVsbDtcbiAgY29sdW1uc1RvRGlzcGxheVdpdGhFeHBhbmQ6IHN0cmluZ1tdID0gW107XG5cbiAgcmVhZG9ubHkgaGVhZGVyUm93RGVmcyA9IGNvbnRlbnRDaGlsZHJlbihNYXRIZWFkZXJSb3dEZWYpO1xuICByZWFkb25seSByb3dEZWZzID0gY29udGVudENoaWxkcmVuKE1hdFJvd0RlZik7XG4gIHJlYWRvbmx5IGZvb3RlclJvd0RlZnMgPSBjb250ZW50Q2hpbGRyZW4oTWF0Rm9vdGVyUm93RGVmKTtcbiAgcmVhZG9ubHkgY29sdW1uRGVmcyA9IGNvbnRlbnRDaGlsZHJlbihNYXRDb2x1bW5EZWYpO1xuXG4gIHJlYWRvbmx5IHRhYmxlID0gdmlld0NoaWxkLnJlcXVpcmVkKE1hdFRhYmxlKTtcbiAgcmVhZG9ubHkgcm93cyA9IGNvbnRlbnRDaGlsZHJlbihWaWV3Q29udGFpbmVyUmVmKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbnNUb0Rpc3BsYXkoKTtcbiAgICB0aGlzLmluaXRpYWxpemVTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sndGFibGVEYXRhJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlVGFibGVEYXRhKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3Nob3dFeHBhbmQnXSB8fCBjaGFuZ2VzWyd2aXNpYmxlQ29sdW1ucyddIHx8IGNoYW5nZXNbJ2NvbHVtbkRlZmluaXRpb25zJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uc1RvRGlzcGxheSgpO1xuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBmb3IgT25QdXNoIHN0cmF0ZWd5XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlclRhYmxlQ29udGVudCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVRhYmxlKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBEeW5hbWljQ29tcG9uZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYWJsZURhdGEoKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgc2VsZWN0aW9uIHdoZW4gbmV3IGRhdGEgYXJyaXZlc1xuICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG5cbiAgICAvLyBVcGRhdGUgZGF0YSBzb3VyY2VcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMudGFibGVEYXRhKCkgfHwgW107XG5cbiAgICAvLyBSZXNldCBleHBhbmRlZCBlbGVtZW50IGlmIGl0J3Mgbm8gbG9uZ2VyIGluIHRoZSBuZXcgZGF0YVxuICAgIGlmICh0aGlzLmV4cGFuZGVkRWxlbWVudCAmJiAhdGhpcy5kYXRhU291cmNlLmRhdGEuaW5jbHVkZXModGhpcy5leHBhbmRlZEVsZW1lbnQpKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkRWxlbWVudCA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbnNUb0Rpc3BsYXkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnZpc2libGVDb2x1bW5zLmxlbmd0aCAmJiB0aGlzLmNvbHVtbkRlZmluaXRpb25zKSB7XG4gICAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5EZWZpbml0aW9ucy5tYXAoY29sID0+IGNvbC5rZXkpO1xuICAgICAgdGhpcy5jb2x1bW5EZWZpbml0aW9ucy5mb3JFYWNoKChjb2wsIGluZGV4KSA9PiAoY29sLmluZGV4ID0gaW5kZXgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdDb2x1bW5zOiBzdHJpbmdbXSA9IFsuLi50aGlzLnZpc2libGVDb2x1bW5zXTtcblxuICAgIGlmICh0aGlzLnNob3dTZWxlY3RCb3goKSAmJiAhbmV3Q29sdW1ucy5pbmNsdWRlcygnc2VsZWN0JykpIHtcbiAgICAgIG5ld0NvbHVtbnMudW5zaGlmdCgnc2VsZWN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd0V4cGFuZCgpICYmIHRoaXMuZXhwYW5kZWREZXRhaWwpIHtcbiAgICAgIGlmICghdGhpcy5jb2x1bW5EZWZpbml0aW9ucz8uc29tZShjb2wgPT4gY29sLmtleSA9PT0gJ2V4cGFuZCcpKSB7XG4gICAgICAgIHRoaXMuY29sdW1uRGVmaW5pdGlvbnMgPSBbXG4gICAgICAgICAgLi4uKHRoaXMuY29sdW1uRGVmaW5pdGlvbnMgfHwgW10pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2V4cGFuZCcsXG4gICAgICAgICAgICBsYWJlbDogJycsXG4gICAgICAgICAgICB0eXBlOiAnZXhwYW5kJyxcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLmNvbHVtbkRlZmluaXRpb25zPy5sZW5ndGggfHwgMCxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW5ld0NvbHVtbnMuaW5jbHVkZXMoJ2V4cGFuZCcpKSB7XG4gICAgICAgIG5ld0NvbHVtbnMucHVzaCgnZXhwYW5kJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb2x1bW5zVG9EaXNwbGF5V2l0aEV4cGFuZCA9IG5ld0NvbHVtbnM7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8VD4odGhpcy5tdWx0aXBsZVNlbGVjdGlvbigpLCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyVGFibGVDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1uRGVmcygpLmZvckVhY2goY29sdW1uRGVmID0+IHRoaXMudGFibGUoKS5hZGRDb2x1bW5EZWYoY29sdW1uRGVmKSk7XG4gICAgdGhpcy5yb3dEZWZzKCkuZm9yRWFjaChyb3dEZWYgPT4gdGhpcy50YWJsZSgpLmFkZFJvd0RlZihyb3dEZWYpKTtcbiAgICB0aGlzLmhlYWRlclJvd0RlZnMoKS5mb3JFYWNoKGhlYWRlclJvd0RlZiA9PiB0aGlzLnRhYmxlKCkuYWRkSGVhZGVyUm93RGVmKGhlYWRlclJvd0RlZikpO1xuXG4gICAgaWYgKHRoaXMuc2hvd0Zvb3RlcigpKSB7XG4gICAgICB0aGlzLmZvb3RlclJvd0RlZnMoKS5mb3JFYWNoKGZvb3RlclJvd0RlZiA9PiB0aGlzLnRhYmxlKCkuYWRkRm9vdGVyUm93RGVmKGZvb3RlclJvd0RlZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvb3RlclJvd0RlZnMoKS5mb3JFYWNoKGZvb3RlclJvd0RlZiA9PiB0aGlzLnRhYmxlKCkucmVtb3ZlRm9vdGVyUm93RGVmKGZvb3RlclJvd0RlZikpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VD4odGhpcy50YWJsZURhdGEoKSB8fCBbXSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBEeW5hbWljQ29tcG9uZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMuZm9yRWFjaChyZWYgPT4gcmVmLmRlc3Ryb3koKSk7XG4gICAgdGhpcy5lbWJlZGRlZFZpZXdzLmZvckVhY2godmlldyA9PiB2aWV3LmRlc3Ryb3koKSk7XG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IHNlbGVjdGFibGVSb3dzID0gdGhpcy5kYXRhU291cmNlLmRhdGEuZmlsdGVyKHJvdyA9PiAhcm93LmRpc2FibGVTZWxlY3Rpb24pO1xuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gc2VsZWN0YWJsZVJvd3MubGVuZ3RoICYmIHNlbGVjdGFibGVSb3dzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBtYXN0ZXJUb2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlU2VsZWN0aW9uKCkpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGFcbiAgICAgICAgLmZpbHRlcihyb3cgPT4gIXJvdy5kaXNhYmxlU2VsZWN0aW9uKVxuICAgICAgICAuZm9yRWFjaChyb3cgPT4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHJvdykpO1xuICAgIH1cbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgY2hlY2tib3hMYWJlbChyb3c/OiBUKTogc3RyaW5nIHtcbiAgICBpZiAoIXJvdykge1xuICAgICAgcmV0dXJuIGAke3RoaXMuaXNBbGxTZWxlY3RlZCgpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSBhbGxgO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpID8gJ2Rlc2VsZWN0JyA6ICdzZWxlY3QnfSByb3dgO1xuICB9XG5cbiAgc2VsZWN0Um93KHJvdzogVCk6IHZvaWQge1xuICAgIGlmIChyb3cuZGlzYWJsZVNlbGVjdGlvbikgcmV0dXJuO1xuICAgIHRoaXMuc2VsZWN0aW9uLnRvZ2dsZShyb3cpO1xuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkV4cGFuZChldmVudDogRXZlbnQsIGVsZW1lbnQ6IFQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmV4cGFuZGVkRWxlbWVudCA9IHRoaXMuZXhwYW5kZWRFbGVtZW50ID09PSBlbGVtZW50ID8gbnVsbCA6IGVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWRFbGVtZW50KSB7XG4gICAgICB0aGlzLnNob3dFeHBhbmRlZC5lbWl0KGVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGVFeHBhbmRlZC5lbWl0KGVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldFJvd1N0eWxlKGVsZW1lbnQ6IFQpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gZWxlbWVudC5yb3dTdHlsZSB8fCB7fTtcbiAgfVxuXG4gIGhhbmRsZVBhZ2VFdmVudChlOiBQYWdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VFdmVudC5lbWl0KGUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWNwLWR5bmFtaWMtdGFibGVcIj5cbiAgPGRpdiBjbGFzcz1cImFjcC10YWJsZS1jb250YWluZXIgc21hbGwtdGFibGVcIj5cbiAgICA8dGFibGUgI3NvcnQ9XCJtYXRTb3J0XCIgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZS5kYXRhXCIgbWF0LXRhYmxlIG1hdFNvcnQ+XG4gICAgICBAaWYgKGNvbHVtbkRlZmluaXRpb25zKSB7XG4gICAgICA8IS0tIENoZWNrYm94IENvbHVtbiAtLT5cbiAgICAgIEBpZiAoc2hvd1NlbGVjdEJveCgpKSB7XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxuICAgICAgICA8dGggKm1hdEhlYWRlckNlbGxEZWYgbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgIEBpZiAobXVsdGlwbGVTZWxlY3Rpb24oKSkge1xuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY2hlY2tib3hMYWJlbCgpXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIG1hdC1jZWxsPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0Um93KHJvdykgOiBudWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY2hlY2tib3hMYWJlbChyb3cpXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvdy5kaXNhYmxlU2VsZWN0aW9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgKm1hdEZvb3RlckNlbGxEZWYgbWF0LWZvb3Rlci1jZWxsPjwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBEeW5hbWljIENvbHVtbnMgLS0+XG4gICAgICBAZm9yIChjb2wgb2YgY29sdW1uRGVmaW5pdGlvbnM7IHRyYWNrIGNvbC5rZXkpIHtcbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2wua2V5XCI+XG4gICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyLWNlbGw+e3sgY29sLmxhYmVsIH19PC90aD5cblxuICAgICAgICA8dGRcbiAgICAgICAgICBtYXQtY2VsbFxuICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgaGlnaGxpZ2h0ZWQ6IGhpZ2hsaWdodFJvd0luZGV4KCkgPT09IGkgfVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKGNvbC5rZXkgPT09ICdvcCcpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGdhcC0xXCI+XG4gICAgICAgICAgICBAaWYgKGNvbC50ZW1wbGF0ZU91dGxldCkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sLnRlbXBsYXRlT3V0bGV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGVsZW1lbnQsIGluZGV4OiBpIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKHJvd1RlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dUZW1wbGF0ZSgpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gQGVsc2UgeyBAc3dpdGNoIChjb2wudHlwZSkgeyBAY2FzZSAoJ2ltYWdlJykge1xuICAgICAgICAgIDxpbWcgW3NyY109XCJlbGVtZW50W2NvbC5rZXldXCIgY2xhc3M9XCJpbWctZmx1aWQgaW1nLXRodW1ibmFpbCBteS0xXCIgd2lkdGg9XCI1MFwiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgfSBAY2FzZSAoJ251bWJlcicpIHtcbiAgICAgICAgICA8ZGl2Pnt7IGVsZW1lbnRbY29sLmtleV0gfCBudW1iZXI6ICcxLjInIDogbG9jYWxlKCkgfX08L2Rpdj5cbiAgICAgICAgICB9IEBjYXNlICgnZGF0ZScpIHtcbiAgICAgICAgICA8ZGl2Pnt7IGVsZW1lbnRbY29sLmtleV0gfCBkYXRlOiAnZGQuTU0ueXl5eScgfX08L2Rpdj5cbiAgICAgICAgICB9IEBjYXNlICgnZXhwYW5kJykge1xuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmQgcm93XCIgKGNsaWNrKT1cIm9uRXhwYW5kKCRldmVudCwgZWxlbWVudClcIj5cbiAgICAgICAgICAgIEBpZiAoZXhwYW5kZWRFbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfdXA8L21hdC1pY29uPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfSBAY2FzZSAoJ3RlbXBsYXRlJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2wudGVtcGxhdGVPdXRsZXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgaW5kZXg6IGkgfVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB9IEBjYXNlICgnY3VzdG9tJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgI2R5bmFtaWNDb250ZW50IC8+XG4gICAgICAgICAgfSBAZGVmYXVsdCB7XG4gICAgICAgICAgPGRpdj57eyBlbGVtZW50W2NvbC5rZXldIH19PC9kaXY+XG4gICAgICAgICAgfSB9IH1cbiAgICAgICAgPC90ZD5cblxuICAgICAgICA8dGQgKm1hdEZvb3RlckNlbGxEZWYgbWF0LWZvb3Rlci1jZWxsPlxuICAgICAgICAgIEBpZiAoY29sLmluZGV4ID09PSAwKSB7XG4gICAgICAgICAgPGRpdj5Ub3RhbDwvZGl2PlxuICAgICAgICAgIH0gQGlmIChjb2wuaGFzRm9vdGVyKSB7XG4gICAgICAgICAgPGRpdj57eyBjb2wua2V5IHwgZ2V0VG90YWw6IGRhdGFTb3VyY2UuZGF0YSB9fTwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgfVxuXG4gICAgICA8IS0tIEV4cGFuZGVkIERldGFpbCBSb3cgLS0+XG4gICAgICBAaWYgKHNob3dFeHBhbmQoKSAmJiBleHBhbmRlZERldGFpbCkge1xuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJleHBhbmRlZERldGFpbFwiPlxuICAgICAgICA8dGRcbiAgICAgICAgICBtYXQtY2VsbFxuICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uc1RvRGlzcGxheVdpdGhFeHBhbmQubGVuZ3RoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTAgcC0wIGFjcC1kZXRhaWwtZXhwYW5kXCIgW2NsYXNzLmFjcC1leHBhbmRlZF09XCJlbGVtZW50ID09PSBleHBhbmRlZEVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHBhbmRlZERldGFpbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGVsZW1lbnQsIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgfVxuXG4gICAgICA8IS0tIEhlYWRlciBSb3cgLS0+XG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnNUb0Rpc3BsYXlXaXRoRXhwYW5kXCI+PC90cj5cblxuICAgICAgPCEtLSBEYXRhIFJvd3MgLS0+XG4gICAgICBAaWYgKHNob3dFeHBhbmQoKSAmJiBleHBhbmRlZERldGFpbCkge1xuICAgICAgPCEtLSBSZWd1bGFyIFJvdyAtLT5cbiAgICAgIDx0clxuICAgICAgICBtYXQtcm93XG4gICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBjb2x1bW5zVG9EaXNwbGF5V2l0aEV4cGFuZDsgd2hlbjogaXNOb3JtYWxSb3dcIlxuICAgICAgICBjbGFzcz1cImFjcC1keW5hbWljLXRhYmxlLXJvd1wiXG4gICAgICAgIFtjbGFzcy5hY3AtZHluYW1pYy10YWJsZS1leHBhbmRlZC1yb3ddPVwiZXhwYW5kZWRFbGVtZW50ID09PSByb3dcIlxuICAgICAgICBbbmdTdHlsZV09XCJnZXRSb3dTdHlsZShyb3cpXCJcbiAgICAgICAgKGNsaWNrKT1cImV4cGFuZGVkRWxlbWVudCA9IGV4cGFuZGVkRWxlbWVudCA9PT0gcm93ID8gbnVsbCA6IHJvd1wiXG4gICAgICA+PC90cj5cblxuICAgICAgPCEtLSBFeHBhbmRlZCBSb3cgLS0+XG4gICAgICA8dHJcbiAgICAgICAgbWF0LXJvd1xuICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddOyB3aGVuOiBpc0V4cGFuZGVkUm93XCJcbiAgICAgICAgY2xhc3M9XCJhY3AtZHluYW1pYy10YWJsZS1kZXRhaWwtcm93XCJcbiAgICAgID48L3RyPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIFJlZ3VsYXIgUm93IHdpdGhvdXQgZXhwYW5zaW9uIC0tPlxuICAgICAgPHRyXG4gICAgICAgIG1hdC1yb3dcbiAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGNvbHVtbnNUb0Rpc3BsYXlXaXRoRXhwYW5kXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0Um93U3R5bGUocm93KVwiXG4gICAgICA+PC90cj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBObyBEYXRhIFJvdyAtLT5cbiAgICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIiAqbWF0Tm9EYXRhUm93PlxuICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbCB0ZXh0LWNlbnRlclwiIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uc1RvRGlzcGxheVdpdGhFeHBhbmQubGVuZ3RoXCI+XG4gICAgICAgICAgTm8gcmVjb3JkcyBmb3VuZFxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cblxuICAgICAgPCEtLSBGb290ZXIgLS0+XG4gICAgICBAaWYgKHNob3dGb290ZXIoKSAmJiBkYXRhU291cmNlLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJjb2x1bW5zVG9EaXNwbGF5V2l0aEV4cGFuZFwiPjwvdHI+XG4gICAgICB9IH1cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cblxuICBAaWYgKGVuYWJsZVBhZ2luYXRpb24oKSAmJiBwYWdpbmF0aW9uQ29uZmlnKSB7XG4gIDxtYXQtcGFnaW5hdG9yXG4gICAgI3BhZ2luYXRvclxuICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdEYXRhKClcIlxuICAgIChwYWdlKT1cImhhbmRsZVBhZ2VFdmVudCgkZXZlbnQpXCJcbiAgICBbbGVuZ3RoXT1cInBhZ2luYXRpb25Db25maWcudG90YWxSZWNvcmRzXCJcbiAgICBbcGFnZVNpemVdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZVwiXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplT3B0aW9ucyB8fCBbXVwiXG4gICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxuICAgIFtwYWdlSW5kZXhdPVwicGFnaW5hdGlvbkNvbmZpZy5wYWdlSW5kZXhcIlxuICAgIGFyaWEtbGFiZWw9XCJTZWxlY3QgcGFnZVwiXG4gIC8+XG4gIH1cbjwvZGl2PlxuIl19","// tabulator-table.ts\nimport { Component, ViewEncapsulation, input, output, } from '@angular/core';\nimport { Tabulator, PageModule, ReactiveDataModule } from 'tabulator-tables';\nimport * as i0 from \"@angular/core\";\nTabulator.registerModule([PageModule, ReactiveDataModule]);\nexport class TabulatorTable {\n // Data inputs\n data = input([], ...(ngDevMode ? [{ debugName: \"data\" }] : []));\n columns = input([], ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n // Layout inputs\n height = input('400px', ...(ngDevMode ? [{ debugName: \"height\" }] : []));\n layout = input('fitData', ...(ngDevMode ? [{ debugName: \"layout\" }] : []));\n // Tree structure inputs\n dataTree = input(false, ...(ngDevMode ? [{ debugName: \"dataTree\" }] : []));\n dataTreeChildField = input('children', ...(ngDevMode ? [{ debugName: \"dataTreeChildField\" }] : []));\n dataTreeStartExpanded = input(false, ...(ngDevMode ? [{ debugName: \"dataTreeStartExpanded\" }] : []));\n dataTreeSelectPropagate = input(false, ...(ngDevMode ? [{ debugName: \"dataTreeSelectPropagate\" }] : []));\n // Behavior inputs\n selectable = input(true, ...(ngDevMode ? [{ debugName: \"selectable\" }] : []));\n reactiveData = input(true, ...(ngDevMode ? [{ debugName: \"reactiveData\" }] : []));\n placeholder = input('No data available', ...(ngDevMode ? [{ debugName: \"placeholder\" }] : []));\n autoResize = input(true, ...(ngDevMode ? [{ debugName: \"autoResize\" }] : []));\n // Theme configuration\n theme = input({ name: 'default' }, ...(ngDevMode ? [{ debugName: \"theme\" }] : []));\n // Custom styling\n customClass = input('', ...(ngDevMode ? [{ debugName: \"customClass\" }] : []));\n rowFormatter = input(...(ngDevMode ? [undefined, { debugName: \"rowFormatter\" }] : []));\n // Custom options\n options = input({}, ...(ngDevMode ? [{ debugName: \"options\" }] : []));\n // Events\n cellEdited = output();\n rowClick = output();\n rowSelected = output();\n tableReady = output();\n _tabulator;\n // Made public for template access\n containerId = `acp-tabulator-table-${Math.random().toString(36).substr(2, 9)}`;\n ngAfterViewInit() {\n this.initializeTable();\n }\n ngOnChanges(changes) {\n if (changes['data'] && !changes['data'].isFirstChange()) {\n this.updateData();\n }\n if (changes['columns'] && !changes['columns'].isFirstChange()) {\n this.updateColumns();\n }\n if (changes['theme'] && !changes['theme'].isFirstChange()) {\n this.applyTheme();\n }\n if (changes['customClass'] && !changes['customClass'].isFirstChange()) {\n this.applyCustomClass(changes['customClass'].previousValue, this.customClass());\n }\n if (changes['rowFormatter'] && !changes['rowFormatter'].isFirstChange()) {\n this.updateRowFormatter();\n }\n }\n ngOnDestroy() {\n this.destroyTable();\n }\n initializeTable() {\n if (this._tabulator) {\n this.destroyTable();\n }\n const container = document.getElementById(this.containerId);\n if (!container) {\n console.warn('Tabulator container not found');\n return;\n }\n const config = {\n data: this.data(),\n columns: this.columns(),\n height: this.height(),\n layout: this.layout(),\n dataTree: this.dataTree(),\n dataTreeChildField: this.dataTreeChildField(),\n dataTreeStartExpanded: this.dataTreeStartExpanded(),\n dataTreeSelectPropagate: this.dataTreeSelectPropagate(),\n reactiveData: this.reactiveData(),\n placeholder: this.placeholder(),\n autoResize: this.autoResize(),\n selectable: this.selectable(),\n renderVertical: 'virtual',\n renderVerticalBuffer: 300,\n rowFormatter: this.getRowFormatter(),\n ...this.options(),\n };\n try {\n this._tabulator = new Tabulator(container, config);\n this.applyTheme();\n this.registerEvents();\n this.tableReady.emit(this._tabulator);\n }\n catch (error) {\n console.error('Error initializing Tabulator:', error);\n }\n }\n applyTheme() {\n if (this._tabulator) {\n // Tabulator themes are applied via CSS classes on the table element\n const tableElement = this._tabulator.element;\n // Remove existing theme classes\n tableElement.classList.remove('tabulator-modern', 'tabulator-midnight', 'tabulator-simple', 'tabulator-site', 'tabulator-site-dark');\n // Add current theme class (skip 'default' as it uses base styles)\n const theme = this.theme();\n if (theme.name !== 'default') {\n tableElement.classList.add(`tabulator-${theme.name}`);\n }\n // Apply custom classes\n this.applyCustomClass('', this.customClass());\n }\n }\n applyCustomClass(previousClass, newClass) {\n if (this._tabulator) {\n const tableElement = this._tabulator.element;\n // Remove previous custom classes\n if (previousClass) {\n const prevClasses = previousClass.split(' ').filter(cls => cls.trim());\n prevClasses.forEach(cls => tableElement.classList.remove(cls));\n }\n // Add new custom classes\n if (newClass) {\n const newClasses = newClass.split(' ').filter(cls => cls.trim());\n newClasses.forEach(cls => tableElement.classList.add(cls));\n }\n }\n }\n registerEvents() {\n this._tabulator.on('cellEdited', cell => {\n this.cellEdited.emit(cell);\n });\n this._tabulator.on('rowClick', (e, row) => {\n this.rowClick.emit(row);\n });\n this._tabulator.on('rowSelected', row => {\n this.rowSelected.emit(row);\n });\n }\n updateData() {\n if (this._tabulator) {\n this._tabulator.replaceData(this.data());\n }\n }\n updateColumns() {\n if (this._tabulator) {\n this._tabulator.setColumns(this.columns());\n }\n }\n destroyTable() {\n if (this._tabulator) {\n this._tabulator.destroy();\n }\n }\n updateRowFormatter() {\n if (this._tabulator) {\n this._tabulator.redraw(true);\n }\n }\n // Public API methods\n getInstance() {\n return this._tabulator;\n }\n redraw() {\n if (this._tabulator) {\n this._tabulator.redraw();\n }\n }\n getRowFormatter() {\n return (row) => {\n const data = row.getData();\n const element = row.getElement();\n // Apply custom row formatter if provided\n const customFormatter = this.rowFormatter();\n if (customFormatter) {\n customFormatter(row);\n return;\n }\n // Apply rowStyle if present in data\n if (data.rowStyle) {\n Object.assign(element.style, data.rowStyle);\n }\n };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: TabulatorTable, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.4\", type: TabulatorTable, isStandalone: true, selector: \"acp-tabulator-table\", inputs: { data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: \"columns\", publicName: \"columns\", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: \"height\", publicName: \"height\", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: \"layout\", publicName: \"layout\", isSignal: true, isRequired: false, transformFunction: null }, dataTree: { classPropertyName: \"dataTree\", publicName: \"dataTree\", isSignal: true, isRequired: false, transformFunction: null }, dataTreeChildField: { classPropertyName: \"dataTreeChildField\", publicName: \"dataTreeChildField\", isSignal: true, isRequired: false, transformFunction: null }, dataTreeStartExpanded: { classPropertyName: \"dataTreeStartExpanded\", publicName: \"dataTreeStartExpanded\", isSignal: true, isRequired: false, transformFunction: null }, dataTreeSelectPropagate: { classPropertyName: \"dataTreeSelectPropagate\", publicName: \"dataTreeSelectPropagate\", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: \"selectable\", publicName: \"selectable\", isSignal: true, isRequired: false, transformFunction: null }, reactiveData: { classPropertyName: \"reactiveData\", publicName: \"reactiveData\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: \"autoResize\", publicName: \"autoResize\", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: \"theme\", publicName: \"theme\", isSignal: true, isRequired: false, transformFunction: null }, customClass: { classPropertyName: \"customClass\", publicName: \"customClass\", isSignal: true, isRequired: false, transformFunction: null }, rowFormatter: { classPropertyName: \"rowFormatter\", publicName: \"rowFormatter\", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: \"options\", publicName: \"options\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellEdited: \"cellEdited\", rowClick: \"rowClick\", rowSelected: \"rowSelected\", tableReady: \"tableReady\" }, usesOnChanges: true, ngImport: i0, template: \"<div [id]=\\\"containerId\\\" class=\\\"acp-tabulator-table-container\\\"></div>\\n\", styles: [\".acp-tabulator-table{display:block}.acp-tabulator-table-container{width:100%}.acp-tabulator-table-container .tabulator-row.tabulator-selectable:hover{background-color:#0000000a;cursor:pointer;transition:background-color .2s ease}.acp-tabulator-table-container .tabulator-row.tabulator-selected{background-color:var(--mat-sys-primary-container, rgba(25, 118, 210, .12))}@media (max-width: 768px){.acp-tabulator-table-container .tabulator-header{font-size:.875rem}.acp-tabulator-table-container .tabulator-cell{font-size:.875rem;padding:8px 6px}}.acp-tabulator-table-container .tabulator-loader{background:var(--mat-sys-surface-container, rgba(255, 255, 255, .8));-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar{width:8px;height:8px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-track{background:var(--mat-sys-surface-variant, #f1f1f1);border-radius:4px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-thumb{background:var(--mat-sys-outline, #c1c1c1);border-radius:4px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-thumb:hover{background:var(--mat-sys-on-surface-variant, #a8a8a8)}\\n\"], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: TabulatorTable, decorators: [{\n type: Component,\n args: [{ selector: 'acp-tabulator-table', standalone: true, imports: [], encapsulation: ViewEncapsulation.None, template: \"<div [id]=\\\"containerId\\\" class=\\\"acp-tabulator-table-container\\\"></div>\\n\", styles: [\".acp-tabulator-table{display:block}.acp-tabulator-table-container{width:100%}.acp-tabulator-table-container .tabulator-row.tabulator-selectable:hover{background-color:#0000000a;cursor:pointer;transition:background-color .2s ease}.acp-tabulator-table-container .tabulator-row.tabulator-selected{background-color:var(--mat-sys-primary-container, rgba(25, 118, 210, .12))}@media (max-width: 768px){.acp-tabulator-table-container .tabulator-header{font-size:.875rem}.acp-tabulator-table-container .tabulator-cell{font-size:.875rem;padding:8px 6px}}.acp-tabulator-table-container .tabulator-loader{background:var(--mat-sys-surface-container, rgba(255, 255, 255, .8));-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar{width:8px;height:8px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-track{background:var(--mat-sys-surface-variant, #f1f1f1);border-radius:4px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-thumb{background:var(--mat-sys-outline, #c1c1c1);border-radius:4px}.acp-tabulator-table-container .tabulator-tableholder::-webkit-scrollbar-thumb:hover{background:var(--mat-sys-on-surface-variant, #a8a8a8)}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFidWxhdG9yLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL3RhYnVsYXRvci10YWJsZS90YWJ1bGF0b3ItdGFibGUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFidWxhdG9yLXRhYmxlL3RhYnVsYXRvci10YWJsZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQjtBQUNyQixPQUFPLEVBRUwsU0FBUyxFQUlULGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRzdFLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0FBVTNELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLGNBQWM7SUFDTCxJQUFJLEdBQUcsS0FBSyxDQUFRLEVBQUUsZ0RBQUMsQ0FBQztJQUN4QixPQUFPLEdBQUcsS0FBSyxDQUFRLEVBQUUsbURBQUMsQ0FBQztJQUVwQyxnQkFBZ0I7SUFDUCxNQUFNLEdBQUcsS0FBSyxDQUEwQixPQUFPLGtEQUFDLENBQUM7SUFDakQsTUFBTSxHQUFHLEtBQUssQ0FBOEQsU0FBUyxrREFBQyxDQUFDO0lBRWhHLHdCQUF3QjtJQUNmLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxvREFBQyxDQUFDO0lBQ3hCLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxVQUFVLDhEQUFDLENBQUM7SUFDdkMscUJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssaUVBQUMsQ0FBQztJQUNyQyx1QkFBdUIsR0FB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LGNBQWM7MkZBQWQsY0FBYyxvM0VDekIzQiw0RUFDQTs7MkZEd0JhLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxFQUFFLGlCQUdJLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0YWJ1bGF0b3ItdGFibGUudHNcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVGFidWxhdG9yLCBQYWdlTW9kdWxlLCBSZWFjdGl2ZURhdGFNb2R1bGUgfSBmcm9tICd0YWJ1bGF0b3ItdGFibGVzJztcbmltcG9ydCB7IFRhYnVsYXRvclRoZW1lIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5UYWJ1bGF0b3IucmVnaXN0ZXJNb2R1bGUoW1BhZ2VNb2R1bGUsIFJlYWN0aXZlRGF0YU1vZHVsZV0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3AtdGFidWxhdG9yLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW10sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJ1bGF0b3ItdGFibGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYnVsYXRvci10YWJsZS5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFRhYnVsYXRvclRhYmxlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvLyBEYXRhIGlucHV0c1xuICByZWFkb25seSBkYXRhID0gaW5wdXQ8YW55W10+KFtdKTtcbiAgcmVhZG9ubHkgY29sdW1ucyA9IGlucHV0PGFueVtdPihbXSk7XG5cbiAgLy8gTGF5b3V0IGlucHV0c1xuICByZWFkb25seSBoZWlnaHQgPSBpbnB1dDxzdHJpbmcgfCBudW1iZXIgfCBmYWxzZT4oJzQwMHB4Jyk7XG4gIHJlYWRvbmx5IGxheW91dCA9IGlucHV0PCdmaXREYXRhJyB8ICdmaXRDb2x1bW5zJyB8ICdmaXREYXRhRmlsbCcgfCAnZml0RGF0YVN0cmV0Y2gnPignZml0RGF0YScpO1xuXG4gIC8vIFRyZWUgc3RydWN0dXJlIGlucHV0c1xuICByZWFkb25seSBkYXRhVHJlZSA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgZGF0YVRyZWVDaGlsZEZpZWxkID0gaW5wdXQoJ2NoaWxkcmVuJyk7XG4gIHJlYWRvbmx5IGRhdGFUcmVlU3RhcnRFeHBhbmRlZCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgZGF0YVRyZWVTZWxlY3RQcm9wYWdhdGUgPSBpbnB1dChmYWxzZSk7XG5cbiAgLy8gQmVoYXZpb3IgaW5wdXRzXG4gIHJlYWRvbmx5IHNlbGVjdGFibGUgPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgcmVhY3RpdmVEYXRhID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQoJ05vIGRhdGEgYXZhaWxhYmxlJyk7XG4gIHJlYWRvbmx5IGF1dG9SZXNpemUgPSBpbnB1dCh0cnVlKTtcblxuICAvLyBUaGVtZSBjb25maWd1cmF0aW9uXG4gIHJlYWRvbmx5IHRoZW1lID0gaW5wdXQ8VGFidWxhdG9yVGhlbWU+KHsgbmFtZTogJ2RlZmF1bHQnIH0pO1xuXG4gIC8vIEN1c3RvbSBzdHlsaW5nXG4gIHJlYWRvbmx5IGN1c3RvbUNsYXNzID0gaW5wdXQoJycpO1xuICByZWFkb25seSByb3dGb3JtYXR0ZXIgPSBpbnB1dDwocm93OiBhbnkpID0+IHZvaWQgfCBudWxsPigpO1xuXG4gIC8vIEN1c3RvbSBvcHRpb25zXG4gIHJlYWRvbmx5IG9wdGlvbnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5cbiAgLy8gRXZlbnRzXG4gIHJlYWRvbmx5IGNlbGxFZGl0ZWQgPSBvdXRwdXQ8YW55PigpO1xuICByZWFkb25seSByb3dDbGljayA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IHJvd1NlbGVjdGVkID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgdGFibGVSZWFkeSA9IG91dHB1dDxUYWJ1bGF0b3I+KCk7XG5cbiAgcHJpdmF0ZSBfdGFidWxhdG9yITogVGFidWxhdG9yO1xuXG4gIC8vIE1hZGUgcHVibGljIGZvciB0ZW1wbGF0ZSBhY2Nlc3NcbiAgcHVibGljIGNvbnRhaW5lcklkID0gYGFjcC10YWJ1bGF0b3ItdGFibGUtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplVGFibGUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddICYmICFjaGFuZ2VzWydkYXRhJ10uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddICYmICFjaGFuZ2VzWydjb2x1bW5zJ10uaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbnMoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sndGhlbWUnXSAmJiAhY2hhbmdlc1sndGhlbWUnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjdXN0b21DbGFzcyddICYmICFjaGFuZ2VzWydjdXN0b21DbGFzcyddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgdGhpcy5hcHBseUN1c3RvbUNsYXNzKGNoYW5nZXNbJ2N1c3RvbUNsYXNzJ10ucHJldmlvdXNWYWx1ZSwgdGhpcy5jdXN0b21DbGFzcygpKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sncm93Rm9ybWF0dGVyJ10gJiYgIWNoYW5nZXNbJ3Jvd0Zvcm1hdHRlciddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgdGhpcy51cGRhdGVSb3dGb3JtYXR0ZXIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lUYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGFibGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgdGhpcy5kZXN0cm95VGFibGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmNvbnRhaW5lcklkKTtcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29uc29sZS53YXJuKCdUYWJ1bGF0b3IgY29udGFpbmVyIG5vdCBmb3VuZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZzogYW55ID0ge1xuICAgICAgZGF0YTogdGhpcy5kYXRhKCksXG4gICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMoKSxcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQoKSxcbiAgICAgIGxheW91dDogdGhpcy5sYXlvdXQoKSxcbiAgICAgIGRhdGFUcmVlOiB0aGlzLmRhdGFUcmVlKCksXG4gICAgICBkYXRhVHJlZUNoaWxkRmllbGQ6IHRoaXMuZGF0YVRyZWVDaGlsZEZpZWxkKCksXG4gICAgICBkYXRhVHJlZVN0YXJ0RXhwYW5kZWQ6IHRoaXMuZGF0YVRyZWVTdGFydEV4cGFuZGVkKCksXG4gICAgICBkYXRhVHJlZVNlbGVjdFByb3BhZ2F0ZTogdGhpcy5kYXRhVHJlZVNlbGVjdFByb3BhZ2F0ZSgpLFxuICAgICAgcmVhY3RpdmVEYXRhOiB0aGlzLnJlYWN0aXZlRGF0YSgpLFxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucGxhY2Vob2xkZXIoKSxcbiAgICAgIGF1dG9SZXNpemU6IHRoaXMuYXV0b1Jlc2l6ZSgpLFxuICAgICAgc2VsZWN0YWJsZTogdGhpcy5zZWxlY3RhYmxlKCksXG4gICAgICByZW5kZXJWZXJ0aWNhbDogJ3ZpcnR1YWwnLFxuICAgICAgcmVuZGVyVmVydGljYWxCdWZmZXI6IDMwMCxcbiAgICAgIHJvd0Zvcm1hdHRlcjogdGhpcy5nZXRSb3dGb3JtYXR0ZXIoKSxcbiAgICAgIC4uLnRoaXMub3B0aW9ucygpLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5fdGFidWxhdG9yID0gbmV3IFRhYnVsYXRvcihjb250YWluZXIsIGNvbmZpZyk7XG4gICAgICB0aGlzLmFwcGx5VGhlbWUoKTtcbiAgICAgIHRoaXMucmVnaXN0ZXJFdmVudHMoKTtcbiAgICAgIHRoaXMudGFibGVSZWFkeS5lbWl0KHRoaXMuX3RhYnVsYXRvcik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBUYWJ1bGF0b3I6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlUaGVtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdGFidWxhdG9yKSB7XG4gICAgICAvLyBUYWJ1bGF0b3IgdGhlbWVzIGFyZSBhcHBsaWVkIHZpYSBDU1MgY2xhc3NlcyBvbiB0aGUgdGFibGUgZWxlbWVudFxuICAgICAgY29uc3QgdGFibGVFbGVtZW50ID0gdGhpcy5fdGFidWxhdG9yLmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIC8vIFJlbW92ZSBleGlzdGluZyB0aGVtZSBjbGFzc2VzXG4gICAgICB0YWJsZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgJ3RhYnVsYXRvci1tb2Rlcm4nLFxuICAgICAgICAndGFidWxhdG9yLW1pZG5pZ2h0JyxcbiAgICAgICAgJ3RhYnVsYXRvci1zaW1wbGUnLFxuICAgICAgICAndGFidWxhdG9yLXNpdGUnLFxuICAgICAgICAndGFidWxhdG9yLXNpdGUtZGFyaycsXG4gICAgICApO1xuXG4gICAgICAvLyBBZGQgY3VycmVudCB0aGVtZSBjbGFzcyAoc2tpcCAnZGVmYXVsdCcgYXMgaXQgdXNlcyBiYXNlIHN0eWxlcylcbiAgICAgIGNvbnN0IHRoZW1lID0gdGhpcy50aGVtZSgpO1xuICAgICAgaWYgKHRoZW1lLm5hbWUgIT09ICdkZWZhdWx0Jykge1xuICAgICAgICB0YWJsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgdGFidWxhdG9yLSR7dGhlbWUubmFtZX1gKTtcbiAgICAgIH1cblxuICAgICAgLy8gQXBwbHkgY3VzdG9tIGNsYXNzZXNcbiAgICAgIHRoaXMuYXBwbHlDdXN0b21DbGFzcygnJywgdGhpcy5jdXN0b21DbGFzcygpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q3VzdG9tQ2xhc3MocHJldmlvdXNDbGFzczogc3RyaW5nLCBuZXdDbGFzczogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgY29uc3QgdGFibGVFbGVtZW50ID0gdGhpcy5fdGFidWxhdG9yLmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIC8vIFJlbW92ZSBwcmV2aW91cyBjdXN0b20gY2xhc3Nlc1xuICAgICAgaWYgKHByZXZpb3VzQ2xhc3MpIHtcbiAgICAgICAgY29uc3QgcHJldkNsYXNzZXMgPSBwcmV2aW91c0NsYXNzLnNwbGl0KCcgJykuZmlsdGVyKGNscyA9PiBjbHMudHJpbSgpKTtcbiAgICAgICAgcHJldkNsYXNzZXMuZm9yRWFjaChjbHMgPT4gdGFibGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xzKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBuZXcgY3VzdG9tIGNsYXNzZXNcbiAgICAgIGlmIChuZXdDbGFzcykge1xuICAgICAgICBjb25zdCBuZXdDbGFzc2VzID0gbmV3Q2xhc3Muc3BsaXQoJyAnKS5maWx0ZXIoY2xzID0+IGNscy50cmltKCkpO1xuICAgICAgICBuZXdDbGFzc2VzLmZvckVhY2goY2xzID0+IHRhYmxlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGNscykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5fdGFidWxhdG9yLm9uKCdjZWxsRWRpdGVkJywgY2VsbCA9PiB7XG4gICAgICB0aGlzLmNlbGxFZGl0ZWQuZW1pdChjZWxsKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3RhYnVsYXRvci5vbigncm93Q2xpY2snLCAoZSwgcm93KSA9PiB7XG4gICAgICB0aGlzLnJvd0NsaWNrLmVtaXQocm93KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3RhYnVsYXRvci5vbigncm93U2VsZWN0ZWQnLCByb3cgPT4ge1xuICAgICAgdGhpcy5yb3dTZWxlY3RlZC5lbWl0KHJvdyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdGEoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgdGhpcy5fdGFidWxhdG9yLnJlcGxhY2VEYXRhKHRoaXMuZGF0YSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgdGhpcy5fdGFidWxhdG9yLnNldENvbHVtbnModGhpcy5jb2x1bW5zKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveVRhYmxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90YWJ1bGF0b3IpIHtcbiAgICAgIHRoaXMuX3RhYnVsYXRvci5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3dGb3JtYXR0ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgdGhpcy5fdGFidWxhdG9yLnJlZHJhdyh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvLyBQdWJsaWMgQVBJIG1ldGhvZHNcbiAgcHVibGljIGdldEluc3RhbmNlKCk6IFRhYnVsYXRvciB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYnVsYXRvcjtcbiAgfVxuXG4gIHB1YmxpYyByZWRyYXcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RhYnVsYXRvcikge1xuICAgICAgdGhpcy5fdGFidWxhdG9yLnJlZHJhdygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um93Rm9ybWF0dGVyKCk6IChyb3c6IGFueSkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIChyb3c6IGFueSkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHJvdy5nZXREYXRhKCk7XG4gICAgICBjb25zdCBlbGVtZW50ID0gcm93LmdldEVsZW1lbnQoKTtcblxuICAgICAgLy8gQXBwbHkgY3VzdG9tIHJvdyBmb3JtYXR0ZXIgaWYgcHJvdmlkZWRcbiAgICAgIGNvbnN0IGN1c3RvbUZvcm1hdHRlciA9IHRoaXMucm93Rm9ybWF0dGVyKCk7XG4gICAgICBpZiAoY3VzdG9tRm9ybWF0dGVyKSB7XG4gICAgICAgIGN1c3RvbUZvcm1hdHRlcihyb3cpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IHJvd1N0eWxlIGlmIHByZXNlbnQgaW4gZGF0YVxuICAgICAgaWYgKGRhdGEucm93U3R5bGUpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBkYXRhLnJvd1N0eWxlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2IFtpZF09XCJjb250YWluZXJJZFwiIGNsYXNzPVwiYWNwLXRhYnVsYXRvci10YWJsZS1jb250YWluZXJcIj48L2Rpdj5cbiJdfQ==","import { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { firstValueFrom, map } from 'rxjs';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { DialogWrapper } from '../../components/dialog-wrapper/dialog-wrapper';\nimport * as i0 from \"@angular/core\";\nexport class AdvancedDialogService {\n dialog = inject(MatDialog);\n overlay = inject(Overlay);\n breakpointObserver = inject(BreakpointObserver);\n // An observable that emits true if the viewport matches mobile dimensions.\n isMobile$ = this.breakpointObserver\n .observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape])\n .pipe(map(result => result.matches));\n /**\n * Main method to open any component in a dialog.\n * This provides maximum flexibility.\n * @param component The component to render.\n * @param config The detailed configuration for the dialog.\n * @returns A MatDialogRef instance.\n */\n async open(component, config = {}) {\n const dialogConfig = await this.buildDialogConfig(config);\n return this.dialog.open(component, dialogConfig);\n }\n /**\n * A powerful helper to open a component inside our standard, branded \"wrapper\".\n * This provides maximum consistency.\n * @param wrapperConfig Configuration for the title, icon, and the content component.\n * @param matDialogConfig Standard MatDialog configuration (size, position, etc.).\n * @returns A MatDialogRef instance pointing to the wrapper.\n */\n async openInWrapper(wrapperConfig, matDialogConfig = {}) {\n // Package the wrapper config into the `data` property for the DialogWrapper to consume.\n const configWithWrapperData = {\n ...matDialogConfig,\n data: wrapperConfig,\n };\n const dialogConfig = await this.buildDialogConfig(configWithWrapperData);\n return this.dialog.open(DialogWrapper, dialogConfig);\n }\n /**\n * Helper to open a dialog and only get an observable of the result.\n */\n async openAndGetResult(component, config = {}) {\n const dialogRef = await this.open(component, config);\n return firstValueFrom(dialogRef.afterClosed());\n }\n /**\n * Closes all currently open dialogs.\n */\n closeAll() {\n this.dialog.closeAll();\n }\n // --- Private Configuration Builder ---\n async buildDialogConfig(config) {\n const dialogConfig = new MatDialogConfig();\n // Asynchronously check for mobile state to prevent memory leaks from dangling subscriptions.\n const isMobile = await firstValueFrom(this.isMobile$);\n // Apply fullscreen if 'full' size is set OR if mobile fullscreen is enabled on a mobile device.\n if (config.size === 'full' || (config.isMobileFullScreen && isMobile)) {\n this.applyFullScreenConfig(dialogConfig);\n }\n else {\n this.applyStandardConfig(dialogConfig, config);\n }\n // Apply all other common configurations.\n this.applyCommonConfig(dialogConfig, config);\n return dialogConfig;\n }\n applyFullScreenConfig(dialogConfig) {\n dialogConfig.width = '100vw';\n dialogConfig.height = '100vh';\n dialogConfig.maxWidth = '100vw';\n dialogConfig.panelClass = ['full-screen-dialog'];\n }\n applyStandardConfig(dialogConfig, config) {\n dialogConfig.width = config.width ?? this.getDialogWidth(config.size);\n dialogConfig.height = config.height;\n dialogConfig.minWidth = config.minWidth;\n dialogConfig.maxWidth = config.maxWidth ?? '95vw';\n dialogConfig.maxHeight = config.maxHeight ?? 'auto';\n dialogConfig.position = config.position;\n }\n applyCommonConfig(dialogConfig, config) {\n dialogConfig.data = config.data;\n dialogConfig.hasBackdrop = config.hasBackdrop ?? true;\n dialogConfig.backdropClass = config.backdropClass;\n const panelClasses = Array.isArray(config.panelClass)\n ? [...config.panelClass]\n : config.panelClass\n ? [config.panelClass]\n : [];\n if (config.size) {\n panelClasses.push(`dialog-${config.size}`);\n }\n dialogConfig.panelClass = panelClasses;\n dialogConfig.disableClose = !(config.backdropClickClosable ?? true);\n // Note: escapeKeyClosable is handled by MatDialog separately and doesn't affect disableClose directly.\n dialogConfig.autoFocus = config.autoFocus ?? 'first-tabbable';\n dialogConfig.scrollStrategy = config.scrollStrategy ?? this.overlay.scrollStrategies.block();\n dialogConfig.enterAnimationDuration = config.enterAnimationDuration ?? '300ms';\n dialogConfig.exitAnimationDuration = config.exitAnimationDuration ?? '200ms';\n dialogConfig.ariaLabel = config.ariaLabel;\n dialogConfig.ariaLabelledBy = config.ariaLabelledBy;\n dialogConfig.ariaDescribedBy = config.ariaDescribedBy;\n dialogConfig.role = config.role;\n }\n getDialogWidth(size = 'md') {\n const sizeMap = {\n xs: '320px',\n sm: '450px',\n md: '600px',\n lg: '800px',\n xl: '1000px',\n xxl: '1280px',\n full: '100vw',\n };\n return sizeMap[size];\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AdvancedDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AdvancedDialogService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AdvancedDialogService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvZGlhbG9nL2FkdmFuY2VkLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOztBQUsvRSxNQUFNLE9BQU8scUJBQXFCO0lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQixPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRWpFLDJFQUEyRTtJQUMxRCxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjtTQUNqRCxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3BFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUV2Qzs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLFNBQTJCLEVBQzNCLFNBQW1DLEVBQUU7UUFF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QUMxQyxZQUFZLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDcEQsWUFBWSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQ3RELFlBQVksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQW1CLElBQUk7UUFDNUMsTUFBTSxPQUFPLEdBQStCO1lBQzFDLEVBQUUsRUFBRSxPQUFPO1lBQ1gsRUFBRSxFQUFFLE9BQU87WUFDWCxFQUFFLEVBQUUsT0FBTztZQUNYLEVBQUUsRUFBRSxPQUFPO1lBQ1gsRUFBRSxFQUFFLFFBQVE7WUFDWixHQUFHLEVBQUUsUUFBUTtZQUNiLElBQUksRUFBRSxPQUFPO1NBQ2QsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7dUdBbEpVLHFCQUFxQjsyR0FBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcblxuaW1wb3J0IHsgTWF0Q3VzdG9tRGlhbG9nQ29uZmlnLCBEaWFsb2dTaXplLCBEaWFsb2dXcmFwcGVyQ29uZmlnIH0gZnJvbSAnLi9kaWFsb2cuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEaWFsb2dXcmFwcGVyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kaWFsb2ctd3JhcHBlci9kaWFsb2ctd3JhcHBlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBZHZhbmNlZERpYWxvZ1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG5cbiAgLy8gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRydWUgaWYgdGhlIHZpZXdwb3J0IG1hdGNoZXMgbW9iaWxlIGRpbWVuc2lvbnMuXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGUkID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcbiAgICAub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldFBvcnRyYWl0LCBCcmVha3BvaW50cy5IYW5kc2V0TGFuZHNjYXBlXSlcbiAgICAucGlwZShtYXAocmVzdWx0ID0+IHJlc3VsdC5tYXRjaGVzKSk7XG5cbiAgLyoqXG4gICAqIE1haW4gbWV0aG9kIHRvIG9wZW4gYW55IGNvbXBvbmVudCBpbiBhIGRpYWxvZy5cbiAgICogVGhpcyBwcm92aWRlcyBtYXhpbXVtIGZsZXhpYmlsaXR5LlxuICAgKiBAcGFyYW0gY29tcG9uZW50IFRoZSBjb21wb25lbnQgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBkZXRhaWxlZCBjb25maWd1cmF0aW9uIGZvciB0aGUgZGlhbG9nLlxuICAgKiBAcmV0dXJucyBBIE1hdERpYWxvZ1JlZiBpbnN0YW5jZS5cbiAgICovXG4gIGFzeW5jIG9wZW48VCwgRCA9IHVua25vd24sIFIgPSB1bmtub3duPihcbiAgICBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8VD4sXG4gICAgY29uZmlnOiBNYXRDdXN0b21EaWFsb2dDb25maWc8RD4gPSB7fSxcbiAgKTogUHJvbWlzZTxNYXREaWFsb2dSZWY8VCwgUj4+IHtcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBhd2FpdCB0aGlzLmJ1aWxkRGlhbG9nQ29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLm9wZW48VCwgRCwgUj4oY29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcG93ZXJmdWwgaGVscGVyIHRvIG9wZW4gYSBjb21wb25lbnQgaW5zaWRlIG91ciBzdGFuZGFyZCwgYnJhbmRlZCBcIndyYXBwZXJcIi5cbiAgICogVGhpcyBwcm92aWRlcyBtYXhpbXVtIGNvbnNpc3RlbmN5LlxuICAgKiBAcGFyYW0gd3JhcHBlckNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgdGl0bGUsIGljb24sIGFuZCB0aGUgY29udGVudCBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBtYXREaWFsb2dDb25maWcgU3RhbmRhcmQgTWF0RGlhbG9nIGNvbmZpZ3VyYXRpb24gKHNpemUsIHBvc2l0aW9uLCBldGMuKS5cbiAgICogQHJldHVybnMgQSBNYXREaWFsb2dSZWYgaW5zdGFuY2UgcG9pbnRpbmcgdG8gdGhlIHdyYXBwZXIuXG4gICAqL1xuICBhc3luYyBvcGVuSW5XcmFwcGVyPFQsIFIgPSB1bmtub3duPihcbiAgICB3cmFwcGVyQ29uZmlnOiBEaWFsb2dXcmFwcGVyQ29uZmlnPFQ+LFxuICAgIG1hdERpYWxvZ0NvbmZpZzogTWF0Q3VzdG9tRGlhbG9nQ29uZmlnPFQ+ID0ge30sXG4gICk6IFByb21pc2U8TWF0RGlhbG9nUmVmPERpYWxvZ1dyYXBwZXIsIFI+PiB7XG4gICAgLy8gUGFja2FnZSB0aGUgd3JhcHBlciBjb25maWcgaW50byB0aGUgYGRhdGFgIHByb3BlcnR5IGZvciB0aGUgRGlhbG9nV3JhcHBlciB0byBjb25zdW1lLlxuICAgIGNvbnN0IGNvbmZpZ1dpdGhXcmFwcGVyRGF0YTogTWF0Q3VzdG9tRGlhbG9nQ29uZmlnPERpYWxvZ1dyYXBwZXJDb25maWc8VD4+ID0ge1xuICAgICAgLi4ubWF0RGlhbG9nQ29uZmlnLFxuICAgICAgZGF0YTogd3JhcHBlckNvbmZpZyxcbiAgICB9IGFzIE1hdEN1c3RvbURpYWxvZ0NvbmZpZzxEaWFsb2dXcmFwcGVyQ29uZmlnPFQ+PjtcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBhd2FpdCB0aGlzLmJ1aWxkRGlhbG9nQ29uZmlnKGNvbmZpZ1dpdGhXcmFwcGVyRGF0YSk7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLm9wZW48RGlhbG9nV3JhcHBlciwgRGlhbG9nV3JhcHBlckNvbmZpZzxUPiwgUj4oRGlhbG9nV3JhcHBlciwgZGlhbG9nQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gb3BlbiBhIGRpYWxvZyBhbmQgb25seSBnZXQgYW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgb3BlbkFuZEdldFJlc3VsdDxULCBEID0gdW5rbm93biwgUiA9IHVua25vd24+KFxuICAgIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPixcbiAgICBjb25maWc6IE1hdEN1c3RvbURpYWxvZ0NvbmZpZzxEPiA9IHt9LFxuICApOiBQcm9taXNlPFIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSBhd2FpdCB0aGlzLm9wZW4oY29tcG9uZW50LCBjb25maWcpO1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKSkgYXMgUHJvbWlzZTxSIHwgdW5kZWZpbmVkPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgYWxsIGN1cnJlbnRseSBvcGVuIGRpYWxvZ3MuXG4gICAqL1xuICBjbG9zZUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICB9XG5cbiAgLy8gLS0tIFByaXZhdGUgQ29uZmlndXJhdGlvbiBCdWlsZGVyIC0tLVxuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGREaWFsb2dDb25maWc8RD4oXG4gICAgY29uZmlnOiBNYXRDdXN0b21EaWFsb2dDb25maWc8RD4sXG4gICk6IFByb21pc2U8TWF0RGlhbG9nQ29uZmlnPEQ+PiB7XG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZzxEPigpO1xuXG4gICAgLy8gQXN5bmNocm9ub3VzbHkgY2hlY2sgZm9yIG1vYmlsZSBzdGF0ZSB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcyBmcm9tIGRhbmdsaW5nIHN1YnNjcmlwdGlvbnMuXG4gICAgY29uc3QgaXNNb2JpbGUgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmlzTW9iaWxlJCk7XG5cbiAgICAvLyBBcHBseSBmdWxsc2NyZWVuIGlmICdmdWxsJyBzaXplIGlzIHNldCBPUiBpZiBtb2JpbGUgZnVsbHNjcmVlbiBpcyBlbmFibGVkIG9uIGEgbW9iaWxlIGRldmljZS5cbiAgICBpZiAoY29uZmlnLnNpemUgPT09ICdmdWxsJyB8fCAoY29uZmlnLmlzTW9iaWxlRnVsbFNjcmVlbiAmJiBpc01vYmlsZSkpIHtcbiAgICAgIHRoaXMuYXBwbHlGdWxsU2NyZWVuQ29uZmlnKGRpYWxvZ0NvbmZpZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwbHlTdGFuZGFyZENvbmZpZyhkaWFsb2dDb25maWcsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgYWxsIG90aGVyIGNvbW1vbiBjb25maWd1cmF0aW9ucy5cbiAgICB0aGlzLmFwcGx5Q29tbW9uQ29uZmlnKGRpYWxvZ0NvbmZpZywgY29uZmlnKTtcblxuICAgIHJldHVybiBkaWFsb2dDb25maWc7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RnVsbFNjcmVlbkNvbmZpZyhkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZyk6IHZvaWQge1xuICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9ICcxMDB2dyc7XG4gICAgZGlhbG9nQ29uZmlnLmhlaWdodCA9ICcxMDB2aCc7XG4gICAgZGlhbG9nQ29uZmlnLm1heFdpZHRoID0gJzEwMHZ3JztcbiAgICBkaWFsb2dDb25maWcucGFuZWxDbGFzcyA9IFsnZnVsbC1zY3JlZW4tZGlhbG9nJ107XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3RhbmRhcmRDb25maWc8RD4oXG4gICAgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc8RD4sXG4gICAgY29uZmlnOiBNYXRDdXN0b21EaWFsb2dDb25maWc8RD4sXG4gICk6IHZvaWQge1xuICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9IGNvbmZpZy53aWR0aCA/PyB0aGlzLmdldERpYWxvZ1dpZHRoKGNvbmZpZy5zaXplKTtcbiAgICBkaWFsb2dDb25maWcuaGVpZ2h0ID0gY29uZmlnLmhlaWdodDtcbiAgICBkaWFsb2dDb25maWcubWluV2lkdGggPSBjb25maWcubWluV2lkdGg7XG4gICAgZGlhbG9nQ29uZmlnLm1heFdpZHRoID0gY29uZmlnLm1heFdpZHRoID8/ICc5NXZ3JztcbiAgICBkaWFsb2dDb25maWcubWF4SGVpZ2h0ID0gY29uZmlnLm1heEhlaWdodCA/PyAnYXV0byc7XG4gICAgZGlhbG9nQ29uZmlnLnBvc2l0aW9uID0gY29uZmlnLnBvc2l0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvbW1vbkNvbmZpZzxEPihcbiAgICBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZzxEPixcbiAgICBjb25maWc6IE1hdEN1c3RvbURpYWxvZ0NvbmZpZzxEPixcbiAgKTogdm9pZCB7XG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSBjb25maWcuZGF0YTtcbiAgICBkaWFsb2dDb25maWcuaGFzQmFja2Ryb3AgPSBjb25maWcuaGFzQmFja2Ryb3AgPz8gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcuYmFja2Ryb3BDbGFzcyA9IGNvbmZpZy5iYWNrZHJvcENsYXNzO1xuXG4gICAgY29uc3QgcGFuZWxDbGFzc2VzID0gQXJyYXkuaXNBcnJheShjb25maWcucGFuZWxDbGFzcylcbiAgICAgID8gWy4uLmNvbmZpZy5wYW5lbENsYXNzXVxuICAgICAgOiBjb25maWcucGFuZWxDbGFzc1xuICAgICAgICA/IFtjb25maWcucGFuZWxDbGFzc11cbiAgICAgICAgOiBbXTtcbiAgICBpZiAoY29uZmlnLnNpemUpIHtcbiAgICAgIHBhbmVsQ2xhc3Nlcy5wdXNoKGBkaWFsb2ctJHtjb25maWcuc2l6ZX1gKTtcbiAgICB9XG4gICAgZGlhbG9nQ29uZmlnLnBhbmVsQ2xhc3MgPSBwYW5lbENsYXNzZXM7XG5cbiAgICBkaWFsb2dDb25maWcuZGlzYWJsZUNsb3NlID0gIShjb25maWcuYmFja2Ryb3BDbGlja0Nsb3NhYmxlID8/IHRydWUpO1xuICAgIC8vIE5vdGU6IGVzY2FwZUtleUNsb3NhYmxlIGlzIGhhbmRsZWQgYnkgTWF0RGlhbG9nIHNlcGFyYXRlbHkgYW5kIGRvZXNuJ3QgYWZmZWN0IGRpc2FibGVDbG9zZSBkaXJlY3RseS5cbiAgICBkaWFsb2dDb25maWcuYXV0b0ZvY3VzID0gY29uZmlnLmF1dG9Gb2N1cyA/PyAnZmlyc3QtdGFiYmFibGUnO1xuICAgIGRpYWxvZ0NvbmZpZy5zY3JvbGxTdHJhdGVneSA9IGNvbmZpZy5zY3JvbGxTdHJhdGVneSA/PyB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgIGRpYWxvZ0NvbmZpZy5lbnRlckFuaW1hdGlvbkR1cmF0aW9uID0gY29uZmlnLmVudGVyQW5pbWF0aW9uRHVyYXRpb24gPz8gJzMwMG1zJztcbiAgICBkaWFsb2dDb25maWcuZXhpdEFuaW1hdGlvbkR1cmF0aW9uID0gY29uZmlnLmV4aXRBbmltYXRpb25EdXJhdGlvbiA/PyAnMjAwbXMnO1xuICAgIGRpYWxvZ0NvbmZpZy5hcmlhTGFiZWwgPSBjb25maWcuYXJpYUxhYmVsO1xuICAgIGRpYWxvZ0NvbmZpZy5hcmlhTGFiZWxsZWRCeSA9IGNvbmZpZy5hcmlhTGFiZWxsZWRCeTtcbiAgICBkaWFsb2dDb25maWcuYXJpYURlc2NyaWJlZEJ5ID0gY29uZmlnLmFyaWFEZXNjcmliZWRCeTtcbiAgICBkaWFsb2dDb25maWcucm9sZSA9IGNvbmZpZy5yb2xlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaWFsb2dXaWR0aChzaXplOiBEaWFsb2dTaXplID0gJ21kJyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2l6ZU1hcDogUmVjb3JkPERpYWxvZ1NpemUsIHN0cmluZz4gPSB7XG4gICAgICB4czogJzMyMHB4JyxcbiAgICAgIHNtOiAnNDUwcHgnLFxuICAgICAgbWQ6ICc2MDBweCcsXG4gICAgICBsZzogJzgwMHB4JyxcbiAgICAgIHhsOiAnMTAwMHB4JyxcbiAgICAgIHh4bDogJzEyODBweCcsXG4gICAgICBmdWxsOiAnMTAwdncnLFxuICAgIH07XG4gICAgcmV0dXJuIHNpemVNYXBbc2l6ZV07XG4gIH1cbn1cbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Spinner } from '../components/spinner/spinner';\nimport * as i0 from \"@angular/core\";\nexport class OverlayService {\n overlay = inject(Overlay);\n overlayRef;\n showSpinner() {\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n hasBackdrop: true,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n });\n const spinnerPortal = new ComponentPortal(Spinner);\n this.overlayRef.attach(spinnerPortal);\n }\n }\n hideSpinner() {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef = null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: OverlayService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: OverlayService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL292ZXJsYXktc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFJeEQsTUFBTSxPQUFPLGNBQWM7SUFDUixPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLFVBQVUsQ0FBYztJQUVoQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUNwQyxXQUFXLEVBQUUsSUFBSTtnQkFDakIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLGdCQUFnQixFQUFFO2FBQzNGLENBQUMsQ0FBQztZQUVILE1BQU0sYUFBYSxHQUFHLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFLLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7dUdBckJVLGNBQWM7MkdBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnLi4vY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXInO1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICBwcml2YXRlIG92ZXJsYXlSZWYhOiBPdmVybGF5UmVmO1xuXG4gIHNob3dTcGlubmVyKCkge1xuICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzcGlubmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChTcGlubmVyKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2goc3Bpbm5lclBvcnRhbCk7XG4gICAgfVxuICB9XG5cbiAgaGlkZVNwaW5uZXIoKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbCE7XG4gICAgfVxuICB9XG59XG4iXX0=","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class ThemeSwitcher {\n _darkMode = new BehaviorSubject(false);\n platformId = inject(PLATFORM_ID);\n isDarkMode$ = this._darkMode.asObservable();\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadMode();\n }\n }\n loadMode() {\n if (!isPlatformBrowser(this.platformId))\n return;\n const savedTheme = localStorage.getItem('theme');\n if (savedTheme) {\n this._darkMode.next(savedTheme === 'dark');\n this.applyTheme(savedTheme === 'dark');\n }\n else {\n // Check system preference\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n this._darkMode.next(prefersDark);\n this.applyTheme(prefersDark);\n }\n }\n toggleDarkMode() {\n const newValue = !this._darkMode.value;\n this._darkMode.next(newValue);\n this.applyTheme(newValue);\n localStorage.setItem('theme', newValue ? 'dark' : 'light');\n }\n applyTheme(isDark) {\n if (!isPlatformBrowser(this.platformId))\n return;\n document.documentElement.classList.toggle('dark-theme', isDark);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ThemeSwitcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ThemeSwitcher, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ThemeSwitcher, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtc3dpdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvdGhlbWUtc3dpdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3ZDLE1BQU0sT0FBTyxhQUFhO0lBQ1AsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hELFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFNUM7UUFDRSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFDaEQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ04sMEJBQTBCO1lBQzFCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDOUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxVQUFVLENBQUMsTUFBZTtRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFDaEQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRSxDQUFDO3VHQW5DVSxhQUFhOzJHQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGhlbWVTd2l0Y2hlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhcmtNb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIGlzRGFya01vZGUkID0gdGhpcy5fZGFya01vZGUuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMubG9hZE1vZGUoKTtcbiAgICB9XG4gIH1cblxuICBsb2FkTW9kZSgpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcbiAgICBjb25zdCBzYXZlZFRoZW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lJyk7XG4gICAgaWYgKHNhdmVkVGhlbWUpIHtcbiAgICAgIHRoaXMuX2RhcmtNb2RlLm5leHQoc2F2ZWRUaGVtZSA9PT0gJ2RhcmsnKTtcbiAgICAgIHRoaXMuYXBwbHlUaGVtZShzYXZlZFRoZW1lID09PSAnZGFyaycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDaGVjayBzeXN0ZW0gcHJlZmVyZW5jZVxuICAgICAgY29uc3QgcHJlZmVyc0RhcmsgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXM7XG4gICAgICB0aGlzLl9kYXJrTW9kZS5uZXh0KHByZWZlcnNEYXJrKTtcbiAgICAgIHRoaXMuYXBwbHlUaGVtZShwcmVmZXJzRGFyayk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRGFya01vZGUoKTogdm9pZCB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSAhdGhpcy5fZGFya01vZGUudmFsdWU7XG4gICAgdGhpcy5fZGFya01vZGUubmV4dChuZXdWYWx1ZSk7XG4gICAgdGhpcy5hcHBseVRoZW1lKG5ld1ZhbHVlKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGhlbWUnLCBuZXdWYWx1ZSA/ICdkYXJrJyA6ICdsaWdodCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVRoZW1lKGlzRGFyazogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdkYXJrLXRoZW1lJywgaXNEYXJrKTtcbiAgfVxufVxuIl19","// Configuraciones predefinidas mejoradas\nexport const AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG = {\n placeholder: 'Buscar...',\n disabled: false,\n debounceTime: 300,\n minSearchLength: 2,\n maxHistoryItems: 10,\n itemsPerPage: 10,\n enableStockFilter: true,\n stockProperty: 'stock',\n enablePagination: true,\n enableFilters: true,\n enableFooterActions: true,\n overlayWidth: '100%',\n overlayMaxHeight: '500px',\n noResultsText: 'No se encontraron resultados',\n sectionTitle: 'Resultados',\n searchMode: 'remote',\n searchFields: [\n { value: 'description', label: 'Descripción', property: 'description' },\n { value: 'code', label: 'Código', property: 'code' },\n { value: 'barcode', label: 'Código de Barras', property: 'barcode' },\n { value: 'auxCode', label: 'Código Auxiliar', property: 'auxCode' },\n ],\n stockOptions: [\n { value: 'all', label: 'Todos' },\n { value: 'with-stock', label: 'Con Stock' },\n { value: 'without-stock', label: 'Sin Stock' },\n ],\n};\nexport const AUTOCOMPLETE_WRAPPER_PRODUCT_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar productos...',\n enableStockFilter: true,\n enableFooterActions: true,\n sectionTitle: 'Productos',\n noResultsText: 'No se encontraron productos',\n};\nexport const AUTOCOMPLETE_WRAPPER_CUSTOMER_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar clientes...',\n enableStockFilter: false,\n enableFooterActions: false,\n sectionTitle: 'Clientes',\n noResultsText: 'No se encontraron clientes',\n searchFields: [\n { value: 'name', label: 'Nombre', property: 'name' },\n { value: 'email', label: 'Email', property: 'email' },\n { value: 'phone', label: 'Teléfono', property: 'phone' },\n { value: 'document', label: 'Documento', property: 'document' },\n ],\n};\nexport const AUTOCOMPLETE_WRAPPER_SIMPLE_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar...',\n enableStockFilter: false,\n enableFilters: false,\n enableFooterActions: false,\n enablePagination: false,\n itemsPerPage: 50,\n sectionTitle: 'Resultados',\n overlayMaxHeight: '300px',\n};\n// Configuración para búsqueda local\nexport const AUTOCOMPLETE_WRAPPER_LOCAL_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_SIMPLE_CONFIG,\n searchMode: 'local',\n debounceTime: 150, // Menos tiempo para búsqueda local\n minSearchLength: 1,\n};\n// Configuración para listas grandes con paginación\nexport const AUTOCOMPLETE_WRAPPER_PAGINATED_CONFIG = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n itemsPerPage: 20,\n enablePagination: true,\n overlayMaxHeight: '400px',\n};\n// Helper para crear configuración personalizada\nexport function createAutocompleteWrapperConfig(overrides) {\n return {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n ...overrides,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXdyYXBwZXItaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RlbHMvYXV0b2NvbXBsZXRlLXdyYXBwZXItaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3S0EseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUE4QjtJQUM1RSxXQUFXLEVBQUUsV0FBVztJQUN4QixRQUFRLEVBQUUsS0FBSztJQUNmLFlBQVksRUFBRSxHQUFHO0lBQ2pCLGVBQWUsRUFBRSxDQUFDO0lBQ2xCLGVBQWUsRUFBRSxFQUFFO0lBQ25CLFlBQVksRUFBRSxFQUFFO0lBQ2hCLGlCQUFpQixFQUFFLElBQUk7SUFDdkIsYUFBYSxFQUFFLE9BQU87SUFDdEIsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QixhQUFhLEVBQUUsSUFBSTtJQUNuQixtQkFBbUIsRUFBRSxJQUFJO0lBQ3pCLFlBQVksRUFBRSxNQUFNO0lBQ3BCLGdCQUFnQixFQUFFLE9BQU87SUFDekIsYUFBYSxFQUFFLDhCQUE4QjtJQUM3QyxZQUFZLEVBQUUsWUFBWTtJQUMxQixVQUFVLEVBQUUsUUFBUTtJQUNwQixZQUFZLEVBQUU7UUFDWixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO1FBQ3ZFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7UUFDcEQsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO1FBQ3BFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRTtLQUNwRTtJQUNELFlBQVksRUFBRTtRQUNaLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1FBQ2hDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO1FBQzNDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0tBQy9DO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUE4QjtJQUM1RSxHQUFHLG1DQUFtQztJQUN0QyxXQUFXLEVBQUUscUJBQXFCO0lBQ2xDLGlCQUFpQixFQUFFLElBQUk7SUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtJQUN6QixZQUFZLEVBQUUsV0FBVztJQUN6QixhQUFhLEVBQUUsNkJBQTZCO0NBQzdDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBOEI7SUFDN0UsR0FBRyxtQ0FBbUM7SUFDdEMsV0FBVyxFQUFFLG9CQUFvQjtJQUNqQyxpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLG1CQUFtQixFQUFFLEtBQUs7SUFDMUIsWUFBWSxFQUFFLFVBQVU7SUFDeEIsYUFBYSxFQUFFLDRCQUE0QjtJQUMzQyxZQUFZLEVBQUU7UUFDWixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO1FBQ3BELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7UUFDckQsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtRQUN4RCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFO0tBQ2hFO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUE4QjtJQUMzRSxHQUFHLG1DQUFtQztJQUN0QyxXQUFXLEVBQUUsV0FBVztJQUN4QixpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLG1CQUFtQixFQUFFLEtBQUs7SUFDMUIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixZQUFZLEVBQUUsRUFBRTtJQUNoQixZQUFZLEVBQUUsWUFBWTtJQUMxQixnQkFBZ0IsRUFBRSxPQUFPO0NBQzFCLENBQUM7QUFFRixvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQThCO0lBQzFFLEdBQUcsa0NBQWtDO0lBQ3JDLFVBQVUsRUFBRSxPQUFPO0lBQ25CLFlBQVksRUFBRSxHQUFHLEVBQUUsbUNBQW1DO0lBQ3RELGVBQWUsRUFBRSxDQUFDO0NBQ25CLENBQUM7QUFFRixtREFBbUQ7QUFDbkQsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQThCO0lBQzlFLEdBQUcsbUNBQW1DO0lBQ3RDLFlBQVksRUFBRSxFQUFFO0lBQ2hCLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsZ0JBQWdCLEVBQUUsT0FBTztDQUMxQixDQUFDO0FBRUYsZ0RBQWdEO0FBQ2hELE1BQU0sVUFBVSwrQkFBK0IsQ0FDN0MsU0FBNkM7SUFFN0MsT0FBTztRQUNMLEdBQUcsbUNBQW1DO1FBQ3RDLEdBQUcsU0FBUztLQUNiLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtIHtcbiAgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZhbHVlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZzsgLy8gUGFyYSBtb3N0cmFyIGVuIGVsIHRlbXBsYXRlIHBvciBkZWZlY3RvXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvY29tcGxldGVXcmFwcGVyU2VhcmNoUmVzdWx0IHtcbiAgaXRlbXM6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW107XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgaGFzTW9yZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hGdW5jdGlvbiA9IChcbiAgcXVlcnk6IHN0cmluZyxcbiAgZmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnMsXG4gIHBhZ2U/OiBudW1iZXIsXG4gIHBhZ2VTaXplPzogbnVtYmVyLFxuKSA9PiBPYnNlcnZhYmxlPEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hSZXN1bHQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcge1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY2xlYXJJbnB1dD86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZGVib3VuY2VUaW1lPzogbnVtYmVyO1xuICBtaW5TZWFyY2hMZW5ndGg/OiBudW1iZXI7XG4gIG1heEhpc3RvcnlJdGVtcz86IG51bWJlcjtcbiAgaXRlbXNQZXJQYWdlPzogbnVtYmVyO1xuICBlbmFibGVTdG9ja0ZpbHRlcj86IGJvb2xlYW47XG4gIHN0b2NrUHJvcGVydHk/OiBzdHJpbmc7XG4gIGVuYWJsZVBhZ2luYXRpb24/OiBib29sZWFuO1xuICBlbmFibGVGaWx0ZXJzPzogYm9vbGVhbjtcbiAgZW5hYmxlRm9vdGVyQWN0aW9ucz86IGJvb2xlYW47XG4gIHNlYXJjaEZpZWxkcz86IEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hGaWVsZFtdO1xuICBzdG9ja09wdGlvbnM/OiBBdXRvY29tcGxldGVXcmFwcGVyU3RvY2tPcHRpb25bXTtcblxuICAvLyBDb25maWd1cmFjacOzbiBkZWwgb3ZlcmxheVxuICBvdmVybGF5V2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG4gIG92ZXJsYXlNYXhIZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgLy8gRnVuY2nDs24gZGUgYsO6c3F1ZWRhIHBlcnNvbmFsaXphZGFcbiAgc2VhcmNoRnVuY3Rpb24/OiBBdXRvY29tcGxldGVXcmFwcGVyU2VhcmNoRnVuY3Rpb247XG5cbiAgLy8gTW9kbyBkZSBiw7pzcXVlZGFcbiAgc2VhcmNoTW9kZT86ICdsb2NhbCcgfCAncmVtb3RlJyB8ICdoeWJyaWQnO1xuXG4gIC8vIENvbmZpZ3VyYWNpw7NuIGRlIGRhdG9zIGxvY2FsZXMgKHBhcmEgc2VhcmNoTW9kZSAnbG9jYWwnIG8gJ2h5YnJpZCcpXG4gIGxvY2FsRGF0YT86IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW107XG5cbiAgLy8gVGV4dG8gcGVyc29uYWxpemFibGVcbiAgbm9SZXN1bHRzVGV4dD86IHN0cmluZztcbiAgc2VjdGlvblRpdGxlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hGaWVsZCB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHByb3BlcnR5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlclN0b2NrT3B0aW9uIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycyB7XG4gIHNlYXJjaEJ5OiBzdHJpbmc7XG4gIHN0b2NrRmlsdGVyOiBzdHJpbmc7XG59XG5cbi8vIEV2ZW50b3MgcXVlIGVtaXRlIGVsIGNvbXBvbmVudGVcbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlckV2ZW50cyB7XG4gIGl0ZW1TZWxlY3RlZDogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW07XG4gIHNlYXJjaENoYW5nZWQ6IHN0cmluZztcbiAgcGFnZUNoYW5nZWQ6IG51bWJlcjtcbiAgZmlsdGVyQ2hhbmdlZDogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnM7XG4gIGFkdmFuY2VkU2VhcmNoQ2xpY2tlZDogdm9pZDtcbiAgYWxsUmVzdWx0c0NsaWNrZWQ6IHN0cmluZztcbiAgY3JlYXRlTmV3Q2xpY2tlZDogc3RyaW5nOyAvLyBBbGluZWFkbyBjb24gb25DcmVhdGVOZXcgZGVsIEhUTUxcbiAgaGlzdG9yeUNsZWFyZWQ6IHZvaWQ7XG4gIGhpc3RvcnlJdGVtUmVtb3ZlZDogeyBpdGVtOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbTsgaW5kZXg6IG51bWJlciB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVdyYXBwZXJQYWdpbmF0aW9uSW5mbyB7XG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgdG90YWxJdGVtczogbnVtYmVyO1xuICBpdGVtc1BlclBhZ2U6IG51bWJlcjtcbiAgc3RhcnRJdGVtOiBudW1iZXI7XG4gIGVuZEl0ZW06IG51bWJlcjtcbiAgaGFzTmV4dFBhZ2U6IGJvb2xlYW47XG4gIGhhc1ByZXZpb3VzUGFnZTogYm9vbGVhbjtcbn1cblxuLy8gRXN0YWRvIGludGVybm8gZGVsIGNvbXBvbmVudGUgKHBhcmEgdXNhciBjb24gc2lnbmFscylcbmV4cG9ydCBpbnRlcmZhY2UgQXV0b2NvbXBsZXRlV3JhcHBlclN0YXRlIHtcbiAgcXVlcnk6IHN0cmluZztcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBvdmVybGF5T3BlbjogYm9vbGVhbjtcbiAgc2VsZWN0ZWRJbmRleDogbnVtYmVyO1xuICBwYWdpbmF0aW9uOiBBdXRvY29tcGxldGVXcmFwcGVyUGFnaW5hdGlvbkluZm87XG4gIGhhc1Jlc3VsdHM6IGJvb2xlYW47XG4gIGlzSGlzdG9yeVZpc2libGU6IGJvb2xlYW47XG4gIGhpc3RvcnlDb3VudDogbnVtYmVyO1xuICBmaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycztcblxuICAvLyBFc3RhZG9zIGFkaWNpb25hbGVzIHF1ZSBhcGFyZWNlbiBlbiBlbCBIVE1MXG4gIC8vIHRvdGFsSXRlbXM6IG51bWJlcjtcbiAgLy8gY3VycmVudFBhZ2VJdGVtczogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXTtcbiAgLy8gaGlzdG9yeUxpc3Q6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW107XG4gIC8vIG5vUmVzdWx0czogYm9vbGVhbjtcbn1cblxuLy8gUGFyYSBtw6l0b2RvcyBkZWwgY29tcG9uZW50ZSBxdWUgYXBhcmVjZW4gZW4gZWwgSFRNTFxuZXhwb3J0IGludGVyZmFjZSBBdXRvY29tcGxldGVXcmFwcGVyQWN0aW9ucyB7XG4gIC8vIElucHV0IGFjdGlvbnNcbiAgb25JbnB1dChldmVudDogRXZlbnQpOiB2b2lkO1xuICBzaG93T3ZlcmxheSgpOiB2b2lkO1xuICBoaWRlT3ZlcmxheSgpOiB2b2lkO1xuICBjbGVhclNlYXJjaCgpOiB2b2lkO1xuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuXG4gIC8vIEl0ZW0gYWN0aW9uc1xuICBzZWxlY3RJdGVtKGl0ZW06IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtKTogdm9pZDtcbiAgZ2V0SXRlbURpc3BsYXlUZXh0KGl0ZW06IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtKTogc3RyaW5nO1xuXG4gIC8vIEhpc3RvcnkgYWN0aW9uc1xuICBjbGVhckhpc3RvcnkoKTogdm9pZDtcbiAgcmVtb3ZlSGlzdG9yeUl0ZW0oaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KTogdm9pZDtcblxuICAvLyBQYWdpbmF0aW9uIGFjdGlvbnNcbiAgZ29Ub0ZpcnN0UGFnZSgpOiB2b2lkO1xuICBnb1RvUHJldmlvdXNQYWdlKCk6IHZvaWQ7XG4gIGdvVG9OZXh0UGFnZSgpOiB2b2lkO1xuICBnb1RvTGFzdFBhZ2UoKTogdm9pZDtcbiAgZ29Ub1BhZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZDtcblxuICAvLyBGaWx0ZXIgYWN0aW9uc1xuICBvbkZpbHRlckNoYW5nZSgpOiB2b2lkO1xuXG4gIC8vIEZvb3RlciBhY3Rpb25zXG4gIG9uQ3JlYXRlTmV3KGV2ZW50OiBFdmVudCk6IHZvaWQ7XG4gIG9uQWR2YW5jZWRTZWFyY2goKTogdm9pZDtcbiAgb25TaG93QWxsUmVzdWx0cygpOiB2b2lkO1xuXG4gIC8vIFN0YXRlIGdldHRlcnMgKHBhcmEgdXNhciBjb24gc2lnbmFscylcbiAgb3ZlcmxheU9wZW4oKTogYm9vbGVhbjtcbiAgaXNMb2FkaW5nKCk6IGJvb2xlYW47XG4gIGlzSGlzdG9yeVZpc2libGUoKTogYm9vbGVhbjtcbiAgaGlzdG9yeUxpc3QoKTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXTtcbiAgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXI7XG4gIGN1cnJlbnRQYWdlSXRlbXMoKTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXTtcbiAgdG90YWxJdGVtcygpOiBudW1iZXI7XG4gIHRvdGFsUGFnZXMoKTogbnVtYmVyO1xuICBjdXJyZW50UGFnZSgpOiBudW1iZXI7XG4gIHRvdGFsQ291bnQoKTogbnVtYmVyO1xuICBzdGFydEl0ZW0oKTogbnVtYmVyO1xuICBlbmRJdGVtKCk6IG51bWJlcjtcbiAgc2VjdGlvblRpdGxlKCk6IHN0cmluZztcbiAgbm9SZXN1bHRzVGV4dCgpOiBzdHJpbmc7XG4gIGlzTm9SZXN1bHRzKCk6IGJvb2xlYW47XG4gIG92ZXJsYXlXaWR0aCgpOiBzdHJpbmcgfCBudW1iZXI7XG4gIG92ZXJsYXlNYXhIZWlnaHQoKTogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG4vLyBDb25maWd1cmFjaW9uZXMgcHJlZGVmaW5pZGFzIG1lam9yYWRhc1xuZXhwb3J0IGNvbnN0IEFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0ge1xuICBwbGFjZWhvbGRlcjogJ0J1c2Nhci4uLicsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgZGVib3VuY2VUaW1lOiAzMDAsXG4gIG1pblNlYXJjaExlbmd0aDogMixcbiAgbWF4SGlzdG9yeUl0ZW1zOiAxMCxcbiAgaXRlbXNQZXJQYWdlOiAxMCxcbiAgZW5hYmxlU3RvY2tGaWx0ZXI6IHRydWUsXG4gIHN0b2NrUHJvcGVydHk6ICdzdG9jaycsXG4gIGVuYWJsZVBhZ2luYXRpb246IHRydWUsXG4gIGVuYWJsZUZpbHRlcnM6IHRydWUsXG4gIGVuYWJsZUZvb3RlckFjdGlvbnM6IHRydWUsXG4gIG92ZXJsYXlXaWR0aDogJzEwMCUnLFxuICBvdmVybGF5TWF4SGVpZ2h0OiAnNTAwcHgnLFxuICBub1Jlc3VsdHNUZXh0OiAnTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvcycsXG4gIHNlY3Rpb25UaXRsZTogJ1Jlc3VsdGFkb3MnLFxuICBzZWFyY2hNb2RlOiAncmVtb3RlJyxcbiAgc2VhcmNoRmllbGRzOiBbXG4gICAgeyB2YWx1ZTogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6ICdEZXNjcmlwY2nDs24nLCBwcm9wZXJ0eTogJ2Rlc2NyaXB0aW9uJyB9LFxuICAgIHsgdmFsdWU6ICdjb2RlJywgbGFiZWw6ICdDw7NkaWdvJywgcHJvcGVydHk6ICdjb2RlJyB9LFxuICAgIHsgdmFsdWU6ICdiYXJjb2RlJywgbGFiZWw6ICdDw7NkaWdvIGRlIEJhcnJhcycsIHByb3BlcnR5OiAnYmFyY29kZScgfSxcbiAgICB7IHZhbHVlOiAnYXV4Q29kZScsIGxhYmVsOiAnQ8OzZGlnbyBBdXhpbGlhcicsIHByb3BlcnR5OiAnYXV4Q29kZScgfSxcbiAgXSxcbiAgc3RvY2tPcHRpb25zOiBbXG4gICAgeyB2YWx1ZTogJ2FsbCcsIGxhYmVsOiAnVG9kb3MnIH0sXG4gICAgeyB2YWx1ZTogJ3dpdGgtc3RvY2snLCBsYWJlbDogJ0NvbiBTdG9jaycgfSxcbiAgICB7IHZhbHVlOiAnd2l0aG91dC1zdG9jaycsIGxhYmVsOiAnU2luIFN0b2NrJyB9LFxuICBdLFxufTtcblxuZXhwb3J0IGNvbnN0IEFVVE9DT01QTEVURV9XUkFQUEVSX1BST0RVQ1RfQ09ORklHOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0ge1xuICAuLi5BVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRyxcbiAgcGxhY2Vob2xkZXI6ICdCdXNjYXIgcHJvZHVjdG9zLi4uJyxcbiAgZW5hYmxlU3RvY2tGaWx0ZXI6IHRydWUsXG4gIGVuYWJsZUZvb3RlckFjdGlvbnM6IHRydWUsXG4gIHNlY3Rpb25UaXRsZTogJ1Byb2R1Y3RvcycsXG4gIG5vUmVzdWx0c1RleHQ6ICdObyBzZSBlbmNvbnRyYXJvbiBwcm9kdWN0b3MnLFxufTtcblxuZXhwb3J0IGNvbnN0IEFVVE9DT01QTEVURV9XUkFQUEVSX0NVU1RPTUVSX0NPTkZJRzogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyA9IHtcbiAgLi4uQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsXG4gIHBsYWNlaG9sZGVyOiAnQnVzY2FyIGNsaWVudGVzLi4uJyxcbiAgZW5hYmxlU3RvY2tGaWx0ZXI6IGZhbHNlLFxuICBlbmFibGVGb290ZXJBY3Rpb25zOiBmYWxzZSxcbiAgc2VjdGlvblRpdGxlOiAnQ2xpZW50ZXMnLFxuICBub1Jlc3VsdHNUZXh0OiAnTm8gc2UgZW5jb250cmFyb24gY2xpZW50ZXMnLFxuICBzZWFyY2hGaWVsZHM6IFtcbiAgICB7IHZhbHVlOiAnbmFtZScsIGxhYmVsOiAnTm9tYnJlJywgcHJvcGVydHk6ICduYW1lJyB9LFxuICAgIHsgdmFsdWU6ICdlbWFpbCcsIGxhYmVsOiAnRW1haWwnLCBwcm9wZXJ0eTogJ2VtYWlsJyB9LFxuICAgIHsgdmFsdWU6ICdwaG9uZScsIGxhYmVsOiAnVGVsw6lmb25vJywgcHJvcGVydHk6ICdwaG9uZScgfSxcbiAgICB7IHZhbHVlOiAnZG9jdW1lbnQnLCBsYWJlbDogJ0RvY3VtZW50bycsIHByb3BlcnR5OiAnZG9jdW1lbnQnIH0sXG4gIF0sXG59O1xuXG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX1dSQVBQRVJfU0lNUExFX0NPTkZJRzogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyA9IHtcbiAgLi4uQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsXG4gIHBsYWNlaG9sZGVyOiAnQnVzY2FyLi4uJyxcbiAgZW5hYmxlU3RvY2tGaWx0ZXI6IGZhbHNlLFxuICBlbmFibGVGaWx0ZXJzOiBmYWxzZSxcbiAgZW5hYmxlRm9vdGVyQWN0aW9uczogZmFsc2UsXG4gIGVuYWJsZVBhZ2luYXRpb246IGZhbHNlLFxuICBpdGVtc1BlclBhZ2U6IDUwLFxuICBzZWN0aW9uVGl0bGU6ICdSZXN1bHRhZG9zJyxcbiAgb3ZlcmxheU1heEhlaWdodDogJzMwMHB4Jyxcbn07XG5cbi8vIENvbmZpZ3VyYWNpw7NuIHBhcmEgYsO6c3F1ZWRhIGxvY2FsXG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX1dSQVBQRVJfTE9DQUxfQ09ORklHOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0ge1xuICAuLi5BVVRPQ09NUExFVEVfV1JBUFBFUl9TSU1QTEVfQ09ORklHLFxuICBzZWFyY2hNb2RlOiAnbG9jYWwnLFxuICBkZWJvdW5jZVRpbWU6IDE1MCwgLy8gTWVub3MgdGllbXBvIHBhcmEgYsO6c3F1ZWRhIGxvY2FsXG4gIG1pblNlYXJjaExlbmd0aDogMSxcbn07XG5cbi8vIENvbmZpZ3VyYWNpw7NuIHBhcmEgbGlzdGFzIGdyYW5kZXMgY29uIHBhZ2luYWNpw7NuXG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX1dSQVBQRVJfUEFHSU5BVEVEX0NPTkZJRzogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyA9IHtcbiAgLi4uQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsXG4gIGl0ZW1zUGVyUGFnZTogMjAsXG4gIGVuYWJsZVBhZ2luYXRpb246IHRydWUsXG4gIG92ZXJsYXlNYXhIZWlnaHQ6ICc0MDBweCcsXG59O1xuXG4vLyBIZWxwZXIgcGFyYSBjcmVhciBjb25maWd1cmFjacOzbiBwZXJzb25hbGl6YWRhXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyhcbiAgb3ZlcnJpZGVzOiBQYXJ0aWFsPEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWc+LFxuKTogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgLi4uQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsXG4gICAgLi4ub3ZlcnJpZGVzLFxuICB9O1xufVxuXG4vLyBUaXBvcyBwYXJhIGVsIGNvbXBvbmVudGUgQW5ndWxhclxuZXhwb3J0IGludGVyZmFjZSBSZXVzYWJsZUF1dG9jb21wbGV0ZVdyYXBwZXJDb21wb25lbnQgZXh0ZW5kcyBBdXRvY29tcGxldGVXcmFwcGVyQWN0aW9ucyB7XG4gIGNvbmZpZzogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZztcbiAgZmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnM7XG4gIHF1ZXJ5OiBzdHJpbmc7XG59XG5cbi8vIFRpcG9zIGRlIHV0aWxpZGFkIGVzcGVjw61maWNvcyBkZWwgd3JhcHBlclxuZXhwb3J0IHR5cGUgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaE1vZGUgPSAnbG9jYWwnIHwgJ3JlbW90ZScgfCAnaHlicmlkJztcblxuZXhwb3J0IHR5cGUgQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1Qcm9wZXJ0eSA9IGtleW9mIEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtO1xuXG5leHBvcnQgdHlwZSBBdXRvY29tcGxldGVXcmFwcGVyRXZlbnRIYW5kbGVyPFQgPSBhbnk+ID0gKGV2ZW50OiBUKSA9PiB2b2lkO1xuIl19","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, of, delay, map } from 'rxjs';\nimport { AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, } from '../models/autocomplete-wrapper-item';\nimport * as i0 from \"@angular/core\";\nexport class AutocompleteWrapperService {\n historySubject = new BehaviorSubject([]);\n history$ = this.historySubject.asObservable();\n constructor() {\n this.loadHistoryFromStorage();\n }\n // Búsqueda local (sin API)\n searchLocal(items, query, filters, config) {\n const filtered = this.filterItems(items, query, filters, config);\n const page = 1; // Para búsqueda local, asumimos página 1\n const pageSize = config.itemsPerPage || 10;\n const startIndex = (page - 1) * pageSize;\n const pageItems = filtered.slice(startIndex, startIndex + pageSize);\n return of({\n items: pageItems,\n totalCount: filtered.length,\n hasMore: filtered.length > startIndex + pageSize,\n });\n }\n // Filtrar elementos basado en query y filtros\n filterItems(items, query, filters, config = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG) {\n if (!query || query.length < (config.minSearchLength || 2)) {\n return [];\n }\n let filteredItems = items.filter(item => {\n if (item && typeof item === 'string') {\n return true;\n }\n // Buscar por el campo seleccionado\n const searchValue = this.getSearchValue(item, filters.searchBy, config);\n return searchValue.toLowerCase().includes(query.toLowerCase());\n });\n // Aplicar filtro de stock si está habilitado\n if (config.enableStockFilter && filters.stockFilter !== 'all') {\n filteredItems = filteredItems.filter(item => {\n if (typeof item === 'string')\n return true;\n const stockValue = item[config.stockProperty || 'stock'];\n const hasStock = stockValue !== undefined && stockValue !== null && stockValue > 0;\n return filters.stockFilter === 'with-stock' ? hasStock : !hasStock;\n });\n }\n return filteredItems;\n }\n // Simular búsqueda asíncrona\n searchAsync(items, query, filters, config = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG) {\n const results = this.filterItems(items, query, filters, config);\n return of(results).pipe(delay(100)); // Simular delay de API\n }\n // Obtener valor de búsqueda según el campo seleccionado\n getSearchValue(item, searchBy, config) {\n const searchField = config.searchFields?.find(field => field.value === searchBy);\n if (searchField) {\n return item[searchField.property] || '';\n }\n // Fallback a la lógica anterior\n switch (searchBy) {\n case 'description':\n return item['description'] || '';\n case 'code':\n return item['code'] || item.id?.toString() || '';\n case 'barcode':\n return item['barcode'] || '';\n case 'auxCode':\n return item['auxCode'] || '';\n case 'email':\n return item['email'] || '';\n case 'phone':\n return item['phone'] || '';\n case 'document':\n return item['document'] || '';\n case 'name':\n default:\n return item.name || item.value || '';\n }\n }\n // Gestión de historial específico del wrapper\n addToHistory(item, maxItems = 10) {\n const currentHistory = this.historySubject.value;\n // Remover si ya existe\n const filteredHistory = currentHistory.filter(historyItem => {\n if (typeof item === 'string' && typeof historyItem === 'string') {\n return item !== historyItem;\n }\n else if (typeof item === 'object' && typeof historyItem === 'object') {\n return (item.id || item.name) !== (historyItem.id || historyItem.name);\n }\n return true;\n });\n // Agregar al inicio\n const newHistory = [item, ...filteredHistory].slice(0, maxItems);\n this.historySubject.next(newHistory);\n this.saveHistoryToStorage(newHistory);\n }\n removeFromHistory(index) {\n const currentHistory = this.historySubject.value;\n currentHistory.splice(index, 1);\n this.historySubject.next([...currentHistory]);\n this.saveHistoryToStorage(currentHistory);\n }\n clearHistory() {\n this.historySubject.next([]);\n this.saveHistoryToStorage([]);\n }\n getHistory() {\n return this.historySubject.value;\n }\n // Gestión de almacenamiento específico del wrapper\n loadHistoryFromStorage() {\n try {\n const stored = localStorage.getItem('autocomplete_wrapper_history');\n if (stored) {\n const history = JSON.parse(stored);\n this.historySubject.next(history);\n }\n }\n catch (error) {\n console.warn('Error loading autocomplete wrapper history:', error);\n }\n }\n saveHistoryToStorage(history) {\n try {\n localStorage.setItem('autocomplete_wrapper_history', JSON.stringify(history));\n }\n catch (error) {\n console.warn('Error saving autocomplete wrapper history:', error);\n }\n }\n // Paginación\n paginateItems(items, page, itemsPerPage) {\n const startIndex = (page - 1) * itemsPerPage;\n const endIndex = startIndex + itemsPerPage;\n return items.slice(startIndex, endIndex);\n }\n getTotalPages(totalItems, itemsPerPage) {\n return Math.ceil(totalItems / itemsPerPage) || 1;\n }\n // Validaciones\n isValidPage(page, totalPages) {\n return page >= 1 && page <= totalPages;\n }\n // Utilidades para templates\n highlightText(text, query) {\n if (!query || !text)\n return text;\n const regex = new RegExp(`(${query})`, 'gi');\n return text.replace(regex, '<mark>$1</mark>');\n }\n getItemDisplayText(item, displayField = 'nombre') {\n if (typeof item === 'string')\n return item;\n return item[displayField] || item.name || item.value || item.id?.toString() || '';\n }\n // Configuración dinámica\n mergeConfig(userConfig) {\n return { ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, ...userConfig };\n }\n // Factory para crear función de búsqueda genérica\n createGenericSearchFunction(config) {\n return (query, filters, page = 1, pageSize = 10) => {\n const { searchBy, ...rest } = filters;\n const params = {\n [config.queryParam || 'q']: query,\n [config.searchByParam || 'searchBy']: searchBy,\n [config.pageParam || 'page']: page,\n [config.pageSizeParam || 'pageSize']: pageSize,\n ...rest,\n };\n return config.search(params).pipe(map(response => {\n if (config.responseMapper) {\n return config.responseMapper(response);\n }\n // Mapper por defecto\n const items = response.data || response.items || response;\n const totalRecords = response.totalRecords || response.totalCount || response.total || 0;\n return {\n items,\n totalCount: totalRecords,\n hasMore: response.hasMore || false,\n };\n }));\n };\n }\n // Función para crear datos de ejemplo/mock específicos del wrapper\n createMockData() {\n return [\n {\n id: 1,\n name: 'iPhone 14 Pro 128GB',\n description: 'Smartphone Apple con chip A16 Bionic y cámara Pro',\n code: 'IP14P-128',\n barcode: '1234567890123',\n auxCode: 'APL-IP14P-128',\n stock: 15,\n category: 'Smartphones',\n brand: 'Apple',\n unit: 'unidad',\n prices: [\n {\n id: 1,\n type: 'retail',\n label: 'Público',\n value: 999,\n currency: 'USD',\n includesTax: true,\n isDefault: true,\n isActive: true,\n },\n {\n id: 2,\n type: 'wholesale',\n label: 'Mayorista',\n value: 850,\n currency: 'USD',\n minQuantity: 5,\n includesTax: false,\n isActive: true,\n },\n {\n id: 3,\n type: 'vip',\n label: 'VIP',\n value: 899,\n currency: 'USD',\n includesTax: true,\n isActive: true,\n },\n {\n id: 4,\n type: 'promotional',\n label: 'Black Friday',\n value: 749,\n currency: 'USD',\n validFrom: new Date('2024-11-24'),\n validTo: new Date('2024-11-30'),\n includesTax: true,\n isActive: true,\n },\n ],\n },\n {\n id: 2,\n name: 'Samsung Galaxy S23 256GB',\n description: 'Flagship Android con cámara de 200MP',\n code: 'SGS23-256',\n barcode: '2345678901234',\n auxCode: 'SAM-GS23-256',\n stock: 0,\n category: 'Smartphones',\n brand: 'Samsung',\n unit: 'unidad',\n images: [\n {\n id: 1,\n url: 'https://images.unsplash.com/photo-1592750475338-74b7b21085ab?w=400',\n thumbnailUrl: 'https://images.unsplash.com/photo-1592750475338-74b7b21085ab?w=200',\n alt: 'Samsung Galaxy S23 frontal',\n type: 'main',\n isPrimary: true,\n order: 1,\n },\n {\n id: 2,\n url: 'https://images.unsplash.com/photo-1574755393849-623942496936?w=400',\n thumbnailUrl: 'https://images.unsplash.com/photo-1574755393849-623942496936?w=200',\n alt: 'Samsung Galaxy S23 trasero',\n type: 'gallery',\n order: 2,\n },\n ],\n badges: [{ type: 'new', text: 'NUEVO' }, { type: 'bestseller' }],\n prices: [\n {\n id: 5,\n type: 'retail',\n label: 'Público',\n value: 799,\n currency: 'USD',\n includesTax: true,\n isDefault: true,\n isActive: true,\n },\n {\n id: 6,\n type: 'wholesale',\n label: 'Mayorista',\n value: 679,\n currency: 'USD',\n minQuantity: 3,\n includesTax: false,\n isActive: true,\n },\n ],\n },\n ];\n }\n // Métodos específicos para diferentes tipos de búsqueda\n searchProducts(query, filters = {}) {\n const defaultFilters = {\n searchBy: 'description',\n stockFilter: 'all',\n ...filters,\n };\n const mockData = this.createMockData();\n return this.searchLocal(mockData, query, defaultFilters, AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG);\n }\n // Crear configuración específica para diferentes casos de uso\n createProductSearchConfig() {\n return this.mergeConfig({\n placeholder: 'Buscar productos...',\n enableStockFilter: true,\n enableFooterActions: true,\n sectionTitle: 'Productos',\n searchFields: [\n { value: 'description', label: 'Descripción', property: 'description' },\n { value: 'code', label: 'Código', property: 'code' },\n { value: 'barcode', label: 'Código de Barras', property: 'barcode' },\n { value: 'auxCode', label: 'Código Auxiliar', property: 'auxCode' },\n ],\n });\n }\n createCustomerSearchConfig() {\n return this.mergeConfig({\n placeholder: 'Buscar clientes...',\n enableStockFilter: false,\n enableFooterActions: false,\n sectionTitle: 'Clientes',\n searchFields: [\n { value: 'name', label: 'Nombre', property: 'name' },\n { value: 'email', label: 'Email', property: 'email' },\n { value: 'phone', label: 'Teléfono', property: 'phone' },\n { value: 'document', label: 'Documento', property: 'document' },\n ],\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AutocompleteWrapperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AutocompleteWrapperService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AutocompleteWrapperService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRvY29tcGxldGUtd3JhcHBlci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQ0wsbUNBQW1DLEdBTXBDLE1BQU0scUNBQXFDLENBQUM7O0FBSzdDLE1BQU0sT0FBTywwQkFBMEI7SUFDN0IsY0FBYyxHQUFHLElBQUksZUFBZSxDQUE0QixFQUFFLENBQUMsQ0FBQztJQUNyRSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVyRDtRQUNFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsV0FBVyxDQUNULEtBQWdDLEVBQ2hDLEtBQWEsRUFDYixPQUFtQyxFQUNuQyxNQUFpQztRQUVqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztRQUN6RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLFFBQVEs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QUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQ3BELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQ3JELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQ3hELEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7YUFDaEU7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO3VHQTVZVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgZGVsYXksIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsXG4gIEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcsXG4gIEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzLFxuICBBdXRvY29tcGxldGVXcmFwcGVySXRlbSxcbiAgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZ1bmN0aW9uLFxuICBBdXRvY29tcGxldGVXcmFwcGVyU2VhcmNoUmVzdWx0LFxufSBmcm9tICcuLi9tb2RlbHMvYXV0b2NvbXBsZXRlLXdyYXBwZXItaXRlbSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVXcmFwcGVyU2VydmljZSB7XG4gIHByaXZhdGUgaGlzdG9yeVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10+KFtdKTtcbiAgcHVibGljIGhpc3RvcnkkID0gdGhpcy5oaXN0b3J5U3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmxvYWRIaXN0b3J5RnJvbVN0b3JhZ2UoKTtcbiAgfVxuXG4gIC8vIELDunNxdWVkYSBsb2NhbCAoc2luIEFQSSlcbiAgc2VhcmNoTG9jYWwoXG4gICAgaXRlbXM6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10sXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBmaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycyxcbiAgICBjb25maWc6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcsXG4gICk6IE9ic2VydmFibGU8QXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdD4ge1xuICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJJdGVtcyhpdGVtcywgcXVlcnksIGZpbHRlcnMsIGNvbmZpZyk7XG4gICAgY29uc3QgcGFnZSA9IDE7IC8vIFBhcmEgYsO6c3F1ZWRhIGxvY2FsLCBhc3VtaW1vcyBww6FnaW5hIDFcbiAgICBjb25zdCBwYWdlU2l6ZSA9IGNvbmZpZy5pdGVtc1BlclBhZ2UgfHwgMTA7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChwYWdlIC0gMSkgKiBwYWdlU2l6ZTtcbiAgICBjb25zdCBwYWdlSXRlbXMgPSBmaWx0ZXJlZC5zbGljZShzdGFydEluZGV4LCBzdGFydEluZGV4ICsgcGFnZVNpemUpO1xuXG4gICAgcmV0dXJuIG9mKHtcbiAgICAgIGl0ZW1zOiBwYWdlSXRlbXMsXG4gICAgICB0b3RhbENvdW50OiBmaWx0ZXJlZC5sZW5ndGgsXG4gICAgICBoYXNNb3JlOiBmaWx0ZXJlZC5sZW5ndGggPiBzdGFydEluZGV4ICsgcGFnZVNpemUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBGaWx0cmFyIGVsZW1lbnRvcyBiYXNhZG8gZW4gcXVlcnkgeSBmaWx0cm9zXG4gIGZpbHRlckl0ZW1zKFxuICAgIGl0ZW1zOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgZmlsdGVyczogQXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnMsXG4gICAgY29uZmlnOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0gQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsXG4gICk6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10ge1xuICAgIGlmICghcXVlcnkgfHwgcXVlcnkubGVuZ3RoIDwgKGNvbmZpZy5taW5TZWFyY2hMZW5ndGggfHwgMikpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBsZXQgZmlsdGVyZWRJdGVtcyA9IGl0ZW1zLmZpbHRlcihpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtICYmIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQnVzY2FyIHBvciBlbCBjYW1wbyBzZWxlY2Npb25hZG9cbiAgICAgIGNvbnN0IHNlYXJjaFZhbHVlID0gdGhpcy5nZXRTZWFyY2hWYWx1ZShpdGVtLCBmaWx0ZXJzLnNlYXJjaEJ5LCBjb25maWcpO1xuICAgICAgcmV0dXJuIHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9Mb3dlckNhc2UoKSk7XG4gICAgfSk7XG5cbiAgICAvLyBBcGxpY2FyIGZpbHRybyBkZSBzdG9jayBzaSBlc3TDoSBoYWJpbGl0YWRvXG4gICAgaWYgKGNvbmZpZy5lbmFibGVTdG9ja0ZpbHRlciAmJiBmaWx0ZXJzLnN0b2NrRmlsdGVyICE9PSAnYWxsJykge1xuICAgICAgZmlsdGVyZWRJdGVtcyA9IGZpbHRlcmVkSXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBjb25zdCBzdG9ja1ZhbHVlID0gaXRlbVtjb25maWcuc3RvY2tQcm9wZXJ0eSB8fCAnc3RvY2snXTtcbiAgICAgICAgY29uc3QgaGFzU3RvY2sgPSBzdG9ja1ZhbHVlICE9PSB1bmRlZmluZWQgJiYgc3RvY2tWYWx1ZSAhPT0gbnVsbCAmJiBzdG9ja1ZhbHVlID4gMDtcblxuICAgICAgICByZXR1cm4gZmlsdGVycy5zdG9ja0ZpbHRlciA9PT0gJ3dpdGgtc3RvY2snID8gaGFzU3RvY2sgOiAhaGFzU3RvY2s7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyZWRJdGVtcztcbiAgfVxuXG4gIC8vIFNpbXVsYXIgYsO6c3F1ZWRhIGFzw61uY3JvbmFcbiAgc2VhcmNoQXN5bmMoXG4gICAgaXRlbXM6IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10sXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBmaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycyxcbiAgICBjb25maWc6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcgPSBBVVRPQ09NUExFVEVfV1JBUFBFUl9ERUZBVUxUX0NPTkZJRyxcbiAgKTogT2JzZXJ2YWJsZTxBdXRvY29tcGxldGVXcmFwcGVySXRlbVtdPiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZmlsdGVySXRlbXMoaXRlbXMsIHF1ZXJ5LCBmaWx0ZXJzLCBjb25maWcpO1xuICAgIHJldHVybiBvZihyZXN1bHRzKS5waXBlKGRlbGF5KDEwMCkpOyAvLyBTaW11bGFyIGRlbGF5IGRlIEFQSVxuICB9XG5cbiAgLy8gT2J0ZW5lciB2YWxvciBkZSBiw7pzcXVlZGEgc2Vnw7puIGVsIGNhbXBvIHNlbGVjY2lvbmFkb1xuICBwcml2YXRlIGdldFNlYXJjaFZhbHVlKFxuICAgIGl0ZW06IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtLFxuICAgIHNlYXJjaEJ5OiBzdHJpbmcsXG4gICAgY29uZmlnOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlYXJjaEZpZWxkID0gY29uZmlnLnNlYXJjaEZpZWxkcz8uZmluZChmaWVsZCA9PiBmaWVsZC52YWx1ZSA9PT0gc2VhcmNoQnkpO1xuICAgIGlmIChzZWFyY2hGaWVsZCkge1xuICAgICAgcmV0dXJuIGl0ZW1bc2VhcmNoRmllbGQucHJvcGVydHldIHx8ICcnO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGEgbGEgbMOzZ2ljYSBhbnRlcmlvclxuICAgIHN3aXRjaCAoc2VhcmNoQnkpIHtcbiAgICAgIGNhc2UgJ2Rlc2NyaXB0aW9uJzpcbiAgICAgICAgcmV0dXJuIGl0ZW1bJ2Rlc2NyaXB0aW9uJ10gfHwgJyc7XG4gICAgICBjYXNlICdjb2RlJzpcbiAgICAgICAgcmV0dXJuIGl0ZW1bJ2NvZGUnXSB8fCBpdGVtLmlkPy50b1N0cmluZygpIHx8ICcnO1xuICAgICAgY2FzZSAnYmFyY29kZSc6XG4gICAgICAgIHJldHVybiBpdGVtWydiYXJjb2RlJ10gfHwgJyc7XG4gICAgICBjYXNlICdhdXhDb2RlJzpcbiAgICAgICAgcmV0dXJuIGl0ZW1bJ2F1eENvZGUnXSB8fCAnJztcbiAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgcmV0dXJuIGl0ZW1bJ2VtYWlsJ10gfHwgJyc7XG4gICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgIHJldHVybiBpdGVtWydwaG9uZSddIHx8ICcnO1xuICAgICAgY2FzZSAnZG9jdW1lbnQnOlxuICAgICAgICByZXR1cm4gaXRlbVsnZG9jdW1lbnQnXSB8fCAnJztcbiAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZSB8fCBpdGVtLnZhbHVlIHx8ICcnO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdlc3Rpw7NuIGRlIGhpc3RvcmlhbCBlc3BlY8OtZmljbyBkZWwgd3JhcHBlclxuICBhZGRUb0hpc3RvcnkoaXRlbTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0sIG1heEl0ZW1zID0gMTApOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50SGlzdG9yeSA9IHRoaXMuaGlzdG9yeVN1YmplY3QudmFsdWU7XG5cbiAgICAvLyBSZW1vdmVyIHNpIHlhIGV4aXN0ZVxuICAgIGNvbnN0IGZpbHRlcmVkSGlzdG9yeSA9IGN1cnJlbnRIaXN0b3J5LmZpbHRlcihoaXN0b3J5SXRlbSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnICYmIHR5cGVvZiBoaXN0b3J5SXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gIT09IGhpc3RvcnlJdGVtO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGhpc3RvcnlJdGVtID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gKGl0ZW0uaWQgfHwgaXRlbS5uYW1lKSAhPT0gKGhpc3RvcnlJdGVtLmlkIHx8IGhpc3RvcnlJdGVtLm5hbWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG5cbiAgICAvLyBBZ3JlZ2FyIGFsIGluaWNpb1xuICAgIGNvbnN0IG5ld0hpc3RvcnkgPSBbaXRlbSwgLi4uZmlsdGVyZWRIaXN0b3J5XS5zbGljZSgwLCBtYXhJdGVtcyk7XG5cbiAgICB0aGlzLmhpc3RvcnlTdWJqZWN0Lm5leHQobmV3SGlzdG9yeSk7XG4gICAgdGhpcy5zYXZlSGlzdG9yeVRvU3RvcmFnZShuZXdIaXN0b3J5KTtcbiAgfVxuXG4gIHJlbW92ZUZyb21IaXN0b3J5KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50SGlzdG9yeSA9IHRoaXMuaGlzdG9yeVN1YmplY3QudmFsdWU7XG4gICAgY3VycmVudEhpc3Rvcnkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLmhpc3RvcnlTdWJqZWN0Lm5leHQoWy4uLmN1cnJlbnRIaXN0b3J5XSk7XG4gICAgdGhpcy5zYXZlSGlzdG9yeVRvU3RvcmFnZShjdXJyZW50SGlzdG9yeSk7XG4gIH1cblxuICBjbGVhckhpc3RvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5oaXN0b3J5U3ViamVjdC5uZXh0KFtdKTtcbiAgICB0aGlzLnNhdmVIaXN0b3J5VG9TdG9yYWdlKFtdKTtcbiAgfVxuXG4gIGdldEhpc3RvcnkoKTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuaGlzdG9yeVN1YmplY3QudmFsdWU7XG4gIH1cblxuICAvLyBHZXN0acOzbiBkZSBhbG1hY2VuYW1pZW50byBlc3BlY8OtZmljbyBkZWwgd3JhcHBlclxuICBwcml2YXRlIGxvYWRIaXN0b3J5RnJvbVN0b3JhZ2UoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhdXRvY29tcGxldGVfd3JhcHBlcl9oaXN0b3J5Jyk7XG4gICAgICBpZiAoc3RvcmVkKSB7XG4gICAgICAgIGNvbnN0IGhpc3RvcnkgPSBKU09OLnBhcnNlKHN0b3JlZCk7XG4gICAgICAgIHRoaXMuaGlzdG9yeVN1YmplY3QubmV4dChoaXN0b3J5KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdFcnJvciBsb2FkaW5nIGF1dG9jb21wbGV0ZSB3cmFwcGVyIGhpc3Rvcnk6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2F2ZUhpc3RvcnlUb1N0b3JhZ2UoaGlzdG9yeTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXV0b2NvbXBsZXRlX3dyYXBwZXJfaGlzdG9yeScsIEpTT04uc3RyaW5naWZ5KGhpc3RvcnkpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdFcnJvciBzYXZpbmcgYXV0b2NvbXBsZXRlIHdyYXBwZXIgaGlzdG9yeTonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFnaW5hY2nDs25cbiAgcGFnaW5hdGVJdGVtczxUPihpdGVtczogVFtdLCBwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyKTogVFtdIHtcbiAgICBjb25zdCBzdGFydEluZGV4ID0gKHBhZ2UgLSAxKSAqIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBpdGVtc1BlclBhZ2U7XG4gICAgcmV0dXJuIGl0ZW1zLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgfVxuXG4gIGdldFRvdGFsUGFnZXModG90YWxJdGVtczogbnVtYmVyLCBpdGVtc1BlclBhZ2U6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0b3RhbEl0ZW1zIC8gaXRlbXNQZXJQYWdlKSB8fCAxO1xuICB9XG5cbiAgLy8gVmFsaWRhY2lvbmVzXG4gIGlzVmFsaWRQYWdlKHBhZ2U6IG51bWJlciwgdG90YWxQYWdlczogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBhZ2UgPj0gMSAmJiBwYWdlIDw9IHRvdGFsUGFnZXM7XG4gIH1cblxuICAvLyBVdGlsaWRhZGVzIHBhcmEgdGVtcGxhdGVzXG4gIGhpZ2hsaWdodFRleHQodGV4dDogc3RyaW5nLCBxdWVyeTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXF1ZXJ5IHx8ICF0ZXh0KSByZXR1cm4gdGV4dDtcblxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgKCR7cXVlcnl9KWAsICdnaScpO1xuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UocmVnZXgsICc8bWFyaz4kMTwvbWFyaz4nKTtcbiAgfVxuXG4gIGdldEl0ZW1EaXNwbGF5VGV4dChpdGVtOiBBdXRvY29tcGxldGVXcmFwcGVySXRlbSwgZGlzcGxheUZpZWxkID0gJ25vbWJyZScpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHJldHVybiBpdGVtO1xuICAgIHJldHVybiBpdGVtW2Rpc3BsYXlGaWVsZF0gfHwgaXRlbS5uYW1lIHx8IGl0ZW0udmFsdWUgfHwgaXRlbS5pZD8udG9TdHJpbmcoKSB8fCAnJztcbiAgfVxuXG4gIC8vIENvbmZpZ3VyYWNpw7NuIGRpbsOhbWljYVxuICBtZXJnZUNvbmZpZyh1c2VyQ29uZmlnOiBQYXJ0aWFsPEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWc+KTogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyB7XG4gICAgcmV0dXJuIHsgLi4uQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcsIC4uLnVzZXJDb25maWcgfTtcbiAgfVxuXG4gIC8vIEZhY3RvcnkgcGFyYSBjcmVhciBmdW5jacOzbiBkZSBiw7pzcXVlZGEgZ2Vuw6lyaWNhXG4gIGNyZWF0ZUdlbmVyaWNTZWFyY2hGdW5jdGlvbihjb25maWc6IHtcbiAgICBzZWFyY2g6IChwYXJhbXM6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHF1ZXJ5UGFyYW0/OiBzdHJpbmc7XG4gICAgc2VhcmNoQnlQYXJhbT86IHN0cmluZztcbiAgICBwYWdlUGFyYW0/OiBzdHJpbmc7XG4gICAgcGFnZVNpemVQYXJhbT86IHN0cmluZztcbiAgICByZXNwb25zZU1hcHBlcj86IChyZXNwb25zZTogYW55KSA9PiBBdXRvY29tcGxldGVXcmFwcGVyU2VhcmNoUmVzdWx0O1xuICB9KTogQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gKHF1ZXJ5OiBzdHJpbmcsIGZpbHRlcnM6IEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzLCBwYWdlID0gMSwgcGFnZVNpemUgPSAxMCkgPT4ge1xuICAgICAgY29uc3QgeyBzZWFyY2hCeSwgLi4ucmVzdCB9ID0gZmlsdGVycztcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgW2NvbmZpZy5xdWVyeVBhcmFtIHx8ICdxJ106IHF1ZXJ5LFxuICAgICAgICBbY29uZmlnLnNlYXJjaEJ5UGFyYW0gfHwgJ3NlYXJjaEJ5J106IHNlYXJjaEJ5LFxuICAgICAgICBbY29uZmlnLnBhZ2VQYXJhbSB8fCAncGFnZSddOiBwYWdlLFxuICAgICAgICBbY29uZmlnLnBhZ2VTaXplUGFyYW0gfHwgJ3BhZ2VTaXplJ106IHBhZ2VTaXplLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGNvbmZpZy5zZWFyY2gocGFyYW1zKS5waXBlKFxuICAgICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGlmIChjb25maWcucmVzcG9uc2VNYXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25maWcucmVzcG9uc2VNYXBwZXIocmVzcG9uc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE1hcHBlciBwb3IgZGVmZWN0b1xuICAgICAgICAgIGNvbnN0IGl0ZW1zID0gcmVzcG9uc2UuZGF0YSB8fCByZXNwb25zZS5pdGVtcyB8fCByZXNwb25zZTtcbiAgICAgICAgICBjb25zdCB0b3RhbFJlY29yZHMgPSByZXNwb25zZS50b3RhbFJlY29yZHMgfHwgcmVzcG9uc2UudG90YWxDb3VudCB8fCByZXNwb25zZS50b3RhbCB8fCAwO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IHRvdGFsUmVjb3JkcyxcbiAgICAgICAgICAgIGhhc01vcmU6IHJlc3BvbnNlLmhhc01vcmUgfHwgZmFsc2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH07XG4gIH1cblxuICAvLyBGdW5jacOzbiBwYXJhIGNyZWFyIGRhdG9zIGRlIGVqZW1wbG8vbW9jayBlc3BlY8OtZmljb3MgZGVsIHdyYXBwZXJcbiAgY3JlYXRlTW9ja0RhdGEoKTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IDEsXG4gICAgICAgIG5hbWU6ICdpUGhvbmUgMTQgUHJvIDEyOEdCJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTbWFydHBob25lIEFwcGxlIGNvbiBjaGlwIEExNiBCaW9uaWMgeSBjw6FtYXJhIFBybycsXG4gICAgICAgIGNvZGU6ICdJUDE0UC0xMjgnLFxuICAgICAgICBiYXJjb2RlOiAnMTIzNDU2Nzg5MDEyMycsXG4gICAgICAgIGF1eENvZGU6ICdBUEwtSVAxNFAtMTI4JyxcbiAgICAgICAgc3RvY2s6IDE1LFxuICAgICAgICBjYXRlZ29yeTogJ1NtYXJ0cGhvbmVzJyxcbiAgICAgICAgYnJhbmQ6ICdBcHBsZScsXG4gICAgICAgIHVuaXQ6ICd1bmlkYWQnLFxuICAgICAgICBwcmljZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogMSxcbiAgICAgICAgICAgIHR5cGU6ICdyZXRhaWwnLFxuICAgICAgICAgICAgbGFiZWw6ICdQw7pibGljbycsXG4gICAgICAgICAgICB2YWx1ZTogOTk5LFxuICAgICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgICAgaW5jbHVkZXNUYXg6IHRydWUsXG4gICAgICAgICAgICBpc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgdHlwZTogJ3dob2xlc2FsZScsXG4gICAgICAgICAgICBsYWJlbDogJ01heW9yaXN0YScsXG4gICAgICAgICAgICB2YWx1ZTogODUwLFxuICAgICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgICAgbWluUXVhbnRpdHk6IDUsXG4gICAgICAgICAgICBpbmNsdWRlc1RheDogZmFsc2UsXG4gICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAzLFxuICAgICAgICAgICAgdHlwZTogJ3ZpcCcsXG4gICAgICAgICAgICBsYWJlbDogJ1ZJUCcsXG4gICAgICAgICAgICB2YWx1ZTogODk5LFxuICAgICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgICAgaW5jbHVkZXNUYXg6IHRydWUsXG4gICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgICAgdHlwZTogJ3Byb21vdGlvbmFsJyxcbiAgICAgICAgICAgIGxhYmVsOiAnQmxhY2sgRnJpZGF5JyxcbiAgICAgICAgICAgIHZhbHVlOiA3NDksXG4gICAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgICAgICB2YWxpZEZyb206IG5ldyBEYXRlKCcyMDI0LTExLTI0JyksXG4gICAgICAgICAgICB2YWxpZFRvOiBuZXcgRGF0ZSgnMjAyNC0xMS0zMCcpLFxuICAgICAgICAgICAgaW5jbHVkZXNUYXg6IHRydWUsXG4gICAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IDIsXG4gICAgICAgIG5hbWU6ICdTYW1zdW5nIEdhbGF4eSBTMjMgMjU2R0InLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0ZsYWdzaGlwIEFuZHJvaWQgY29uIGPDoW1hcmEgZGUgMjAwTVAnLFxuICAgICAgICBjb2RlOiAnU0dTMjMtMjU2JyxcbiAgICAgICAgYmFyY29kZTogJzIzNDU2Nzg5MDEyMzQnLFxuICAgICAgICBhdXhDb2RlOiAnU0FNLUdTMjMtMjU2JyxcbiAgICAgICAgc3RvY2s6IDAsXG4gICAgICAgIGNhdGVnb3J5OiAnU21hcnRwaG9uZXMnLFxuICAgICAgICBicmFuZDogJ1NhbXN1bmcnLFxuICAgICAgICB1bml0OiAndW5pZGFkJyxcbiAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTU5Mjc1MDQ3NTMzOC03NGI3YjIxMDg1YWI/dz00MDAnLFxuICAgICAgICAgICAgdGh1bWJuYWlsVXJsOiAnaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1OTI3NTA0NzUzMzgtNzRiN2IyMTA4NWFiP3c9MjAwJyxcbiAgICAgICAgICAgIGFsdDogJ1NhbXN1bmcgR2FsYXh5IFMyMyBmcm9udGFsJyxcbiAgICAgICAgICAgIHR5cGU6ICdtYWluJyxcbiAgICAgICAgICAgIGlzUHJpbWFyeTogdHJ1ZSxcbiAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDIsXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTU3NDc1NTM5Mzg0OS02MjM5NDI0OTY5MzY/dz00MDAnLFxuICAgICAgICAgICAgdGh1bWJuYWlsVXJsOiAnaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1NzQ3NTUzOTM4NDktNjIzOTQyNDk2OTM2P3c9MjAwJyxcbiAgICAgICAgICAgIGFsdDogJ1NhbXN1bmcgR2FsYXh5IFMyMyB0cmFzZXJvJyxcbiAgICAgICAgICAgIHR5cGU6ICdnYWxsZXJ5JyxcbiAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGJhZGdlczogW3sgdHlwZTogJ25ldycsIHRleHQ6ICdOVUVWTycgfSwgeyB0eXBlOiAnYmVzdHNlbGxlcicgfV0sXG4gICAgICAgIHByaWNlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiA1LFxuICAgICAgICAgICAgdHlwZTogJ3JldGFpbCcsXG4gICAgICAgICAgICBsYWJlbDogJ1DDumJsaWNvJyxcbiAgICAgICAgICAgIHZhbHVlOiA3OTksXG4gICAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgICAgICBpbmNsdWRlc1RheDogdHJ1ZSxcbiAgICAgICAgICAgIGlzRGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDYsXG4gICAgICAgICAgICB0eXBlOiAnd2hvbGVzYWxlJyxcbiAgICAgICAgICAgIGxhYmVsOiAnTWF5b3Jpc3RhJyxcbiAgICAgICAgICAgIHZhbHVlOiA2NzksXG4gICAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgICAgICBtaW5RdWFudGl0eTogMyxcbiAgICAgICAgICAgIGluY2x1ZGVzVGF4OiBmYWxzZSxcbiAgICAgICAgICAgIGlzQWN0aXZlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICAvLyBNw6l0b2RvcyBlc3BlY8OtZmljb3MgcGFyYSBkaWZlcmVudGVzIHRpcG9zIGRlIGLDunNxdWVkYVxuICBzZWFyY2hQcm9kdWN0cyhcbiAgICBxdWVyeTogc3RyaW5nLFxuICAgIGZpbHRlcnM6IFBhcnRpYWw8QXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnM+ID0ge30sXG4gICk6IE9ic2VydmFibGU8QXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdD4ge1xuICAgIGNvbnN0IGRlZmF1bHRGaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycyA9IHtcbiAgICAgIHNlYXJjaEJ5OiAnZGVzY3JpcHRpb24nLFxuICAgICAgc3RvY2tGaWx0ZXI6ICdhbGwnLFxuICAgICAgLi4uZmlsdGVycyxcbiAgICB9O1xuXG4gICAgY29uc3QgbW9ja0RhdGEgPSB0aGlzLmNyZWF0ZU1vY2tEYXRhKCk7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoTG9jYWwobW9ja0RhdGEsIHF1ZXJ5LCBkZWZhdWx0RmlsdGVycywgQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUcpO1xuICB9XG5cbiAgLy8gQ3JlYXIgY29uZmlndXJhY2nDs24gZXNwZWPDrWZpY2EgcGFyYSBkaWZlcmVudGVzIGNhc29zIGRlIHVzb1xuICBjcmVhdGVQcm9kdWN0U2VhcmNoQ29uZmlnKCk6IEF1dG9jb21wbGV0ZVdyYXBwZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLm1lcmdlQ29uZmlnKHtcbiAgICAgIHBsYWNlaG9sZGVyOiAnQnVzY2FyIHByb2R1Y3Rvcy4uLicsXG4gICAgICBlbmFibGVTdG9ja0ZpbHRlcjogdHJ1ZSxcbiAgICAgIGVuYWJsZUZvb3RlckFjdGlvbnM6IHRydWUsXG4gICAgICBzZWN0aW9uVGl0bGU6ICdQcm9kdWN0b3MnLFxuICAgICAgc2VhcmNoRmllbGRzOiBbXG4gICAgICAgIHsgdmFsdWU6ICdkZXNjcmlwdGlvbicsIGxhYmVsOiAnRGVzY3JpcGNpw7NuJywgcHJvcGVydHk6ICdkZXNjcmlwdGlvbicgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2NvZGUnLCBsYWJlbDogJ0PDs2RpZ28nLCBwcm9wZXJ0eTogJ2NvZGUnIH0sXG4gICAgICAgIHsgdmFsdWU6ICdiYXJjb2RlJywgbGFiZWw6ICdDw7NkaWdvIGRlIEJhcnJhcycsIHByb3BlcnR5OiAnYmFyY29kZScgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2F1eENvZGUnLCBsYWJlbDogJ0PDs2RpZ28gQXV4aWxpYXInLCBwcm9wZXJ0eTogJ2F1eENvZGUnIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlQ3VzdG9tZXJTZWFyY2hDb25maWcoKTogQXV0b2NvbXBsZXRlV3JhcHBlckNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMubWVyZ2VDb25maWcoe1xuICAgICAgcGxhY2Vob2xkZXI6ICdCdXNjYXIgY2xpZW50ZXMuLi4nLFxuICAgICAgZW5hYmxlU3RvY2tGaWx0ZXI6IGZhbHNlLFxuICAgICAgZW5hYmxlRm9vdGVyQWN0aW9uczogZmFsc2UsXG4gICAgICBzZWN0aW9uVGl0bGU6ICdDbGllbnRlcycsXG4gICAgICBzZWFyY2hGaWVsZHM6IFtcbiAgICAgICAgeyB2YWx1ZTogJ25hbWUnLCBsYWJlbDogJ05vbWJyZScsIHByb3BlcnR5OiAnbmFtZScgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2VtYWlsJywgbGFiZWw6ICdFbWFpbCcsIHByb3BlcnR5OiAnZW1haWwnIH0sXG4gICAgICAgIHsgdmFsdWU6ICdwaG9uZScsIGxhYmVsOiAnVGVsw6lmb25vJywgcHJvcGVydHk6ICdwaG9uZScgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2RvY3VtZW50JywgbGFiZWw6ICdEb2N1bWVudG8nLCBwcm9wZXJ0eTogJ2RvY3VtZW50JyB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19","import { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { ThemeSwitcher } from '../../services';\nimport { MatIconButton } from '@angular/material/button';\nimport { AsyncPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport * as i0 from \"@angular/core\";\nexport class ThemeToggle {\n themeService = inject(ThemeSwitcher);\n darkMode$;\n constructor() {\n this.darkMode$ = this.themeService.isDarkMode$;\n }\n toggleDarkMode() {\n this.themeService.toggleDarkMode();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ThemeToggle, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.4\", type: ThemeToggle, isStandalone: true, selector: \"acp-theme-toggle\", ngImport: i0, template: \"<button\\n mat-icon-button\\n (click)=\\\"toggleDarkMode()\\\"\\n title=\\\"{{ (darkMode$ | async) ? 'Modo D\\u00EDa' : 'Modo Noche' }}\\\"\\n>\\n <mat-icon>{{ (darkMode$ | async) ? 'light_mode' : 'dark_mode' }}</mat-icon>\\n</button>\\n\", styles: [\"\"], dependencies: [{ kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ThemeToggle, decorators: [{\n type: Component,\n args: [{ selector: 'acp-theme-toggle', imports: [MatIconButton, MatIcon, AsyncPipe], encapsulation: ViewEncapsulation.None, template: \"<button\\n mat-icon-button\\n (click)=\\\"toggleDarkMode()\\\"\\n title=\\\"{{ (darkMode$ | async) ? 'Modo D\\u00EDa' : 'Modo Noche' }}\\\"\\n>\\n <mat-icon>{{ (darkMode$ | async) ? 'light_mode' : 'dark_mode' }}</mat-icon>\\n</button>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtdG9nZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdGhlbWUtdG9nZ2xlL3RoZW1lLXRvZ2dsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3RoZW1lLXRvZ2dsZS90aGVtZS10b2dnbGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBU2pELE1BQU0sT0FBTyxXQUFXO0lBQ2QsWUFBWSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU3QyxTQUFTLENBQXNCO0lBRS9CO1FBQ0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDckMsQ0FBQzt1R0FWVSxXQUFXOzJGQUFYLFdBQVcsNEVDZHhCLG1PQU9BLDBEREVZLGFBQWEsdUtBQUUsT0FBTyxzSUFBRSxTQUFTOzsyRkFLaEMsV0FBVztrQkFQdkIsU0FBUzsrQkFDRSxrQkFBa0IsV0FDbkIsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxpQkFHN0IsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGhlbWVTd2l0Y2hlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLXRoZW1lLXRvZ2dsZScsXG4gIGltcG9ydHM6IFtNYXRJY29uQnV0dG9uLCBNYXRJY29uLCBBc3luY1BpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGhlbWUtdG9nZ2xlLmh0bWwnLFxuICBzdHlsZVVybDogJy4vdGhlbWUtdG9nZ2xlLnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBUaGVtZVRvZ2dsZSB7XG4gIHByaXZhdGUgdGhlbWVTZXJ2aWNlID0gaW5qZWN0KFRoZW1lU3dpdGNoZXIpO1xuXG4gIGRhcmtNb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRhcmtNb2RlJCA9IHRoaXMudGhlbWVTZXJ2aWNlLmlzRGFya01vZGUkO1xuICB9XG4gIHRvZ2dsZURhcmtNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMudGhlbWVTZXJ2aWNlLnRvZ2dsZURhcmtNb2RlKCk7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgbWF0LWljb24tYnV0dG9uXG4gIChjbGljayk9XCJ0b2dnbGVEYXJrTW9kZSgpXCJcbiAgdGl0bGU9XCJ7eyAoZGFya01vZGUkIHwgYXN5bmMpID8gJ01vZG8gRMOtYScgOiAnTW9kbyBOb2NoZScgfX1cIlxuPlxuICA8bWF0LWljb24+e3sgKGRhcmtNb2RlJCB8IGFzeW5jKSA/ICdsaWdodF9tb2RlJyA6ICdkYXJrX21vZGUnIH19PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuIl19","export class FieldDefinition {\n value;\n valueLabel;\n defaultValue;\n defaultValueLabel;\n key;\n label;\n dateRangeConfig;\n isDefaultSearchField;\n required;\n disabled;\n order;\n icon;\n controlType = 'textbox';\n type = 'string';\n editor; // this attribut is for Kendo-Grid\n options;\n valueOptions;\n valuePrimitive; // for kendo dropdown\n textField; // for kendo dropdown\n valueField; // for kendo dropdown\n errorMessage;\n width;\n valueChangeCallback;\n columnType;\n body;\n constructor(options = {}) {\n this.value = options.value;\n this.valueLabel = options.valueLabel;\n this.defaultValue = options.defaultValue;\n this.defaultValueLabel = options.defaultValueLabel;\n this.key = options.key || '';\n this.label = options.label || '';\n this.dateRangeConfig = options.dateRangeConfig;\n this.isDefaultSearchField = options.isDefaultSearchField;\n this.required = !!options.required;\n this.disabled = options.disabled;\n this.order = options.order === undefined ? 1 : options.order;\n this.icon = options.icon;\n this.controlType = options.controlType || 'textbox';\n this.type = options.type || 'string';\n this.editor = options.editor || '';\n this.options = options.options || [];\n this.valueOptions = options.valueOptions || [];\n this.valuePrimitive = options.valuePrimitive;\n this.textField = options.textField;\n this.valueField = options.valueField;\n this.errorMessage = options.errorMessage || '';\n this.width = options.width;\n this.valueChangeCallback = options.valueChangeCallback;\n this.columnType = options.columnType;\n this.body = options.body;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RlbHMvbWF0LXRhYmxlL2ZpZWxkLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0NBLE1BQU0sT0FBTyxlQUFlO0lBQzFCLEtBQUssQ0FBSztJQUNWLFVBQVUsQ0FBVTtJQUNwQixZQUFZLENBQUs7SUFDakIsaUJBQWlCLENBQVU7SUFDM0IsR0FBRyxDQUFTO0lBQ1osS0FBSyxDQUFTO0lBQ2QsZUFBZSxDQUFzQjtJQUNyQyxvQkFBb0IsQ0FBVztJQUMvQixRQUFRLENBQVc7SUFDbkIsUUFBUSxDQUFXO0lBQ25CLEtBQUssQ0FBVTtJQUNmLElBQUksQ0FBVTtJQUNkLFdBQVcsR0FBaUIsU0FBUyxDQUFDO0lBQ3RDLElBQUksR0FBZSxRQUFRLENBQUM7SUFDNUIsTUFBTSxDQUE4QixDQUFDLGtDQUFrQztJQUN2RSxPQUFPLENBQWlDO0lBQ3hDLFlBQVksQ0FBWTtJQUN4QixjQUFjLENBQVcsQ0FBQyxxQkFBcUI7SUFDL0MsU0FBUyxDQUFVLENBQUMscUJBQXFCO0lBQ3pDLFVBQVUsQ0FBVSxDQUFDLHFCQUFxQjtJQUMxQyxZQUFZLENBQVU7SUFDdEIsS0FBSyxDQUFVO0lBQ2YsbUJBQW1CLENBQXNCO0lBQ3pDLFVBQVUsQ0FBYztJQUN4QixJQUFJLENBQU87SUFFWCxZQUFZLFVBQXVDLEVBQUU7UUFDbkQsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDekMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBQy9DLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDO1FBQ3BELElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF0ZVJhbmdlQ29uZmlnPFQgPSBhbnk+IHtcbiAgc3RhcnREYXRlOiBGaWVsZERlZmluaXRpb248VD47XG4gIGVuZERhdGU6IEZpZWxkRGVmaW5pdGlvbjxUPjtcbn1cblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBDb250cm9sVHlwZSA9XG4gIHwgJ3RleHRib3gnXG4gIHwgJ2t0ZXh0Ym94J1xuICB8ICdjb21ib2JveCdcbiAgfCAndGV4dGJveE51bSdcbiAgfCAnZHJvcGRvd24nXG4gIHwgJ2Ryb3Bkb3dubGlzdCdcbiAgfCAnbXVsdGlzZWxlY3QnXG4gIHwgJ2F1dG9jb21wbGV0ZSdcbiAgfCAnY2hlY2tib3gnXG4gIHwgJ3JhZGlvYnV0dG9uJ1xuICB8ICdpbnF1aXJ5SW5EaWFsb2cnXG4gIHwgJ3RpbWVwaWNrZXInXG4gIHwgJ2RhdGVwaWNrZXInXG4gIHwgJ2RhdGVyYW5nZSdcbiAgfCAndGV4dGFyZWEnXG4gIHwgJ3NsaWRlVG9nZ2xlJ1xuICB8ICdzbGlkZXInXG4gIHwgJ3N3aXRjaCdcbiAgfCAnYnV0dG9uVG9nZ2xlR3JvdXAnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIEZpZWxkVHlwZSA9XG4gIHwgJ251bWJlcidcbiAgfCAnc3RyaW5nJ1xuICB8ICdib29sZWFuJ1xuICB8ICdkYXRlJ1xuICB8ICdtb250aCdcbiAgfCAnZW1haWwnXG4gIHwgJ3Bhc3N3b3JkJ1xuICB8ICd0ZWwnXG4gIHwgJ2hpZGRlbidcbiAgfCAnaW1hZ2UnXG4gIHwgJ3VybCdcbiAgfCAnd2VlaydcbiAgfCAnc2VhcmNoJ1xuICB8ICdyZXNldCdcbiAgfCAndGVtcGxhdGUnXG4gIHwgJ2N1c3RvbSdcbiAgfCAnZXhwYW5kJztcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBDb2x1bW5UeXBlID0gJ3RleHQnIHwgJ2NvbXBvbmVudCcgfCAnaHRtbCcgfCAndGVtcGxhdGUnO1xuXG5leHBvcnQgY2xhc3MgRmllbGREZWZpbml0aW9uPFQgPSBhbnk+IHtcbiAgdmFsdWU/OiBUO1xuICB2YWx1ZUxhYmVsPzogc3RyaW5nO1xuICBkZWZhdWx0VmFsdWU/OiBUO1xuICBkZWZhdWx0VmFsdWVMYWJlbD86IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRhdGVSYW5nZUNvbmZpZz86IERhdGVSYW5nZUNvbmZpZzxUPjtcbiAgaXNEZWZhdWx0U2VhcmNoRmllbGQ/OiBib29sZWFuO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgb3JkZXI/OiBudW1iZXI7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNvbnRyb2xUeXBlPzogQ29udHJvbFR5cGUgPSAndGV4dGJveCc7XG4gIHR5cGU/OiBGaWVsZFR5cGUgPSAnc3RyaW5nJztcbiAgZWRpdG9yPzogJ251bWVyaWMnIHwgJ2Jvb2xlYW4nIHwgJyc7IC8vIHRoaXMgYXR0cmlidXQgaXMgZm9yIEtlbmRvLUdyaWRcbiAgb3B0aW9ucz86IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IFQgfVtdO1xuICB2YWx1ZU9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgdmFsdWVQcmltaXRpdmU/OiBib29sZWFuOyAvLyBmb3Iga2VuZG8gZHJvcGRvd25cbiAgdGV4dEZpZWxkPzogc3RyaW5nOyAvLyBmb3Iga2VuZG8gZHJvcGRvd25cbiAgdmFsdWVGaWVsZD86IHN0cmluZzsgLy8gZm9yIGtlbmRvIGRyb3Bkb3duXG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIHZhbHVlQ2hhbmdlQ2FsbGJhY2s/OiAodmFsdWU6IFQpID0+IHZvaWQ7XG4gIGNvbHVtblR5cGU/OiBDb2x1bW5UeXBlO1xuICBib2R5PzogYW55O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBhcnRpYWw8RmllbGREZWZpbml0aW9uPFQ+PiA9IHt9KSB7XG4gICAgdGhpcy52YWx1ZSA9IG9wdGlvbnMudmFsdWU7XG4gICAgdGhpcy52YWx1ZUxhYmVsID0gb3B0aW9ucy52YWx1ZUxhYmVsO1xuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gb3B0aW9ucy5kZWZhdWx0VmFsdWU7XG4gICAgdGhpcy5kZWZhdWx0VmFsdWVMYWJlbCA9IG9wdGlvbnMuZGVmYXVsdFZhbHVlTGFiZWw7XG4gICAgdGhpcy5rZXkgPSBvcHRpb25zLmtleSB8fCAnJztcbiAgICB0aGlzLmxhYmVsID0gb3B0aW9ucy5sYWJlbCB8fCAnJztcbiAgICB0aGlzLmRhdGVSYW5nZUNvbmZpZyA9IG9wdGlvbnMuZGF0ZVJhbmdlQ29uZmlnO1xuICAgIHRoaXMuaXNEZWZhdWx0U2VhcmNoRmllbGQgPSBvcHRpb25zLmlzRGVmYXVsdFNlYXJjaEZpZWxkO1xuICAgIHRoaXMucmVxdWlyZWQgPSAhIW9wdGlvbnMucmVxdWlyZWQ7XG4gICAgdGhpcy5kaXNhYmxlZCA9IG9wdGlvbnMuZGlzYWJsZWQ7XG4gICAgdGhpcy5vcmRlciA9IG9wdGlvbnMub3JkZXIgPT09IHVuZGVmaW5lZCA/IDEgOiBvcHRpb25zLm9yZGVyO1xuICAgIHRoaXMuaWNvbiA9IG9wdGlvbnMuaWNvbjtcbiAgICB0aGlzLmNvbnRyb2xUeXBlID0gb3B0aW9ucy5jb250cm9sVHlwZSB8fCAndGV4dGJveCc7XG4gICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlIHx8ICdzdHJpbmcnO1xuICAgIHRoaXMuZWRpdG9yID0gb3B0aW9ucy5lZGl0b3IgfHwgJyc7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgIHRoaXMudmFsdWVPcHRpb25zID0gb3B0aW9ucy52YWx1ZU9wdGlvbnMgfHwgW107XG4gICAgdGhpcy52YWx1ZVByaW1pdGl2ZSA9IG9wdGlvbnMudmFsdWVQcmltaXRpdmU7XG4gICAgdGhpcy50ZXh0RmllbGQgPSBvcHRpb25zLnRleHRGaWVsZDtcbiAgICB0aGlzLnZhbHVlRmllbGQgPSBvcHRpb25zLnZhbHVlRmllbGQ7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBvcHRpb25zLmVycm9yTWVzc2FnZSB8fCAnJztcbiAgICB0aGlzLndpZHRoID0gb3B0aW9ucy53aWR0aDtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlQ2FsbGJhY2sgPSBvcHRpb25zLnZhbHVlQ2hhbmdlQ2FsbGJhY2s7XG4gICAgdGhpcy5jb2x1bW5UeXBlID0gb3B0aW9ucy5jb2x1bW5UeXBlO1xuICAgIHRoaXMuYm9keSA9IG9wdGlvbnMuYm9keTtcbiAgfVxufVxuIl19","import { FieldDefinition } from './field-definition';\nexport class ColumnDefinition extends FieldDefinition {\n index; // if the list of columns will be displayed in material edit-grid (angular material grid), index must be given\n format; // it could be: { style: 'currency', currency: 'EUR' }, { date: 'short' }\n hasFooter;\n hideInOverlay;\n // optionsAttribut is used in stock-receipt maintenance: StockReceiptItem.Unit has options for StockReceiptItem.Birimi\n optionsAttribut; // name of the attribut that has the options list for dropdown\n templateOutlet;\n constructor(options = {}) {\n super(options);\n this.index = options.index;\n this.format = options.format;\n this.hasFooter = options.hasFooter;\n this.hideInOverlay = options.hideInOverlay;\n this.optionsAttribut = options.optionsAttribut;\n this.templateOutlet = options.templateOutlet;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvbW9kZWxzL21hdC10YWJsZS9jb2x1bW4tZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFTckQsTUFBTSxPQUFPLGdCQUEwQixTQUFRLGVBQWtCO0lBQy9ELEtBQUssQ0FBVSxDQUFDLDhHQUE4RztJQUM5SCxNQUFNLENBQU8sQ0FBQyx5RUFBeUU7SUFDdkYsU0FBUyxDQUFXO0lBQ3BCLGFBQWEsQ0FBVztJQUV4QixzSEFBc0g7SUFDdEgsZUFBZSxDQUFVLENBQUMsOERBQThEO0lBQ3hGLGNBQWMsQ0FBZ0M7SUFDOUMsWUFBWSxVQUF3QyxFQUFFO1FBQ3BELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4vZmllbGQtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBjb2x1bW4tZGVmaW5pdGlvbi50c1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbnRleHQ8VCA9IGFueT4ge1xuICAkaW1wbGljaXQ6IFQ7XG4gIGluZGV4PzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgQ29sdW1uRGVmaW5pdGlvbjxUID0gYW55PiBleHRlbmRzIEZpZWxkRGVmaW5pdGlvbjxUPiB7XG4gIGluZGV4PzogbnVtYmVyOyAvLyBpZiB0aGUgbGlzdCBvZiBjb2x1bW5zIHdpbGwgYmUgZGlzcGxheWVkIGluIG1hdGVyaWFsIGVkaXQtZ3JpZCAoYW5ndWxhciBtYXRlcmlhbCBncmlkKSwgaW5kZXggbXVzdCBiZSBnaXZlblxuICBmb3JtYXQ/OiBhbnk7IC8vIGl0IGNvdWxkIGJlOiB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0VVUicgfSwgeyBkYXRlOiAnc2hvcnQnIH1cbiAgaGFzRm9vdGVyPzogYm9vbGVhbjtcbiAgaGlkZUluT3ZlcmxheT86IGJvb2xlYW47XG5cbiAgLy8gb3B0aW9uc0F0dHJpYnV0IGlzIHVzZWQgaW4gc3RvY2stcmVjZWlwdCBtYWludGVuYW5jZTogU3RvY2tSZWNlaXB0SXRlbS5Vbml0IGhhcyBvcHRpb25zIGZvciBTdG9ja1JlY2VpcHRJdGVtLkJpcmltaVxuICBvcHRpb25zQXR0cmlidXQ/OiBzdHJpbmc7IC8vIG5hbWUgb2YgdGhlIGF0dHJpYnV0IHRoYXQgaGFzIHRoZSBvcHRpb25zIGxpc3QgZm9yIGRyb3Bkb3duXG4gIHRlbXBsYXRlT3V0bGV0PzogVGVtcGxhdGVSZWY8VGFibGVDb250ZXh0PFQ+PjtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogUGFydGlhbDxDb2x1bW5EZWZpbml0aW9uPFQ+PiA9IHt9KSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgdGhpcy5pbmRleCA9IG9wdGlvbnMuaW5kZXg7XG4gICAgdGhpcy5mb3JtYXQgPSBvcHRpb25zLmZvcm1hdDtcbiAgICB0aGlzLmhhc0Zvb3RlciA9IG9wdGlvbnMuaGFzRm9vdGVyO1xuICAgIHRoaXMuaGlkZUluT3ZlcmxheSA9IG9wdGlvbnMuaGlkZUluT3ZlcmxheTtcbiAgICB0aGlzLm9wdGlvbnNBdHRyaWJ1dCA9IG9wdGlvbnMub3B0aW9uc0F0dHJpYnV0O1xuICAgIHRoaXMudGVtcGxhdGVPdXRsZXQgPSBvcHRpb25zLnRlbXBsYXRlT3V0bGV0O1xuICB9XG59XG4iXX0=","export class TableCellIndex {\n row;\n column;\n constructor(row, column) {\n this.row = row;\n this.column = column;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RlbHMvbWF0LXRhYmxlL3RhYmxlLWNlbGwtaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGNBQWM7SUFDekIsR0FBRyxDQUFTO0lBQ1osTUFBTSxDQUFTO0lBRWYsWUFBWSxHQUFXLEVBQUUsTUFBYztRQUNyQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBUYWJsZUNlbGxJbmRleCB7XG4gIHJvdzogbnVtYmVyO1xuICBjb2x1bW46IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihyb3c6IG51bWJlciwgY29sdW1uOiBudW1iZXIpIHtcbiAgICB0aGlzLnJvdyA9IHJvdztcbiAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgfVxufVxuIl19","export class Pagination {\n pageIndex;\n pageSize;\n maxSize;\n totalRecords;\n pageSizeOptions;\n /**\n * @param pageIndex Current page index (0-based for MatPagination compatibility)\n * @param pageSize Number of records per page\n * @param maxSize Maximum number of pages displayed in the pagination control\n * @param totalRecords Total number of records\n * @param pageSizeOptions Available page size options\n */\n constructor(pageIndex = 0, // MatPagination starts at 0\n pageSize = 25, maxSize = 5, totalRecords = 0, pageSizeOptions = [25, 50, 75, 100]) {\n this.pageIndex = pageIndex;\n this.pageSize = pageSize;\n this.maxSize = maxSize;\n this.totalRecords = totalRecords;\n this.pageSizeOptions = pageSizeOptions;\n }\n /**\n * Calculates the total number of pages.\n */\n getTotalPages() {\n return Math.ceil(this.totalRecords / this.pageSize);\n }\n /**\n * Updates the page size and resets the page index to the first page.\n * @param newPageSize The new page size\n */\n updatePageSize(newPageSize) {\n if (this.pageSizeOptions.includes(newPageSize)) {\n this.pageSize = newPageSize;\n this.pageIndex = 0; // Reset to first page\n }\n else {\n throw new Error(`Invalid page size: ${newPageSize}`);\n }\n }\n /**\n * Updates pagination data based on paginator event.\n * @param event MatPaginator event\n */\n updateFromPaginatorEvent(event) {\n this.pageIndex = event.pageIndex;\n this.pageSize = event.pageSize;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9tb2RlbHMvcGFnaW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNyQixTQUFTLENBQVM7SUFDbEIsUUFBUSxDQUFTO0lBQ2pCLE9BQU8sQ0FBUztJQUNoQixZQUFZLENBQVM7SUFDckIsZUFBZSxDQUFXO0lBRTFCOzs7Ozs7T0FNRztJQUNILFlBQ0UsU0FBUyxHQUFHLENBQUMsRUFBRSw0QkFBNEI7SUFDM0MsUUFBUSxHQUFHLEVBQUUsRUFDYixPQUFPLEdBQUcsQ0FBQyxFQUNYLFlBQVksR0FBRyxDQUFDLEVBQ2hCLGtCQUE0QixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztRQUU3QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsV0FBbUI7UUFDaEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QixDQUFDLEtBQVU7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGFnaW5hdGlvbiB7XG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICBtYXhTaXplOiBudW1iZXI7XG4gIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFnZUluZGV4IEN1cnJlbnQgcGFnZSBpbmRleCAoMC1iYXNlZCBmb3IgTWF0UGFnaW5hdGlvbiBjb21wYXRpYmlsaXR5KVxuICAgKiBAcGFyYW0gcGFnZVNpemUgTnVtYmVyIG9mIHJlY29yZHMgcGVyIHBhZ2VcbiAgICogQHBhcmFtIG1heFNpemUgTWF4aW11bSBudW1iZXIgb2YgcGFnZXMgZGlzcGxheWVkIGluIHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xcbiAgICogQHBhcmFtIHRvdGFsUmVjb3JkcyBUb3RhbCBudW1iZXIgb2YgcmVjb3Jkc1xuICAgKiBAcGFyYW0gcGFnZVNpemVPcHRpb25zIEF2YWlsYWJsZSBwYWdlIHNpemUgb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcGFnZUluZGV4ID0gMCwgLy8gTWF0UGFnaW5hdGlvbiBzdGFydHMgYXQgMFxuICAgIHBhZ2VTaXplID0gMjUsXG4gICAgbWF4U2l6ZSA9IDUsXG4gICAgdG90YWxSZWNvcmRzID0gMCxcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzI1LCA1MCwgNzUsIDEwMF0sXG4gICkge1xuICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4O1xuICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICB0aGlzLm1heFNpemUgPSBtYXhTaXplO1xuICAgIHRoaXMudG90YWxSZWNvcmRzID0gdG90YWxSZWNvcmRzO1xuICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gcGFnZVNpemVPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcy5cbiAgICovXG4gIGdldFRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWxSZWNvcmRzIC8gdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGFnZSBzaXplIGFuZCByZXNldHMgdGhlIHBhZ2UgaW5kZXggdG8gdGhlIGZpcnN0IHBhZ2UuXG4gICAqIEBwYXJhbSBuZXdQYWdlU2l6ZSBUaGUgbmV3IHBhZ2Ugc2l6ZVxuICAgKi9cbiAgdXBkYXRlUGFnZVNpemUobmV3UGFnZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VTaXplT3B0aW9ucy5pbmNsdWRlcyhuZXdQYWdlU2l6ZSkpIHtcbiAgICAgIHRoaXMucGFnZVNpemUgPSBuZXdQYWdlU2l6ZTtcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gMDsgLy8gUmVzZXQgdG8gZmlyc3QgcGFnZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGFnZSBzaXplOiAke25ld1BhZ2VTaXplfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHBhZ2luYXRpb24gZGF0YSBiYXNlZCBvbiBwYWdpbmF0b3IgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBNYXRQYWdpbmF0b3IgZXZlbnRcbiAgICovXG4gIHVwZGF0ZUZyb21QYWdpbmF0b3JFdmVudChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wYWdlSW5kZXggPSBldmVudC5wYWdlSW5kZXg7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xuICB9XG59XG4iXX0=","import { Component, Input, computed, signal, inject, output, input, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { Subject, takeUntil, debounceTime, of } from 'rxjs';\nimport { MatIcon } from '@angular/material/icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, } from '../../models';\nimport { AutocompleteWrapperService } from '../../services';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/overlay\";\nimport * as i2 from \"@angular/forms\";\nexport class ReusableAutocompleteComponent {\n dataSource = input([], ...(ngDevMode ? [{ debugName: \"dataSource\" }] : [])); // Para búsqueda local\n config = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG;\n itemTemplate = input(...(ngDevMode ? [undefined, { debugName: \"itemTemplate\" }] : []));\n searchFunction = input(...(ngDevMode ? [undefined, { debugName: \"searchFunction\" }] : []));\n notFoundTemplate = input(...(ngDevMode ? [undefined, { debugName: \"notFoundTemplate\" }] : []));\n overlayWidth = input('auto', ...(ngDevMode ? [{ debugName: \"overlayWidth\" }] : []));\n overlayMaxHeight = input('400px', ...(ngDevMode ? [{ debugName: \"overlayMaxHeight\" }] : []));\n itemSelected = output();\n searchChanged = output();\n searchRequested = output(); // Nuevo evento\n pageChanged = output();\n filterChanged = output();\n advancedSearchClicked = output();\n allResultsClicked = output();\n createClicked = output();\n searchInput = viewChild.required('searchInput');\n historyListElement = viewChild('historyListElement', ...(ngDevMode ? [{ debugName: \"historyListElement\" }] : []));\n resultsListElement = viewChild('resultsListElement', ...(ngDevMode ? [{ debugName: \"resultsListElement\" }] : []));\n // State\n query = '';\n isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n overlayOpen = signal(false, ...(ngDevMode ? [{ debugName: \"overlayOpen\" }] : []));\n selectedIndex = signal(-1, ...(ngDevMode ? [{ debugName: \"selectedIndex\" }] : []));\n currentPage = signal(1, ...(ngDevMode ? [{ debugName: \"currentPage\" }] : []));\n filteredItems = signal([], ...(ngDevMode ? [{ debugName: \"filteredItems\" }] : []));\n historyList = signal([], ...(ngDevMode ? [{ debugName: \"historyList\" }] : []));\n totalCount = signal(0, ...(ngDevMode ? [{ debugName: \"totalCount\" }] : []));\n // Filters\n filters = {\n searchBy: 'name',\n stockFilter: 'all',\n };\n // Computed properties\n isHistoryVisible = computed(() => {\n return this.query.length < (this.config.minSearchLength || 2) && this.historyList().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"isHistoryVisible\" }] : []));\n totalItems = computed(() => this.filteredItems().length, ...(ngDevMode ? [{ debugName: \"totalItems\" }] : []));\n totalPages = computed(() => {\n const total = this.totalCount();\n return total > 0 ? Math.ceil(total / (this.config.itemsPerPage || 10)) : 1;\n }, ...(ngDevMode ? [{ debugName: \"totalPages\" }] : []));\n currentPageItems = computed(() => {\n // if (!this.config.enablePagination) {\n // }\n return this.filteredItems();\n // return this.autocompleteService.paginateItems(\n // this.filteredItems(),\n // this.currentPage(),\n // this.config.itemsPerPage || 10\n // );\n }, ...(ngDevMode ? [{ debugName: \"currentPageItems\" }] : []));\n startItem = computed(() => {\n const total = this.totalItems();\n if (total === 0)\n return 0;\n return (this.currentPage() - 1) * (this.config.itemsPerPage || 10) + 1;\n }, ...(ngDevMode ? [{ debugName: \"startItem\" }] : []));\n endItem = computed(() => {\n const total = this.totalItems();\n const calculated = this.currentPage() * (this.config.itemsPerPage || 10);\n return Math.min(calculated, total);\n }, ...(ngDevMode ? [{ debugName: \"endItem\" }] : []));\n sectionTitle = computed(() => {\n const total = this.totalItems();\n return `Resultados (${total})`;\n }, ...(ngDevMode ? [{ debugName: \"sectionTitle\" }] : []));\n isNoResults = computed(() => {\n return (this.totalItems() === 0 &&\n !this.isLoading() &&\n this.query.length >= (this.config.minSearchLength || 2));\n }, ...(ngDevMode ? [{ debugName: \"isNoResults\" }] : []));\n // Private\n destroy$ = new Subject();\n searchSubject = new Subject();\n autocompleteService = inject(AutocompleteWrapperService);\n ngOnInit() {\n this.mergeDefaultConfig();\n this.setupSearch();\n this.loadHistory();\n }\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n mergeDefaultConfig() {\n this.config = this.autocompleteService.mergeConfig(this.config);\n this.filters.searchBy = this.config.searchFields?.[0]?.value || 'name';\n this.filters.stockFilter = this.config.stockOptions?.[0]?.value || 'all';\n }\n setupSearch() {\n this.filteredItems.set([]);\n this.searchSubject\n .pipe(debounceTime(this.config.debounceTime || 300), \n // distinctUntilChanged(),\n // distinctUntilChanged((prev, curr) => {\n // console.log(prev);\n // console.log(curr);\n // return prev.query === curr.query &&\n // JSON.stringify(prev.filters) === JSON.stringify(curr.filters) &&\n // prev.page === curr.page\n //\n // }\n //\n // ),\n takeUntil(this.destroy$), switchMap(({ query }) => this.performSearch(query)))\n .subscribe(result => {\n this.filteredItems.set(result.items);\n this.totalCount.set(result.totalCount);\n this.isLoading.set(false);\n });\n }\n performSearch(query) {\n if (query.length < (this.config.minSearchLength || 2)) {\n return of({ items: [], totalCount: 0 });\n }\n // ESTRATEGIA A: Función de búsqueda personalizada\n const searchFunction = this.searchFunction();\n if (searchFunction) {\n return searchFunction(query, this.filters, this.currentPage(), this.config.itemsPerPage || 10).pipe(catchError(() => of({ items: [], totalCount: 0 })));\n }\n // ESTRATEGIA B: Emit evento para que el padre maneje\n if (this.config.searchMode === 'remote') {\n this.searchRequested.emit({\n query,\n filters: this.filters,\n page: this.currentPage(),\n });\n return of({ items: [], totalCount: 0 }); // El padre actualizará los datos\n }\n // ESTRATEGIA C: Búsqueda local (fallback)\n return this.autocompleteService.searchLocal(this.dataSource(), query, this.filters, this.config);\n }\n loadHistory() {\n this.autocompleteService.history$.pipe(takeUntil(this.destroy$)).subscribe(history => {\n this.historyList.set(history);\n });\n }\n searchSubjectNext() {\n this.searchSubject.next({\n query: this.query,\n filters: this.filters,\n page: this.currentPage(),\n });\n }\n // Event Handlers\n onInput(event) {\n const target = event.target;\n this.query = target.value;\n this.selectedIndex.set(-1);\n this.currentPage.set(1);\n if (this.query.length >= (this.config.minSearchLength || 2)) {\n this.isLoading.set(true);\n this.searchSubjectNext();\n }\n else {\n this.filteredItems.set([]);\n this.isLoading.set(false);\n }\n this.showOverlay();\n this.searchChanged.emit(this.query);\n }\n onKeyDown(event) {\n const currentList = this.isHistoryVisible() ? this.historyList() : this.currentPageItems();\n const maxIndex = currentList.length - 1;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (maxIndex >= 0) {\n const nextIndex = this.selectedIndex() < maxIndex ? this.selectedIndex() + 1 : 0;\n this.selectedIndex.set(nextIndex);\n this.scrollToSelected();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (maxIndex >= 0) {\n const prevIndex = this.selectedIndex() > 0 ? this.selectedIndex() - 1 : maxIndex;\n this.selectedIndex.set(prevIndex);\n this.scrollToSelected();\n }\n break;\n case 'Enter':\n event.preventDefault();\n if (this.selectedIndex() >= 0 && this.selectedIndex() <= maxIndex) {\n this.selectItem(currentList[this.selectedIndex()]);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.hideOverlay();\n break;\n case 'PageDown':\n event.preventDefault();\n if (!this.isHistoryVisible() && this.config.enablePagination) {\n this.goToNextPage();\n }\n break;\n case 'PageUp':\n event.preventDefault();\n if (!this.isHistoryVisible() && this.config.enablePagination) {\n this.goToPreviousPage();\n }\n break;\n }\n }\n onFilterChange() {\n this.currentPage.set(1);\n if (this.query.length >= (this.config.minSearchLength || 2)) {\n this.performSearch(this.query);\n this.searchSubjectNext();\n }\n // this.filterChanged.emit(this.filters);\n }\n // Método público para actualizar resultados desde el padre\n updateSearchResults(result) {\n this.filteredItems.set(result.items);\n this.totalCount.set(result.totalCount);\n this.isLoading.set(false);\n }\n // Overlay Methods\n showOverlay() {\n this.overlayOpen.set(true);\n }\n hideOverlay() {\n this.overlayOpen.set(false);\n this.selectedIndex.set(-1);\n }\n isType(item) {\n return typeof item === 'string';\n }\n // Selection Methods\n selectItem(item) {\n if (this.config.clearInput) {\n this.query = '';\n }\n else {\n this.query = this.getItemDisplayText(item);\n }\n this.hideOverlay();\n this.currentPage.set(1);\n this.autocompleteService.addToHistory(item, this.config.maxHistoryItems);\n this.itemSelected.emit(item);\n setTimeout(() => {\n this.searchInput()?.nativeElement?.focus();\n }, 100);\n }\n clearSearch() {\n this.query = '';\n this.filteredItems.set([]);\n this.selectedIndex.set(-1);\n this.currentPage.set(1);\n this.searchInput()?.nativeElement?.focus();\n this.searchChanged.emit('');\n }\n // History Methods\n removeHistoryItem(index, event) {\n event.stopPropagation();\n this.autocompleteService.removeFromHistory(index);\n }\n clearHistory() {\n this.autocompleteService.clearHistory();\n }\n // Pagination Methods\n goToPage(event) {\n const target = event.target;\n const page = parseInt(target.value);\n if (this.autocompleteService.isValidPage(page, this.totalPages())) {\n this.currentPage.set(page);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(page);\n this.searchSubjectNext();\n }\n else {\n target.value = this.currentPage().toString();\n }\n }\n goToFirstPage() {\n if (this.currentPage() !== 1) {\n this.currentPage.set(1);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(1);\n this.searchSubjectNext();\n }\n }\n goToPreviousPage() {\n const prevPage = this.currentPage() - 1;\n if (prevPage >= 1) {\n this.currentPage.set(prevPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(prevPage);\n this.searchSubjectNext();\n }\n }\n goToNextPage() {\n const nextPage = this.currentPage() + 1;\n if (nextPage <= this.totalPages()) {\n this.currentPage.set(nextPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(nextPage);\n this.searchSubjectNext();\n }\n }\n goToLastPage() {\n const lastPage = this.totalPages();\n if (this.currentPage() !== lastPage) {\n this.currentPage.set(lastPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(lastPage);\n this.searchSubjectNext();\n }\n }\n // Footer Actions\n onCreateNew(_$event) {\n //$event.stopPropagation();\n // this.hideOverlay();\n this.createClicked.emit(this.query);\n }\n onAdvancedSearch() {\n this.hideOverlay();\n this.advancedSearchClicked.emit();\n }\n onShowAllResults() {\n this.hideOverlay();\n this.allResultsClicked.emit(this.query);\n }\n // Utility Methods\n getItemDisplayText(item) {\n return this.autocompleteService.getItemDisplayText(item);\n }\n noResultsText() {\n return `No se encontraron resultados para \"${this.query}\"`;\n }\n scrollToSelected() {\n const listElement = this.isHistoryVisible()\n ? this.historyListElement()?.nativeElement\n : this.resultsListElement()?.nativeElement;\n if (listElement) {\n const selectedElement = listElement.children[this.selectedIndex()];\n if (selectedElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n }\n // Public API\n getState() {\n return {\n query: this.query,\n isLoading: this.isLoading(),\n overlayOpen: this.overlayOpen(),\n selectedIndex: this.selectedIndex(),\n pagination: {\n currentPage: this.currentPage(),\n totalPages: this.totalPages(),\n totalItems: this.totalItems(),\n itemsPerPage: this.config.itemsPerPage || 10,\n startItem: this.startItem(),\n endItem: this.endItem(),\n hasNextPage: this.currentPage() < this.totalPages(),\n hasPreviousPage: this.currentPage() > 1,\n },\n hasResults: this.totalItems() > 0,\n isHistoryVisible: this.isHistoryVisible(),\n historyCount: this.historyList().length,\n filters: this.filters,\n };\n }\n setQuery(query) {\n this.query = query;\n this.currentPage.set(1);\n if (query.length >= (this.config.minSearchLength || 2)) {\n this.performSearch(query);\n this.showOverlay();\n }\n else {\n this.filteredItems.set([]);\n if (query.length === 0) {\n this.hideOverlay();\n }\n }\n this.searchChanged.emit(query);\n }\n focus() {\n this.searchInput()?.nativeElement?.focus();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ReusableAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: ReusableAutocompleteComponent, isStandalone: true, selector: \"acp-autocomplete-wrapper\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: \"config\", publicName: \"config\", isSignal: false, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: true, isRequired: false, transformFunction: null }, searchFunction: { classPropertyName: \"searchFunction\", publicName: \"searchFunction\", isSignal: true, isRequired: false, transformFunction: null }, notFoundTemplate: { classPropertyName: \"notFoundTemplate\", publicName: \"notFoundTemplate\", isSignal: true, isRequired: false, transformFunction: null }, overlayWidth: { classPropertyName: \"overlayWidth\", publicName: \"overlayWidth\", isSignal: true, isRequired: false, transformFunction: null }, overlayMaxHeight: { classPropertyName: \"overlayMaxHeight\", publicName: \"overlayMaxHeight\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: \"itemSelected\", searchChanged: \"searchChanged\", searchRequested: \"searchRequested\", pageChanged: \"pageChanged\", filterChanged: \"filterChanged\", advancedSearchClicked: \"advancedSearchClicked\", allResultsClicked: \"allResultsClicked\", createClicked: \"createClicked\" }, viewQueries: [{ propertyName: \"searchInput\", first: true, predicate: [\"searchInput\"], descendants: true, isSignal: true }, { propertyName: \"historyListElement\", first: true, predicate: [\"historyListElement\"], descendants: true, isSignal: true }, { propertyName: \"resultsListElement\", first: true, predicate: [\"resultsListElement\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"acp-autocomplete-wrapper\\\" [class.acp-autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <!-- Input Container -->\\n <div\\n class=\\\"acp-autocomplete-wrapper-input-container\\\"\\n cdkOverlayOrigin\\n #overlayPosition=\\\"cdkOverlayOrigin\\\"\\n >\\n <div class=\\\"acp-autocomplete-wrapper-input-wrapper\\\">\\n <mat-icon class=\\\"acp-autocomplete-wrapper-search-icon\\\">search</mat-icon>\\n <input\\n #searchInput\\n type=\\\"text\\\"\\n class=\\\"acp-autocomplete-wrapper-input-field\\\"\\n [placeholder]=\\\"config.placeholder\\\"\\n [(ngModel)]=\\\"query\\\"\\n (input)=\\\"onInput($event)\\\"\\n (click)=\\\"showOverlay()\\\"\\n (keydown)=\\\"onKeyDown($event)\\\"\\n [disabled]=\\\"config.disabled || false\\\"\\n autocomplete=\\\"off\\\"\\n />\\n @if (query && query.length > 0 && !isLoading()) {\\n <button\\n mat-icon-button\\n (click)=\\\"clearSearch()\\\"\\n type=\\\"button\\\"\\n class=\\\"acp-autocomplete-wrapper-clear-button\\\"\\n >\\n <mat-icon>clear</mat-icon>\\n </button>\\n }\\n <button mat-icon-button type=\\\"button\\\">\\n <mat-icon>add</mat-icon>\\n </button>\\n </div>\\n\\n @if (isLoading()) {\\n <div class=\\\"acp-autocomplete-wrapper-loading-spinner\\\">\\n <mat-spinner diameter=\\\"20\\\" />\\n </div>\\n }\\n </div>\\n\\n <!-- Overlay -->\\n <ng-template\\n cdkConnectedOverlay\\n [cdkConnectedOverlayOrigin]=\\\"overlayPosition\\\"\\n [cdkConnectedOverlayOpen]=\\\"overlayOpen()\\\"\\n [cdkConnectedOverlayWidth]=\\\"overlayWidth()\\\"\\n [cdkConnectedOverlayHeight]=\\\"overlayMaxHeight()\\\"\\n (overlayOutsideClick)=\\\"hideOverlay()\\\"\\n (backdropClick)=\\\"hideOverlay()\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-dropdown\\\" [class.autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <div class=\\\"autocomplete-wrapper-dropdown-content\\\">\\n <!-- History Section -->\\n @if (isHistoryVisible() && historyList().length > 0) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">B\\u00FAsquedas recientes</span>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n (click)=\\\"clearHistory()\\\"\\n class=\\\"autocomplete-wrapper-clear-history-button\\\"\\n >\\n <mat-icon>delete_outline</mat-icon>\\n </button>\\n </div>\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #historyListElement\\n >\\n @for (item of historyList(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-history-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <mat-icon class=\\\"autocomplete-wrapper-history-icon\\\">history</mat-icon>\\n <div class=\\\"autocomplete-wrapper-item-details\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n class=\\\"autocomplete-wrapper-remove-button\\\"\\n (click)=\\\"removeHistoryItem($index, $event)\\\"\\n >\\n <mat-icon>close</mat-icon>\\n </button>\\n </li>\\n }\\n </ul>\\n </div>\\n }\\n\\n <!-- Results Section -->\\n @if (!isHistoryVisible()) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <!-- Header with filters and pagination -->\\n @if (config.enableFilters || config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n\\n <!-- Filters -->\\n @if (config.enableFilters) {\\n <div class=\\\"autocomplete-wrapper-filter-controls\\\">\\n @if (config.searchFields && config.searchFields.length > 1) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"searchBySelect\\\"\\n >Buscar por:</label\\n >\\n <select\\n id=\\\"searchBySelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.searchBy\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (field of config.searchFields; track $index) {\\n <option [value]=\\\"field.value\\\">{{ field.label }}</option>\\n }\\n </select>\\n </div>\\n } @if (config.enableStockFilter && config.stockOptions) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"stockSelect\\\">Stock:</label>\\n <select\\n id=\\\"stockSelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.stockFilter\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (option of config.stockOptions; track $index) {\\n <option [value]=\\\"option.value\\\">{{ option.label }}</option>\\n }\\n </select>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Pagination Controls -->\\n @if (config.enablePagination && totalPages() > 1) {\\n <div class=\\\"autocomplete-wrapper-pagination-header\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-info\\\">\\n <span>P\\u00E1gina {{ currentPage() }} de {{ totalPages() }}</span>\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToFirstPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>first_page</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <input\\n type=\\\"number\\\"\\n class=\\\"autocomplete-wrapper-page-input\\\"\\n [value]=\\\"currentPage()\\\"\\n [min]=\\\"1\\\"\\n [max]=\\\"totalPages()\\\"\\n (change)=\\\"goToPage($event)\\\"\\n />\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToLastPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>last_page</mat-icon>\\n </button>\\n </div>\\n </div>\\n }\\n </div>\\n } @else {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n </div>\\n }\\n\\n <!-- Items List -->\\n @if (totalItems()) {\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #resultsListElement\\n >\\n @for (item of currentPageItems(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-result-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-item-info\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n </li>\\n }\\n </ul>\\n }\\n </div>\\n }\\n\\n <!-- No Results -->\\n @if (!isLoading() && isNoResults()) {\\n <div class=\\\"autocomplete-wrapper-no-results\\\">\\n <mat-icon class=\\\"autocomplete-wrapper-no-results-icon\\\">search_off</mat-icon>\\n <div class=\\\"autocomplete-wrapper-no-results-content\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n notFoundTemplate() || defaultNotFoundTemplate;\\n context: { $implicit: noResultsText() }\\n \\\"\\n />\\n </div>\\n </div>\\n }\\n\\n <!-- Footer -->\\n @if (overlayOpen() && totalItems() > 0) {\\n <div class=\\\"autocomplete-wrapper-footer\\\">\\n @if (!isHistoryVisible() && totalItems() > 0 && config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-pagination-footer\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-summary\\\">\\n Mostrando {{ startItem() }}-{{ endItem() }} de {{ totalCount() }} resultados\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls-footer\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <span class=\\\"autocomplete-wrapper-page-indicator\\\"\\n >{{ currentPage() }} / {{ totalPages() }}</span\\n >\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n </div>\\n </div>\\n } @if (config.enableFooterActions) {\\n <div class=\\\"autocomplete-wrapper-footer-actions\\\">\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-create-button\\\"\\n (click)=\\\"onCreateNew($event)\\\"\\n >\\n <mat-icon>add</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Crear</span>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-search-button\\\"\\n (click)=\\\"onAdvancedSearch()\\\"\\n >\\n <mat-icon>tune</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Avanzada</span>\\n </button>\\n @if (!isHistoryVisible() && totalItems() > 0) {\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-results-button\\\"\\n (click)=\\\"onShowAllResults()\\\"\\n >\\n <mat-icon>list</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Todos</span>\\n </button>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Default Templates -->\\n <ng-template #defaultItemTemplate let-item>\\n <div class=\\\"autocomplete-wrapper-default-item\\\">\\n <div class=\\\"autocomplete-wrapper-item-name\\\">{{ getItemDisplayText(item) }}</div>\\n @if (item.description && typeof item === 'object') {\\n <div class=\\\"autocomplete-wrapper-item-description\\\">{{ item.description }}</div>\\n }\\n </div>\\n </ng-template>\\n\\n <ng-template #defaultNotFoundTemplate let-text>\\n <div class=\\\"autocomplete-wrapper-default-no-results\\\">\\n <p>{{ text }}</p>\\n <p>Intenta con otros t\\u00E9rminos de b\\u00FAsqueda</p>\\n </div>\\n </ng-template>\\n</div>\\n\", styles: [\".acp-autocomplete-wrapper{display:block}.acp-autocomplete-wrapper{position:relative;width:100%;max-width:100%}.acp-autocomplete-wrapper.acp-autocomplete-wrapper-active .acp-autocomplete-wrapper-input-wrapper{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.acp-autocomplete-wrapper-input-container{position:relative;width:100%}.acp-autocomplete-wrapper-input-wrapper{position:relative;display:flex;align-items:center;background:var(--mat-sys-surface, white);border:1px solid var(--mat-sys-outline-variant, #e0e0e0);border-radius:8px;padding:0 12px;transition:all .3s ease}.acp-autocomplete-wrapper-input-wrapper:focus-within{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.acp-autocomplete-wrapper-search-icon{color:var(--mat-sys-on-surface-variant, #666);margin-right:8px;font-size:20px}.acp-autocomplete-wrapper-input-field{flex:1;border:none;outline:none;font-size:16px;padding:7px 0;background:transparent;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-input-field::placeholder{color:var(--mat-sys-on-surface-variant, #999)}.acp-autocomplete-wrapper-input-field:disabled{opacity:.6;cursor:not-allowed}.acp-autocomplete-wrapper-clear-button{margin-left:8px;color:var(--mat-sys-on-surface-variant, #666);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.acp-autocomplete-wrapper-clear-button:hover{background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-loading-spinner{position:absolute;right:12px;top:50%;transform:translateY(-50%)}.acp-autocomplete-wrapper-dropdown{background:var(--mat-sys-surface-container, white);border-radius:8px;box-shadow:0 4px 20px #00000026;border:1px solid var(--mat-sys-outline-variant, #e0e0e0);overflow:hidden;max-height:500px;min-width:300px;display:flex;flex-direction:column}.acp-autocomplete-wrapper-dropdown.acp-autocomplete-wrapper-active{animation:reusableAutocompleteSlideIn .2s ease-out}@keyframes reusableAutocompleteSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.acp-autocomplete-wrapper-dropdown-content{display:flex;flex-direction:column;height:100%;max-height:500px}.acp-autocomplete-wrapper-section{display:flex;flex-direction:column;height:100%;min-height:0}.acp-autocomplete-wrapper-section-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 8px;border-bottom:1px solid var(--mat-sys-outline-variant, #f0f0f0);background:var(--mat-sys-surface-variant, #fafafa);flex-shrink:0;min-height:56px;flex-wrap:wrap;gap:12px}.acp-autocomplete-wrapper-section-title{font-size:13px;font-weight:500;color:var(--mat-sys-on-surface-variant, #666);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.acp-autocomplete-wrapper-clear-history-button{color:var(--mat-sys-on-surface-variant, #666);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.acp-autocomplete-wrapper-clear-history-button:hover{background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-filter-controls{display:flex;align-items:center;gap:16px;flex:1;justify-content:center}.acp-autocomplete-wrapper-filter-group{display:flex;align-items:center;gap:6px}.acp-autocomplete-wrapper-filter-label{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);font-weight:500;white-space:nowrap}.acp-autocomplete-wrapper-filter-select{padding:4px 8px;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;font-size:12px;background:var(--mat-sys-surface, white);color:var(--mat-sys-on-surface, #333);cursor:pointer;min-width:120px}.acp-autocomplete-wrapper-filter-select:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 1px #1976d233}.acp-autocomplete-wrapper-filter-select:hover{border-color:#bbb}.acp-autocomplete-wrapper-pagination-header{display:flex;align-items:center;gap:12px;margin-left:auto}.acp-autocomplete-wrapper-pagination-info{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);white-space:nowrap}.acp-autocomplete-wrapper-pagination-controls{display:flex;align-items:center;gap:4px}.acp-autocomplete-wrapper-pagination-button{min-width:32px;height:32px;line-height:32px;padding:0;color:var(--mat-sys-on-surface-variant, #666);background:none;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.acp-autocomplete-wrapper-pagination-button:hover:not(:disabled){background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-pagination-button:disabled{opacity:.5;cursor:not-allowed}.acp-autocomplete-wrapper-pagination-button mat-icon{font-size:18px;width:18px;height:18px}.acp-autocomplete-wrapper-page-input{width:50px;height:32px;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;text-align:center;font-size:12px;padding:4px;margin:0 4px}.acp-autocomplete-wrapper-page-input:focus{outline:none;border-color:#1976d2}.acp-autocomplete-wrapper-items-list{list-style:none;margin:0;padding:0;flex:1;min-height:0}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{overflow-y:auto}.acp-autocomplete-wrapper-list-item{display:flex;align-items:center;border-bottom:1px solid var(--mat-sys-outline-variant, #f5f5f5);transition:background-color .2s ease}.acp-autocomplete-wrapper-list-item:last-child{border-bottom:none}.acp-autocomplete-wrapper-list-item:hover{background-color:var(--mat-sys-surface-variant, #f8f9fa)}.acp-autocomplete-wrapper-item-content{flex:1;display:flex;align-items:center;padding:12px 16px;cursor:pointer;min-height:48px;transition:all .2s ease}.acp-autocomplete-wrapper-item-content.acp-autocomplete-wrapper-selected{background-color:var(--mat-sys-primary-container, #e3f2fd);color:var(--mat-sys-on-primary-container, #1976d2)}.acp-autocomplete-wrapper-history-item .acp-autocomplete-wrapper-item-content{padding-left:12px}.acp-autocomplete-wrapper-history-icon{color:var(--mat-sys-on-surface-variant, #999);margin-right:12px;font-size:18px}.acp-autocomplete-wrapper-item-details{flex:1;display:flex;align-items:center}.acp-autocomplete-wrapper-remove-button{margin-right:8px}.acp-autocomplete-wrapper-result-item{position:relative}.acp-autocomplete-wrapper-item-info{flex:1;display:flex;align-items:center}.acp-autocomplete-wrapper-default-item{flex:1}.acp-autocomplete-wrapper-default-item .acp-autocomplete-wrapper-item-name{font-weight:500;font-size:14px;margin-bottom:2px;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-default-item .acp-autocomplete-wrapper-item-description{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acp-autocomplete-wrapper-no-results{display:flex;flex-direction:column;align-items:center;padding:32px 16px;text-align:center;color:var(--mat-sys-on-surface-variant, #666)}.acp-autocomplete-wrapper-no-results-icon{font-size:48px;color:var(--mat-sys-outline, #ccc);margin-bottom:16px;width:45px;height:45px}.acp-autocomplete-wrapper-no-results-content{font-size:14px;line-height:1.5}.acp-autocomplete-wrapper-default-no-results{text-align:center}.acp-autocomplete-wrapper-default-no-results p:first-child{font-weight:500;margin-bottom:8px}.acp-autocomplete-wrapper-footer{border-top:1px solid var(--mat-sys-outline-variant, #f0f0f0);background:var(--mat-sys-surface-variant, #fafafa);flex-shrink:0;padding:12px 16px;display:flex;flex-direction:column;gap:12px}.acp-autocomplete-wrapper-pagination-footer{display:flex;align-items:center;justify-content:space-between;width:100%;gap:16px}.acp-autocomplete-wrapper-pagination-summary{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);white-space:nowrap}.acp-autocomplete-wrapper-pagination-controls-footer{display:flex;align-items:center;gap:8px}.acp-autocomplete-wrapper-page-indicator{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);min-width:40px;text-align:center}.acp-autocomplete-wrapper-footer-actions{display:flex;gap:8px;flex-wrap:wrap}.acp-autocomplete-wrapper-footer-button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:40px;font-size:13px;text-transform:none;white-space:nowrap;background:none;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;cursor:pointer;padding:8px 12px;transition:all .2s ease}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-create-button{background-color:#4caf500a;border-color:#4caf50;color:#4caf50}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-create-button:hover{background-color:#4caf5014}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-search-button{background-color:#ff98000a;border-color:#ff9800;color:#ff9800}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-search-button:hover{background-color:#ff980014}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-results-button{background-color:#3f51b50a;border-color:#3f51b5;color:#3f51b5}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-results-button:hover{background-color:#3f51b514}.acp-autocomplete-wrapper-button-text{display:inline}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar{width:6px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-track{background:var(--mat-sys-surface-variant, #f1f1f1);border-radius:3px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-thumb{background:var(--mat-sys-outline, #c1c1c1);border-radius:3px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-thumb:hover{background:var(--mat-sys-on-surface-variant, #a8a8a8)}@media (max-width: 768px){.acp-autocomplete-wrapper-dropdown{min-width:280px;max-height:60vh}.acp-autocomplete-wrapper-dropdown-content{max-height:60vh}.acp-autocomplete-wrapper-input-field{font-size:16px}.acp-autocomplete-wrapper-footer{padding:8px 12px}.acp-autocomplete-wrapper-footer-actions{flex-direction:column;gap:6px}.acp-autocomplete-wrapper-footer-button{width:100%;min-height:44px}.acp-autocomplete-wrapper-pagination-footer{flex-direction:column;gap:8px}.acp-autocomplete-wrapper-section-header{flex-direction:column;align-items:flex-start;min-height:80px;gap:8px}.acp-autocomplete-wrapper-filter-controls{width:100%;justify-content:flex-start;flex-wrap:wrap;gap:12px}.acp-autocomplete-wrapper-filter-select{min-width:100px;font-size:11px}.acp-autocomplete-wrapper-filter-label{font-size:11px}.acp-autocomplete-wrapper-pagination-header{width:100%;justify-content:space-between}.acp-autocomplete-wrapper-pagination-header .acp-autocomplete-wrapper-pagination-info{display:none}.acp-autocomplete-wrapper-pagination-controls{gap:2px}.acp-autocomplete-wrapper-page-input{width:40px}.acp-autocomplete-wrapper-item-content{padding:16px 12px;min-height:52px}.acp-autocomplete-wrapper-button-text{font-size:12px}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{max-height:250px}}@media (max-width: 480px){.acp-autocomplete-wrapper-dropdown{min-width:260px;max-height:50vh}.acp-autocomplete-wrapper-section-header{padding:8px 12px 6px;min-height:70px;gap:6px}.acp-autocomplete-wrapper-filter-controls{gap:8px}.acp-autocomplete-wrapper-filter-group{gap:4px}.acp-autocomplete-wrapper-filter-select{min-width:90px;padding:3px 6px}.acp-autocomplete-wrapper-item-content{padding:14px 12px}.acp-autocomplete-wrapper-pagination-header{gap:8px}.acp-autocomplete-wrapper-pagination-button{min-width:28px;height:28px}.acp-autocomplete-wrapper-page-input{width:35px;height:28px}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{max-height:200px}.acp-autocomplete-wrapper-footer-actions{gap:4px}.acp-autocomplete-wrapper-footer-button{font-size:12px;padding:8px 12px;min-height:40px}.acp-autocomplete-wrapper-button-text{display:none}}\\n\"], dependencies: [{ kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: OverlayModule }, { kind: \"directive\", type: i1.CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: [\"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayPositionStrategy\", \"cdkConnectedOverlayOffsetX\", \"cdkConnectedOverlayOffsetY\", \"cdkConnectedOverlayWidth\", \"cdkConnectedOverlayHeight\", \"cdkConnectedOverlayMinWidth\", \"cdkConnectedOverlayMinHeight\", \"cdkConnectedOverlayBackdropClass\", \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayViewportMargin\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayDisableClose\", \"cdkConnectedOverlayTransformOriginOn\", \"cdkConnectedOverlayHasBackdrop\", \"cdkConnectedOverlayLockPosition\", \"cdkConnectedOverlayFlexibleDimensions\", \"cdkConnectedOverlayGrowAfterOpen\", \"cdkConnectedOverlayPush\", \"cdkConnectedOverlayDisposeOnNavigation\"], outputs: [\"backdropClick\", \"positionChange\", \"attach\", \"detach\", \"overlayKeydown\", \"overlayOutsideClick\"], exportAs: [\"cdkConnectedOverlay\"] }, { kind: \"directive\", type: i1.CdkOverlayOrigin, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"] }, { kind: \"ngmodule\", type: MatProgressBarModule }, { kind: \"component\", type: MatProgressSpinner, selector: \"mat-progress-spinner, mat-spinner\", inputs: [\"color\", \"mode\", \"value\", \"diameter\", \"strokeWidth\"], exportAs: [\"matProgressSpinner\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { 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.SelectControlValueAccessor, selector: \"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]\", inputs: [\"compareWith\"] }, { 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\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }], encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ReusableAutocompleteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-autocomplete-wrapper', imports: [\n MatIcon,\n NgTemplateOutlet,\n OverlayModule,\n MatProgressBarModule,\n MatProgressSpinner,\n FormsModule,\n MatIconButton,\n ], encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"acp-autocomplete-wrapper\\\" [class.acp-autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <!-- Input Container -->\\n <div\\n class=\\\"acp-autocomplete-wrapper-input-container\\\"\\n cdkOverlayOrigin\\n #overlayPosition=\\\"cdkOverlayOrigin\\\"\\n >\\n <div class=\\\"acp-autocomplete-wrapper-input-wrapper\\\">\\n <mat-icon class=\\\"acp-autocomplete-wrapper-search-icon\\\">search</mat-icon>\\n <input\\n #searchInput\\n type=\\\"text\\\"\\n class=\\\"acp-autocomplete-wrapper-input-field\\\"\\n [placeholder]=\\\"config.placeholder\\\"\\n [(ngModel)]=\\\"query\\\"\\n (input)=\\\"onInput($event)\\\"\\n (click)=\\\"showOverlay()\\\"\\n (keydown)=\\\"onKeyDown($event)\\\"\\n [disabled]=\\\"config.disabled || false\\\"\\n autocomplete=\\\"off\\\"\\n />\\n @if (query && query.length > 0 && !isLoading()) {\\n <button\\n mat-icon-button\\n (click)=\\\"clearSearch()\\\"\\n type=\\\"button\\\"\\n class=\\\"acp-autocomplete-wrapper-clear-button\\\"\\n >\\n <mat-icon>clear</mat-icon>\\n </button>\\n }\\n <button mat-icon-button type=\\\"button\\\">\\n <mat-icon>add</mat-icon>\\n </button>\\n </div>\\n\\n @if (isLoading()) {\\n <div class=\\\"acp-autocomplete-wrapper-loading-spinner\\\">\\n <mat-spinner diameter=\\\"20\\\" />\\n </div>\\n }\\n </div>\\n\\n <!-- Overlay -->\\n <ng-template\\n cdkConnectedOverlay\\n [cdkConnectedOverlayOrigin]=\\\"overlayPosition\\\"\\n [cdkConnectedOverlayOpen]=\\\"overlayOpen()\\\"\\n [cdkConnectedOverlayWidth]=\\\"overlayWidth()\\\"\\n [cdkConnectedOverlayHeight]=\\\"overlayMaxHeight()\\\"\\n (overlayOutsideClick)=\\\"hideOverlay()\\\"\\n (backdropClick)=\\\"hideOverlay()\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-dropdown\\\" [class.autocomplete-wrapper-active]=\\\"overlayOpen()\\\">\\n <div class=\\\"autocomplete-wrapper-dropdown-content\\\">\\n <!-- History Section -->\\n @if (isHistoryVisible() && historyList().length > 0) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">B\\u00FAsquedas recientes</span>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n (click)=\\\"clearHistory()\\\"\\n class=\\\"autocomplete-wrapper-clear-history-button\\\"\\n >\\n <mat-icon>delete_outline</mat-icon>\\n </button>\\n </div>\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #historyListElement\\n >\\n @for (item of historyList(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-history-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <mat-icon class=\\\"autocomplete-wrapper-history-icon\\\">history</mat-icon>\\n <div class=\\\"autocomplete-wrapper-item-details\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n <button\\n type=\\\"button\\\"\\n mat-icon-button\\n class=\\\"autocomplete-wrapper-remove-button\\\"\\n (click)=\\\"removeHistoryItem($index, $event)\\\"\\n >\\n <mat-icon>close</mat-icon>\\n </button>\\n </li>\\n }\\n </ul>\\n </div>\\n }\\n\\n <!-- Results Section -->\\n @if (!isHistoryVisible()) {\\n <div class=\\\"autocomplete-wrapper-section\\\">\\n <!-- Header with filters and pagination -->\\n @if (config.enableFilters || config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n\\n <!-- Filters -->\\n @if (config.enableFilters) {\\n <div class=\\\"autocomplete-wrapper-filter-controls\\\">\\n @if (config.searchFields && config.searchFields.length > 1) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"searchBySelect\\\"\\n >Buscar por:</label\\n >\\n <select\\n id=\\\"searchBySelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.searchBy\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (field of config.searchFields; track $index) {\\n <option [value]=\\\"field.value\\\">{{ field.label }}</option>\\n }\\n </select>\\n </div>\\n } @if (config.enableStockFilter && config.stockOptions) {\\n <div class=\\\"autocomplete-wrapper-filter-group\\\">\\n <label class=\\\"autocomplete-wrapper-filter-label\\\" for=\\\"stockSelect\\\">Stock:</label>\\n <select\\n id=\\\"stockSelect\\\"\\n class=\\\"autocomplete-wrapper-filter-select\\\"\\n [(ngModel)]=\\\"filters.stockFilter\\\"\\n (change)=\\\"onFilterChange()\\\"\\n >\\n @for (option of config.stockOptions; track $index) {\\n <option [value]=\\\"option.value\\\">{{ option.label }}</option>\\n }\\n </select>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Pagination Controls -->\\n @if (config.enablePagination && totalPages() > 1) {\\n <div class=\\\"autocomplete-wrapper-pagination-header\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-info\\\">\\n <span>P\\u00E1gina {{ currentPage() }} de {{ totalPages() }}</span>\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToFirstPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>first_page</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <input\\n type=\\\"number\\\"\\n class=\\\"autocomplete-wrapper-page-input\\\"\\n [value]=\\\"currentPage()\\\"\\n [min]=\\\"1\\\"\\n [max]=\\\"totalPages()\\\"\\n (change)=\\\"goToPage($event)\\\"\\n />\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToLastPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>last_page</mat-icon>\\n </button>\\n </div>\\n </div>\\n }\\n </div>\\n } @else {\\n <div class=\\\"autocomplete-wrapper-section-header\\\">\\n <span class=\\\"autocomplete-wrapper-section-title\\\">{{ sectionTitle() }}</span>\\n </div>\\n }\\n\\n <!-- Items List -->\\n @if (totalItems()) {\\n <ul\\n class=\\\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\\\"\\n #resultsListElement\\n >\\n @for (item of currentPageItems(); track $index) {\\n <li class=\\\"autocomplete-wrapper-list-item autocomplete-wrapper-result-item\\\">\\n <div\\n class=\\\"autocomplete-wrapper-item-content\\\"\\n [class.autocomplete-wrapper-selected]=\\\"$index === selectedIndex()\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"selectItem(item)\\\"\\n (keydown.enter)=\\\"selectItem(item)\\\"\\n >\\n <div class=\\\"autocomplete-wrapper-item-info\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate() || defaultItemTemplate;\\n context: { $implicit: item }\\n \\\"\\n />\\n </div>\\n </div>\\n </li>\\n }\\n </ul>\\n }\\n </div>\\n }\\n\\n <!-- No Results -->\\n @if (!isLoading() && isNoResults()) {\\n <div class=\\\"autocomplete-wrapper-no-results\\\">\\n <mat-icon class=\\\"autocomplete-wrapper-no-results-icon\\\">search_off</mat-icon>\\n <div class=\\\"autocomplete-wrapper-no-results-content\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n notFoundTemplate() || defaultNotFoundTemplate;\\n context: { $implicit: noResultsText() }\\n \\\"\\n />\\n </div>\\n </div>\\n }\\n\\n <!-- Footer -->\\n @if (overlayOpen() && totalItems() > 0) {\\n <div class=\\\"autocomplete-wrapper-footer\\\">\\n @if (!isHistoryVisible() && totalItems() > 0 && config.enablePagination) {\\n <div class=\\\"autocomplete-wrapper-pagination-footer\\\">\\n <div class=\\\"autocomplete-wrapper-pagination-summary\\\">\\n Mostrando {{ startItem() }}-{{ endItem() }} de {{ totalCount() }} resultados\\n </div>\\n <div class=\\\"autocomplete-wrapper-pagination-controls-footer\\\">\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToPreviousPage()\\\"\\n [disabled]=\\\"currentPage() === 1\\\"\\n >\\n <mat-icon>chevron_left</mat-icon>\\n </button>\\n <span class=\\\"autocomplete-wrapper-page-indicator\\\"\\n >{{ currentPage() }} / {{ totalPages() }}</span\\n >\\n <button\\n class=\\\"autocomplete-wrapper-pagination-button\\\"\\n (click)=\\\"goToNextPage()\\\"\\n [disabled]=\\\"currentPage() === totalPages()\\\"\\n >\\n <mat-icon>chevron_right</mat-icon>\\n </button>\\n </div>\\n </div>\\n } @if (config.enableFooterActions) {\\n <div class=\\\"autocomplete-wrapper-footer-actions\\\">\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-create-button\\\"\\n (click)=\\\"onCreateNew($event)\\\"\\n >\\n <mat-icon>add</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Crear</span>\\n </button>\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-search-button\\\"\\n (click)=\\\"onAdvancedSearch()\\\"\\n >\\n <mat-icon>tune</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Avanzada</span>\\n </button>\\n @if (!isHistoryVisible() && totalItems() > 0) {\\n <button\\n class=\\\"autocomplete-wrapper-footer-button autocomplete-wrapper-results-button\\\"\\n (click)=\\\"onShowAllResults()\\\"\\n >\\n <mat-icon>list</mat-icon>\\n <span class=\\\"autocomplete-wrapper-button-text\\\">Todos</span>\\n </button>\\n }\\n </div>\\n }\\n </div>\\n }\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- Default Templates -->\\n <ng-template #defaultItemTemplate let-item>\\n <div class=\\\"autocomplete-wrapper-default-item\\\">\\n <div class=\\\"autocomplete-wrapper-item-name\\\">{{ getItemDisplayText(item) }}</div>\\n @if (item.description && typeof item === 'object') {\\n <div class=\\\"autocomplete-wrapper-item-description\\\">{{ item.description }}</div>\\n }\\n </div>\\n </ng-template>\\n\\n <ng-template #defaultNotFoundTemplate let-text>\\n <div class=\\\"autocomplete-wrapper-default-no-results\\\">\\n <p>{{ text }}</p>\\n <p>Intenta con otros t\\u00E9rminos de b\\u00FAsqueda</p>\\n </div>\\n </ng-template>\\n</div>\\n\", styles: [\".acp-autocomplete-wrapper{display:block}.acp-autocomplete-wrapper{position:relative;width:100%;max-width:100%}.acp-autocomplete-wrapper.acp-autocomplete-wrapper-active .acp-autocomplete-wrapper-input-wrapper{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.acp-autocomplete-wrapper-input-container{position:relative;width:100%}.acp-autocomplete-wrapper-input-wrapper{position:relative;display:flex;align-items:center;background:var(--mat-sys-surface, white);border:1px solid var(--mat-sys-outline-variant, #e0e0e0);border-radius:8px;padding:0 12px;transition:all .3s ease}.acp-autocomplete-wrapper-input-wrapper:focus-within{border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.acp-autocomplete-wrapper-search-icon{color:var(--mat-sys-on-surface-variant, #666);margin-right:8px;font-size:20px}.acp-autocomplete-wrapper-input-field{flex:1;border:none;outline:none;font-size:16px;padding:7px 0;background:transparent;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-input-field::placeholder{color:var(--mat-sys-on-surface-variant, #999)}.acp-autocomplete-wrapper-input-field:disabled{opacity:.6;cursor:not-allowed}.acp-autocomplete-wrapper-clear-button{margin-left:8px;color:var(--mat-sys-on-surface-variant, #666);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.acp-autocomplete-wrapper-clear-button:hover{background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-loading-spinner{position:absolute;right:12px;top:50%;transform:translateY(-50%)}.acp-autocomplete-wrapper-dropdown{background:var(--mat-sys-surface-container, white);border-radius:8px;box-shadow:0 4px 20px #00000026;border:1px solid var(--mat-sys-outline-variant, #e0e0e0);overflow:hidden;max-height:500px;min-width:300px;display:flex;flex-direction:column}.acp-autocomplete-wrapper-dropdown.acp-autocomplete-wrapper-active{animation:reusableAutocompleteSlideIn .2s ease-out}@keyframes reusableAutocompleteSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.acp-autocomplete-wrapper-dropdown-content{display:flex;flex-direction:column;height:100%;max-height:500px}.acp-autocomplete-wrapper-section{display:flex;flex-direction:column;height:100%;min-height:0}.acp-autocomplete-wrapper-section-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 8px;border-bottom:1px solid var(--mat-sys-outline-variant, #f0f0f0);background:var(--mat-sys-surface-variant, #fafafa);flex-shrink:0;min-height:56px;flex-wrap:wrap;gap:12px}.acp-autocomplete-wrapper-section-title{font-size:13px;font-weight:500;color:var(--mat-sys-on-surface-variant, #666);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.acp-autocomplete-wrapper-clear-history-button{color:var(--mat-sys-on-surface-variant, #666);background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.acp-autocomplete-wrapper-clear-history-button:hover{background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-filter-controls{display:flex;align-items:center;gap:16px;flex:1;justify-content:center}.acp-autocomplete-wrapper-filter-group{display:flex;align-items:center;gap:6px}.acp-autocomplete-wrapper-filter-label{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);font-weight:500;white-space:nowrap}.acp-autocomplete-wrapper-filter-select{padding:4px 8px;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;font-size:12px;background:var(--mat-sys-surface, white);color:var(--mat-sys-on-surface, #333);cursor:pointer;min-width:120px}.acp-autocomplete-wrapper-filter-select:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 1px #1976d233}.acp-autocomplete-wrapper-filter-select:hover{border-color:#bbb}.acp-autocomplete-wrapper-pagination-header{display:flex;align-items:center;gap:12px;margin-left:auto}.acp-autocomplete-wrapper-pagination-info{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);white-space:nowrap}.acp-autocomplete-wrapper-pagination-controls{display:flex;align-items:center;gap:4px}.acp-autocomplete-wrapper-pagination-button{min-width:32px;height:32px;line-height:32px;padding:0;color:var(--mat-sys-on-surface-variant, #666);background:none;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.acp-autocomplete-wrapper-pagination-button:hover:not(:disabled){background-color:#0000000a;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-pagination-button:disabled{opacity:.5;cursor:not-allowed}.acp-autocomplete-wrapper-pagination-button mat-icon{font-size:18px;width:18px;height:18px}.acp-autocomplete-wrapper-page-input{width:50px;height:32px;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;text-align:center;font-size:12px;padding:4px;margin:0 4px}.acp-autocomplete-wrapper-page-input:focus{outline:none;border-color:#1976d2}.acp-autocomplete-wrapper-items-list{list-style:none;margin:0;padding:0;flex:1;min-height:0}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{overflow-y:auto}.acp-autocomplete-wrapper-list-item{display:flex;align-items:center;border-bottom:1px solid var(--mat-sys-outline-variant, #f5f5f5);transition:background-color .2s ease}.acp-autocomplete-wrapper-list-item:last-child{border-bottom:none}.acp-autocomplete-wrapper-list-item:hover{background-color:var(--mat-sys-surface-variant, #f8f9fa)}.acp-autocomplete-wrapper-item-content{flex:1;display:flex;align-items:center;padding:12px 16px;cursor:pointer;min-height:48px;transition:all .2s ease}.acp-autocomplete-wrapper-item-content.acp-autocomplete-wrapper-selected{background-color:var(--mat-sys-primary-container, #e3f2fd);color:var(--mat-sys-on-primary-container, #1976d2)}.acp-autocomplete-wrapper-history-item .acp-autocomplete-wrapper-item-content{padding-left:12px}.acp-autocomplete-wrapper-history-icon{color:var(--mat-sys-on-surface-variant, #999);margin-right:12px;font-size:18px}.acp-autocomplete-wrapper-item-details{flex:1;display:flex;align-items:center}.acp-autocomplete-wrapper-remove-button{margin-right:8px}.acp-autocomplete-wrapper-result-item{position:relative}.acp-autocomplete-wrapper-item-info{flex:1;display:flex;align-items:center}.acp-autocomplete-wrapper-default-item{flex:1}.acp-autocomplete-wrapper-default-item .acp-autocomplete-wrapper-item-name{font-weight:500;font-size:14px;margin-bottom:2px;color:var(--mat-sys-on-surface, #333)}.acp-autocomplete-wrapper-default-item .acp-autocomplete-wrapper-item-description{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acp-autocomplete-wrapper-no-results{display:flex;flex-direction:column;align-items:center;padding:32px 16px;text-align:center;color:var(--mat-sys-on-surface-variant, #666)}.acp-autocomplete-wrapper-no-results-icon{font-size:48px;color:var(--mat-sys-outline, #ccc);margin-bottom:16px;width:45px;height:45px}.acp-autocomplete-wrapper-no-results-content{font-size:14px;line-height:1.5}.acp-autocomplete-wrapper-default-no-results{text-align:center}.acp-autocomplete-wrapper-default-no-results p:first-child{font-weight:500;margin-bottom:8px}.acp-autocomplete-wrapper-footer{border-top:1px solid var(--mat-sys-outline-variant, #f0f0f0);background:var(--mat-sys-surface-variant, #fafafa);flex-shrink:0;padding:12px 16px;display:flex;flex-direction:column;gap:12px}.acp-autocomplete-wrapper-pagination-footer{display:flex;align-items:center;justify-content:space-between;width:100%;gap:16px}.acp-autocomplete-wrapper-pagination-summary{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);white-space:nowrap}.acp-autocomplete-wrapper-pagination-controls-footer{display:flex;align-items:center;gap:8px}.acp-autocomplete-wrapper-page-indicator{font-size:12px;color:var(--mat-sys-on-surface-variant, #666);min-width:40px;text-align:center}.acp-autocomplete-wrapper-footer-actions{display:flex;gap:8px;flex-wrap:wrap}.acp-autocomplete-wrapper-footer-button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:40px;font-size:13px;text-transform:none;white-space:nowrap;background:none;border:1px solid var(--mat-sys-outline, #ddd);border-radius:4px;cursor:pointer;padding:8px 12px;transition:all .2s ease}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-create-button{background-color:#4caf500a;border-color:#4caf50;color:#4caf50}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-create-button:hover{background-color:#4caf5014}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-search-button{background-color:#ff98000a;border-color:#ff9800;color:#ff9800}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-search-button:hover{background-color:#ff980014}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-results-button{background-color:#3f51b50a;border-color:#3f51b5;color:#3f51b5}.acp-autocomplete-wrapper-footer-button.acp-autocomplete-wrapper-results-button:hover{background-color:#3f51b514}.acp-autocomplete-wrapper-button-text{display:inline}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar{width:6px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-track{background:var(--mat-sys-surface-variant, #f1f1f1);border-radius:3px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-thumb{background:var(--mat-sys-outline, #c1c1c1);border-radius:3px}.acp-autocomplete-wrapper-items-list::-webkit-scrollbar-thumb:hover{background:var(--mat-sys-on-surface-variant, #a8a8a8)}@media (max-width: 768px){.acp-autocomplete-wrapper-dropdown{min-width:280px;max-height:60vh}.acp-autocomplete-wrapper-dropdown-content{max-height:60vh}.acp-autocomplete-wrapper-input-field{font-size:16px}.acp-autocomplete-wrapper-footer{padding:8px 12px}.acp-autocomplete-wrapper-footer-actions{flex-direction:column;gap:6px}.acp-autocomplete-wrapper-footer-button{width:100%;min-height:44px}.acp-autocomplete-wrapper-pagination-footer{flex-direction:column;gap:8px}.acp-autocomplete-wrapper-section-header{flex-direction:column;align-items:flex-start;min-height:80px;gap:8px}.acp-autocomplete-wrapper-filter-controls{width:100%;justify-content:flex-start;flex-wrap:wrap;gap:12px}.acp-autocomplete-wrapper-filter-select{min-width:100px;font-size:11px}.acp-autocomplete-wrapper-filter-label{font-size:11px}.acp-autocomplete-wrapper-pagination-header{width:100%;justify-content:space-between}.acp-autocomplete-wrapper-pagination-header .acp-autocomplete-wrapper-pagination-info{display:none}.acp-autocomplete-wrapper-pagination-controls{gap:2px}.acp-autocomplete-wrapper-page-input{width:40px}.acp-autocomplete-wrapper-item-content{padding:16px 12px;min-height:52px}.acp-autocomplete-wrapper-button-text{font-size:12px}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{max-height:250px}}@media (max-width: 480px){.acp-autocomplete-wrapper-dropdown{min-width:260px;max-height:50vh}.acp-autocomplete-wrapper-section-header{padding:8px 12px 6px;min-height:70px;gap:6px}.acp-autocomplete-wrapper-filter-controls{gap:8px}.acp-autocomplete-wrapper-filter-group{gap:4px}.acp-autocomplete-wrapper-filter-select{min-width:90px;padding:3px 6px}.acp-autocomplete-wrapper-item-content{padding:14px 12px}.acp-autocomplete-wrapper-pagination-header{gap:8px}.acp-autocomplete-wrapper-pagination-button{min-width:28px;height:28px}.acp-autocomplete-wrapper-page-input{width:35px;height:28px}.acp-autocomplete-wrapper-items-list.acp-autocomplete-wrapper-scrollable-list{max-height:200px}.acp-autocomplete-wrapper-footer-actions{gap:4px}.acp-autocomplete-wrapper-footer-button{font-size:12px;padding:8px 12px;min-height:40px}.acp-autocomplete-wrapper-button-text{display:none}}\\n\"] }]\n }], propDecorators: { config: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUtd3JhcHBlci9hdXRvY29tcGxldGUtd3JhcHBlci50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS13cmFwcGVyL2F1dG9jb21wbGV0ZS13cmFwcGVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUNMLG1DQUFtQyxHQU9w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Z0IsbUpBQ2hCLGFBQWEsMHJDQUNiLG9CQUFvQiwrQkFDcEIsa0JBQWtCLDhLQUNsQixXQUFXLDBnQ0FDWCxhQUFhOzsyRkFNSiw2QkFBNkI7a0JBZnpDLFNBQVM7K0JBQ0UsMEJBQTBCLFdBQzNCO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLGFBQWE7cUJBQ2QsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTs4QkFJNUIsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIGNvbXB1dGVkLFxuICBzaWduYWwsXG4gIGluamVjdCxcbiAgb3V0cHV0LFxuICBpbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJY29uQnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEFVVE9DT01QTEVURV9XUkFQUEVSX0RFRkFVTFRfQ09ORklHLFxuICBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnLFxuICBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVycyxcbiAgQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0sXG4gIEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hGdW5jdGlvbixcbiAgQXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaFJlc3VsdCxcbiAgQXV0b2NvbXBsZXRlV3JhcHBlclN0YXRlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3AtYXV0b2NvbXBsZXRlLXdyYXBwZXInLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0SWNvbixcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEljb25CdXR0b24sXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUtd3JhcHBlci5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2F1dG9jb21wbGV0ZS13cmFwcGVyLnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBSZXVzYWJsZUF1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgZGF0YVNvdXJjZSA9IGlucHV0PEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10+KFtdKTsgLy8gUGFyYSBiw7pzcXVlZGEgbG9jYWxcbiAgQElucHV0KCkgY29uZmlnOiBBdXRvY29tcGxldGVXcmFwcGVyQ29uZmlnID0gQVVUT0NPTVBMRVRFX1dSQVBQRVJfREVGQVVMVF9DT05GSUc7XG4gIHJlYWRvbmx5IGl0ZW1UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IHNlYXJjaEZ1bmN0aW9uID0gaW5wdXQ8QXV0b2NvbXBsZXRlV3JhcHBlclNlYXJjaEZ1bmN0aW9uPigpO1xuXG4gIHJlYWRvbmx5IG5vdEZvdW5kVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuXG4gIG92ZXJsYXlXaWR0aCA9IGlucHV0KCdhdXRvJyk7XG4gIG92ZXJsYXlNYXhIZWlnaHQgPSBpbnB1dCgnNDAwcHgnKTtcblxuICBpdGVtU2VsZWN0ZWQgPSBvdXRwdXQ8QXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0+KCk7XG4gIHNlYXJjaENoYW5nZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICBzZWFyY2hSZXF1ZXN0ZWQgPSBvdXRwdXQ8eyBxdWVyeTogc3RyaW5nOyBmaWx0ZXJzOiBBdXRvY29tcGxldGVXcmFwcGVyRmlsdGVyczsgcGFnZTogbnVtYmVyIH0+KCk7IC8vIE51ZXZvIGV2ZW50b1xuICBwYWdlQ2hhbmdlZCA9IG91dHB1dDxudW1iZXI+KCk7XG4gIGZpbHRlckNoYW5nZWQgPSBvdXRwdXQ8QXV0b2NvbXBsZXRlV3JhcHBlckZpbHRlcnM+KCk7XG4gIGFkdmFuY2VkU2VhcmNoQ2xpY2tlZCA9IG91dHB1dDx2b2lkPigpO1xuICBhbGxSZXN1bHRzQ2xpY2tlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIGNyZWF0ZUNsaWNrZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIHJlYWRvbmx5IHNlYXJjaElucHV0ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdzZWFyY2hJbnB1dCcpO1xuICByZWFkb25seSBoaXN0b3J5TGlzdEVsZW1lbnQgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MVUxpc3RFbGVtZW50Pj4oJ2hpc3RvcnlMaXN0RWxlbWVudCcpO1xuICByZWFkb25seSByZXN1bHRzTGlzdEVsZW1lbnQgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MVUxpc3RFbGVtZW50Pj4oJ3Jlc3VsdHNMaXN0RWxlbWVudCcpO1xuXG4gIC8vIFN0YXRlXG4gIHF1ZXJ5ID0gJyc7XG4gIGlzTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIG92ZXJsYXlPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgc2VsZWN0ZWRJbmRleCA9IHNpZ25hbCgtMSk7XG4gIGN1cnJlbnRQYWdlID0gc2lnbmFsKDEpO1xuICBmaWx0ZXJlZEl0ZW1zID0gc2lnbmFsPEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtW10+KFtdKTtcbiAgaGlzdG9yeUxpc3QgPSBzaWduYWw8QXV0b2NvbXBsZXRlV3JhcHBlckl0ZW1bXT4oW10pO1xuICB0b3RhbENvdW50ID0gc2lnbmFsKDApO1xuICAvLyBGaWx0ZXJzXG4gIGZpbHRlcnM6IEF1dG9jb21wbGV0ZVdyYXBwZXJGaWx0ZXJzID0ge1xuICAgIHNlYXJjaEJ5OiAnbmFtZScsXG4gICAgc3RvY2tGaWx0ZXI6ICdhbGwnLFxuICB9O1xuXG4gIC8vIENvbXB1dGVkIHByb3BlcnRpZXNcbiAgaXNIaXN0b3J5VmlzaWJsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeS5sZW5ndGggPCAodGhpcy5jb25maWcubWluU2VhcmNoTGVuZ3RoIHx8IDIpICYmIHRoaXMuaGlzdG9yeUxpc3QoKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICB0b3RhbEl0ZW1zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5maWx0ZXJlZEl0ZW1zKCkubGVuZ3RoKTtcblxuICB0b3RhbFBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy50b3RhbENvdW50KCk7XG4gICAgcmV0dXJuIHRvdGFsID4gMCA/IE1hdGguY2VpbCh0b3RhbCAvICh0aGlzLmNvbmZpZy5pdGVtc1BlclBhZ2UgfHwgMTApKSA6IDE7XG4gIH0pO1xuXG4gIGN1cnJlbnRQYWdlSXRlbXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgLy8gaWYgKCF0aGlzLmNvbmZpZy5lbmFibGVQYWdpbmF0aW9uKSB7XG4gICAgLy8gfVxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSXRlbXMoKTtcbiAgICAvLyByZXR1cm4gdGhpcy5hdXRvY29tcGxldGVTZXJ2aWNlLnBhZ2luYXRlSXRlbXMoXG4gICAgLy8gICB0aGlzLmZpbHRlcmVkSXRlbXMoKSxcbiAgICAvLyAgIHRoaXMuY3VycmVudFBhZ2UoKSxcbiAgICAvLyAgIHRoaXMuY29uZmlnLml0ZW1zUGVyUGFnZSB8fCAxMFxuICAgIC8vICk7XG4gIH0pO1xuXG4gIHN0YXJ0SXRlbSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMudG90YWxJdGVtcygpO1xuICAgIGlmICh0b3RhbCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgcmV0dXJuICh0aGlzLmN1cnJlbnRQYWdlKCkgLSAxKSAqICh0aGlzLmNvbmZpZy5pdGVtc1BlclBhZ2UgfHwgMTApICsgMTtcbiAgfSk7XG5cbiAgZW5kSXRlbSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMudG90YWxJdGVtcygpO1xuICAgIGNvbnN0IGNhbGN1bGF0ZWQgPSB0aGlzLmN1cnJlbnRQYWdlKCkgKiAodGhpcy5jb25maWcuaXRlbXNQZXJQYWdlIHx8IDEwKTtcbiAgICByZXR1cm4gTWF0aC5taW4oY2FsY3VsYXRlZCwgdG90YWwpO1xuICB9KTtcblxuICBzZWN0aW9uVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnRvdGFsSXRlbXMoKTtcbiAgICByZXR1cm4gYFJlc3VsdGFkb3MgKCR7dG90YWx9KWA7XG4gIH0pO1xuXG4gIGlzTm9SZXN1bHRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnRvdGFsSXRlbXMoKSA9PT0gMCAmJlxuICAgICAgIXRoaXMuaXNMb2FkaW5nKCkgJiZcbiAgICAgIHRoaXMucXVlcnkubGVuZ3RoID49ICh0aGlzLmNvbmZpZy5taW5TZWFyY2hMZW5ndGggfHwgMilcbiAgICApO1xuICB9KTtcblxuICAvLyBQcml2YXRlXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHNlYXJjaFN1YmplY3QgPSBuZXcgU3ViamVjdDx7IHF1ZXJ5OiBzdHJpbmc7IGZpbHRlcnM6IGFueTsgcGFnZTogbnVtYmVyIH0+KCk7XG4gIHByaXZhdGUgYXV0b2NvbXBsZXRlU2VydmljZSA9IGluamVjdChBdXRvY29tcGxldGVXcmFwcGVyU2VydmljZSk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tZXJnZURlZmF1bHRDb25maWcoKTtcbiAgICB0aGlzLnNldHVwU2VhcmNoKCk7XG4gICAgdGhpcy5sb2FkSGlzdG9yeSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZURlZmF1bHRDb25maWcoKSB7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UubWVyZ2VDb25maWcodGhpcy5jb25maWcpO1xuICAgIHRoaXMuZmlsdGVycy5zZWFyY2hCeSA9IHRoaXMuY29uZmlnLnNlYXJjaEZpZWxkcz8uWzBdPy52YWx1ZSB8fCAnbmFtZSc7XG4gICAgdGhpcy5maWx0ZXJzLnN0b2NrRmlsdGVyID0gdGhpcy5jb25maWcuc3RvY2tPcHRpb25zPy5bMF0/LnZhbHVlIHx8ICdhbGwnO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFNlYXJjaCgpIHtcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMuc2V0KFtdKTtcbiAgICB0aGlzLnNlYXJjaFN1YmplY3RcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5jb25maWcuZGVib3VuY2VUaW1lIHx8IDMwMCksXG4gICAgICAgIC8vIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIC8vICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4ge1xuICAgICAgICAvLyAgICBjb25zb2xlLmxvZyhwcmV2KTtcbiAgICAgICAgLy8gICAgY29uc29sZS5sb2coY3Vycik7XG4gICAgICAgIC8vICAgICAgcmV0dXJuICBwcmV2LnF1ZXJ5ID09PSBjdXJyLnF1ZXJ5ICYmXG4gICAgICAgIC8vICAgICAgICBKU09OLnN0cmluZ2lmeShwcmV2LmZpbHRlcnMpID09PSBKU09OLnN0cmluZ2lmeShjdXJyLmZpbHRlcnMpICYmXG4gICAgICAgIC8vICAgICAgICBwcmV2LnBhZ2UgPT09IGN1cnIucGFnZVxuICAgICAgICAvL1xuICAgICAgICAvLyAgICB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vICApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIHN3aXRjaE1hcCgoeyBxdWVyeSB9KSA9PiB0aGlzLnBlcmZvcm1TZWFyY2gocXVlcnkpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zLnNldChyZXN1bHQuaXRlbXMpO1xuICAgICAgICB0aGlzLnRvdGFsQ291bnQuc2V0KHJlc3VsdC50b3RhbENvdW50KTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJmb3JtU2VhcmNoKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hSZXN1bHQ+IHtcbiAgICBpZiAocXVlcnkubGVuZ3RoIDwgKHRoaXMuY29uZmlnLm1pblNlYXJjaExlbmd0aCB8fCAyKSkge1xuICAgICAgcmV0dXJuIG9mKHsgaXRlbXM6IFtdLCB0b3RhbENvdW50OiAwIH0pO1xuICAgIH1cblxuICAgIC8vIEVTVFJBVEVHSUEgQTogRnVuY2nDs24gZGUgYsO6c3F1ZWRhIHBlcnNvbmFsaXphZGFcbiAgICBjb25zdCBzZWFyY2hGdW5jdGlvbiA9IHRoaXMuc2VhcmNoRnVuY3Rpb24oKTtcbiAgICBpZiAoc2VhcmNoRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiBzZWFyY2hGdW5jdGlvbihcbiAgICAgICAgcXVlcnksXG4gICAgICAgIHRoaXMuZmlsdGVycyxcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSgpLFxuICAgICAgICB0aGlzLmNvbmZpZy5pdGVtc1BlclBhZ2UgfHwgMTAsXG4gICAgICApLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZih7IGl0ZW1zOiBbXSwgdG90YWxDb3VudDogMCB9KSkpO1xuICAgIH1cblxuICAgIC8vIEVTVFJBVEVHSUEgQjogRW1pdCBldmVudG8gcGFyYSBxdWUgZWwgcGFkcmUgbWFuZWplXG4gICAgaWYgKHRoaXMuY29uZmlnLnNlYXJjaE1vZGUgPT09ICdyZW1vdGUnKSB7XG4gICAgICB0aGlzLnNlYXJjaFJlcXVlc3RlZC5lbWl0KHtcbiAgICAgICAgcXVlcnksXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycyxcbiAgICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSgpLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gb2YoeyBpdGVtczogW10sIHRvdGFsQ291bnQ6IDAgfSk7IC8vIEVsIHBhZHJlIGFjdHVhbGl6YXLDoSBsb3MgZGF0b3NcbiAgICB9XG5cbiAgICAvLyBFU1RSQVRFR0lBIEM6IELDunNxdWVkYSBsb2NhbCAoZmFsbGJhY2spXG4gICAgcmV0dXJuIHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5zZWFyY2hMb2NhbChcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSgpLFxuICAgICAgcXVlcnksXG4gICAgICB0aGlzLmZpbHRlcnMsXG4gICAgICB0aGlzLmNvbmZpZyxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSGlzdG9yeSgpIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UuaGlzdG9yeSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShoaXN0b3J5ID0+IHtcbiAgICAgIHRoaXMuaGlzdG9yeUxpc3Quc2V0KGhpc3RvcnkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWFyY2hTdWJqZWN0TmV4dCgpIHtcbiAgICB0aGlzLnNlYXJjaFN1YmplY3QubmV4dCh7XG4gICAgICBxdWVyeTogdGhpcy5xdWVyeSxcbiAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycyxcbiAgICAgIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UoKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEV2ZW50IEhhbmRsZXJzXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5xdWVyeSA9IHRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KC0xKTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCgxKTtcblxuICAgIGlmICh0aGlzLnF1ZXJ5Lmxlbmd0aCA+PSAodGhpcy5jb25maWcubWluU2VhcmNoTGVuZ3RoIHx8IDIpKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3ROZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcy5zZXQoW10pO1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dPdmVybGF5KCk7XG4gICAgdGhpcy5zZWFyY2hDaGFuZ2VkLmVtaXQodGhpcy5xdWVyeSk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBjdXJyZW50TGlzdCA9IHRoaXMuaXNIaXN0b3J5VmlzaWJsZSgpID8gdGhpcy5oaXN0b3J5TGlzdCgpIDogdGhpcy5jdXJyZW50UGFnZUl0ZW1zKCk7XG4gICAgY29uc3QgbWF4SW5kZXggPSBjdXJyZW50TGlzdC5sZW5ndGggLSAxO1xuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChtYXhJbmRleCA+PSAwKSB7XG4gICAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gdGhpcy5zZWxlY3RlZEluZGV4KCkgPCBtYXhJbmRleCA/IHRoaXMuc2VsZWN0ZWRJbmRleCgpICsgMSA6IDA7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldChuZXh0SW5kZXgpO1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKG1heEluZGV4ID49IDApIHtcbiAgICAgICAgICBjb25zdCBwcmV2SW5kZXggPSB0aGlzLnNlbGVjdGVkSW5kZXgoKSA+IDAgPyB0aGlzLnNlbGVjdGVkSW5kZXgoKSAtIDEgOiBtYXhJbmRleDtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KHByZXZJbmRleCk7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCgpID49IDAgJiYgdGhpcy5zZWxlY3RlZEluZGV4KCkgPD0gbWF4SW5kZXgpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oY3VycmVudExpc3RbdGhpcy5zZWxlY3RlZEluZGV4KCldKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoIXRoaXMuaXNIaXN0b3J5VmlzaWJsZSgpICYmIHRoaXMuY29uZmlnLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAgICAgICB0aGlzLmdvVG9OZXh0UGFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoIXRoaXMuaXNIaXN0b3J5VmlzaWJsZSgpICYmIHRoaXMuY29uZmlnLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAgICAgICB0aGlzLmdvVG9QcmV2aW91c1BhZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvbkZpbHRlckNoYW5nZSgpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCgxKTtcbiAgICBpZiAodGhpcy5xdWVyeS5sZW5ndGggPj0gKHRoaXMuY29uZmlnLm1pblNlYXJjaExlbmd0aCB8fCAyKSkge1xuICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKHRoaXMucXVlcnkpO1xuICAgICAgdGhpcy5zZWFyY2hTdWJqZWN0TmV4dCgpO1xuICAgIH1cbiAgICAvLyB0aGlzLmZpbHRlckNoYW5nZWQuZW1pdCh0aGlzLmZpbHRlcnMpO1xuICB9XG5cbiAgLy8gTcOpdG9kbyBww7pibGljbyBwYXJhIGFjdHVhbGl6YXIgcmVzdWx0YWRvcyBkZXNkZSBlbCBwYWRyZVxuICBwdWJsaWMgdXBkYXRlU2VhcmNoUmVzdWx0cyhyZXN1bHQ6IEF1dG9jb21wbGV0ZVdyYXBwZXJTZWFyY2hSZXN1bHQpIHtcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMuc2V0KHJlc3VsdC5pdGVtcyk7XG4gICAgdGhpcy50b3RhbENvdW50LnNldChyZXN1bHQudG90YWxDb3VudCk7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8vIE92ZXJsYXkgTWV0aG9kc1xuICBzaG93T3ZlcmxheSgpIHtcbiAgICB0aGlzLm92ZXJsYXlPcGVuLnNldCh0cnVlKTtcbiAgfVxuXG4gIGhpZGVPdmVybGF5KCkge1xuICAgIHRoaXMub3ZlcmxheU9wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KC0xKTtcbiAgfVxuXG4gIGlzVHlwZShpdGVtOiBhbnkpOiBpdGVtIGlzIHN0cmluZyB7XG4gICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJztcbiAgfVxuXG4gIC8vIFNlbGVjdGlvbiBNZXRob2RzXG4gIHNlbGVjdEl0ZW0oaXRlbTogQXV0b2NvbXBsZXRlV3JhcHBlckl0ZW0pIHtcbiAgICBpZiAodGhpcy5jb25maWcuY2xlYXJJbnB1dCkge1xuICAgICAgdGhpcy5xdWVyeSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5nZXRJdGVtRGlzcGxheVRleHQoaXRlbSk7XG4gICAgfVxuICAgIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCgxKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UuYWRkVG9IaXN0b3J5KGl0ZW0sIHRoaXMuY29uZmlnLm1heEhpc3RvcnlJdGVtcyk7XG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChpdGVtKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dCgpPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBjbGVhclNlYXJjaCgpIHtcbiAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zLnNldChbXSk7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldCgtMSk7XG4gICAgdGhpcy5jdXJyZW50UGFnZS5zZXQoMSk7XG4gICAgdGhpcy5zZWFyY2hJbnB1dCgpPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIHRoaXMuc2VhcmNoQ2hhbmdlZC5lbWl0KCcnKTtcbiAgfVxuXG4gIC8vIEhpc3RvcnkgTWV0aG9kc1xuICByZW1vdmVIaXN0b3J5SXRlbShpbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UucmVtb3ZlRnJvbUhpc3RvcnkoaW5kZXgpO1xuICB9XG5cbiAgY2xlYXJIaXN0b3J5KCkge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5jbGVhckhpc3RvcnkoKTtcbiAgfVxuXG4gIC8vIFBhZ2luYXRpb24gTWV0aG9kc1xuICBnb1RvUGFnZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBwYWdlID0gcGFyc2VJbnQodGFyZ2V0LnZhbHVlKTtcbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVTZXJ2aWNlLmlzVmFsaWRQYWdlKHBhZ2UsIHRoaXMudG90YWxQYWdlcygpKSkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS5zZXQocGFnZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KC0xKTtcbiAgICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChwYWdlKTtcbiAgICAgIHRoaXMuc2VhcmNoU3ViamVjdE5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0LnZhbHVlID0gdGhpcy5jdXJyZW50UGFnZSgpLnRvU3RyaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgZ29Ub0ZpcnN0UGFnZSgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSgpICE9PSAxKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCgxKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoLTEpO1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KDEpO1xuICAgICAgdGhpcy5zZWFyY2hTdWJqZWN0TmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9QcmV2aW91c1BhZ2UoKSB7XG4gICAgY29uc3QgcHJldlBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgLSAxO1xuICAgIGlmIChwcmV2UGFnZSA+PSAxKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChwcmV2UGFnZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KC0xKTtcbiAgICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChwcmV2UGFnZSk7XG4gICAgICB0aGlzLnNlYXJjaFN1YmplY3ROZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgZ29Ub05leHRQYWdlKCkge1xuICAgIGNvbnN0IG5leHRQYWdlID0gdGhpcy5jdXJyZW50UGFnZSgpICsgMTtcbiAgICBpZiAobmV4dFBhZ2UgPD0gdGhpcy50b3RhbFBhZ2VzKCkpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KG5leHRQYWdlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoLTEpO1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KG5leHRQYWdlKTtcbiAgICAgIHRoaXMuc2VhcmNoU3ViamVjdE5leHQoKTtcbiAgICB9XG4gIH1cblxuICBnb1RvTGFzdFBhZ2UoKSB7XG4gICAgY29uc3QgbGFzdFBhZ2UgPSB0aGlzLnRvdGFsUGFnZXMoKTtcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSgpICE9PSBsYXN0UGFnZSkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS5zZXQobGFzdFBhZ2UpO1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldCgtMSk7XG4gICAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQobGFzdFBhZ2UpO1xuICAgICAgdGhpcy5zZWFyY2hTdWJqZWN0TmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvb3RlciBBY3Rpb25zXG4gIG9uQ3JlYXRlTmV3KF8kZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAvLyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAvLyB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgdGhpcy5jcmVhdGVDbGlja2VkLmVtaXQodGhpcy5xdWVyeSk7XG4gIH1cblxuICBvbkFkdmFuY2VkU2VhcmNoKCkge1xuICAgIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICB0aGlzLmFkdmFuY2VkU2VhcmNoQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICBvblNob3dBbGxSZXN1bHRzKCkge1xuICAgIHRoaXMuaGlkZU92ZXJsYXkoKTtcbiAgICB0aGlzLmFsbFJlc3VsdHNDbGlja2VkLmVtaXQodGhpcy5xdWVyeSk7XG4gIH1cblxuICAvLyBVdGlsaXR5IE1ldGhvZHNcbiAgZ2V0SXRlbURpc3BsYXlUZXh0KGl0ZW06IEF1dG9jb21wbGV0ZVdyYXBwZXJJdGVtKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdXRvY29tcGxldGVTZXJ2aWNlLmdldEl0ZW1EaXNwbGF5VGV4dChpdGVtKTtcbiAgfVxuXG4gIG5vUmVzdWx0c1RleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYE5vIHNlIGVuY29udHJhcm9uIHJlc3VsdGFkb3MgcGFyYSBcIiR7dGhpcy5xdWVyeX1cImA7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFRvU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgbGlzdEVsZW1lbnQgPSB0aGlzLmlzSGlzdG9yeVZpc2libGUoKVxuICAgICAgPyB0aGlzLmhpc3RvcnlMaXN0RWxlbWVudCgpPy5uYXRpdmVFbGVtZW50XG4gICAgICA6IHRoaXMucmVzdWx0c0xpc3RFbGVtZW50KCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAobGlzdEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IGxpc3RFbGVtZW50LmNoaWxkcmVuW3RoaXMuc2VsZWN0ZWRJbmRleCgpXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQpIHtcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxuICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHVibGljIEFQSVxuICBwdWJsaWMgZ2V0U3RhdGUoKTogQXV0b2NvbXBsZXRlV3JhcHBlclN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgcXVlcnk6IHRoaXMucXVlcnksXG4gICAgICBpc0xvYWRpbmc6IHRoaXMuaXNMb2FkaW5nKCksXG4gICAgICBvdmVybGF5T3BlbjogdGhpcy5vdmVybGF5T3BlbigpLFxuICAgICAgc2VsZWN0ZWRJbmRleDogdGhpcy5zZWxlY3RlZEluZGV4KCksXG4gICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLmN1cnJlbnRQYWdlKCksXG4gICAgICAgIHRvdGFsUGFnZXM6IHRoaXMudG90YWxQYWdlcygpLFxuICAgICAgICB0b3RhbEl0ZW1zOiB0aGlzLnRvdGFsSXRlbXMoKSxcbiAgICAgICAgaXRlbXNQZXJQYWdlOiB0aGlzLmNvbmZpZy5pdGVtc1BlclBhZ2UgfHwgMTAsXG4gICAgICAgIHN0YXJ0SXRlbTogdGhpcy5zdGFydEl0ZW0oKSxcbiAgICAgICAgZW5kSXRlbTogdGhpcy5lbmRJdGVtKCksXG4gICAgICAgIGhhc05leHRQYWdlOiB0aGlzLmN1cnJlbnRQYWdlKCkgPCB0aGlzLnRvdGFsUGFnZXMoKSxcbiAgICAgICAgaGFzUHJldmlvdXNQYWdlOiB0aGlzLmN1cnJlbnRQYWdlKCkgPiAxLFxuICAgICAgfSxcbiAgICAgIGhhc1Jlc3VsdHM6IHRoaXMudG90YWxJdGVtcygpID4gMCxcbiAgICAgIGlzSGlzdG9yeVZpc2libGU6IHRoaXMuaXNIaXN0b3J5VmlzaWJsZSgpLFxuICAgICAgaGlzdG9yeUNvdW50OiB0aGlzLmhpc3RvcnlMaXN0KCkubGVuZ3RoLFxuICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc2V0UXVlcnkocXVlcnk6IHN0cmluZykge1xuICAgIHRoaXMucXVlcnkgPSBxdWVyeTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCgxKTtcbiAgICBpZiAocXVlcnkubGVuZ3RoID49ICh0aGlzLmNvbmZpZy5taW5TZWFyY2hMZW5ndGggfHwgMikpIHtcbiAgICAgIHRoaXMucGVyZm9ybVNlYXJjaChxdWVyeSk7XG4gICAgICB0aGlzLnNob3dPdmVybGF5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcy5zZXQoW10pO1xuICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoQ2hhbmdlZC5lbWl0KHF1ZXJ5KTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpIHtcbiAgICB0aGlzLnNlYXJjaElucHV0KCk/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhY3AtYXV0b2NvbXBsZXRlLXdyYXBwZXJcIiBbY2xhc3MuYWNwLWF1dG9jb21wbGV0ZS13cmFwcGVyLWFjdGl2ZV09XCJvdmVybGF5T3BlbigpXCI+XG4gIDwhLS0gSW5wdXQgQ29udGFpbmVyIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhY3AtYXV0b2NvbXBsZXRlLXdyYXBwZXItaW5wdXQtY29udGFpbmVyXCJcbiAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgI292ZXJsYXlQb3NpdGlvbj1cImNka092ZXJsYXlPcmlnaW5cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImFjcC1hdXRvY29tcGxldGUtd3JhcHBlci1pbnB1dC13cmFwcGVyXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJhY3AtYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VhcmNoLWljb25cIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgPGlucHV0XG4gICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwiYWNwLWF1dG9jb21wbGV0ZS13cmFwcGVyLWlucHV0LWZpZWxkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZy5wbGFjZWhvbGRlclwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicXVlcnlcIlxuICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cInNob3dPdmVybGF5KClcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb25maWcuZGlzYWJsZWQgfHwgZmFsc2VcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgLz5cbiAgICAgIEBpZiAocXVlcnkgJiYgcXVlcnkubGVuZ3RoID4gMCAmJiAhaXNMb2FkaW5nKCkpIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYWNwLWF1dG9jb21wbGV0ZS13cmFwcGVyLWNsZWFyLWJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYWNwLWF1dG9jb21wbGV0ZS13cmFwcGVyLWxvYWRpbmctc3Bpbm5lclwiPlxuICAgICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMjBcIiAvPlxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPCEtLSBPdmVybGF5IC0tPlxuICA8bmctdGVtcGxhdGVcbiAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3ZlcmxheVBvc2l0aW9uXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwib3ZlcmxheU9wZW4oKVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aF09XCJvdmVybGF5V2lkdGgoKVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIZWlnaHRdPVwib3ZlcmxheU1heEhlaWdodCgpXCJcbiAgICAob3ZlcmxheU91dHNpZGVDbGljayk9XCJoaWRlT3ZlcmxheSgpXCJcbiAgICAoYmFja2Ryb3BDbGljayk9XCJoaWRlT3ZlcmxheSgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1kcm9wZG93blwiIFtjbGFzcy5hdXRvY29tcGxldGUtd3JhcHBlci1hY3RpdmVdPVwib3ZlcmxheU9wZW4oKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWRyb3Bkb3duLWNvbnRlbnRcIj5cbiAgICAgICAgPCEtLSBIaXN0b3J5IFNlY3Rpb24gLS0+XG4gICAgICAgIEBpZiAoaXNIaXN0b3J5VmlzaWJsZSgpICYmIGhpc3RvcnlMaXN0KCkubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VjdGlvblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uLXRpdGxlXCI+QsO6c3F1ZWRhcyByZWNpZW50ZXM8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFySGlzdG9yeSgpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1jbGVhci1oaXN0b3J5LWJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGVfb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8dWxcbiAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItaXRlbXMtbGlzdCBhdXRvY29tcGxldGUtd3JhcHBlci1zY3JvbGxhYmxlLWxpc3RcIlxuICAgICAgICAgICAgI2hpc3RvcnlMaXN0RWxlbWVudFxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaGlzdG9yeUxpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1saXN0LWl0ZW0gYXV0b2NvbXBsZXRlLXdyYXBwZXItaGlzdG9yeS1pdGVtXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWl0ZW0tY29udGVudFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF1dG9jb21wbGV0ZS13cmFwcGVyLXNlbGVjdGVkXT1cIiRpbmRleCA9PT0gc2VsZWN0ZWRJbmRleCgpXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWxlY3RJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWhpc3RvcnktaWNvblwiPmhpc3Rvcnk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1pdGVtLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlKCkgfHwgZGVmYXVsdEl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1yZW1vdmUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSGlzdG9yeUl0ZW0oJGluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gUmVzdWx0cyBTZWN0aW9uIC0tPlxuICAgICAgICBAaWYgKCFpc0hpc3RvcnlWaXNpYmxlKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXNlY3Rpb25cIj5cbiAgICAgICAgICA8IS0tIEhlYWRlciB3aXRoIGZpbHRlcnMgYW5kIHBhZ2luYXRpb24gLS0+XG4gICAgICAgICAgQGlmIChjb25maWcuZW5hYmxlRmlsdGVycyB8fCBjb25maWcuZW5hYmxlUGFnaW5hdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1zZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvblRpdGxlKCkgfX08L3NwYW4+XG5cbiAgICAgICAgICAgIDwhLS0gRmlsdGVycyAtLT5cbiAgICAgICAgICAgIEBpZiAoY29uZmlnLmVuYWJsZUZpbHRlcnMpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1maWx0ZXItY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgQGlmIChjb25maWcuc2VhcmNoRmllbGRzICYmIGNvbmZpZy5zZWFyY2hGaWVsZHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZmlsdGVyLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZmlsdGVyLWxhYmVsXCIgZm9yPVwic2VhcmNoQnlTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgPkJ1c2NhciBwb3I6PC9sYWJlbFxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaEJ5U2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZmlsdGVyLXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlcnMuc2VhcmNoQnlcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbHRlckNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBjb25maWcuc2VhcmNoRmllbGRzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cImZpZWxkLnZhbHVlXCI+e3sgZmllbGQubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH0gQGlmIChjb25maWcuZW5hYmxlU3RvY2tGaWx0ZXIgJiYgY29uZmlnLnN0b2NrT3B0aW9ucykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZmlsdGVyLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItZmlsdGVyLWxhYmVsXCIgZm9yPVwic3RvY2tTZWxlY3RcIj5TdG9jazo8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgIGlkPVwic3RvY2tTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1maWx0ZXItc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVycy5zdG9ja0ZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBjb25maWcuc3RvY2tPcHRpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gUGFnaW5hdGlvbiBDb250cm9scyAtLT5cbiAgICAgICAgICAgIEBpZiAoY29uZmlnLmVuYWJsZVBhZ2luYXRpb24gJiYgdG90YWxQYWdlcygpID4gMSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2luYXRpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWluZm9cIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5Qw6FnaW5hIHt7IGN1cnJlbnRQYWdlKCkgfX0gZGUge3sgdG90YWxQYWdlcygpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2luYXRpb24tY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2luYXRpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvRmlyc3RQYWdlKClcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlKCkgPT09IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5maXJzdF9wYWdlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2luYXRpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUHJldmlvdXNQYWdlKClcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlKCkgPT09IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2UtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImN1cnJlbnRQYWdlKClcIlxuICAgICAgICAgICAgICAgICAgW21pbl09XCIxXCJcbiAgICAgICAgICAgICAgICAgIFttYXhdPVwidG90YWxQYWdlcygpXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiZ29Ub1BhZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2luYXRpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvTmV4dFBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UoKSA9PT0gdG90YWxQYWdlcygpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub0xhc3RQYWdlKClcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlKCkgPT09IHRvdGFsUGFnZXMoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmxhc3RfcGFnZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXNlY3Rpb24tdGl0bGVcIj57eyBzZWN0aW9uVGl0bGUoKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8IS0tIEl0ZW1zIExpc3QgLS0+XG4gICAgICAgICAgQGlmICh0b3RhbEl0ZW1zKCkpIHtcbiAgICAgICAgICA8dWxcbiAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItaXRlbXMtbGlzdCBhdXRvY29tcGxldGUtd3JhcHBlci1zY3JvbGxhYmxlLWxpc3RcIlxuICAgICAgICAgICAgI3Jlc3VsdHNMaXN0RWxlbWVudFxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgY3VycmVudFBhZ2VJdGVtcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWxpc3QtaXRlbSBhdXRvY29tcGxldGUtd3JhcHBlci1yZXN1bHQtaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1pdGVtLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hdXRvY29tcGxldGUtd3JhcHBlci1zZWxlY3RlZF09XCIkaW5kZXggPT09IHNlbGVjdGVkSW5kZXgoKVwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItaXRlbS1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlKCkgfHwgZGVmYXVsdEl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBObyBSZXN1bHRzIC0tPlxuICAgICAgICBAaWYgKCFpc0xvYWRpbmcoKSAmJiBpc05vUmVzdWx0cygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1uby1yZXN1bHRzXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItbm8tcmVzdWx0cy1pY29uXCI+c2VhcmNoX29mZjwvbWF0LWljb24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLW5vLXJlc3VsdHMtY29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgbm90Rm91bmRUZW1wbGF0ZSgpIHx8IGRlZmF1bHROb3RGb3VuZFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vUmVzdWx0c1RleHQoKSB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBGb290ZXIgLS0+XG4gICAgICAgIEBpZiAob3ZlcmxheU9wZW4oKSAmJiB0b3RhbEl0ZW1zKCkgPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1mb290ZXJcIj5cbiAgICAgICAgICBAaWYgKCFpc0hpc3RvcnlWaXNpYmxlKCkgJiYgdG90YWxJdGVtcygpID4gMCAmJiBjb25maWcuZW5hYmxlUGFnaW5hdGlvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2luYXRpb24tc3VtbWFyeVwiPlxuICAgICAgICAgICAgICBNb3N0cmFuZG8ge3sgc3RhcnRJdGVtKCkgfX0te3sgZW5kSXRlbSgpIH19IGRlIHt7IHRvdGFsQ291bnQoKSB9fSByZXN1bHRhZG9zXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWZvb3RlclwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1wYWdpbmF0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlKCkgPT09IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fbGVmdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2UtaW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgICA+e3sgY3VycmVudFBhZ2UoKSB9fSAvIHt7IHRvdGFsUGFnZXMoKSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLXBhZ2luYXRpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSB0b3RhbFBhZ2VzKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gQGlmIChjb25maWcuZW5hYmxlRm9vdGVyQWN0aW9ucykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1mb290ZXItYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZvb3Rlci1idXR0b24gYXV0b2NvbXBsZXRlLXdyYXBwZXItY3JlYXRlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNyZWF0ZU5ldygkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItYnV0dG9uLXRleHRcIj5DcmVhcjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWZvb3Rlci1idXR0b24gYXV0b2NvbXBsZXRlLXdyYXBwZXItc2VhcmNoLWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkFkdmFuY2VkU2VhcmNoKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LWljb24+dHVuZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXItYnV0dG9uLXRleHRcIj5BdmFuemFkYTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmICghaXNIaXN0b3J5VmlzaWJsZSgpICYmIHRvdGFsSXRlbXMoKSA+IDApIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1mb290ZXItYnV0dG9uIGF1dG9jb21wbGV0ZS13cmFwcGVyLXJlc3VsdHMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd0FsbFJlc3VsdHMoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5saXN0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1idXR0b24tdGV4dFwiPlRvZG9zPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBEZWZhdWx0IFRlbXBsYXRlcyAtLT5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbVRlbXBsYXRlIGxldC1pdGVtPlxuICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1kZWZhdWx0LWl0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1pdGVtLW5hbWVcIj57eyBnZXRJdGVtRGlzcGxheVRleHQoaXRlbSkgfX08L2Rpdj5cbiAgICAgIEBpZiAoaXRlbS5kZXNjcmlwdGlvbiAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtd3JhcHBlci1pdGVtLWRlc2NyaXB0aW9uXCI+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE5vdEZvdW5kVGVtcGxhdGUgbGV0LXRleHQ+XG4gICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZS13cmFwcGVyLWRlZmF1bHQtbm8tcmVzdWx0c1wiPlxuICAgICAgPHA+e3sgdGV4dCB9fTwvcD5cbiAgICAgIDxwPkludGVudGEgY29uIG90cm9zIHTDqXJtaW5vcyBkZSBiw7pzcXVlZGE8L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==","import { Directive, ElementRef, HostListener, inject, Renderer2 } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nexport class ToUpperCase {\n el = inject(ElementRef);\n renderer = inject(Renderer2);\n onInput() {\n const value = this.el.nativeElement.value;\n this.el.nativeElement.value = value.toUpperCase();\n this.onChange(value.toUpperCase()); // Llamar a la función que actualiza el valor del modelo\n }\n // Funciones de ControlValueAccessor\n onChange = (_value) => {\n // ControlValueAccessor callback\n };\n onTouched = () => {\n // ControlValueAccessor callback\n };\n writeValue(value) {\n if (value) {\n this.el.nativeElement.value = value.toUpperCase();\n }\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ToUpperCase, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.4\", type: ToUpperCase, isStandalone: true, selector: \"[acpToUpperCase]\", host: { listeners: { \"input\": \"onInput()\" } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ToUpperCase,\n multi: true,\n },\n ], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: ToUpperCase, decorators: [{\n type: Directive,\n args: [{\n selector: '[acpToUpperCase]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ToUpperCase,\n multi: true,\n },\n ],\n }]\n }], propDecorators: { onInput: [{\n type: HostListener,\n args: ['input']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tdXBwZXItY2FzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9kaXJlY3RpdmVzL3RvLXVwcGVyLWNhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVl6RSxNQUFNLE9BQU8sV0FBVztJQUNkLEVBQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVkLE9BQU87UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLHdEQUF3RDtJQUM5RixDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLFFBQVEsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO1FBQzVCLGdDQUFnQztJQUNsQyxDQUFDLENBQUM7SUFDRixTQUFTLEdBQUcsR0FBRyxFQUFFO1FBQ2YsZ0NBQWdDO0lBQ2xDLENBQUMsQ0FBQztJQUVGLFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBMkI7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzt1R0E5QlUsV0FBVzsyRkFBWCxXQUFXLDhHQVJYO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjs7MkZBRVUsV0FBVztrQkFWdkIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxhQUFhOzRCQUN4QixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs4QkFLd0IsT0FBTztzQkFBN0IsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY3BUb1VwcGVyQ2FzZV0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBUb1VwcGVyQ2FzZSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRvVXBwZXJDYXNlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcml2YXRlIGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKSBvbklucHV0KCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZS50b1VwcGVyQ2FzZSgpKTsgLy8gTGxhbWFyIGEgbGEgZnVuY2nDs24gcXVlIGFjdHVhbGl6YSBlbCB2YWxvciBkZWwgbW9kZWxvXG4gIH1cblxuICAvLyBGdW5jaW9uZXMgZGUgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgb25DaGFuZ2UgPSAoX3ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBjYWxsYmFja1xuICB9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7XG4gICAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgY2FsbGJhY2tcbiAgfTtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWNvbXBvbmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jb21wb25lbnRzL3NyYy9hY29udHBsdXMtbmctY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2","i3","i4","i5"],"mappings":"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"}
1
+ {"version":3,"file":"acontplus-ng-components.mjs","sources":["../../../../packages/ng-components/src/lib/components/cards/dynamic-card/dynamic-card.ts","../../../../packages/ng-components/src/lib/components/cards/dynamic-card/dynamic-card.html","../../../../packages/ng-components/src/lib/enums/report-format.ts","../../../../packages/ng-components/src/lib/components/button/button.ts","../../../../packages/ng-components/src/lib/components/button/button.html","../../../../packages/ng-components/src/lib/components/dialog-wrapper/dialog-wrapper.ts","../../../../packages/ng-components/src/lib/components/dialog-wrapper/dialog-wrapper.html","../../../../packages/ng-components/src/lib/components/icons/user-icon/user-icon.ts","../../../../packages/ng-components/src/lib/components/icons/user-icon/user-icon.html","../../../../packages/ng-components/src/lib/components/icons/svg-icon/svg-icon.ts","../../../../packages/ng-components/src/lib/components/icons/svg-icon/svg-icon.html","../../../../packages/ng-components/src/lib/components/input-chip/input-chip.ts","../../../../packages/ng-components/src/lib/components/input-chip/input-chip.html","../../../../packages/ng-components/src/lib/components/spinner/spinner.ts","../../../../packages/ng-components/src/lib/components/spinner/spinner.html","../../../../packages/ng-components/src/lib/pipes/get-total-pipe.ts","../../../../packages/ng-components/src/lib/pipes/status-display-pipe.ts","../../../../packages/ng-components/src/lib/components/tables/dynamic-table/dynamic-table.ts","../../../../packages/ng-components/src/lib/components/tables/dynamic-table/dynamic-table.html","../../../../packages/ng-components/src/lib/components/tables/tabulator-table/tabulator-table.ts","../../../../packages/ng-components/src/lib/components/tables/tabulator-table/tabulator-table.html","../../../../packages/ng-components/src/lib/services/dialog/advanced-dialog.service.ts","../../../../packages/ng-components/src/lib/services/overlay-service.ts","../../../../packages/ng-components/src/lib/services/theme-switcher.ts","../../../../packages/ng-components/src/lib/models/autocomplete-wrapper-item.ts","../../../../packages/ng-components/src/lib/services/autocomplete-wrapper-service.ts","../../../../packages/ng-components/src/lib/components/theme-toggle/theme-toggle.ts","../../../../packages/ng-components/src/lib/components/theme-toggle/theme-toggle.html","../../../../packages/ng-components/src/lib/models/mat-table/field-definition.ts","../../../../packages/ng-components/src/lib/models/mat-table/column-definition.ts","../../../../packages/ng-components/src/lib/models/mat-table/table-cell-index.ts","../../../../packages/ng-components/src/lib/models/pagination.ts","../../../../packages/ng-components/src/lib/components/autocomplete-wrapper/autocomplete-wrapper.ts","../../../../packages/ng-components/src/lib/components/autocomplete-wrapper/autocomplete-wrapper.html","../../../../packages/ng-components/src/lib/directives/to-upper-case.ts","../../../../packages/ng-components/src/acontplus-ng-components.ts"],"sourcesContent":["import { Component, input, output, booleanAttribute, ViewEncapsulation } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n/**\n * A versatile card component that wraps Angular Material's mat-card with additional functionality\n * and customization options. This component provides a consistent card layout with configurable\n * header, content, and action areas.\n *\n * @example\n * <acp-dynamic-card\n * [cardTitle]=\"'Card Title'\"\n * [cardSubtitle]=\"'Card Subtitle'\"\n * [isHeaderVisible]=\"true\"\n * [areActionsVisible]=\"true\"\n * (primaryButtonClicked)=\"onPrimaryAction()\">\n * Card content goes here\n * </acp-dynamic-card>\n */\n@Component({\n selector: 'acp-dynamic-card',\n standalone: true,\n imports: [MatCardModule, MatButtonModule, MatIconModule],\n templateUrl: './dynamic-card.html',\n styleUrl: './dynamic-card.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class DynamicCard {\n // Header inputs\n /**\n * The title text to display in the card header.\n * @default null\n */\n cardTitle = input<string | null>(null);\n\n /**\n * The subtitle text to display in the card header.\n * @default null\n */\n cardSubtitle = input<string | null>(null);\n\n /**\n * URL for the avatar image to display in the card header.\n * @default null\n */\n avatarImageUrl = input<string | null>(null);\n\n /**\n * Whether to show the card header section.\n * @default false\n */\n isHeaderVisible = input(false, { transform: booleanAttribute });\n\n // Content inputs\n /**\n * CSS padding value for the card content area.\n * @default '1rem'\n */\n contentPadding = input<string>('1rem');\n\n /**\n * Whether to show a divider between the header and content sections.\n * @default false\n */\n hasDivider = input(false, { transform: booleanAttribute });\n\n // Action inputs\n /**\n * Whether to show the action buttons section.\n * @default false\n */\n areActionsVisible = input(false, { transform: booleanAttribute });\n\n /**\n * Text for the primary action button.\n * @default 'Confirm'\n */\n primaryButtonText = input('Confirm');\n\n /**\n * Text for the secondary action button.\n * @default 'Cancel'\n */\n secondaryButtonText = input('Cancel');\n\n /**\n * Material icon name for the primary button.\n * @default null\n */\n primaryButtonIcon = input<string | null>(null);\n\n /**\n * Material icon name for the secondary button.\n * @default null\n */\n secondaryButtonIcon = input<string | null>(null);\n\n /**\n * Alignment of the action buttons.\n * @default 'end'\n */\n buttonsPosition = input<'start' | 'end'>('end');\n\n // Output events\n /**\n * Event emitted when the primary button is clicked.\n */\n primaryButtonClicked = output<void>();\n\n /**\n * Event emitted when the secondary button is clicked.\n */\n secondaryButtonClicked = output<void>();\n\n /**\n * Event emitted when the card is clicked.\n */\n cardClicked = output<Event>();\n\n // Methods\n /**\n * Handles the primary button click event.\n * Stops event propagation and emits the primaryButtonClicked event.\n * @param event The click event\n */\n handlePrimaryButtonClick(event: Event): void {\n event.stopPropagation();\n this.primaryButtonClicked.emit();\n }\n\n /**\n * Handles the secondary button click event.\n * Stops event propagation and emits the secondaryButtonClicked event.\n * @param event The click event\n */\n handleSecondaryButtonClick(event: Event): void {\n event.stopPropagation();\n this.secondaryButtonClicked.emit();\n }\n\n /**\n * Handles the card click event.\n * Emits the cardClicked event with the original event.\n * @param event The click event\n */\n handleCardClick(event: Event): void {\n this.cardClicked.emit(event);\n }\n}\n","<mat-card\n appearance=\"outlined\"\n (click)=\"handleCardClick($event)\"\n [class.mat-card-divider]=\"hasDivider()\"\n>\n @if (isHeaderVisible()) {\n <mat-card-header>\n @if (avatarImageUrl()) {\n <img mat-card-avatar [src]=\"avatarImageUrl()\" alt=\"Card avatar\" />\n } @if (cardTitle()) {\n <mat-card-title>{{ cardTitle() }}</mat-card-title>\n } @if (cardSubtitle()) {\n <mat-card-subtitle>{{ cardSubtitle() }}</mat-card-subtitle>\n }\n </mat-card-header>\n }\n\n <mat-card-content [style.padding]=\"contentPadding()\">\n <ng-content />\n </mat-card-content>\n\n @if (areActionsVisible()) {\n <mat-card-actions [align]=\"buttonsPosition()\">\n @if (secondaryButtonText()) {\n <button mat-button color=\"warn\" (click)=\"handleSecondaryButtonClick($event)\">\n @if (secondaryButtonIcon()) {\n <mat-icon>{{ secondaryButtonIcon() }}</mat-icon>\n } {{ secondaryButtonText() }}\n </button>\n } @if (primaryButtonText()) {\n <button mat-button color=\"primary\" (click)=\"handlePrimaryButtonClick($event)\">\n @if (primaryButtonIcon()) {\n <mat-icon>{{ primaryButtonIcon() }}</mat-icon>\n } {{ primaryButtonText() }}\n </button>\n }\n </mat-card-actions>\n }\n</mat-card>\n","export enum REPORT_FORMAT {\n PDF = 'pdf',\n EXCEL = 'excel',\n WORD = 'word',\n IMAGE = 'image',\n XML = 'xml',\n CSV = 'csv',\n MHTML = 'mhtml',\n HTML = 'html',\n}\n","import { Component, input, output, ViewEncapsulation } from '@angular/core';\nimport { MatButton, MatFabButton, MatIconButton, MatMiniFabButton } from '@angular/material/button';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { ButtonType, ButtonVariant, MaterialButtonStyle } from '../../types/button-type';\nimport { REPORT_FORMAT } from '../../enums';\n\n@Component({\n selector: 'acp-button',\n imports: [\n MatButton,\n NgClass,\n MatIcon,\n MatMiniFabButton,\n MatIconButton,\n MatFabButton,\n NgTemplateOutlet,\n ],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class Button {\n variant = input<ButtonVariant>('primary');\n text = input<string>('');\n icon = input<string>('');\n disabled = input<boolean>(false);\n type = input<ButtonType>('button');\n matStyle = input<MaterialButtonStyle>('elevated');\n customClass = input<string | undefined>();\n\n // Report format support - automatically sets icon and variant based on report type\n reportFormat = input<REPORT_FORMAT | undefined>();\n\n extended = input<boolean>(false); // For extended FAB\n title = input<string>('');\n ariaLabel = input<string>('');\n name = input<string>('');\n id = input<string>('');\n form = input<string>('');\n tabIndex = input<number>(0);\n testId = input<string>('');\n\n handleClick = output<unknown>();\n\n /**\n * Gets the icon to display. If reportFormat is provided and no explicit icon is set,\n * returns the appropriate icon for the report format.\n */\n getIcon(): string {\n const explicitIcon = this.icon();\n if (explicitIcon) {\n return explicitIcon;\n }\n\n const format = this.reportFormat();\n if (format) {\n return this.getReportIcon(format);\n }\n\n return '';\n }\n\n /**\n * Gets the variant to use. If reportFormat is provided and variant is still 'primary' (default),\n * returns the appropriate variant for the report format.\n */\n getVariant(): ButtonVariant {\n const format = this.reportFormat();\n const currentVariant = this.variant();\n\n // Only auto-apply report variant if user hasn't explicitly set a variant\n if (format && currentVariant === 'primary') {\n return this.getReportVariant(format);\n }\n\n return currentVariant;\n }\n\n /**\n * Gets the title to display. If reportFormat is provided, automatically appends\n * the format name to the title (e.g., \"Export PDF\", \"Download Excel\").\n */\n getTitle(): string {\n const baseTitle = this.title();\n const format = this.reportFormat();\n\n if (format && baseTitle) {\n const formatName = this.getReportFormatName(format);\n return `${baseTitle} - ${formatName}`;\n }\n\n if (format && !baseTitle) {\n return this.getReportFormatName(format);\n }\n\n return baseTitle;\n }\n\n /**\n * Maps report format to appropriate icon\n */\n private getReportIcon(format: REPORT_FORMAT): string {\n switch (format) {\n case REPORT_FORMAT.PDF:\n return 'picture_as_pdf';\n case REPORT_FORMAT.EXCEL:\n return 'table_view';\n case REPORT_FORMAT.WORD:\n return 'description';\n case REPORT_FORMAT.IMAGE:\n return 'image';\n case REPORT_FORMAT.XML:\n return 'code';\n case REPORT_FORMAT.CSV:\n return 'grid_on';\n case REPORT_FORMAT.MHTML:\n return 'web';\n case REPORT_FORMAT.HTML:\n return 'html';\n default:\n return 'download';\n }\n }\n\n /**\n * Maps report format to appropriate button variant/color\n */\n private getReportVariant(format: REPORT_FORMAT): ButtonVariant {\n switch (format) {\n case REPORT_FORMAT.PDF:\n return 'danger';\n case REPORT_FORMAT.EXCEL:\n case REPORT_FORMAT.CSV:\n return 'success';\n case REPORT_FORMAT.WORD:\n return 'primary';\n case REPORT_FORMAT.IMAGE:\n case REPORT_FORMAT.HTML:\n return 'info';\n case REPORT_FORMAT.XML:\n return 'warning';\n case REPORT_FORMAT.MHTML:\n return 'secondary';\n default:\n return 'secondary';\n }\n }\n\n /**\n * Maps report format to human-readable name\n */\n private getReportFormatName(format: REPORT_FORMAT): string {\n switch (format) {\n case REPORT_FORMAT.PDF:\n return 'PDF';\n case REPORT_FORMAT.EXCEL:\n return 'Excel';\n case REPORT_FORMAT.WORD:\n return 'Word';\n case REPORT_FORMAT.IMAGE:\n return 'Image';\n case REPORT_FORMAT.XML:\n return 'XML';\n case REPORT_FORMAT.CSV:\n return 'CSV';\n case REPORT_FORMAT.MHTML:\n return 'MHTML';\n case REPORT_FORMAT.HTML:\n return 'HTML';\n default:\n return 'File';\n }\n }\n\n getButtonClasses(): Record<string, boolean> {\n const classes: Record<string, boolean> = {\n [`mat-btn-${this.getVariant()}`]: true,\n };\n const customClass = this.customClass();\n if (customClass) {\n classes[customClass] = true;\n }\n return classes;\n }\n\n getDisplayText(): string {\n const style = this.matStyle();\n if (style === 'icon' || style === 'fab' || style === 'mini-fab') {\n return '';\n }\n return this.text();\n }\n}\n","@switch (matStyle()) { @case ('text') {\n<button\n matButton\n [ngClass]=\"getButtonClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [title]=\"getTitle()\"\n [attr.aria-label]=\"ariaLabel() || getTitle()\"\n [attr.name]=\"name()\"\n [attr.id]=\"id()\"\n [attr.form]=\"form()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"testId()\"\n (click)=\"handleClick.emit($event)\"\n>\n <ng-container [ngTemplateOutlet]=\"buttonContent\" />\n</button>\n} @case ('elevated') {\n<button\n matButton=\"elevated\"\n [ngClass]=\"getButtonClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [title]=\"getTitle()\"\n [attr.aria-label]=\"ariaLabel() || getTitle()\"\n [attr.name]=\"name()\"\n [attr.id]=\"id()\"\n [attr.form]=\"form()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"testId()\"\n (click)=\"handleClick.emit($event)\"\n>\n <ng-container [ngTemplateOutlet]=\"buttonContent\" />\n</button>\n} @case ('outlined') {\n<button\n matButton=\"outlined\"\n [ngClass]=\"getButtonClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [title]=\"getTitle()\"\n [attr.aria-label]=\"ariaLabel() || getTitle()\"\n [attr.name]=\"name()\"\n [attr.id]=\"id()\"\n [attr.form]=\"form()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"testId()\"\n (click)=\"handleClick.emit($event)\"\n>\n <ng-container [ngTemplateOutlet]=\"buttonContent\" />\n</button>\n} @case ('tonal') {\n<button\n matButton=\"tonal\"\n [ngClass]=\"getButtonClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [title]=\"getTitle()\"\n [attr.aria-label]=\"ariaLabel() || getTitle()\"\n [attr.name]=\"name()\"\n [attr.id]=\"id()\"\n [attr.form]=\"form()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"testId()\"\n (click)=\"handleClick.emit($event)\"\n>\n <ng-container [ngTemplateOutlet]=\"buttonContent\" />\n</button>\n} @case ('icon') {\n<button\n matIconButton\n [ngClass]=\"getButtonClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [title]=\"getTitle()\"\n [attr.aria-label]=\"ariaLabel() || getTitle()\"\n [attr.name]=\"name()\"\n [attr.id]=\"id()\"\n [attr.form]=\"form()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"testId()\"\n (click)=\"handleClick.emit($event)\"\n>\n <ng-container [ngTemplateOutlet]=\"buttonContent\" />\n</button>\n} @case ('fab') {\n<button\n matFab\n [ngClass]=\"getButtonClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [title]=\"getTitle()\"\n [attr.aria-label]=\"ariaLabel() || getTitle()\"\n [attr.name]=\"name()\"\n [attr.id]=\"id()\"\n [attr.form]=\"form()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"testId()\"\n (click)=\"handleClick.emit($event)\"\n>\n <ng-container [ngTemplateOutlet]=\"buttonContent\" />\n</button>\n} @case ('mini-fab') {\n<button\n matMiniFab\n [ngClass]=\"getButtonClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [title]=\"getTitle()\"\n [attr.aria-label]=\"ariaLabel() || getTitle()\"\n [attr.name]=\"name()\"\n [attr.id]=\"id()\"\n [attr.form]=\"form()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"testId()\"\n (click)=\"handleClick.emit($event)\"\n>\n <ng-container [ngTemplateOutlet]=\"buttonContent\" />\n</button>\n} @case ('extended-fab') {\n<button\n matFab\n extended\n [ngClass]=\"getButtonClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [title]=\"getTitle()\"\n [attr.aria-label]=\"ariaLabel() || getTitle()\"\n [attr.name]=\"name()\"\n [attr.id]=\"id()\"\n [attr.form]=\"form()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"testId()\"\n (click)=\"handleClick.emit($event)\"\n>\n <ng-container [ngTemplateOutlet]=\"buttonContent\" />\n</button>\n} @default {\n<button\n matButton=\"filled\"\n [ngClass]=\"getButtonClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [title]=\"getTitle()\"\n [attr.aria-label]=\"ariaLabel() || getTitle()\"\n [attr.name]=\"name()\"\n [attr.id]=\"id()\"\n [attr.form]=\"form()\"\n [attr.tabindex]=\"tabIndex()\"\n [attr.data-testid]=\"testId()\"\n (click)=\"handleClick.emit($event)\"\n>\n <ng-container [ngTemplateOutlet]=\"buttonContent\" />\n</button>\n} }\n\n<ng-template #buttonContent>\n @if (getIcon()) {\n <mat-icon>{{ getIcon() }}</mat-icon>\n } @if (getDisplayText()) { {{ getDisplayText() }} }\n\n <ng-content />\n</ng-template>\n","import {\n Component,\n ViewContainerRef,\n AfterViewInit,\n ElementRef,\n ChangeDetectionStrategy,\n inject,\n viewChild,\n OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { MAT_DIALOG_DATA, MatDialogRef, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DialogWrapperConfig } from '../../services';\nimport { Button } from '../button';\n\n/**\n * A wrapper component for Angular Material dialogs that provides a consistent look and feel,\n * including a draggable header and the ability to dynamically create components inside the dialog.\n *\n * This component is typically used with the AdvancedDialogService's openInWrapper method.\n *\n * @example\n * // In your service or component:\n * this.dialogService.openInWrapper({\n * component: YourDialogContentComponent,\n * title: 'Dialog Title',\n * icon: 'info',\n * data: { message: 'This is some data passed to the dialog content component' }\n * });\n */\n@Component({\n selector: 'acp-dialog-wrapper',\n standalone: true,\n imports: [CdkDrag, CdkDragHandle, MatDialogModule, MatIconModule, Button],\n templateUrl: './dialog-wrapper.html',\n styleUrls: ['./dialog-wrapper.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DialogWrapper implements AfterViewInit, OnDestroy {\n dialogRef = inject<MatDialogRef<DialogWrapper>>(MatDialogRef);\n config = inject<DialogWrapperConfig>(MAT_DIALOG_DATA);\n\n /**\n * A template reference that acts as an anchor for dynamic content.\n * This is where the component specified in the config will be rendered.\n */\n readonly contentHost = viewChild.required('contentHost', { read: ViewContainerRef });\n\n /**\n * A reference to the header element for the z-index focus logic.\n * Used to bring the dialog to the front when clicked.\n */\n readonly header = viewChild<ElementRef>('dialogHeader');\n\n /**\n * Static counter to track the highest z-index for multiple dialogs.\n * Ensures that the most recently clicked dialog appears on top.\n */\n private static lastZIndex = 1000;\n\n /**\n * Timeout ID for debouncing z-index updates to prevent excessive DOM manipulations.\n */\n private bringToFrontTimeoutId: number | null = null;\n\n /**\n * Creates an instance of DialogWrapper.\n *\n * @param dialogRef Reference to the dialog opened via the Material Dialog service\n * @param config Configuration for the dialog wrapper, injected from MAT_DIALOG_DATA\n */\n constructor() {\n // Constructor intentionally empty - required by Angular DI\n }\n\n /**\n * Lifecycle hook that initializes the dynamic content after the view is ready.\n * Creates the component specified in the config and passes data to it.\n */\n ngAfterViewInit(): void {\n // Dynamically create the content component after the view is ready.\n this.contentHost().clear();\n const componentRef = this.contentHost().createComponent(this.config.component);\n\n // Pass the provided data directly to the new component's instance.\n // This requires the content component to have an @Input() property named 'data'.\n if (this.config.data && componentRef.instance) {\n (componentRef.instance as any).data = this.config.data;\n }\n }\n\n /**\n * Cleanup lifecycle hook to cancel any pending animation frame requests.\n */\n ngOnDestroy(): void {\n if (this.bringToFrontTimeoutId !== null) {\n cancelAnimationFrame(this.bringToFrontTimeoutId);\n this.bringToFrontTimeoutId = null;\n }\n }\n\n /**\n * Closes the dialog.\n * Called when the close button in the header is clicked.\n */\n onClose(): void {\n this.dialogRef.close();\n }\n\n /**\n * Brings the dialog to the front by adjusting its z-index.\n * Uses requestAnimationFrame to debounce updates and prevent excessive DOM manipulations.\n * Called when the dialog header is clicked.\n */\n bringToFront(): void {\n // Clear any pending update\n if (this.bringToFrontTimeoutId !== null) {\n cancelAnimationFrame(this.bringToFrontTimeoutId);\n }\n\n // Schedule the z-index update for the next animation frame\n this.bringToFrontTimeoutId = requestAnimationFrame(() => {\n const pane = this.header()?.nativeElement.closest('.cdk-overlay-pane') as HTMLElement;\n if (pane) {\n pane.style.zIndex = (++DialogWrapper.lastZIndex).toString();\n }\n this.bringToFrontTimeoutId = null;\n });\n }\n}\n","@if (!config.hideHeader) {\n<div\n class=\"acp-dialog-header\"\n cdkDrag\n cdkDragRootElement=\".cdk-overlay-pane\"\n cdkDragHandle\n #dialogHeader\n (mousedown)=\"bringToFront()\"\n>\n <h6 mat-dialog-title class=\"acp-dialog-title\">\n @if (config.icon) {\n <mat-icon class=\"acp-dialog-title-icon\" aria-hidden=\"true\">{{ config.icon }}</mat-icon>\n }\n <span>{{ config.title }}</span>\n @if (config.showCloseButton !== false) {\n <acp-button\n [customClass]=\"'acp-dialog-close-btn'\"\n matStyle=\"icon\"\n icon=\"close\"\n (handleClick)=\"onClose()\"\n ariaLabel=\"Close Dialog\"\n />\n }\n </h6>\n</div>\n}\n\n<ng-template #contentHost />\n","import { Component, input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'acp-user-icon',\n imports: [],\n templateUrl: './user-icon.html',\n styleUrl: './user-icon.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserIcon {\n size = input('35');\n}\n","<svg\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n version=\"1.1\"\n id=\"Capa_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 480 480\"\n xml:space=\"preserve\"\n fill=\"#000000\"\n>\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <g>\n <g>\n <circle style=\"fill: #b8bac0\" cx=\"240\" cy=\"240\" r=\"240\"></circle>\n </g>\n <g>\n <g>\n <path\n style=\"fill: #ffffff\"\n d=\"M240,360.07c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611 c2.02,1.235,3.588,3.262,3.894,5.784c3.992,32.484,34.781,56.977,71.625,56.977c36.836,0,67.625-24.496,71.625-56.977 c0.31-2.525,1.844-4.549,3.895-5.78c-3.08-12.233-3.503-28.999-3.517-40.615C293.297,348.079,267.944,360.07,240,360.07z\"\n ></path>\n </g>\n </g>\n <g>\n <g>\n <path\n style=\"fill: #d7dbe0\"\n d=\"M310.44,330.174c-18.549,18.477-43.242,29.896-70.44,29.896 c-27.944,0-53.297-11.991-72.003-31.372c-0.014,11.615-0.436,28.379-3.516,40.611c2.02,1.235,3.588,3.262,3.894,5.784 c1.765,14.359,8.778,27.144,19.223,36.954C235.766,405.265,290.437,357.702,310.44,330.174z\"\n ></path>\n </g>\n </g>\n <g>\n <g>\n <path\n style=\"fill: #ffffff\"\n d=\"M312,160.07H176c-22.055,0-40,17.945-40,40v48c0,61.758,46.656,112,104,112s104-50.242,104-112 v-56C344,174.426,329.648,160.07,312,160.07z\"\n ></path>\n </g>\n </g>\n <g>\n <g>\n <path\n style=\"fill: #5c546a\"\n d=\"M296,72.07H192c-15.047,0-27.695,10.438-31.102,24.449C133.359,100.02,112,123.598,112,152.07v40 c0,20.617,8.752,39.851,24,53.52v-45.52c0-22.055,17.945-40,40-40h136c17.648,0,32,14.355,32,32v53.511 c15.251-13.667,24-32.899,24-53.511v-48C368,104.371,335.703,72.07,296,72.07z\"\n ></path>\n </g>\n </g>\n <g>\n <path\n style=\"fill: #5c546a\"\n d=\"M61.632,400.544C105.562,449.319,169.191,480,240,480s134.438-30.681,178.368-79.456 c-7.66-10.356-18.462-18.77-32.352-22.659c-0.32-0.09-0.641-0.16-0.969-0.207l-63.859-9.582c-0.391-0.059-1.227-0.09-1.625-0.09 c-4.039,0-7.445,3.012-7.938,7.023c-4,32.48-34.789,56.977-71.625,56.977c-36.844,0-67.633-24.492-71.625-56.977 c-0.5-4.129-4.219-7.234-8.141-7.02c-0.469-0.027-0.93,0.012-1.422,0.086l-63.859,9.582c-0.328,0.047-0.648,0.117-0.969,0.207 C80.094,381.775,69.292,390.188,61.632,400.544z\"\n ></path>\n </g>\n </g>\n </g>\n</svg>\n","import { Component, input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'acp-svg-icon',\n imports: [],\n templateUrl: './svg-icon.html',\n styleUrl: './svg-icon.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class SvgIcon {\n id = input('');\n width = input('40px');\n height = input('40px');\n color = input('#414141');\n}\n","<svg [attr.width]=\"width()\" [attr.height]=\"height()\" [style.color]=\"color()\">\n <use [attr.xlink:href]=\"'./svg-sprite.svg#' + id()\"></use>\n</svg>\n","import { Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport {\n MatChipEditedEvent,\n MatChipGrid,\n MatChipInput,\n MatChipInputEvent,\n MatChipRow,\n} from '@angular/material/chips';\nimport { MatFormField, MatLabel, MatHint } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\n\n@Component({\n selector: 'acp-input-chip',\n imports: [MatFormField, MatLabel, MatChipRow, MatIcon, MatHint, MatChipGrid, MatChipInput],\n templateUrl: './input-chip.html',\n styleUrl: './input-chip.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class InputChip {\n chips = input.required<string[]>();\n labelText = input.required<string>();\n placelholder = input<string>('');\n addOnBlur = true;\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\n\n announcer = inject(LiveAnnouncer);\n\n add(event: MatChipInputEvent): void {\n const value = (event.value || '').trim();\n\n // Add our fruit\n if (value) {\n this.chips().push(value);\n }\n\n // Clear the input value\n event.chipInput!.clear();\n }\n\n remove(value: string): void {\n const index = this.chips().indexOf(value);\n\n if (index >= 0) {\n this.chips().splice(index, 1);\n\n this.announcer.announce(`Removed ${value}`);\n }\n }\n\n edit(inputRaw: string, event: MatChipEditedEvent) {\n const value = event.value.trim();\n\n // Remove fruit if it no longer has a name\n if (!value) {\n this.remove(inputRaw);\n return;\n }\n\n // Edit existing fruit\n const index = this.chips().indexOf(inputRaw);\n if (index >= 0) {\n this.chips()[index] = value.replace(/\\s+/g, '');\n }\n }\n}\n","<mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>{{ labelText() }}</mat-label>\n <mat-chip-grid #chipGrid aria-label=\"Enter fruits\">\n @for (chip of chips(); track $index) {\n <mat-chip-row\n (removed)=\"remove(chip)\"\n [editable]=\"true\"\n (edited)=\"edit(chip, $event)\"\n [aria-description]=\"'press enter to edit ' + chip\"\n >\n {{ chip }}\n <button matChipRemove [attr.aria-label]=\"'remove ' + chip\">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n <input\n [placeholder]=\"placelholder()\"\n [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"addOnBlur\"\n (matChipInputTokenEnd)=\"add($event)\"\n />\n </mat-chip-grid>\n <mat-hint align=\"start\"><strong>Ingrese {{ labelText() }} y dale \"Enter\"</strong> </mat-hint>\n</mat-form-field>\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'acp-spinner',\n imports: [MatProgressSpinner],\n templateUrl: './spinner.html',\n styleUrl: './spinner.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class Spinner {}\n","<div class=\"acp-spinner\">\n <mat-spinner />\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'getTotal',\n standalone: true,\n})\nexport class GetTotalPipe implements PipeTransform {\n transform(colName: string, dataSource: any[]): any {\n return this.getTotal(colName, dataSource) || '';\n }\n\n /**\n * Calculate and return the total (sum) of all the column --> the column must be number\n */\n getTotal(colName: string, dataSource: any[]): number {\n const total = dataSource\n .map(row => row[colName])\n .reduce((acc, value) => (value ? acc + Number(value) : acc), 0);\n return total?.toFixed(2);\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { TranslocoService } from '@jsverse/transloco';\n\ntype StatusGender = 'male' | 'female' | 'neutral';\n\ninterface StatusOptions {\n gender?: StatusGender;\n showIcon?: boolean;\n customActiveText?: string;\n customInactiveText?: string;\n textClass?: string;\n iconClass?: string;\n}\n\ntype TranslationKey =\n | 'status.active'\n | 'status.inactive'\n | 'status.active.male'\n | 'status.active.female'\n | 'status.inactive.male'\n | 'status.inactive.female';\n\n@Pipe({\n name: 'statusDisplay',\n})\nexport class StatusDisplayPipe implements PipeTransform {\n private sanitizer = inject(DomSanitizer);\n private transloco = inject(TranslocoService, { optional: true });\n\n transform(isActive: boolean, options: StatusOptions = {}): SafeHtml {\n const {\n gender = 'neutral',\n showIcon = true,\n customActiveText,\n customInactiveText,\n textClass = '',\n iconClass = '',\n } = options;\n\n const text = this.getStatusText(isActive, gender, customActiveText, customInactiveText);\n const icon = isActive ? 'check_circle' : 'cancel';\n const colorClass = isActive ? 'text-green-500' : 'text-red-500';\n const combinedIconClass = `${colorClass} align-middle mr-1 ${iconClass}`.trim();\n const combinedTextClass = `align-middle ${textClass}`.trim();\n\n let html = '';\n\n if (showIcon) {\n html += `<mat-icon class=\"${combinedIconClass}\" fontIcon=\"${icon}\"></mat-icon>`;\n }\n\n html += `<span class=\"${combinedTextClass}\">${text}</span>`;\n\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n private getStatusText(\n isActive: boolean,\n gender: StatusGender,\n customActive?: string,\n customInactive?: string,\n ): string {\n if (customActive && isActive) return customActive;\n if (customInactive && !isActive) return customInactive;\n if (!this.transloco) return this.getFallbackText(isActive, gender);\n\n const translationKey = this.getTranslationKey(isActive, gender);\n const translation = this.transloco.translate(translationKey);\n\n return translation !== translationKey ? translation : this.getFallbackText(isActive, gender);\n }\n\n private getTranslationKey(isActive: boolean, gender: StatusGender): TranslationKey {\n const base = isActive ? 'status.active' : 'status.inactive';\n return gender !== 'neutral'\n ? (`${base}.${gender}` as TranslationKey)\n : (base as TranslationKey);\n }\n\n private getFallbackText(isActive: boolean, gender: StatusGender): string {\n const lang = this.transloco?.getActiveLang() || 'en';\n const isSpanish = lang.startsWith('es');\n\n if (!isSpanish) {\n return isActive ? 'Active' : 'Inactive';\n }\n\n if (isActive) {\n return gender === 'female' ? 'Activa' : 'Activo';\n } else {\n return gender === 'female' ? 'Inactiva' : 'Inactivo';\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewContainerRef,\n ComponentRef,\n EmbeddedViewRef,\n input,\n output,\n contentChildren,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n MatColumnDef,\n MatFooterRowDef,\n MatHeaderRowDef,\n MatRowDef,\n MatTable,\n MatTableDataSource,\n MatTableModule,\n} from '@angular/material/table';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\n\nimport { DatePipe, DecimalPipe, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSortModule } from '@angular/material/sort';\nimport { GetTotalPipe } from '../../../pipes';\nimport { ColumnDefinition, Pagination, TableContext, TableRow } from '../../../models';\n\n@Component({\n selector: 'acp-dynamic-table',\n standalone: true,\n imports: [\n MatTableModule,\n MatCheckboxModule,\n MatSortModule,\n MatIconModule,\n MatButtonModule,\n MatPaginatorModule,\n NgClass,\n NgStyle,\n GetTotalPipe,\n DatePipe,\n DecimalPipe,\n NgTemplateOutlet,\n ],\n templateUrl: './dynamic-table.html',\n styleUrl: './dynamic-table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DynamicTable<T extends TableRow>\n implements AfterContentInit, OnChanges, OnInit, OnDestroy\n{\n private componentRefs: ComponentRef<unknown>[] = [];\n private embeddedViews: EmbeddedViewRef<unknown>[] = [];\n private cdr = inject(ChangeDetectorRef);\n\n readonly showExpand = input(false);\n readonly showFooter = input(false);\n readonly locale = input('en-US');\n readonly highlightRowIndex = input(0);\n @Input() visibleColumns: string[] = [];\n @Input() columnDefinitions: ColumnDefinition<T>[] = [];\n readonly showSelectBox = input(false);\n readonly multipleSelection = input(true);\n readonly tableData = input<T[]>([]);\n readonly rowTemplate = input<TemplateRef<TableContext<T>> | null>(null);\n @Input() expandedDetail: TemplateRef<TableContext<T>> | null = null;\n readonly enablePagination = input(false);\n @Input() paginationConfig: Pagination | null = null;\n readonly isLoadingData = input(false);\n\n readonly rowSelected = output<T[]>();\n readonly copyRow = output<T>();\n readonly showExpanded = output<T>();\n readonly hideExpanded = output<T>();\n readonly pageEvent = output<PageEvent>();\n\n isNormalRow = (_: number, row: T) => this.expandedElement !== row;\n isExpandedRow = (_: number, row: T) => this.expandedElement === row;\n\n dataSource = new MatTableDataSource<T>([]);\n selection = new SelectionModel<T>(true, []);\n expandedElement: T | null = null;\n columnsToDisplayWithExpand: string[] = [];\n\n readonly headerRowDefs = contentChildren(MatHeaderRowDef);\n readonly rowDefs = contentChildren(MatRowDef);\n readonly footerRowDefs = contentChildren(MatFooterRowDef);\n readonly columnDefs = contentChildren(MatColumnDef);\n\n readonly table = viewChild.required(MatTable);\n readonly rows = contentChildren(ViewContainerRef);\n\n ngOnInit(): void {\n this.updateColumnsToDisplay();\n this.initializeSelection();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['tableData']) {\n this.updateTableData();\n }\n\n if (changes['showExpand'] || changes['visibleColumns'] || changes['columnDefinitions']) {\n this.updateColumnsToDisplay();\n }\n\n // Trigger change detection for OnPush strategy\n this.cdr.markForCheck();\n }\n\n ngAfterContentInit(): void {\n this.registerTableContent();\n this.initializeTable();\n this.cdr.markForCheck();\n }\n\n ngOnDestroy(): void {\n this.cleanupDynamicComponents();\n }\n\n private updateTableData(): void {\n // Clear selection when new data arrives\n this.selection.clear();\n\n // Update data source\n this.dataSource.data = this.tableData() || [];\n\n // Reset expanded element if it's no longer in the new data\n if (this.expandedElement && !this.dataSource.data.includes(this.expandedElement)) {\n this.expandedElement = null;\n }\n\n // Trigger change detection\n this.cdr.markForCheck();\n }\n\n private updateColumnsToDisplay(): void {\n if (!this.visibleColumns.length && this.columnDefinitions) {\n this.visibleColumns = this.columnDefinitions.map(col => col.key);\n this.columnDefinitions.forEach((col, index) => (col.index = index));\n }\n\n const newColumns: string[] = [...this.visibleColumns];\n\n if (this.showSelectBox() && !newColumns.includes('select')) {\n newColumns.unshift('select');\n }\n\n if (this.showExpand() && this.expandedDetail) {\n if (!this.columnDefinitions?.some(col => col.key === 'expand')) {\n this.columnDefinitions = [\n ...(this.columnDefinitions || []),\n {\n key: 'expand',\n label: '',\n type: 'expand',\n index: this.columnDefinitions?.length || 0,\n },\n ];\n }\n\n if (!newColumns.includes('expand')) {\n newColumns.push('expand');\n }\n }\n\n this.columnsToDisplayWithExpand = newColumns;\n }\n\n private initializeSelection(): void {\n this.selection = new SelectionModel<T>(this.multipleSelection(), []);\n }\n\n private registerTableContent(): void {\n this.columnDefs().forEach(columnDef => this.table().addColumnDef(columnDef));\n this.rowDefs().forEach(rowDef => this.table().addRowDef(rowDef));\n this.headerRowDefs().forEach(headerRowDef => this.table().addHeaderRowDef(headerRowDef));\n\n if (this.showFooter()) {\n this.footerRowDefs().forEach(footerRowDef => this.table().addFooterRowDef(footerRowDef));\n } else {\n this.footerRowDefs().forEach(footerRowDef => this.table().removeFooterRowDef(footerRowDef));\n }\n }\n\n private initializeTable(): void {\n this.dataSource = new MatTableDataSource<T>(this.tableData() || []);\n }\n\n private cleanupDynamicComponents(): void {\n this.componentRefs.forEach(ref => ref.destroy());\n this.embeddedViews.forEach(view => view.destroy());\n }\n\n isAllSelected(): boolean {\n const numSelected = this.selection.selected.length;\n const selectableRows = this.dataSource.data.filter(row => !row.disableSelection);\n return numSelected === selectableRows.length && selectableRows.length > 0;\n }\n\n masterToggle(): void {\n if (!this.multipleSelection()) return;\n\n if (this.isAllSelected()) {\n this.selection.clear();\n } else {\n this.dataSource.data\n .filter(row => !row.disableSelection)\n .forEach(row => this.selection.select(row));\n }\n this.rowSelected.emit(this.selection.selected);\n this.cdr.markForCheck();\n }\n\n checkboxLabel(row?: T): string {\n if (!row) {\n return `${this.isAllSelected() ? 'deselect' : 'select'} all`;\n }\n return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row`;\n }\n\n selectRow(row: T): void {\n if (row.disableSelection) return;\n this.selection.toggle(row);\n this.rowSelected.emit(this.selection.selected);\n this.cdr.markForCheck();\n }\n\n onExpand(event: Event, element: T): void {\n event.stopPropagation();\n this.expandedElement = this.expandedElement === element ? null : element;\n if (this.expandedElement) {\n this.showExpanded.emit(element);\n } else {\n this.hideExpanded.emit(element);\n }\n this.cdr.markForCheck();\n }\n\n getRowStyle(element: T): Record<string, string> {\n return element.rowStyle || {};\n }\n\n handlePageEvent(e: PageEvent): void {\n this.pageEvent.emit(e);\n }\n}\n","<div class=\"acp-dynamic-table\">\n <div class=\"acp-table-container small-table\">\n <table #sort=\"matSort\" [dataSource]=\"dataSource.data\" mat-table matSort>\n @if (columnDefinitions) {\n <!-- Checkbox Column -->\n @if (showSelectBox()) {\n <ng-container matColumnDef=\"select\">\n <th *matHeaderCellDef mat-header-cell>\n @if (multipleSelection()) {\n <mat-checkbox\n (change)=\"$event ? masterToggle() : null\"\n (click)=\"$event.stopPropagation()\"\n [aria-label]=\"checkboxLabel()\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n />\n }\n </th>\n <td *matCellDef=\"let row\" mat-cell>\n <mat-checkbox\n (change)=\"$event ? selectRow(row) : null\"\n (click)=\"$event.stopPropagation()\"\n [aria-label]=\"checkboxLabel(row)\"\n [checked]=\"selection.isSelected(row)\"\n [disabled]=\"row.disableSelection\"\n />\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n }\n\n <!-- Dynamic Columns -->\n @for (col of columnDefinitions; track col.key) {\n <ng-container [matColumnDef]=\"col.key\">\n <th *matHeaderCellDef mat-header-cell>{{ col.label }}</th>\n\n <td\n mat-cell\n *matCellDef=\"let element; let i = index\"\n [ngClass]=\"{ highlighted: highlightRowIndex() === i }\"\n >\n @if (col.key === 'op') {\n <div class=\"d-flex flex-row gap-1\">\n @if (col.templateOutlet) {\n <ng-container\n *ngTemplateOutlet=\"\n col.templateOutlet;\n context: { $implicit: element, index: i }\n \"\n />\n } @else if (rowTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"rowTemplate(); context: { $implicit: element, index: i }\"\n />\n }\n </div>\n } @else { @switch (col.type) { @case ('image') {\n <img [src]=\"element[col.key]\" class=\"img-fluid img-thumbnail my-1\" width=\"50\" alt=\"\" />\n } @case ('number') {\n <div>{{ element[col.key] | number: '1.2' : locale() }}</div>\n } @case ('date') {\n <div>{{ element[col.key] | date: 'dd.MM.yyyy' }}</div>\n } @case ('expand') {\n <button mat-icon-button aria-label=\"expand row\" (click)=\"onExpand($event, element)\">\n @if (expandedElement === element) {\n <mat-icon>keyboard_arrow_up</mat-icon>\n } @else {\n <mat-icon>keyboard_arrow_down</mat-icon>\n }\n </button>\n } @case ('template') {\n <ng-container\n *ngTemplateOutlet=\"\n col.templateOutlet;\n context: { $implicit: element, index: i }\n \"\n />\n } @case ('custom') {\n <ng-container #dynamicContent />\n } @default {\n <div>{{ element[col.key] }}</div>\n } } }\n </td>\n\n <td *matFooterCellDef mat-footer-cell>\n @if (col.index === 0) {\n <div>Total</div>\n } @if (col.hasFooter) {\n <div>{{ col.key | getTotal: dataSource.data }}</div>\n }\n </td>\n </ng-container>\n }\n\n <!-- Expanded Detail Row -->\n @if (showExpand() && expandedDetail) {\n <ng-container matColumnDef=\"expandedDetail\">\n <td\n mat-cell\n *matCellDef=\"let element; let i = index\"\n [attr.colspan]=\"columnsToDisplayWithExpand.length\"\n >\n <div class=\"m-0 p-0 acp-detail-expand\" [class.acp-expanded]=\"element === expandedElement\">\n <ng-container\n *ngTemplateOutlet=\"expandedDetail; context: { $implicit: element, index: i }\"\n />\n </div>\n </td>\n </ng-container>\n }\n\n <!-- Header Row -->\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplayWithExpand\"></tr>\n\n <!-- Data Rows -->\n @if (showExpand() && expandedDetail) {\n <!-- Regular Row -->\n <tr\n mat-row\n *matRowDef=\"let row; columns: columnsToDisplayWithExpand; when: isNormalRow\"\n class=\"acp-dynamic-table-row\"\n [class.acp-dynamic-table-expanded-row]=\"expandedElement === row\"\n [ngStyle]=\"getRowStyle(row)\"\n (click)=\"expandedElement = expandedElement === row ? null : row\"\n ></tr>\n\n <!-- Expanded Row -->\n <tr\n mat-row\n *matRowDef=\"let row; columns: ['expandedDetail']; when: isExpandedRow\"\n class=\"acp-dynamic-table-detail-row\"\n ></tr>\n } @else {\n <!-- Regular Row without expansion -->\n <tr\n mat-row\n *matRowDef=\"let row; columns: columnsToDisplayWithExpand\"\n [ngStyle]=\"getRowStyle(row)\"\n ></tr>\n }\n\n <!-- No Data Row -->\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell text-center\" [attr.colspan]=\"columnsToDisplayWithExpand.length\">\n No records found\n </td>\n </tr>\n\n <!-- Footer -->\n @if (showFooter() && dataSource.data.length > 0) {\n <tr mat-footer-row *matFooterRowDef=\"columnsToDisplayWithExpand\"></tr>\n } }\n </table>\n </div>\n\n @if (enablePagination() && paginationConfig) {\n <mat-paginator\n #paginator\n [disabled]=\"isLoadingData()\"\n (page)=\"handlePageEvent($event)\"\n [length]=\"paginationConfig.totalRecords\"\n [pageSize]=\"paginationConfig.pageSize\"\n [pageSizeOptions]=\"paginationConfig.pageSizeOptions || []\"\n [showFirstLastButtons]=\"paginationConfig.showFirstLastButtons\"\n [pageIndex]=\"paginationConfig.pageIndex\"\n [hidePageSize]=\"paginationConfig.hidePageSize\"\n [disabled]=\"paginationConfig.disabled\"\n aria-label=\"Select page\"\n />\n }\n</div>\n","// tabulator-table.ts\nimport {\n AfterViewInit,\n Component,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewEncapsulation,\n input,\n output,\n} from '@angular/core';\n\nimport { Tabulator, PageModule, ReactiveDataModule } from 'tabulator-tables';\nimport { TabulatorTheme } from '../../../types';\n\nTabulator.registerModule([PageModule, ReactiveDataModule]);\n\n@Component({\n selector: 'acp-tabulator-table',\n standalone: true,\n imports: [],\n templateUrl: './tabulator-table.html',\n styleUrls: ['./tabulator-table.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TabulatorTable implements OnChanges, AfterViewInit, OnDestroy {\n // Data inputs\n readonly data = input<any[]>([]);\n readonly columns = input<any[]>([]);\n\n // Layout inputs\n readonly height = input<string | number | false>('400px');\n readonly layout = input<'fitData' | 'fitColumns' | 'fitDataFill' | 'fitDataStretch'>('fitData');\n\n // Tree structure inputs\n readonly dataTree = input(false);\n readonly dataTreeChildField = input('children');\n readonly dataTreeStartExpanded = input(false);\n readonly dataTreeSelectPropagate = input(false);\n\n // Behavior inputs\n readonly selectable = input(true);\n readonly reactiveData = input(true);\n readonly placeholder = input('No data available');\n readonly autoResize = input(true);\n\n // Theme configuration\n readonly theme = input<TabulatorTheme>({ name: 'default' });\n\n // Custom styling\n readonly customClass = input('');\n readonly rowFormatter = input<(row: any) => void | null>();\n\n // Custom options\n readonly options = input<Record<string, any>>({});\n\n // Events\n readonly cellEdited = output<any>();\n readonly rowClick = output<any>();\n readonly rowSelected = output<any>();\n readonly tableReady = output<Tabulator>();\n\n private _tabulator!: Tabulator;\n\n // Made public for template access\n public containerId = `acp-tabulator-table-${Math.random().toString(36).substr(2, 9)}`;\n\n ngAfterViewInit(): void {\n this.initializeTable();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data'] && !changes['data'].isFirstChange()) {\n this.updateData();\n }\n\n if (changes['columns'] && !changes['columns'].isFirstChange()) {\n this.updateColumns();\n }\n\n if (changes['theme'] && !changes['theme'].isFirstChange()) {\n this.applyTheme();\n }\n\n if (changes['customClass'] && !changes['customClass'].isFirstChange()) {\n this.applyCustomClass(changes['customClass'].previousValue, this.customClass());\n }\n\n if (changes['rowFormatter'] && !changes['rowFormatter'].isFirstChange()) {\n this.updateRowFormatter();\n }\n }\n\n ngOnDestroy(): void {\n this.destroyTable();\n }\n\n private initializeTable(): void {\n if (this._tabulator) {\n this.destroyTable();\n }\n\n const container = document.getElementById(this.containerId);\n if (!container) {\n console.warn('Tabulator container not found');\n return;\n }\n\n const config: any = {\n data: this.data(),\n columns: this.columns(),\n height: this.height(),\n layout: this.layout(),\n dataTree: this.dataTree(),\n dataTreeChildField: this.dataTreeChildField(),\n dataTreeStartExpanded: this.dataTreeStartExpanded(),\n dataTreeSelectPropagate: this.dataTreeSelectPropagate(),\n reactiveData: this.reactiveData(),\n placeholder: this.placeholder(),\n autoResize: this.autoResize(),\n selectable: this.selectable(),\n renderVertical: 'virtual',\n renderVerticalBuffer: 300,\n rowFormatter: this.getRowFormatter(),\n ...this.options(),\n };\n\n try {\n this._tabulator = new Tabulator(container, config);\n this.applyTheme();\n this.registerEvents();\n this.tableReady.emit(this._tabulator);\n } catch (error) {\n console.error('Error initializing Tabulator:', error);\n }\n }\n\n private applyTheme(): void {\n if (this._tabulator) {\n // Tabulator themes are applied via CSS classes on the table element\n const tableElement = this._tabulator.element as HTMLElement;\n\n // Remove existing theme classes\n tableElement.classList.remove(\n 'tabulator-modern',\n 'tabulator-midnight',\n 'tabulator-simple',\n 'tabulator-site',\n 'tabulator-site-dark',\n );\n\n // Add current theme class (skip 'default' as it uses base styles)\n const theme = this.theme();\n if (theme.name !== 'default') {\n tableElement.classList.add(`tabulator-${theme.name}`);\n }\n\n // Apply custom classes\n this.applyCustomClass('', this.customClass());\n }\n }\n\n private applyCustomClass(previousClass: string, newClass: string): void {\n if (this._tabulator) {\n const tableElement = this._tabulator.element as HTMLElement;\n\n // Remove previous custom classes\n if (previousClass) {\n const prevClasses = previousClass.split(' ').filter(cls => cls.trim());\n prevClasses.forEach(cls => tableElement.classList.remove(cls));\n }\n\n // Add new custom classes\n if (newClass) {\n const newClasses = newClass.split(' ').filter(cls => cls.trim());\n newClasses.forEach(cls => tableElement.classList.add(cls));\n }\n }\n }\n\n private registerEvents(): void {\n this._tabulator.on('cellEdited', cell => {\n this.cellEdited.emit(cell);\n });\n\n this._tabulator.on('rowClick', (e, row) => {\n this.rowClick.emit(row);\n });\n\n this._tabulator.on('rowSelected', row => {\n this.rowSelected.emit(row);\n });\n }\n\n private updateData(): void {\n if (this._tabulator) {\n this._tabulator.replaceData(this.data());\n }\n }\n\n private updateColumns(): void {\n if (this._tabulator) {\n this._tabulator.setColumns(this.columns());\n }\n }\n\n private destroyTable(): void {\n if (this._tabulator) {\n this._tabulator.destroy();\n }\n }\n\n private updateRowFormatter(): void {\n if (this._tabulator) {\n this._tabulator.redraw(true);\n }\n }\n\n // Public API methods\n public getInstance(): Tabulator {\n return this._tabulator;\n }\n\n public redraw(): void {\n if (this._tabulator) {\n this._tabulator.redraw();\n }\n }\n\n private getRowFormatter(): (row: any) => void {\n return (row: any) => {\n const data = row.getData();\n const element = row.getElement();\n\n // Apply custom row formatter if provided\n const customFormatter = this.rowFormatter();\n if (customFormatter) {\n customFormatter(row);\n return;\n }\n\n // Apply rowStyle if present in data\n if (data.rowStyle) {\n Object.assign(element.style, data.rowStyle);\n }\n };\n }\n}\n","<div [id]=\"containerId\" class=\"acp-tabulator-table-container\"></div>\n","import { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { firstValueFrom, map } from 'rxjs';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\n\nimport { MatCustomDialogConfig, DialogSize, DialogWrapperConfig } from './dialog.interfaces';\nimport { DialogWrapper } from '../../components/dialog-wrapper/dialog-wrapper';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdvancedDialogService {\n private readonly dialog = inject(MatDialog);\n private readonly overlay = inject(Overlay);\n private readonly breakpointObserver = inject(BreakpointObserver);\n\n // An observable that emits true if the viewport matches mobile dimensions.\n private readonly isMobile$ = this.breakpointObserver\n .observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape])\n .pipe(map(result => result.matches));\n\n /**\n * Main method to open any component in a dialog.\n * This provides maximum flexibility.\n * @param component The component to render.\n * @param config The detailed configuration for the dialog.\n * @returns A MatDialogRef instance.\n */\n async open<T, D = unknown, R = unknown>(\n component: ComponentType<T>,\n config: MatCustomDialogConfig<D> = {},\n ): Promise<MatDialogRef<T, R>> {\n const dialogConfig = await this.buildDialogConfig(config);\n return this.dialog.open<T, D, R>(component, dialogConfig);\n }\n\n /**\n * A powerful helper to open a component inside our standard, branded \"wrapper\".\n * This provides maximum consistency.\n * @param wrapperConfig Configuration for the title, icon, and the content component.\n * @param matDialogConfig Standard MatDialog configuration (size, position, etc.).\n * @returns A MatDialogRef instance pointing to the wrapper.\n */\n async openInWrapper<T, R = unknown>(\n wrapperConfig: DialogWrapperConfig<T>,\n matDialogConfig: MatCustomDialogConfig<T> = {},\n ): Promise<MatDialogRef<DialogWrapper, R>> {\n // Package the wrapper config into the `data` property for the DialogWrapper to consume.\n const configWithWrapperData: MatCustomDialogConfig<DialogWrapperConfig<T>> = {\n ...matDialogConfig,\n data: wrapperConfig,\n } as MatCustomDialogConfig<DialogWrapperConfig<T>>;\n const dialogConfig = await this.buildDialogConfig(configWithWrapperData);\n return this.dialog.open<DialogWrapper, DialogWrapperConfig<T>, R>(DialogWrapper, dialogConfig);\n }\n\n /**\n * Helper to open a dialog and only get an observable of the result.\n */\n async openAndGetResult<T, D = unknown, R = unknown>(\n component: ComponentType<T>,\n config: MatCustomDialogConfig<D> = {},\n ): Promise<R | undefined> {\n const dialogRef = await this.open(component, config);\n return firstValueFrom(dialogRef.afterClosed()) as Promise<R | undefined>;\n }\n\n /**\n * Closes all currently open dialogs.\n */\n closeAll(): void {\n this.dialog.closeAll();\n }\n\n // --- Private Configuration Builder ---\n\n private async buildDialogConfig<D>(\n config: MatCustomDialogConfig<D>,\n ): Promise<MatDialogConfig<D>> {\n const dialogConfig = new MatDialogConfig<D>();\n\n // Asynchronously check for mobile state to prevent memory leaks from dangling subscriptions.\n const isMobile = await firstValueFrom(this.isMobile$);\n\n // Apply fullscreen if 'full' size is set OR if mobile fullscreen is enabled on a mobile device.\n if (config.size === 'full' || (config.isMobileFullScreen && isMobile)) {\n this.applyFullScreenConfig(dialogConfig);\n } else {\n this.applyStandardConfig(dialogConfig, config);\n }\n\n // Apply all other common configurations.\n this.applyCommonConfig(dialogConfig, config);\n\n return dialogConfig;\n }\n\n private applyFullScreenConfig(dialogConfig: MatDialogConfig): void {\n dialogConfig.width = '100vw';\n dialogConfig.height = '100vh';\n dialogConfig.maxWidth = '100vw';\n dialogConfig.panelClass = ['full-screen-dialog'];\n }\n\n private applyStandardConfig<D>(\n dialogConfig: MatDialogConfig<D>,\n config: MatCustomDialogConfig<D>,\n ): void {\n dialogConfig.width = config.width ?? this.getDialogWidth(config.size);\n dialogConfig.height = config.height;\n dialogConfig.minWidth = config.minWidth;\n dialogConfig.maxWidth = config.maxWidth ?? '95vw';\n dialogConfig.maxHeight = config.maxHeight ?? 'auto';\n dialogConfig.position = config.position;\n }\n\n private applyCommonConfig<D>(\n dialogConfig: MatDialogConfig<D>,\n config: MatCustomDialogConfig<D>,\n ): void {\n dialogConfig.data = config.data;\n dialogConfig.hasBackdrop = config.hasBackdrop ?? true;\n dialogConfig.backdropClass = config.backdropClass;\n\n const panelClasses = Array.isArray(config.panelClass)\n ? [...config.panelClass]\n : config.panelClass\n ? [config.panelClass]\n : [];\n if (config.size) {\n panelClasses.push(`dialog-${config.size}`);\n }\n dialogConfig.panelClass = panelClasses;\n\n dialogConfig.disableClose = !(config.backdropClickClosable ?? true);\n // Note: escapeKeyClosable is handled by MatDialog separately and doesn't affect disableClose directly.\n dialogConfig.autoFocus = config.autoFocus ?? 'first-tabbable';\n dialogConfig.scrollStrategy = config.scrollStrategy ?? this.overlay.scrollStrategies.block();\n dialogConfig.enterAnimationDuration = config.enterAnimationDuration ?? '300ms';\n dialogConfig.exitAnimationDuration = config.exitAnimationDuration ?? '200ms';\n dialogConfig.ariaLabel = config.ariaLabel;\n dialogConfig.ariaLabelledBy = config.ariaLabelledBy;\n dialogConfig.ariaDescribedBy = config.ariaDescribedBy;\n dialogConfig.role = config.role;\n }\n\n private getDialogWidth(size: DialogSize = 'md'): string {\n const sizeMap: Record<DialogSize, string> = {\n xs: '320px',\n sm: '450px',\n md: '600px',\n lg: '800px',\n xl: '1000px',\n xxl: '1280px',\n full: '100vw',\n };\n return sizeMap[size];\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Spinner } from '../components/spinner/spinner';\n@Injectable({\n providedIn: 'root',\n})\nexport class OverlayService {\n private readonly overlay = inject(Overlay);\n private overlayRef!: OverlayRef;\n\n showSpinner() {\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n hasBackdrop: true,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n });\n\n const spinnerPortal = new ComponentPortal(Spinner);\n this.overlayRef.attach(spinnerPortal);\n }\n }\n\n hideSpinner() {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef = null!;\n }\n }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeSwitcher {\n private readonly _darkMode = new BehaviorSubject<boolean>(false);\n private readonly platformId = inject(PLATFORM_ID);\n isDarkMode$ = this._darkMode.asObservable();\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadMode();\n }\n }\n\n loadMode() {\n if (!isPlatformBrowser(this.platformId)) return;\n const savedTheme = localStorage.getItem('theme');\n if (savedTheme) {\n this._darkMode.next(savedTheme === 'dark');\n this.applyTheme(savedTheme === 'dark');\n } else {\n // Check system preference\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n this._darkMode.next(prefersDark);\n this.applyTheme(prefersDark);\n }\n }\n\n toggleDarkMode(): void {\n const newValue = !this._darkMode.value;\n this._darkMode.next(newValue);\n this.applyTheme(newValue);\n localStorage.setItem('theme', newValue ? 'dark' : 'light');\n }\n\n private applyTheme(isDark: boolean): void {\n if (!isPlatformBrowser(this.platformId)) return;\n document.documentElement.classList.toggle('dark-theme', isDark);\n }\n}\n","import { Observable } from 'rxjs';\n\nexport interface AutocompleteWrapperItem {\n id?: string | number;\n name?: string;\n value?: string;\n description?: string; // Para mostrar en el template por defecto\n [key: string]: any;\n}\n\nexport interface AutocompleteWrapperSearchResult {\n items: AutocompleteWrapperItem[];\n totalCount: number;\n hasMore?: boolean;\n}\n\nexport type AutocompleteWrapperSearchFunction = (\n query: string,\n filters: AutocompleteWrapperFilters,\n page?: number,\n pageSize?: number,\n) => Observable<AutocompleteWrapperSearchResult>;\n\nexport interface AutocompleteWrapperConfig {\n placeholder?: string;\n clearInput?: boolean;\n disabled?: boolean;\n debounceTime?: number;\n minSearchLength?: number;\n maxHistoryItems?: number;\n itemsPerPage?: number;\n enableStockFilter?: boolean;\n stockProperty?: string;\n enablePagination?: boolean;\n enableFilters?: boolean;\n enableFooterActions?: boolean;\n searchFields?: AutocompleteWrapperSearchField[];\n stockOptions?: AutocompleteWrapperStockOption[];\n\n // Configuración del overlay\n overlayWidth?: string | number;\n overlayMaxHeight?: string | number;\n\n // Función de búsqueda personalizada\n searchFunction?: AutocompleteWrapperSearchFunction;\n\n // Modo de búsqueda\n searchMode?: 'local' | 'remote' | 'hybrid';\n\n // Configuración de datos locales (para searchMode 'local' o 'hybrid')\n localData?: AutocompleteWrapperItem[];\n\n // Texto personalizable\n noResultsText?: string;\n sectionTitle?: string;\n}\n\nexport interface AutocompleteWrapperSearchField {\n value: string;\n label: string;\n property: string;\n}\n\nexport interface AutocompleteWrapperStockOption {\n value: string;\n label: string;\n}\n\nexport interface AutocompleteWrapperFilters {\n searchBy: string;\n stockFilter: string;\n}\n\n// Eventos que emite el componente\nexport interface AutocompleteWrapperEvents {\n itemSelected: AutocompleteWrapperItem;\n searchChanged: string;\n pageChanged: number;\n filterChanged: AutocompleteWrapperFilters;\n advancedSearchClicked: void;\n allResultsClicked: string;\n createNewClicked: string; // Alineado con onCreateNew del HTML\n historyCleared: void;\n historyItemRemoved: { item: AutocompleteWrapperItem; index: number };\n}\n\nexport interface AutocompleteWrapperPaginationInfo {\n currentPage: number;\n totalPages: number;\n totalItems: number;\n itemsPerPage: number;\n startItem: number;\n endItem: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n}\n\n// Estado interno del componente (para usar con signals)\nexport interface AutocompleteWrapperState {\n query: string;\n isLoading: boolean;\n overlayOpen: boolean;\n selectedIndex: number;\n pagination: AutocompleteWrapperPaginationInfo;\n hasResults: boolean;\n isHistoryVisible: boolean;\n historyCount: number;\n filters: AutocompleteWrapperFilters;\n\n // Estados adicionales que aparecen en el HTML\n // totalItems: number;\n // currentPageItems: AutocompleteWrapperItem[];\n // historyList: AutocompleteWrapperItem[];\n // noResults: boolean;\n}\n\n// Para métodos del componente que aparecen en el HTML\nexport interface AutocompleteWrapperActions {\n // Input actions\n onInput(event: Event): void;\n showOverlay(): void;\n hideOverlay(): void;\n clearSearch(): void;\n onKeyDown(event: KeyboardEvent): void;\n\n // Item actions\n selectItem(item: AutocompleteWrapperItem): void;\n getItemDisplayText(item: AutocompleteWrapperItem): string;\n\n // History actions\n clearHistory(): void;\n removeHistoryItem(index: number, event: Event): void;\n\n // Pagination actions\n goToFirstPage(): void;\n goToPreviousPage(): void;\n goToNextPage(): void;\n goToLastPage(): void;\n goToPage(event: Event): void;\n\n // Filter actions\n onFilterChange(): void;\n\n // Footer actions\n onCreateNew(event: Event): void;\n onAdvancedSearch(): void;\n onShowAllResults(): void;\n\n // State getters (para usar con signals)\n overlayOpen(): boolean;\n isLoading(): boolean;\n isHistoryVisible(): boolean;\n historyList(): AutocompleteWrapperItem[];\n selectedIndex(): number;\n currentPageItems(): AutocompleteWrapperItem[];\n totalItems(): number;\n totalPages(): number;\n currentPage(): number;\n totalCount(): number;\n startItem(): number;\n endItem(): number;\n sectionTitle(): string;\n noResultsText(): string;\n isNoResults(): boolean;\n overlayWidth(): string | number;\n overlayMaxHeight(): string | number;\n}\n\n// Configuraciones predefinidas mejoradas\nexport const AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG: AutocompleteWrapperConfig = {\n placeholder: 'Buscar...',\n disabled: false,\n debounceTime: 300,\n minSearchLength: 2,\n maxHistoryItems: 10,\n itemsPerPage: 10,\n enableStockFilter: true,\n stockProperty: 'stock',\n enablePagination: true,\n enableFilters: true,\n enableFooterActions: true,\n overlayWidth: '100%',\n overlayMaxHeight: '500px',\n noResultsText: 'No se encontraron resultados',\n sectionTitle: 'Resultados',\n searchMode: 'remote',\n searchFields: [\n { value: 'description', label: 'Descripción', property: 'description' },\n { value: 'code', label: 'Código', property: 'code' },\n { value: 'barcode', label: 'Código de Barras', property: 'barcode' },\n { value: 'auxCode', label: 'Código Auxiliar', property: 'auxCode' },\n ],\n stockOptions: [\n { value: 'all', label: 'Todos' },\n { value: 'with-stock', label: 'Con Stock' },\n { value: 'without-stock', label: 'Sin Stock' },\n ],\n};\n\nexport const AUTOCOMPLETE_WRAPPER_PRODUCT_CONFIG: AutocompleteWrapperConfig = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar productos...',\n enableStockFilter: true,\n enableFooterActions: true,\n sectionTitle: 'Productos',\n noResultsText: 'No se encontraron productos',\n};\n\nexport const AUTOCOMPLETE_WRAPPER_CUSTOMER_CONFIG: AutocompleteWrapperConfig = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar clientes...',\n enableStockFilter: false,\n enableFooterActions: false,\n sectionTitle: 'Clientes',\n noResultsText: 'No se encontraron clientes',\n searchFields: [\n { value: 'name', label: 'Nombre', property: 'name' },\n { value: 'email', label: 'Email', property: 'email' },\n { value: 'phone', label: 'Teléfono', property: 'phone' },\n { value: 'document', label: 'Documento', property: 'document' },\n ],\n};\n\nexport const AUTOCOMPLETE_WRAPPER_SIMPLE_CONFIG: AutocompleteWrapperConfig = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n placeholder: 'Buscar...',\n enableStockFilter: false,\n enableFilters: false,\n enableFooterActions: false,\n enablePagination: false,\n itemsPerPage: 50,\n sectionTitle: 'Resultados',\n overlayMaxHeight: '300px',\n};\n\n// Configuración para búsqueda local\nexport const AUTOCOMPLETE_WRAPPER_LOCAL_CONFIG: AutocompleteWrapperConfig = {\n ...AUTOCOMPLETE_WRAPPER_SIMPLE_CONFIG,\n searchMode: 'local',\n debounceTime: 150, // Menos tiempo para búsqueda local\n minSearchLength: 1,\n};\n\n// Configuración para listas grandes con paginación\nexport const AUTOCOMPLETE_WRAPPER_PAGINATED_CONFIG: AutocompleteWrapperConfig = {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n itemsPerPage: 20,\n enablePagination: true,\n overlayMaxHeight: '400px',\n};\n\n// Helper para crear configuración personalizada\nexport function createAutocompleteWrapperConfig(\n overrides: Partial<AutocompleteWrapperConfig>,\n): AutocompleteWrapperConfig {\n return {\n ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n ...overrides,\n };\n}\n\n// Tipos para el componente Angular\nexport interface ReusableAutocompleteWrapperComponent extends AutocompleteWrapperActions {\n config: AutocompleteWrapperConfig;\n filters: AutocompleteWrapperFilters;\n query: string;\n}\n\n// Tipos de utilidad específicos del wrapper\nexport type AutocompleteWrapperSearchMode = 'local' | 'remote' | 'hybrid';\n\nexport type AutocompleteWrapperItemProperty = keyof AutocompleteWrapperItem;\n\nexport type AutocompleteWrapperEventHandler<T = any> = (event: T) => void;\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, of, delay, map } from 'rxjs';\nimport {\n AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n AutocompleteWrapperConfig,\n AutocompleteWrapperFilters,\n AutocompleteWrapperItem,\n AutocompleteWrapperSearchFunction,\n AutocompleteWrapperSearchResult,\n} from '../models/autocomplete-wrapper-item';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AutocompleteWrapperService {\n private historySubject = new BehaviorSubject<AutocompleteWrapperItem[]>([]);\n public history$ = this.historySubject.asObservable();\n\n constructor() {\n this.loadHistoryFromStorage();\n }\n\n // Búsqueda local (sin API)\n searchLocal(\n items: AutocompleteWrapperItem[],\n query: string,\n filters: AutocompleteWrapperFilters,\n config: AutocompleteWrapperConfig,\n ): Observable<AutocompleteWrapperSearchResult> {\n const filtered = this.filterItems(items, query, filters, config);\n const page = 1; // Para búsqueda local, asumimos página 1\n const pageSize = config.itemsPerPage || 10;\n const startIndex = (page - 1) * pageSize;\n const pageItems = filtered.slice(startIndex, startIndex + pageSize);\n\n return of({\n items: pageItems,\n totalCount: filtered.length,\n hasMore: filtered.length > startIndex + pageSize,\n });\n }\n\n // Filtrar elementos basado en query y filtros\n filterItems(\n items: AutocompleteWrapperItem[],\n query: string,\n filters: AutocompleteWrapperFilters,\n config: AutocompleteWrapperConfig = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n ): AutocompleteWrapperItem[] {\n if (!query || query.length < (config.minSearchLength || 2)) {\n return [];\n }\n\n let filteredItems = items.filter(item => {\n if (item && typeof item === 'string') {\n return true;\n }\n\n // Buscar por el campo seleccionado\n const searchValue = this.getSearchValue(item, filters.searchBy, config);\n return searchValue.toLowerCase().includes(query.toLowerCase());\n });\n\n // Aplicar filtro de stock si está habilitado\n if (config.enableStockFilter && filters.stockFilter !== 'all') {\n filteredItems = filteredItems.filter(item => {\n if (typeof item === 'string') return true;\n\n const stockValue = item[config.stockProperty || 'stock'];\n const hasStock = stockValue !== undefined && stockValue !== null && stockValue > 0;\n\n return filters.stockFilter === 'with-stock' ? hasStock : !hasStock;\n });\n }\n\n return filteredItems;\n }\n\n // Simular búsqueda asíncrona\n searchAsync(\n items: AutocompleteWrapperItem[],\n query: string,\n filters: AutocompleteWrapperFilters,\n config: AutocompleteWrapperConfig = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n ): Observable<AutocompleteWrapperItem[]> {\n const results = this.filterItems(items, query, filters, config);\n return of(results).pipe(delay(100)); // Simular delay de API\n }\n\n // Obtener valor de búsqueda según el campo seleccionado\n private getSearchValue(\n item: AutocompleteWrapperItem,\n searchBy: string,\n config: AutocompleteWrapperConfig,\n ): string {\n const searchField = config.searchFields?.find(field => field.value === searchBy);\n if (searchField) {\n return item[searchField.property] || '';\n }\n\n // Fallback a la lógica anterior\n switch (searchBy) {\n case 'description':\n return item['description'] || '';\n case 'code':\n return item['code'] || item.id?.toString() || '';\n case 'barcode':\n return item['barcode'] || '';\n case 'auxCode':\n return item['auxCode'] || '';\n case 'email':\n return item['email'] || '';\n case 'phone':\n return item['phone'] || '';\n case 'document':\n return item['document'] || '';\n case 'name':\n default:\n return item.name || item.value || '';\n }\n }\n\n // Gestión de historial específico del wrapper\n addToHistory(item: AutocompleteWrapperItem, maxItems = 10): void {\n const currentHistory = this.historySubject.value;\n\n // Remover si ya existe\n const filteredHistory = currentHistory.filter(historyItem => {\n if (typeof item === 'string' && typeof historyItem === 'string') {\n return item !== historyItem;\n } else if (typeof item === 'object' && typeof historyItem === 'object') {\n return (item.id || item.name) !== (historyItem.id || historyItem.name);\n }\n return true;\n });\n\n // Agregar al inicio\n const newHistory = [item, ...filteredHistory].slice(0, maxItems);\n\n this.historySubject.next(newHistory);\n this.saveHistoryToStorage(newHistory);\n }\n\n removeFromHistory(index: number): void {\n const currentHistory = this.historySubject.value;\n currentHistory.splice(index, 1);\n this.historySubject.next([...currentHistory]);\n this.saveHistoryToStorage(currentHistory);\n }\n\n clearHistory(): void {\n this.historySubject.next([]);\n this.saveHistoryToStorage([]);\n }\n\n getHistory(): AutocompleteWrapperItem[] {\n return this.historySubject.value;\n }\n\n // Gestión de almacenamiento específico del wrapper\n private loadHistoryFromStorage(): void {\n try {\n const stored = localStorage.getItem('autocomplete_wrapper_history');\n if (stored) {\n const history = JSON.parse(stored);\n this.historySubject.next(history);\n }\n } catch (error) {\n console.warn('Error loading autocomplete wrapper history:', error);\n }\n }\n\n private saveHistoryToStorage(history: AutocompleteWrapperItem[]): void {\n try {\n localStorage.setItem('autocomplete_wrapper_history', JSON.stringify(history));\n } catch (error) {\n console.warn('Error saving autocomplete wrapper history:', error);\n }\n }\n\n // Paginación\n paginateItems<T>(items: T[], page: number, itemsPerPage: number): T[] {\n const startIndex = (page - 1) * itemsPerPage;\n const endIndex = startIndex + itemsPerPage;\n return items.slice(startIndex, endIndex);\n }\n\n getTotalPages(totalItems: number, itemsPerPage: number): number {\n return Math.ceil(totalItems / itemsPerPage) || 1;\n }\n\n // Validaciones\n isValidPage(page: number, totalPages: number): boolean {\n return page >= 1 && page <= totalPages;\n }\n\n // Utilidades para templates\n highlightText(text: string, query: string): string {\n if (!query || !text) return text;\n\n const regex = new RegExp(`(${query})`, 'gi');\n return text.replace(regex, '<mark>$1</mark>');\n }\n\n getItemDisplayText(item: AutocompleteWrapperItem, displayField = 'nombre'): string {\n if (typeof item === 'string') return item;\n return item[displayField] || item.name || item.value || item.id?.toString() || '';\n }\n\n // Configuración dinámica\n mergeConfig(userConfig: Partial<AutocompleteWrapperConfig>): AutocompleteWrapperConfig {\n return { ...AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG, ...userConfig };\n }\n\n // Factory para crear función de búsqueda genérica\n createGenericSearchFunction(config: {\n search: (params: any) => Observable<any>;\n queryParam?: string;\n searchByParam?: string;\n pageParam?: string;\n pageSizeParam?: string;\n responseMapper?: (response: any) => AutocompleteWrapperSearchResult;\n }): AutocompleteWrapperSearchFunction {\n return (query: string, filters: AutocompleteWrapperFilters, page = 1, pageSize = 10) => {\n const { searchBy, ...rest } = filters;\n const params = {\n [config.queryParam || 'q']: query,\n [config.searchByParam || 'searchBy']: searchBy,\n [config.pageParam || 'page']: page,\n [config.pageSizeParam || 'pageSize']: pageSize,\n ...rest,\n };\n\n return config.search(params).pipe(\n map(response => {\n if (config.responseMapper) {\n return config.responseMapper(response);\n }\n\n // Mapper por defecto\n const items = response.data || response.items || response;\n const totalRecords = response.totalRecords || response.totalCount || response.total || 0;\n return {\n items,\n totalCount: totalRecords,\n hasMore: response.hasMore || false,\n };\n }),\n );\n };\n }\n\n // Función para crear datos de ejemplo/mock específicos del wrapper\n createMockData(): AutocompleteWrapperItem[] {\n return [\n {\n id: 1,\n name: 'iPhone 14 Pro 128GB',\n description: 'Smartphone Apple con chip A16 Bionic y cámara Pro',\n code: 'IP14P-128',\n barcode: '1234567890123',\n auxCode: 'APL-IP14P-128',\n stock: 15,\n category: 'Smartphones',\n brand: 'Apple',\n unit: 'unidad',\n prices: [\n {\n id: 1,\n type: 'retail',\n label: 'Público',\n value: 999,\n currency: 'USD',\n includesTax: true,\n isDefault: true,\n isActive: true,\n },\n {\n id: 2,\n type: 'wholesale',\n label: 'Mayorista',\n value: 850,\n currency: 'USD',\n minQuantity: 5,\n includesTax: false,\n isActive: true,\n },\n {\n id: 3,\n type: 'vip',\n label: 'VIP',\n value: 899,\n currency: 'USD',\n includesTax: true,\n isActive: true,\n },\n {\n id: 4,\n type: 'promotional',\n label: 'Black Friday',\n value: 749,\n currency: 'USD',\n validFrom: new Date('2024-11-24'),\n validTo: new Date('2024-11-30'),\n includesTax: true,\n isActive: true,\n },\n ],\n },\n {\n id: 2,\n name: 'Samsung Galaxy S23 256GB',\n description: 'Flagship Android con cámara de 200MP',\n code: 'SGS23-256',\n barcode: '2345678901234',\n auxCode: 'SAM-GS23-256',\n stock: 0,\n category: 'Smartphones',\n brand: 'Samsung',\n unit: 'unidad',\n images: [\n {\n id: 1,\n url: 'https://images.unsplash.com/photo-1592750475338-74b7b21085ab?w=400',\n thumbnailUrl: 'https://images.unsplash.com/photo-1592750475338-74b7b21085ab?w=200',\n alt: 'Samsung Galaxy S23 frontal',\n type: 'main',\n isPrimary: true,\n order: 1,\n },\n {\n id: 2,\n url: 'https://images.unsplash.com/photo-1574755393849-623942496936?w=400',\n thumbnailUrl: 'https://images.unsplash.com/photo-1574755393849-623942496936?w=200',\n alt: 'Samsung Galaxy S23 trasero',\n type: 'gallery',\n order: 2,\n },\n ],\n badges: [{ type: 'new', text: 'NUEVO' }, { type: 'bestseller' }],\n prices: [\n {\n id: 5,\n type: 'retail',\n label: 'Público',\n value: 799,\n currency: 'USD',\n includesTax: true,\n isDefault: true,\n isActive: true,\n },\n {\n id: 6,\n type: 'wholesale',\n label: 'Mayorista',\n value: 679,\n currency: 'USD',\n minQuantity: 3,\n includesTax: false,\n isActive: true,\n },\n ],\n },\n ];\n }\n\n // Métodos específicos para diferentes tipos de búsqueda\n searchProducts(\n query: string,\n filters: Partial<AutocompleteWrapperFilters> = {},\n ): Observable<AutocompleteWrapperSearchResult> {\n const defaultFilters: AutocompleteWrapperFilters = {\n searchBy: 'description',\n stockFilter: 'all',\n ...filters,\n };\n\n const mockData = this.createMockData();\n return this.searchLocal(mockData, query, defaultFilters, AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG);\n }\n\n // Crear configuración específica para diferentes casos de uso\n createProductSearchConfig(): AutocompleteWrapperConfig {\n return this.mergeConfig({\n placeholder: 'Buscar productos...',\n enableStockFilter: true,\n enableFooterActions: true,\n sectionTitle: 'Productos',\n searchFields: [\n { value: 'description', label: 'Descripción', property: 'description' },\n { value: 'code', label: 'Código', property: 'code' },\n { value: 'barcode', label: 'Código de Barras', property: 'barcode' },\n { value: 'auxCode', label: 'Código Auxiliar', property: 'auxCode' },\n ],\n });\n }\n\n createCustomerSearchConfig(): AutocompleteWrapperConfig {\n return this.mergeConfig({\n placeholder: 'Buscar clientes...',\n enableStockFilter: false,\n enableFooterActions: false,\n sectionTitle: 'Clientes',\n searchFields: [\n { value: 'name', label: 'Nombre', property: 'name' },\n { value: 'email', label: 'Email', property: 'email' },\n { value: 'phone', label: 'Teléfono', property: 'phone' },\n { value: 'document', label: 'Documento', property: 'document' },\n ],\n });\n }\n}\n","import { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ThemeSwitcher } from '../../services';\nimport { MatIconButton } from '@angular/material/button';\nimport { AsyncPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'acp-theme-toggle',\n imports: [MatIconButton, MatIcon, AsyncPipe],\n templateUrl: './theme-toggle.html',\n styleUrl: './theme-toggle.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ThemeToggle {\n private themeService = inject(ThemeSwitcher);\n\n darkMode$: Observable<boolean>;\n\n constructor() {\n this.darkMode$ = this.themeService.isDarkMode$;\n }\n toggleDarkMode(): void {\n this.themeService.toggleDarkMode();\n }\n}\n","<button\n mat-icon-button\n (click)=\"toggleDarkMode()\"\n title=\"{{ (darkMode$ | async) ? 'Modo Día' : 'Modo Noche' }}\"\n>\n <mat-icon>{{ (darkMode$ | async) ? 'light_mode' : 'dark_mode' }}</mat-icon>\n</button>\n","export interface DateRangeConfig<T = any> {\n startDate: FieldDefinition<T>;\n endDate: FieldDefinition<T>;\n}\n\nexport declare type ControlType =\n | 'textbox'\n | 'ktextbox'\n | 'combobox'\n | 'textboxNum'\n | 'dropdown'\n | 'dropdownlist'\n | 'multiselect'\n | 'autocomplete'\n | 'checkbox'\n | 'radiobutton'\n | 'inquiryInDialog'\n | 'timepicker'\n | 'datepicker'\n | 'daterange'\n | 'textarea'\n | 'slideToggle'\n | 'slider'\n | 'switch'\n | 'buttonToggleGroup';\n\nexport declare type FieldType =\n | 'number'\n | 'string'\n | 'boolean'\n | 'date'\n | 'month'\n | 'email'\n | 'password'\n | 'tel'\n | 'hidden'\n | 'image'\n | 'url'\n | 'week'\n | 'search'\n | 'reset'\n | 'template'\n | 'custom'\n | 'expand';\n\nexport declare type ColumnType = 'text' | 'component' | 'html' | 'template';\n\nexport class FieldDefinition<T = any> {\n value?: T;\n valueLabel?: string;\n defaultValue?: T;\n defaultValueLabel?: string;\n key: string;\n label: string;\n dateRangeConfig?: DateRangeConfig<T>;\n isDefaultSearchField?: boolean;\n required?: boolean;\n disabled?: boolean;\n order?: number;\n icon?: string;\n controlType?: ControlType = 'textbox';\n type?: FieldType = 'string';\n editor?: 'numeric' | 'boolean' | ''; // this attribut is for Kendo-Grid\n options?: { label: string; value: T }[];\n valueOptions?: string[];\n valuePrimitive?: boolean; // for kendo dropdown\n textField?: string; // for kendo dropdown\n valueField?: string; // for kendo dropdown\n errorMessage?: string;\n width?: string;\n valueChangeCallback?: (value: T) => void;\n columnType?: ColumnType;\n body?: any;\n\n constructor(options: Partial<FieldDefinition<T>> = {}) {\n this.value = options.value;\n this.valueLabel = options.valueLabel;\n this.defaultValue = options.defaultValue;\n this.defaultValueLabel = options.defaultValueLabel;\n this.key = options.key || '';\n this.label = options.label || '';\n this.dateRangeConfig = options.dateRangeConfig;\n this.isDefaultSearchField = options.isDefaultSearchField;\n this.required = !!options.required;\n this.disabled = options.disabled;\n this.order = options.order === undefined ? 1 : options.order;\n this.icon = options.icon;\n this.controlType = options.controlType || 'textbox';\n this.type = options.type || 'string';\n this.editor = options.editor || '';\n this.options = options.options || [];\n this.valueOptions = options.valueOptions || [];\n this.valuePrimitive = options.valuePrimitive;\n this.textField = options.textField;\n this.valueField = options.valueField;\n this.errorMessage = options.errorMessage || '';\n this.width = options.width;\n this.valueChangeCallback = options.valueChangeCallback;\n this.columnType = options.columnType;\n this.body = options.body;\n }\n}\n","import { FieldDefinition } from './field-definition';\nimport { TemplateRef } from '@angular/core';\n\n// column-definition.ts\nexport interface TableContext<T = any> {\n $implicit: T;\n index?: number;\n}\n\nexport class ColumnDefinition<T = any> extends FieldDefinition<T> {\n index?: number; // if the list of columns will be displayed in material edit-grid (angular material grid), index must be given\n format?: any; // it could be: { style: 'currency', currency: 'EUR' }, { date: 'short' }\n hasFooter?: boolean;\n hideInOverlay?: boolean;\n\n // optionsAttribut is used in stock-receipt maintenance: StockReceiptItem.Unit has options for StockReceiptItem.Birimi\n optionsAttribut?: string; // name of the attribut that has the options list for dropdown\n templateOutlet?: TemplateRef<TableContext<T>>;\n constructor(options: Partial<ColumnDefinition<T>> = {}) {\n super(options);\n this.index = options.index;\n this.format = options.format;\n this.hasFooter = options.hasFooter;\n this.hideInOverlay = options.hideInOverlay;\n this.optionsAttribut = options.optionsAttribut;\n this.templateOutlet = options.templateOutlet;\n }\n}\n","export class TableCellIndex {\n row: number;\n column: number;\n\n constructor(row: number, column: number) {\n this.row = row;\n this.column = column;\n }\n}\n","import { PageEvent } from '@angular/material/paginator';\n\nexport class Pagination {\n totalRecords: number;\n pageSize: number;\n pageIndex: number;\n pageSizeOptions: number[];\n\n hidePageSize: boolean;\n showPageSizeOptions: boolean;\n showFirstLastButtons: boolean;\n disabled: boolean;\n\n /**\n * @param pageIndex Current page index (0-based for MatPaginator compatibility)\n * @param pageSize Number of records per page\n * @param totalRecords Total number of records\n * @param pageSizeOptions Available page size options\n * @param hidePageSize Whether to hide the page size selector\n * @param showPageSizeOptions Whether to show page size options\n * @param showFirstLastButtons Whether to show first/last buttons\n * @param disabled Whether the paginator is disabled\n */\n constructor(\n pageIndex = 0, // MatPaginator starts at 0\n pageSize = 25,\n totalRecords = 0,\n pageSizeOptions: number[] = [25, 50, 75, 100],\n hidePageSize = false,\n showPageSizeOptions = true,\n showFirstLastButtons = true,\n disabled = false,\n ) {\n this.pageIndex = pageIndex;\n this.pageSize = pageSize;\n this.totalRecords = totalRecords;\n this.pageSizeOptions = pageSizeOptions;\n this.hidePageSize = hidePageSize;\n this.showPageSizeOptions = showPageSizeOptions;\n this.showFirstLastButtons = showFirstLastButtons;\n this.disabled = disabled;\n }\n\n /**\n * Calculates the total number of pages.\n */\n getTotalPages(): number {\n return Math.ceil(this.totalRecords / this.pageSize);\n }\n\n /**\n * Handles page event similar to Angular Material example.\n * @param event MatPaginator PageEvent\n */\n handlePageEvent(event: PageEvent): void {\n this.totalRecords = event.length;\n this.pageSize = event.pageSize;\n this.pageIndex = event.pageIndex;\n }\n}\n","import {\n Component,\n Input,\n TemplateRef,\n ElementRef,\n computed,\n signal,\n inject,\n output,\n input,\n OnInit,\n OnDestroy,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, takeUntil, debounceTime, Observable, of } from 'rxjs';\n\nimport { MatIcon } from '@angular/material/icon';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport {\n AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG,\n AutocompleteWrapperConfig,\n AutocompleteWrapperFilters,\n AutocompleteWrapperItem,\n AutocompleteWrapperSearchFunction,\n AutocompleteWrapperSearchResult,\n AutocompleteWrapperState,\n} from '../../models';\nimport { AutocompleteWrapperService } from '../../services';\n@Component({\n selector: 'acp-autocomplete-wrapper',\n imports: [\n MatIcon,\n NgTemplateOutlet,\n OverlayModule,\n MatProgressBarModule,\n MatProgressSpinner,\n FormsModule,\n MatIconButton,\n ],\n templateUrl: './autocomplete-wrapper.html',\n styleUrl: './autocomplete-wrapper.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ReusableAutocompleteComponent implements OnInit, OnDestroy {\n readonly dataSource = input<AutocompleteWrapperItem[]>([]); // Para búsqueda local\n @Input() config: AutocompleteWrapperConfig = AUTOCOMPLETE_WRAPPER_DEFAULT_CONFIG;\n readonly itemTemplate = input<TemplateRef<any>>();\n readonly searchFunction = input<AutocompleteWrapperSearchFunction>();\n\n readonly notFoundTemplate = input<TemplateRef<any>>();\n\n overlayWidth = input('auto');\n overlayMaxHeight = input('400px');\n\n itemSelected = output<AutocompleteWrapperItem>();\n searchChanged = output<string>();\n searchRequested = output<{ query: string; filters: AutocompleteWrapperFilters; page: number }>(); // Nuevo evento\n pageChanged = output<number>();\n filterChanged = output<AutocompleteWrapperFilters>();\n advancedSearchClicked = output<void>();\n allResultsClicked = output<string>();\n createClicked = output<string>();\n\n readonly searchInput = viewChild.required<ElementRef<HTMLInputElement>>('searchInput');\n readonly historyListElement = viewChild<ElementRef<HTMLUListElement>>('historyListElement');\n readonly resultsListElement = viewChild<ElementRef<HTMLUListElement>>('resultsListElement');\n\n // State\n query = '';\n isLoading = signal(false);\n overlayOpen = signal(false);\n selectedIndex = signal(-1);\n currentPage = signal(1);\n filteredItems = signal<AutocompleteWrapperItem[]>([]);\n historyList = signal<AutocompleteWrapperItem[]>([]);\n totalCount = signal(0);\n // Filters\n filters: AutocompleteWrapperFilters = {\n searchBy: 'name',\n stockFilter: 'all',\n };\n\n // Computed properties\n isHistoryVisible = computed(() => {\n return this.query.length < (this.config.minSearchLength || 2) && this.historyList().length > 0;\n });\n\n totalItems = computed(() => this.filteredItems().length);\n\n totalPages = computed(() => {\n const total = this.totalCount();\n return total > 0 ? Math.ceil(total / (this.config.itemsPerPage || 10)) : 1;\n });\n\n currentPageItems = computed(() => {\n // if (!this.config.enablePagination) {\n // }\n return this.filteredItems();\n // return this.autocompleteService.paginateItems(\n // this.filteredItems(),\n // this.currentPage(),\n // this.config.itemsPerPage || 10\n // );\n });\n\n startItem = computed(() => {\n const total = this.totalItems();\n if (total === 0) return 0;\n return (this.currentPage() - 1) * (this.config.itemsPerPage || 10) + 1;\n });\n\n endItem = computed(() => {\n const total = this.totalItems();\n const calculated = this.currentPage() * (this.config.itemsPerPage || 10);\n return Math.min(calculated, total);\n });\n\n sectionTitle = computed(() => {\n const total = this.totalItems();\n return `Resultados (${total})`;\n });\n\n isNoResults = computed(() => {\n return (\n this.totalItems() === 0 &&\n !this.isLoading() &&\n this.query.length >= (this.config.minSearchLength || 2)\n );\n });\n\n // Private\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<{ query: string; filters: any; page: number }>();\n private autocompleteService = inject(AutocompleteWrapperService);\n\n ngOnInit() {\n this.mergeDefaultConfig();\n this.setupSearch();\n this.loadHistory();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private mergeDefaultConfig() {\n this.config = this.autocompleteService.mergeConfig(this.config);\n this.filters.searchBy = this.config.searchFields?.[0]?.value || 'name';\n this.filters.stockFilter = this.config.stockOptions?.[0]?.value || 'all';\n }\n\n private setupSearch() {\n this.filteredItems.set([]);\n this.searchSubject\n .pipe(\n debounceTime(this.config.debounceTime || 300),\n // distinctUntilChanged(),\n // distinctUntilChanged((prev, curr) => {\n // console.log(prev);\n // console.log(curr);\n // return prev.query === curr.query &&\n // JSON.stringify(prev.filters) === JSON.stringify(curr.filters) &&\n // prev.page === curr.page\n //\n // }\n //\n // ),\n takeUntil(this.destroy$),\n switchMap(({ query }) => this.performSearch(query)),\n )\n .subscribe(result => {\n this.filteredItems.set(result.items);\n this.totalCount.set(result.totalCount);\n this.isLoading.set(false);\n });\n }\n\n private performSearch(query: string): Observable<AutocompleteWrapperSearchResult> {\n if (query.length < (this.config.minSearchLength || 2)) {\n return of({ items: [], totalCount: 0 });\n }\n\n // ESTRATEGIA A: Función de búsqueda personalizada\n const searchFunction = this.searchFunction();\n if (searchFunction) {\n return searchFunction(\n query,\n this.filters,\n this.currentPage(),\n this.config.itemsPerPage || 10,\n ).pipe(catchError(() => of({ items: [], totalCount: 0 })));\n }\n\n // ESTRATEGIA B: Emit evento para que el padre maneje\n if (this.config.searchMode === 'remote') {\n this.searchRequested.emit({\n query,\n filters: this.filters,\n page: this.currentPage(),\n });\n return of({ items: [], totalCount: 0 }); // El padre actualizará los datos\n }\n\n // ESTRATEGIA C: Búsqueda local (fallback)\n return this.autocompleteService.searchLocal(\n this.dataSource(),\n query,\n this.filters,\n this.config,\n );\n }\n\n private loadHistory() {\n this.autocompleteService.history$.pipe(takeUntil(this.destroy$)).subscribe(history => {\n this.historyList.set(history);\n });\n }\n\n private searchSubjectNext() {\n this.searchSubject.next({\n query: this.query,\n filters: this.filters,\n page: this.currentPage(),\n });\n }\n\n // Event Handlers\n onInput(event: Event) {\n const target = event.target as HTMLInputElement;\n this.query = target.value;\n this.selectedIndex.set(-1);\n this.currentPage.set(1);\n\n if (this.query.length >= (this.config.minSearchLength || 2)) {\n this.isLoading.set(true);\n this.searchSubjectNext();\n } else {\n this.filteredItems.set([]);\n this.isLoading.set(false);\n }\n\n this.showOverlay();\n this.searchChanged.emit(this.query);\n }\n\n onKeyDown(event: KeyboardEvent) {\n const currentList = this.isHistoryVisible() ? this.historyList() : this.currentPageItems();\n const maxIndex = currentList.length - 1;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (maxIndex >= 0) {\n const nextIndex = this.selectedIndex() < maxIndex ? this.selectedIndex() + 1 : 0;\n this.selectedIndex.set(nextIndex);\n this.scrollToSelected();\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (maxIndex >= 0) {\n const prevIndex = this.selectedIndex() > 0 ? this.selectedIndex() - 1 : maxIndex;\n this.selectedIndex.set(prevIndex);\n this.scrollToSelected();\n }\n break;\n\n case 'Enter':\n event.preventDefault();\n if (this.selectedIndex() >= 0 && this.selectedIndex() <= maxIndex) {\n this.selectItem(currentList[this.selectedIndex()]);\n }\n break;\n\n case 'Escape':\n event.preventDefault();\n this.hideOverlay();\n break;\n\n case 'PageDown':\n event.preventDefault();\n if (!this.isHistoryVisible() && this.config.enablePagination) {\n this.goToNextPage();\n }\n break;\n\n case 'PageUp':\n event.preventDefault();\n if (!this.isHistoryVisible() && this.config.enablePagination) {\n this.goToPreviousPage();\n }\n break;\n }\n }\n\n onFilterChange() {\n this.currentPage.set(1);\n if (this.query.length >= (this.config.minSearchLength || 2)) {\n this.performSearch(this.query);\n this.searchSubjectNext();\n }\n // this.filterChanged.emit(this.filters);\n }\n\n // Método público para actualizar resultados desde el padre\n public updateSearchResults(result: AutocompleteWrapperSearchResult) {\n this.filteredItems.set(result.items);\n this.totalCount.set(result.totalCount);\n this.isLoading.set(false);\n }\n\n // Overlay Methods\n showOverlay() {\n this.overlayOpen.set(true);\n }\n\n hideOverlay() {\n this.overlayOpen.set(false);\n this.selectedIndex.set(-1);\n }\n\n isType(item: any): item is string {\n return typeof item === 'string';\n }\n\n // Selection Methods\n selectItem(item: AutocompleteWrapperItem) {\n if (this.config.clearInput) {\n this.query = '';\n } else {\n this.query = this.getItemDisplayText(item);\n }\n this.hideOverlay();\n this.currentPage.set(1);\n this.autocompleteService.addToHistory(item, this.config.maxHistoryItems);\n this.itemSelected.emit(item);\n\n setTimeout(() => {\n this.searchInput()?.nativeElement?.focus();\n }, 100);\n }\n\n clearSearch() {\n this.query = '';\n this.filteredItems.set([]);\n this.selectedIndex.set(-1);\n this.currentPage.set(1);\n this.searchInput()?.nativeElement?.focus();\n this.searchChanged.emit('');\n }\n\n // History Methods\n removeHistoryItem(index: number, event: Event) {\n event.stopPropagation();\n this.autocompleteService.removeFromHistory(index);\n }\n\n clearHistory() {\n this.autocompleteService.clearHistory();\n }\n\n // Pagination Methods\n goToPage(event: Event) {\n const target = event.target as HTMLInputElement;\n const page = parseInt(target.value);\n if (this.autocompleteService.isValidPage(page, this.totalPages())) {\n this.currentPage.set(page);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(page);\n this.searchSubjectNext();\n } else {\n target.value = this.currentPage().toString();\n }\n }\n\n goToFirstPage() {\n if (this.currentPage() !== 1) {\n this.currentPage.set(1);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(1);\n this.searchSubjectNext();\n }\n }\n\n goToPreviousPage() {\n const prevPage = this.currentPage() - 1;\n if (prevPage >= 1) {\n this.currentPage.set(prevPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(prevPage);\n this.searchSubjectNext();\n }\n }\n\n goToNextPage() {\n const nextPage = this.currentPage() + 1;\n if (nextPage <= this.totalPages()) {\n this.currentPage.set(nextPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(nextPage);\n this.searchSubjectNext();\n }\n }\n\n goToLastPage() {\n const lastPage = this.totalPages();\n if (this.currentPage() !== lastPage) {\n this.currentPage.set(lastPage);\n this.selectedIndex.set(-1);\n this.pageChanged.emit(lastPage);\n this.searchSubjectNext();\n }\n }\n\n // Footer Actions\n onCreateNew(_$event: MouseEvent) {\n //$event.stopPropagation();\n // this.hideOverlay();\n this.createClicked.emit(this.query);\n }\n\n onAdvancedSearch() {\n this.hideOverlay();\n this.advancedSearchClicked.emit();\n }\n\n onShowAllResults() {\n this.hideOverlay();\n this.allResultsClicked.emit(this.query);\n }\n\n // Utility Methods\n getItemDisplayText(item: AutocompleteWrapperItem): string {\n return this.autocompleteService.getItemDisplayText(item);\n }\n\n noResultsText(): string {\n return `No se encontraron resultados para \"${this.query}\"`;\n }\n\n private scrollToSelected() {\n const listElement = this.isHistoryVisible()\n ? this.historyListElement()?.nativeElement\n : this.resultsListElement()?.nativeElement;\n\n if (listElement) {\n const selectedElement = listElement.children[this.selectedIndex()] as HTMLElement;\n if (selectedElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n }\n\n // Public API\n public getState(): AutocompleteWrapperState {\n return {\n query: this.query,\n isLoading: this.isLoading(),\n overlayOpen: this.overlayOpen(),\n selectedIndex: this.selectedIndex(),\n pagination: {\n currentPage: this.currentPage(),\n totalPages: this.totalPages(),\n totalItems: this.totalItems(),\n itemsPerPage: this.config.itemsPerPage || 10,\n startItem: this.startItem(),\n endItem: this.endItem(),\n hasNextPage: this.currentPage() < this.totalPages(),\n hasPreviousPage: this.currentPage() > 1,\n },\n hasResults: this.totalItems() > 0,\n isHistoryVisible: this.isHistoryVisible(),\n historyCount: this.historyList().length,\n filters: this.filters,\n };\n }\n\n public setQuery(query: string) {\n this.query = query;\n this.currentPage.set(1);\n if (query.length >= (this.config.minSearchLength || 2)) {\n this.performSearch(query);\n this.showOverlay();\n } else {\n this.filteredItems.set([]);\n if (query.length === 0) {\n this.hideOverlay();\n }\n }\n this.searchChanged.emit(query);\n }\n\n public focus() {\n this.searchInput()?.nativeElement?.focus();\n }\n}\n","<div class=\"acp-autocomplete-wrapper\" [class.acp-autocomplete-wrapper-active]=\"overlayOpen()\">\n <!-- Input Container -->\n <div\n class=\"acp-autocomplete-wrapper-input-container\"\n cdkOverlayOrigin\n #overlayPosition=\"cdkOverlayOrigin\"\n >\n <div class=\"acp-autocomplete-wrapper-input-wrapper\">\n <mat-icon class=\"acp-autocomplete-wrapper-search-icon\">search</mat-icon>\n <input\n #searchInput\n type=\"text\"\n class=\"acp-autocomplete-wrapper-input-field\"\n [placeholder]=\"config.placeholder\"\n [(ngModel)]=\"query\"\n (input)=\"onInput($event)\"\n (click)=\"showOverlay()\"\n (keydown)=\"onKeyDown($event)\"\n [disabled]=\"config.disabled || false\"\n autocomplete=\"off\"\n />\n @if (query && query.length > 0 && !isLoading()) {\n <button\n mat-icon-button\n (click)=\"clearSearch()\"\n type=\"button\"\n class=\"acp-autocomplete-wrapper-clear-button\"\n >\n <mat-icon>clear</mat-icon>\n </button>\n }\n <button mat-icon-button type=\"button\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n\n @if (isLoading()) {\n <div class=\"acp-autocomplete-wrapper-loading-spinner\">\n <mat-spinner diameter=\"20\" />\n </div>\n }\n </div>\n\n <!-- Overlay -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayPosition\"\n [cdkConnectedOverlayOpen]=\"overlayOpen()\"\n [cdkConnectedOverlayWidth]=\"overlayWidth()\"\n [cdkConnectedOverlayHeight]=\"overlayMaxHeight()\"\n (overlayOutsideClick)=\"hideOverlay()\"\n (backdropClick)=\"hideOverlay()\"\n >\n <div class=\"autocomplete-wrapper-dropdown\" [class.autocomplete-wrapper-active]=\"overlayOpen()\">\n <div class=\"autocomplete-wrapper-dropdown-content\">\n <!-- History Section -->\n @if (isHistoryVisible() && historyList().length > 0) {\n <div class=\"autocomplete-wrapper-section\">\n <div class=\"autocomplete-wrapper-section-header\">\n <span class=\"autocomplete-wrapper-section-title\">Búsquedas recientes</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"clearHistory()\"\n class=\"autocomplete-wrapper-clear-history-button\"\n >\n <mat-icon>delete_outline</mat-icon>\n </button>\n </div>\n <ul\n class=\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\"\n #historyListElement\n >\n @for (item of historyList(); track $index) {\n <li class=\"autocomplete-wrapper-list-item autocomplete-wrapper-history-item\">\n <div\n class=\"autocomplete-wrapper-item-content\"\n [class.autocomplete-wrapper-selected]=\"$index === selectedIndex()\"\n tabindex=\"0\"\n (click)=\"selectItem(item)\"\n (keydown.enter)=\"selectItem(item)\"\n >\n <mat-icon class=\"autocomplete-wrapper-history-icon\">history</mat-icon>\n <div class=\"autocomplete-wrapper-item-details\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate() || defaultItemTemplate;\n context: { $implicit: item }\n \"\n />\n </div>\n </div>\n <button\n type=\"button\"\n mat-icon-button\n class=\"autocomplete-wrapper-remove-button\"\n (click)=\"removeHistoryItem($index, $event)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </li>\n }\n </ul>\n </div>\n }\n\n <!-- Results Section -->\n @if (!isHistoryVisible()) {\n <div class=\"autocomplete-wrapper-section\">\n <!-- Header with filters and pagination -->\n @if (config.enableFilters || config.enablePagination) {\n <div class=\"autocomplete-wrapper-section-header\">\n <span class=\"autocomplete-wrapper-section-title\">{{ sectionTitle() }}</span>\n\n <!-- Filters -->\n @if (config.enableFilters) {\n <div class=\"autocomplete-wrapper-filter-controls\">\n @if (config.searchFields && config.searchFields.length > 1) {\n <div class=\"autocomplete-wrapper-filter-group\">\n <label class=\"autocomplete-wrapper-filter-label\" for=\"searchBySelect\"\n >Buscar por:</label\n >\n <select\n id=\"searchBySelect\"\n class=\"autocomplete-wrapper-filter-select\"\n [(ngModel)]=\"filters.searchBy\"\n (change)=\"onFilterChange()\"\n >\n @for (field of config.searchFields; track $index) {\n <option [value]=\"field.value\">{{ field.label }}</option>\n }\n </select>\n </div>\n } @if (config.enableStockFilter && config.stockOptions) {\n <div class=\"autocomplete-wrapper-filter-group\">\n <label class=\"autocomplete-wrapper-filter-label\" for=\"stockSelect\">Stock:</label>\n <select\n id=\"stockSelect\"\n class=\"autocomplete-wrapper-filter-select\"\n [(ngModel)]=\"filters.stockFilter\"\n (change)=\"onFilterChange()\"\n >\n @for (option of config.stockOptions; track $index) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n </div>\n }\n </div>\n }\n\n <!-- Pagination Controls -->\n @if (config.enablePagination && totalPages() > 1) {\n <div class=\"autocomplete-wrapper-pagination-header\">\n <div class=\"autocomplete-wrapper-pagination-info\">\n <span>Página {{ currentPage() }} de {{ totalPages() }}</span>\n </div>\n <div class=\"autocomplete-wrapper-pagination-controls\">\n <button\n class=\"autocomplete-wrapper-pagination-button\"\n (click)=\"goToFirstPage()\"\n [disabled]=\"currentPage() === 1\"\n >\n <mat-icon>first_page</mat-icon>\n </button>\n <button\n class=\"autocomplete-wrapper-pagination-button\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"currentPage() === 1\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <input\n type=\"number\"\n class=\"autocomplete-wrapper-page-input\"\n [value]=\"currentPage()\"\n [min]=\"1\"\n [max]=\"totalPages()\"\n (change)=\"goToPage($event)\"\n />\n <button\n class=\"autocomplete-wrapper-pagination-button\"\n (click)=\"goToNextPage()\"\n [disabled]=\"currentPage() === totalPages()\"\n >\n <mat-icon>chevron_right</mat-icon>\n </button>\n <button\n class=\"autocomplete-wrapper-pagination-button\"\n (click)=\"goToLastPage()\"\n [disabled]=\"currentPage() === totalPages()\"\n >\n <mat-icon>last_page</mat-icon>\n </button>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"autocomplete-wrapper-section-header\">\n <span class=\"autocomplete-wrapper-section-title\">{{ sectionTitle() }}</span>\n </div>\n }\n\n <!-- Items List -->\n @if (totalItems()) {\n <ul\n class=\"autocomplete-wrapper-items-list autocomplete-wrapper-scrollable-list\"\n #resultsListElement\n >\n @for (item of currentPageItems(); track $index) {\n <li class=\"autocomplete-wrapper-list-item autocomplete-wrapper-result-item\">\n <div\n class=\"autocomplete-wrapper-item-content\"\n [class.autocomplete-wrapper-selected]=\"$index === selectedIndex()\"\n tabindex=\"0\"\n (click)=\"selectItem(item)\"\n (keydown.enter)=\"selectItem(item)\"\n >\n <div class=\"autocomplete-wrapper-item-info\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate() || defaultItemTemplate;\n context: { $implicit: item }\n \"\n />\n </div>\n </div>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n <!-- No Results -->\n @if (!isLoading() && isNoResults()) {\n <div class=\"autocomplete-wrapper-no-results\">\n <mat-icon class=\"autocomplete-wrapper-no-results-icon\">search_off</mat-icon>\n <div class=\"autocomplete-wrapper-no-results-content\">\n <ng-container\n *ngTemplateOutlet=\"\n notFoundTemplate() || defaultNotFoundTemplate;\n context: { $implicit: noResultsText() }\n \"\n />\n </div>\n </div>\n }\n\n <!-- Footer -->\n @if (overlayOpen() && totalItems() > 0) {\n <div class=\"autocomplete-wrapper-footer\">\n @if (!isHistoryVisible() && totalItems() > 0 && config.enablePagination) {\n <div class=\"autocomplete-wrapper-pagination-footer\">\n <div class=\"autocomplete-wrapper-pagination-summary\">\n Mostrando {{ startItem() }}-{{ endItem() }} de {{ totalCount() }} resultados\n </div>\n <div class=\"autocomplete-wrapper-pagination-controls-footer\">\n <button\n class=\"autocomplete-wrapper-pagination-button\"\n (click)=\"goToPreviousPage()\"\n [disabled]=\"currentPage() === 1\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <span class=\"autocomplete-wrapper-page-indicator\"\n >{{ currentPage() }} / {{ totalPages() }}</span\n >\n <button\n class=\"autocomplete-wrapper-pagination-button\"\n (click)=\"goToNextPage()\"\n [disabled]=\"currentPage() === totalPages()\"\n >\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n } @if (config.enableFooterActions) {\n <div class=\"autocomplete-wrapper-footer-actions\">\n <button\n class=\"autocomplete-wrapper-footer-button autocomplete-wrapper-create-button\"\n (click)=\"onCreateNew($event)\"\n >\n <mat-icon>add</mat-icon>\n <span class=\"autocomplete-wrapper-button-text\">Crear</span>\n </button>\n <button\n class=\"autocomplete-wrapper-footer-button autocomplete-wrapper-search-button\"\n (click)=\"onAdvancedSearch()\"\n >\n <mat-icon>tune</mat-icon>\n <span class=\"autocomplete-wrapper-button-text\">Avanzada</span>\n </button>\n @if (!isHistoryVisible() && totalItems() > 0) {\n <button\n class=\"autocomplete-wrapper-footer-button autocomplete-wrapper-results-button\"\n (click)=\"onShowAllResults()\"\n >\n <mat-icon>list</mat-icon>\n <span class=\"autocomplete-wrapper-button-text\">Todos</span>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Default Templates -->\n <ng-template #defaultItemTemplate let-item>\n <div class=\"autocomplete-wrapper-default-item\">\n <div class=\"autocomplete-wrapper-item-name\">{{ getItemDisplayText(item) }}</div>\n @if (item.description && typeof item === 'object') {\n <div class=\"autocomplete-wrapper-item-description\">{{ item.description }}</div>\n }\n </div>\n </ng-template>\n\n <ng-template #defaultNotFoundTemplate let-text>\n <div class=\"autocomplete-wrapper-default-no-results\">\n <p>{{ text }}</p>\n <p>Intenta con otros términos de búsqueda</p>\n </div>\n </ng-template>\n</div>\n","import { Directive, ElementRef, HostListener, inject, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[acpToUpperCase]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: ToUpperCase,\n multi: true,\n },\n ],\n})\nexport class ToUpperCase implements ControlValueAccessor {\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n @HostListener('input') onInput() {\n const value = this.el.nativeElement.value;\n this.el.nativeElement.value = value.toUpperCase();\n this.onChange(value.toUpperCase()); // Llamar a la función que actualiza el valor del modelo\n }\n\n // Funciones de ControlValueAccessor\n onChange = (_value: string) => {\n // ControlValueAccessor callback\n };\n onTouched = () => {\n // ControlValueAccessor callback\n };\n\n writeValue(value: string): void {\n if (value) {\n this.el.nativeElement.value = value.toUpperCase();\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4","i5"],"mappings":"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"}