ngx-dsxlibrary 2.21.28 → 2.21.29

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.
@@ -8,6 +8,8 @@ import { FileUpload } from 'primeng/fileupload';
8
8
  import * as i1$1 from 'primeng/tree';
9
9
  import { TreeModule } from 'primeng/tree';
10
10
  import { CountUpDirective } from 'ngx-countup';
11
+ import * as i2 from 'primeng/avatar';
12
+ import { AvatarModule } from 'primeng/avatar';
11
13
  import * as i1$2 from 'primeng/dialog';
12
14
  import { DialogModule } from 'primeng/dialog';
13
15
  import * as i1$3 from '@angular/platform-browser';
@@ -433,10 +435,12 @@ class DocxPreviewComponent {
433
435
  }
434
436
  async renderDocx(fileBlob, container, options, token) {
435
437
  try {
436
- // Use Function constructor to bypass Vite's static import analysis.
437
- // This makes 'docx-preview' a truly optional peer dependency.
438
- const load = new Function('m', 'return import(m)');
439
- const docxPreviewModule = (await load('docx-preview'));
438
+ // Import dinámico directo: esbuild/Vite lo interceptan en build time.
439
+ // Si el consumidor no instaló docx-preview, el catch captura el error
440
+ // y muestra el mensaje de fallback sin romper el resto de la librería.
441
+ const docxPreviewModule = (await import(
442
+ // @ts-ignore — peer opcional; puede no existir en todos los consumidores
443
+ 'docx-preview'));
440
444
  if (token !== this.renderToken || !this.visibleState()) {
441
445
  return;
442
446
  }
@@ -460,11 +464,11 @@ class DocxPreviewComponent {
460
464
  this.visibleChange.emit(false);
461
465
  }
462
466
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DocxPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
463
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.11", type: DocxPreviewComponent, isStandalone: true, selector: "app-docx-preview", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, viewQueries: [{ propertyName: "view", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], ngImport: i0, template: "<p-dialog\r\n header=\"Vista preliminar del documento\"\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n>\r\n <div #viewer></div>\r\n</p-dialog>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1$2.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "maskMotionOptions", "motionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }] });
467
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.11", type: DocxPreviewComponent, isStandalone: true, selector: "app-docx-preview", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, viewQueries: [{ propertyName: "view", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], ngImport: i0, template: "<p-dialog\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n <ng-template #header>\r\n <div class=\"flex justify-content-center align-items-center gap-2 px-2\">\r\n <p-avatar image=\"icon2/word-2019.png\" />\r\n <span class=\"font-bold\">Vista preliminar del documento</span>\r\n </div>\r\n </ng-template>\r\n <div #viewer></div>\r\n</p-dialog>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1$2.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "maskMotionOptions", "motionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }] });
464
468
  }
465
469
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DocxPreviewComponent, decorators: [{
466
470
  type: Component,
467
- args: [{ selector: 'app-docx-preview', imports: [DialogModule], template: "<p-dialog\r\n header=\"Vista preliminar del documento\"\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n>\r\n <div #viewer></div>\r\n</p-dialog>\r\n" }]
471
+ args: [{ selector: 'app-docx-preview', imports: [DialogModule, AvatarModule], template: "<p-dialog\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n <ng-template #header>\r\n <div class=\"flex justify-content-center align-items-center gap-2 px-2\">\r\n <p-avatar image=\"icon2/word-2019.png\" />\r\n <span class=\"font-bold\">Vista preliminar del documento</span>\r\n </div>\r\n </ng-template>\r\n <div #viewer></div>\r\n</p-dialog>\r\n" }]
468
472
  }], ctorParameters: () => [], propDecorators: { view: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }], visible: [{
469
473
  type: Input
470
474
  }], visibleChange: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-dsxlibrary-src-lib-components.mjs","sources":["../../../projects/ngx-dsx/src/lib/components/app-message-error/app-message-error.component.ts","../../../projects/ngx-dsx/src/lib/components/app-message-error/app-message-error.component.html","../../../projects/ngx-dsx/src/lib/components/checkBox/enable-disable/enable-disable.ts","../../../projects/ngx-dsx/src/lib/components/checkBox/enable-disable/enable-disable.html","../../../projects/ngx-dsx/src/lib/components/inputs/file/file.component.ts","../../../projects/ngx-dsx/src/lib/components/inputs/file/file.component.html","../../../projects/ngx-dsx/src/lib/components/json/json-viewer/json-viewer.component.ts","../../../projects/ngx-dsx/src/lib/components/json/json-viewer/json-viewer.component.html","../../../projects/ngx-dsx/src/lib/components/kpicard/kpicard.component.ts","../../../projects/ngx-dsx/src/lib/components/kpicard/kpicard.component.html","../../../projects/ngx-dsx/src/lib/components/view/docx-preview/docx-preview.component.ts","../../../projects/ngx-dsx/src/lib/components/view/docx-preview/docx-preview.component.html","../../../projects/ngx-dsx/src/lib/components/view/pdf-preview/pdf-preview.component.ts","../../../projects/ngx-dsx/src/lib/components/view/pdf-preview/pdf-preview.component.html","../../../projects/ngx-dsx/src/lib/components/ngx-dsxlibrary-src-lib-components.ts"],"sourcesContent":["import { DecimalPipe } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n DoCheck,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\nimport { TagModule } from 'primeng/tag';\r\n\r\n@Component({\r\n selector: 'app-message-error',\r\n imports: [TagModule, DecimalPipe],\r\n templateUrl: './app-message-error.component.html',\r\n styleUrl: './app-message-error.component.css',\r\n})\r\n/**\r\n * Renderiza mensajes de validacion para un control o formulario.\r\n *\r\n * Nota de depuracion:\r\n * - En contenedores PrimeNG `p-floatlabel`, el mensaje visual se pinta como\r\n * overlay (CSS absoluto) para no deformar la posicion del label.\r\n * - Para evitar solapamiento con el siguiente campo, este componente ajusta\r\n * temporalmente el `margin-bottom` del `.p-floatlabel` padre cuando el error\r\n * esta visible.\r\n */\r\nexport class AppMessageErrorComponent\r\n implements AfterViewInit, DoCheck, OnDestroy\r\n{\r\n // Espacio vertical reservado bajo el float label cuando hay error visible.\r\n private readonly floatLabelErrorSpace = '1.6rem';\r\n // Referencia al contenedor PrimeNG padre, si existe.\r\n private floatLabelElement: HTMLElement | null = null;\r\n // Se conserva el estilo inline original para restaurarlo al ocultar/destruir.\r\n private previousInlineMarginBottom = '';\r\n // Evita escrituras de estilo repetidas cuando el estado de visibilidad no cambia.\r\n private lastAppliedVisibleState = false;\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef<HTMLElement>,\r\n private readonly renderer: Renderer2,\r\n ) {}\r\n\r\n // Control de formulario que se pasa como input.\r\n @Input() control: AbstractControl | null | undefined = null;\r\n @Input() form: FormGroup | null = null;\r\n\r\n ngAfterViewInit(): void {\r\n // Busca el FloatLabel mas cercano para ajustar su separacion inferior.\r\n this.floatLabelElement = this.elementRef.nativeElement.closest(\r\n '.p-floatlabel',\r\n ) as HTMLElement | null;\r\n\r\n if (this.floatLabelElement) {\r\n this.previousInlineMarginBottom =\r\n this.floatLabelElement.style.marginBottom;\r\n this.syncFloatLabelSpacing();\r\n }\r\n }\r\n\r\n ngDoCheck(): void {\r\n // Se ejecuta en cada ciclo para reaccionar al estado touched/invalid.\r\n this.syncFloatLabelSpacing();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.floatLabelElement) {\r\n return;\r\n }\r\n\r\n if (this.previousInlineMarginBottom) {\r\n this.renderer.setStyle(\r\n this.floatLabelElement,\r\n 'margin-bottom',\r\n this.previousInlineMarginBottom,\r\n );\r\n return;\r\n }\r\n\r\n this.renderer.removeStyle(this.floatLabelElement, 'margin-bottom');\r\n }\r\n\r\n private syncFloatLabelSpacing(): void {\r\n if (!this.floatLabelElement) {\r\n return;\r\n }\r\n\r\n const isVisible = this.isControlErrorVisible();\r\n if (isVisible === this.lastAppliedVisibleState) {\r\n return;\r\n }\r\n\r\n this.lastAppliedVisibleState = isVisible;\r\n if (isVisible) {\r\n this.renderer.setStyle(\r\n this.floatLabelElement,\r\n 'margin-bottom',\r\n this.floatLabelErrorSpace,\r\n );\r\n return;\r\n }\r\n\r\n if (this.previousInlineMarginBottom) {\r\n this.renderer.setStyle(\r\n this.floatLabelElement,\r\n 'margin-bottom',\r\n this.previousInlineMarginBottom,\r\n );\r\n return;\r\n }\r\n\r\n this.renderer.removeStyle(this.floatLabelElement, 'margin-bottom');\r\n }\r\n\r\n isControlErrorVisible(): boolean {\r\n if (!this.control?.invalid) {\r\n return false;\r\n }\r\n\r\n if (this.control.errors?.['alreadyValueExists']) {\r\n return !!(this.control.dirty || this.control.touched);\r\n }\r\n\r\n return !!this.control.touched;\r\n }\r\n}\r\n","<div class=\"dsx-error-slot\" [class.is-visible]=\"isControlErrorVisible()\">\r\n @if (isControlErrorVisible()) {\r\n <div class=\"dsx-error-message\">\r\n <i\r\n class=\"pi pi-exclamation-triangle dsx-error-icon\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n @if (control?.errors?.[\"required\"]) {\r\n El campo <strong>es requerido.</strong>\r\n } @else if (control?.errors?.[\"invalidNIT\"]) {\r\n <strong>{{ control?.errors?.[\"invalidNIT\"]?.message }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"invalidCUI\"]) {\r\n <strong>{{ control?.errors?.[\"invalidCUI\"]?.message }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"invalidDateRange\"]) {\r\n <strong>{{ control?.errors?.[\"invalidDateRange\"]?.message }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"dateNotRange\"]) {\r\n <strong>{{ control?.errors?.[\"dateNotRange\"]?.message }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"minlength\"]) {\r\n Debe tener al menos\r\n <strong>{{ control?.errors?.[\"minlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"maxlength\"]) {\r\n Debe tener como máximo\r\n <strong>{{ control?.errors?.[\"maxlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"min\"]) {\r\n El valor mínimo permitido es\r\n <strong>{{ control?.errors?.[\"min\"]?.min }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"max\"]) {\r\n El valor máximo permitido es\r\n <strong>{{ control?.errors?.[\"max\"]?.max | number: \"1.2-2\" }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"email\"]) {\r\n Debe ser una dirección de correo válida.\r\n } @else if (control?.errors?.[\"pattern\"]) {\r\n El campo no tiene el formato requerido.\r\n } @else if (control?.errors?.[\"alreadyValueExists\"]) {\r\n <strong>{{ control?.errors?.[\"alreadyValueExists\"]?.message }}</strong>\r\n } @else {\r\n Existe un error aún no identificado.\r\n }\r\n </div>\r\n }\r\n</div>\r\n<!-- mensaje para formulario en general -->\r\n@if (form?.invalid && form?.touched) {\r\n <div class=\"mt-2 mb-2\">\r\n @if (this.form?.errors?.[\"atLeastOneRequired\"]) {\r\n <p-tag severity=\"danger\" [rounded]=\"true\">\r\n {{ form?.getError(\"atLeastOneRequired\")?.message }}</p-tag\r\n >\r\n }\r\n </div>\r\n}\r\n","import { Component, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'dsx-checkbox',\r\n imports: [],\r\n templateUrl: './enable-disable.html',\r\n styleUrl: './enable-disable.css',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DsxEnableDisable),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class DsxEnableDisable implements ControlValueAccessor {\r\n checked = false;\r\n\r\n writeValue(value: boolean): void {\r\n this.checked = !!value;\r\n }\r\n\r\n // El componente es solo lectura; no necesita propagar cambios\r\n registerOnChange(_fn: unknown): void {}\r\n registerOnTouched(_fn: unknown): void {}\r\n}\r\n","<!-- From Uiverse.io by adamgiebl -->\r\n<div class=\"container\">\r\n <input type=\"checkbox\" [checked]=\"checked\" disabled />\r\n <div class=\"checkmark\"></div>\r\n</div>\r\n","import { Component, forwardRef, input, signal, viewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FileUpload } from 'primeng/fileupload';\r\n\r\n@Component({\r\n selector: 'dsx-file-upload',\r\n imports: [FileUpload],\r\n templateUrl: './file.component.html',\r\n styleUrl: './file.component.css',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FileComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class FileComponent implements ControlValueAccessor {\r\n fileUpload = viewChild.required<FileUpload>('fileUpload');\r\n accept = input<string>('.xls,.xlsx');\r\n // Tamaño máximo en MB (se convierte internamente a bytes)\r\n maxFileSize = input<number>(5);\r\n // Mensajes para tipo de archivo inválido\r\n invalidSummary = input<string>('El formato es inválido.');\r\n invalidDetail = input<string>('Archivo debe tener un formato válido. ({0}).');\r\n\r\n // Mensajes para tamaño de archivo inválido\r\n invalidSizeSummary = input<string>('Tamaño de archivo inválido.');\r\n invalidSizeDetail = input<string>('El tamaño máximo permitido es {0}');\r\n disabled = signal<boolean>(false);\r\n private value: File | null = null;\r\n private onChange = (_: File | null) => {};\r\n private onTouched = () => {};\r\n\r\n onSelect(event: any) {\r\n const file = event.files?.[0] ?? null;\r\n this.value = file;\r\n this.onChange(file);\r\n this.onTouched();\r\n }\r\n\r\n /** 👇 API pública */\r\n clear() {\r\n this.fileUpload()?.clear();\r\n this.value = null;\r\n this.onChange(null);\r\n }\r\n\r\n writeValue(value: File | null): void {\r\n this.value = value;\r\n\r\n if (!value) {\r\n // Si se limpia el valor desde el formulario, limpiamos el componente\r\n this.fileUpload()?.clear();\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n}\r\n","<p-fileUpload\r\n #fileUpload\r\n mode=\"basic\"\r\n [accept]=\"accept()\"\r\n [maxFileSize]=\"maxFileSize() * 1024 * 1024\"\r\n [invalidFileTypeMessageSummary]=\"invalidSummary()\"\r\n [invalidFileTypeMessageDetail]=\"invalidDetail()\"\r\n [invalidFileSizeMessageSummary]=\"invalidSizeSummary()\"\r\n [invalidFileSizeMessageDetail]=\"invalidSizeDetail()\"\r\n (onSelect)=\"onSelect($event)\"\r\n [disabled]=\"disabled()\"\r\n/>\r\n","import { Component, effect, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TreeNode } from 'primeng/api';\r\nimport { TreeModule } from 'primeng/tree';\r\n\r\n@Component({\r\n selector: 'app-json-viewer',\r\n standalone: true,\r\n imports: [TreeModule],\r\n templateUrl: './json-viewer.component.html',\r\n styleUrl: './json-viewer.component.css',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => JsonViewerComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class JsonViewerComponent implements ControlValueAccessor {\r\n data = input<unknown>(null);\r\n nodes: TreeNode[] = [];\r\n selectedNode: TreeNode | null = null;\r\n private controlValue: unknown = null;\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.controlValue === null || this.controlValue === undefined) {\r\n this.updateNodes(this.data());\r\n }\r\n });\r\n }\r\n\r\n writeValue(value: unknown): void {\r\n this.controlValue = value;\r\n this.updateNodes(value);\r\n }\r\n\r\n registerOnChange(fn: (value: unknown) => void): void {\r\n void fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n void fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n void isDisabled;\r\n }\r\n\r\n onNodeSelect(event: { node?: TreeNode }): void {\r\n const node = event?.node;\r\n\r\n if (!node?.children?.length) return;\r\n\r\n node.expanded = !node.expanded;\r\n this.selectedNode = null;\r\n this.nodes = [...this.nodes];\r\n }\r\n\r\n private updateNodes(value: unknown): void {\r\n this.nodes = this.buildTree(this.parseIfNeeded(value));\r\n }\r\n\r\n private parseIfNeeded(data: unknown): any {\r\n if (!data) return {};\r\n\r\n if (typeof data === 'string') {\r\n try {\r\n return JSON.parse(data);\r\n } catch {\r\n return {};\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n\r\n private buildTree(data: any, parentKey: string = '0'): TreeNode[] {\r\n if (Array.isArray(data)) {\r\n return data.map((item, index) => {\r\n const key = `${parentKey}-${index}`;\r\n\r\n if (this.isComplex(item)) {\r\n return {\r\n key,\r\n label: `[${index}]`,\r\n //icon: this.getIcon(item),\r\n children: this.buildTree(item, key),\r\n };\r\n }\r\n\r\n return {\r\n key,\r\n label: `[${index}]: ${this.formatPrimitive(item)}`,\r\n //icon: 'pi pi-file',\r\n };\r\n });\r\n }\r\n\r\n if (typeof data === 'object' && data !== null) {\r\n return Object.keys(data).map((key, index) => {\r\n const value = data[key];\r\n const nodeKey = `${parentKey}-${index}`;\r\n\r\n if (this.isComplex(value)) {\r\n return {\r\n key: nodeKey,\r\n label: key,\r\n //icon: this.getIcon(value),\r\n children: this.buildTree(value, nodeKey),\r\n };\r\n }\r\n\r\n return {\r\n key: nodeKey,\r\n label: `${key}: ${this.formatPrimitive(value)}`,\r\n icon: 'pi pi-file',\r\n };\r\n });\r\n }\r\n\r\n return [\r\n {\r\n key: parentKey,\r\n label: this.formatPrimitive(data),\r\n icon: 'pi pi-file',\r\n },\r\n ];\r\n }\r\n\r\n private isComplex(value: unknown): boolean {\r\n return (\r\n Array.isArray(value) || (typeof value === 'object' && value !== null)\r\n );\r\n }\r\n\r\n private formatPrimitive(value: unknown): string {\r\n if (value === null || value === undefined) return '-';\r\n\r\n if (typeof value === 'string') return value;\r\n\r\n return String(value);\r\n }\r\n\r\n private getIcon(value: any): string {\r\n if (Array.isArray(value)) return 'pi pi-list';\r\n\r\n if (typeof value === 'object') return 'pi pi-folder';\r\n\r\n return 'pi pi-file';\r\n }\r\n}\r\n","<p-tree\r\n\t[value]=\"nodes\"\r\n\tclass=\"json-tree w-full\"\r\n\tselectionMode=\"single\"\r\n\t[(selection)]=\"selectedNode\"\r\n\t[highlightOnSelect]=\"false\"\r\n\t(onNodeSelect)=\"onNodeSelect($event)\"\r\n>\r\n</p-tree>\r\n","import { Component, input } from '@angular/core';\r\nimport { CountUpDirective } from 'ngx-countup';\r\n\r\n@Component({\r\n selector: 'app-kpicard',\r\n imports: [CountUpDirective],\r\n templateUrl: './kpicard.component.html',\r\n styleUrl: './kpicard.component.css',\r\n})\r\nexport class KpicardComponent {\r\n //type = input.required<string>();\r\n option = input.required<'currency' | 'integer' | 'percent'>();\r\n label = input.required<string>();\r\n iconType = input<string>('fa-regular fa-bell');\r\n color = input<string>();\r\n valor = input<number>(0);\r\n theme = input<\r\n | 'light'\r\n | 'dark'\r\n | 'aqua'\r\n | 'sunset'\r\n | 'mint'\r\n | 'peach'\r\n | 'plasma'\r\n | 'nebula'\r\n >('light');\r\n\r\n options: Record<'currency' | 'integer' | 'percent', any> = {\r\n currency: {\r\n startVal: 0,\r\n duration: 0.5,\r\n //prefix: 'Q',\r\n decimalPlaces: 2, // Decimales\r\n useGrouping: true, // Separador de miles\r\n separator: ',', // Carácter separador\r\n decimal: '.', // Carácter decimal\r\n suffix: ' GTQ', // Sufijo\r\n scrollSpyDelay: 200, // Retardo antes de la animación\r\n enableScrollSpy: true,\r\n scrollSpyOnce: true,\r\n },\r\n integer: {\r\n startVal: 0,\r\n duration: 0.5,\r\n prefix: 'Cant. ',\r\n decimalPlaces: 2, // Decimales\r\n useGrouping: true, // Separador de miles\r\n separator: ',', // Carácter separador\r\n decimal: '.', // Carácter decimal\r\n scrollSpyDelay: 200, // Retardo antes de la animación\r\n enableScrollSpy: true,\r\n scrollSpyOnce: true,\r\n },\r\n percent: {\r\n startVal: 0,\r\n duration: 0.5,\r\n suffix: '%',\r\n decimalPlaces: 2, // Decimales\r\n useGrouping: true, // Separador de miles\r\n separator: ',', // Carácter separador\r\n decimal: '.', // Carácter decimal\r\n scrollSpyDelay: 200, // Retardo antes de la animación\r\n enableScrollSpy: true,\r\n scrollSpyOnce: true,\r\n },\r\n };\r\n\r\n // ✅ Método auxiliar para obtener la opción con seguridad\r\n getSelectedOption() {\r\n return this.options[this.option()] ?? this.options.currency; // Si no existe, usa `currency`\r\n }\r\n}\r\n","<div [class]=\"`kpi-card ${color()} ${theme()}-theme`\">\r\n <div class=\"kpi-container\">\r\n <span\r\n [countUp]=\"valor()\"\r\n [countUpOptions]=\"getSelectedOption()\"\r\n [class]=\"`card-value-${theme()}`\"\r\n >0</span\r\n >\r\n <span [class]=\"`card-text-${theme()}`\">{{ label() }}</span>\r\n </div>\r\n <i [class]=\"`${iconType()} icon icon-${theme()}`\"></i>\r\n</div>\r\n","import {\r\n Component,\r\n effect,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n input,\r\n Output,\r\n signal,\r\n viewChild,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { DialogModule } from 'primeng/dialog';\r\n\r\ntype DocxRenderOptions = {\r\n ignoreWidth?: boolean;\r\n renderHeaders?: boolean;\r\n renderFooters?: boolean;\r\n};\r\n\r\ntype DocxPreviewModule = {\r\n renderAsync: (\r\n document: Blob,\r\n bodyContainer: HTMLElement,\r\n styleContainer?: HTMLElement,\r\n options?: DocxRenderOptions,\r\n ) => Promise<void>;\r\n};\r\n\r\n@Component({\r\n selector: 'app-docx-preview',\r\n imports: [DialogModule],\r\n templateUrl: './docx-preview.component.html',\r\n styleUrl: './docx-preview.component.css',\r\n})\r\nexport class DocxPreviewComponent {\r\n view = viewChild<ElementRef>('viewer');\r\n private visibleState: WritableSignal<boolean> = signal(false);\r\n private renderToken = 0;\r\n\r\n @Input()\r\n set visible(value: boolean) {\r\n this.visibleState.set(!!value);\r\n }\r\n\r\n get visible(): boolean {\r\n return this.visibleState();\r\n }\r\n\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n blob = input<Blob | null>(null);\r\n\r\n constructor() {\r\n effect(() => {\r\n const container = this.view()?.nativeElement;\r\n const isVisible = this.visibleState();\r\n const fileBlob = this.blob();\r\n\r\n if (!container) {\r\n return;\r\n }\r\n\r\n if (!isVisible) {\r\n this.renderToken++;\r\n container.innerHTML = '';\r\n return;\r\n }\r\n\r\n if (!(fileBlob instanceof Blob)) {\r\n this.renderToken++;\r\n container.innerHTML =\r\n '<p>No hay un archivo .docx válido para previsualizar.</p>';\r\n return;\r\n }\r\n\r\n if (!fileBlob.size) {\r\n this.renderToken++;\r\n container.innerHTML = '<p>El archivo .docx está vacío.</p>';\r\n return;\r\n }\r\n\r\n const token = ++this.renderToken;\r\n container.innerHTML = '';\r\n const options: DocxRenderOptions = {\r\n ignoreWidth: true,\r\n renderHeaders: true,\r\n renderFooters: true,\r\n };\r\n\r\n void this.renderDocx(fileBlob, container, options, token);\r\n });\r\n }\r\n\r\n private async renderDocx(\r\n fileBlob: Blob,\r\n container: HTMLElement,\r\n options: DocxRenderOptions,\r\n token: number,\r\n ) {\r\n try {\r\n // Use Function constructor to bypass Vite's static import analysis.\r\n // This makes 'docx-preview' a truly optional peer dependency.\r\n const load = new Function('m', 'return import(m)') as (\r\n m: string,\r\n ) => Promise<unknown>;\r\n const docxPreviewModule = (await load(\r\n 'docx-preview',\r\n )) as unknown as DocxPreviewModule;\r\n\r\n if (token !== this.renderToken || !this.visibleState()) {\r\n return;\r\n }\r\n\r\n await docxPreviewModule.renderAsync(\r\n fileBlob,\r\n container,\r\n undefined,\r\n options,\r\n );\r\n } catch (error) {\r\n if (token !== this.renderToken || !this.visibleState()) {\r\n return;\r\n }\r\n\r\n console.error(\r\n '[DocxPreview] Error al renderizar el archivo DOCX.',\r\n error,\r\n );\r\n\r\n container.innerHTML =\r\n '<p>No se pudo renderizar la vista previa DOCX. Verifica la consola para más detalles.</p>';\r\n }\r\n }\r\n\r\n onHide() {\r\n const container = this.view()?.nativeElement;\r\n\r\n if (container) {\r\n this.renderToken++;\r\n container.innerHTML = '';\r\n }\r\n\r\n this.visibleChange.emit(false);\r\n }\r\n}\r\n","<p-dialog\r\n header=\"Vista preliminar del documento\"\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n>\r\n <div #viewer></div>\r\n</p-dialog>\r\n","import { Component, OnDestroy, effect, input, model } from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { DialogModule } from 'primeng/dialog';\r\n\r\n@Component({\r\n selector: 'app-pdf-preview',\r\n imports: [DialogModule],\r\n templateUrl: './pdf-preview.component.html',\r\n styleUrl: './pdf-preview.component.css',\r\n})\r\nexport class PdfPreviewComponent implements OnDestroy {\r\n visible = model<boolean>(false);\r\n blob = input<Blob | null>(null);\r\n private objectUrl: string | null = null;\r\n pdfUrl: SafeResourceUrl | null = null;\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n effect((onCleanup) => {\r\n const file = this.blob();\r\n const isVisible = this.visible();\r\n\r\n if (!isVisible || file === null) {\r\n this.limpiarUrlAnterior();\r\n return;\r\n }\r\n\r\n if (file.type !== 'application/pdf') {\r\n this.limpiarUrlAnterior();\r\n console.warn('El archivo recibido no es un PDF válido');\r\n return;\r\n }\r\n\r\n this.limpiarUrlAnterior();\r\n const currentObjectUrl = URL.createObjectURL(file);\r\n this.objectUrl = currentObjectUrl;\r\n this.pdfUrl =\r\n this.sanitizer.bypassSecurityTrustResourceUrl(currentObjectUrl);\r\n\r\n onCleanup(() => {\r\n URL.revokeObjectURL(currentObjectUrl);\r\n if (this.objectUrl === currentObjectUrl) {\r\n this.objectUrl = null;\r\n this.pdfUrl = null;\r\n }\r\n });\r\n });\r\n }\r\n\r\n private limpiarUrlAnterior(): void {\r\n if (this.objectUrl) {\r\n URL.revokeObjectURL(this.objectUrl);\r\n this.objectUrl = null;\r\n }\r\n this.pdfUrl = null;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.limpiarUrlAnterior();\r\n }\r\n}\r\n","<p-dialog\r\n header=\"Vista previa del documento de soporte\"\r\n [(visible)]=\"visible\"\r\n [style]=\"{ width: '80vw', height: '90vh' }\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n @if (pdfUrl) {\r\n <iframe\r\n [src]=\"pdfUrl\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n style=\"border: none\"\r\n ></iframe>\r\n }\r\n</p-dialog>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-dsxlibrary-src-lib-components.mjs","sources":["../../../projects/ngx-dsx/src/lib/components/app-message-error/app-message-error.component.ts","../../../projects/ngx-dsx/src/lib/components/app-message-error/app-message-error.component.html","../../../projects/ngx-dsx/src/lib/components/checkBox/enable-disable/enable-disable.ts","../../../projects/ngx-dsx/src/lib/components/checkBox/enable-disable/enable-disable.html","../../../projects/ngx-dsx/src/lib/components/inputs/file/file.component.ts","../../../projects/ngx-dsx/src/lib/components/inputs/file/file.component.html","../../../projects/ngx-dsx/src/lib/components/json/json-viewer/json-viewer.component.ts","../../../projects/ngx-dsx/src/lib/components/json/json-viewer/json-viewer.component.html","../../../projects/ngx-dsx/src/lib/components/kpicard/kpicard.component.ts","../../../projects/ngx-dsx/src/lib/components/kpicard/kpicard.component.html","../../../projects/ngx-dsx/src/lib/components/view/docx-preview/docx-preview.component.ts","../../../projects/ngx-dsx/src/lib/components/view/docx-preview/docx-preview.component.html","../../../projects/ngx-dsx/src/lib/components/view/pdf-preview/pdf-preview.component.ts","../../../projects/ngx-dsx/src/lib/components/view/pdf-preview/pdf-preview.component.html","../../../projects/ngx-dsx/src/lib/components/ngx-dsxlibrary-src-lib-components.ts"],"sourcesContent":["import { DecimalPipe } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n DoCheck,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { AbstractControl, FormGroup } from '@angular/forms';\r\nimport { TagModule } from 'primeng/tag';\r\n\r\n@Component({\r\n selector: 'app-message-error',\r\n imports: [TagModule, DecimalPipe],\r\n templateUrl: './app-message-error.component.html',\r\n styleUrl: './app-message-error.component.css',\r\n})\r\n/**\r\n * Renderiza mensajes de validacion para un control o formulario.\r\n *\r\n * Nota de depuracion:\r\n * - En contenedores PrimeNG `p-floatlabel`, el mensaje visual se pinta como\r\n * overlay (CSS absoluto) para no deformar la posicion del label.\r\n * - Para evitar solapamiento con el siguiente campo, este componente ajusta\r\n * temporalmente el `margin-bottom` del `.p-floatlabel` padre cuando el error\r\n * esta visible.\r\n */\r\nexport class AppMessageErrorComponent\r\n implements AfterViewInit, DoCheck, OnDestroy\r\n{\r\n // Espacio vertical reservado bajo el float label cuando hay error visible.\r\n private readonly floatLabelErrorSpace = '1.6rem';\r\n // Referencia al contenedor PrimeNG padre, si existe.\r\n private floatLabelElement: HTMLElement | null = null;\r\n // Se conserva el estilo inline original para restaurarlo al ocultar/destruir.\r\n private previousInlineMarginBottom = '';\r\n // Evita escrituras de estilo repetidas cuando el estado de visibilidad no cambia.\r\n private lastAppliedVisibleState = false;\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef<HTMLElement>,\r\n private readonly renderer: Renderer2,\r\n ) {}\r\n\r\n // Control de formulario que se pasa como input.\r\n @Input() control: AbstractControl | null | undefined = null;\r\n @Input() form: FormGroup | null = null;\r\n\r\n ngAfterViewInit(): void {\r\n // Busca el FloatLabel mas cercano para ajustar su separacion inferior.\r\n this.floatLabelElement = this.elementRef.nativeElement.closest(\r\n '.p-floatlabel',\r\n ) as HTMLElement | null;\r\n\r\n if (this.floatLabelElement) {\r\n this.previousInlineMarginBottom =\r\n this.floatLabelElement.style.marginBottom;\r\n this.syncFloatLabelSpacing();\r\n }\r\n }\r\n\r\n ngDoCheck(): void {\r\n // Se ejecuta en cada ciclo para reaccionar al estado touched/invalid.\r\n this.syncFloatLabelSpacing();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.floatLabelElement) {\r\n return;\r\n }\r\n\r\n if (this.previousInlineMarginBottom) {\r\n this.renderer.setStyle(\r\n this.floatLabelElement,\r\n 'margin-bottom',\r\n this.previousInlineMarginBottom,\r\n );\r\n return;\r\n }\r\n\r\n this.renderer.removeStyle(this.floatLabelElement, 'margin-bottom');\r\n }\r\n\r\n private syncFloatLabelSpacing(): void {\r\n if (!this.floatLabelElement) {\r\n return;\r\n }\r\n\r\n const isVisible = this.isControlErrorVisible();\r\n if (isVisible === this.lastAppliedVisibleState) {\r\n return;\r\n }\r\n\r\n this.lastAppliedVisibleState = isVisible;\r\n if (isVisible) {\r\n this.renderer.setStyle(\r\n this.floatLabelElement,\r\n 'margin-bottom',\r\n this.floatLabelErrorSpace,\r\n );\r\n return;\r\n }\r\n\r\n if (this.previousInlineMarginBottom) {\r\n this.renderer.setStyle(\r\n this.floatLabelElement,\r\n 'margin-bottom',\r\n this.previousInlineMarginBottom,\r\n );\r\n return;\r\n }\r\n\r\n this.renderer.removeStyle(this.floatLabelElement, 'margin-bottom');\r\n }\r\n\r\n isControlErrorVisible(): boolean {\r\n if (!this.control?.invalid) {\r\n return false;\r\n }\r\n\r\n if (this.control.errors?.['alreadyValueExists']) {\r\n return !!(this.control.dirty || this.control.touched);\r\n }\r\n\r\n return !!this.control.touched;\r\n }\r\n}\r\n","<div class=\"dsx-error-slot\" [class.is-visible]=\"isControlErrorVisible()\">\r\n @if (isControlErrorVisible()) {\r\n <div class=\"dsx-error-message\">\r\n <i\r\n class=\"pi pi-exclamation-triangle dsx-error-icon\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n @if (control?.errors?.[\"required\"]) {\r\n El campo <strong>es requerido.</strong>\r\n } @else if (control?.errors?.[\"invalidNIT\"]) {\r\n <strong>{{ control?.errors?.[\"invalidNIT\"]?.message }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"invalidCUI\"]) {\r\n <strong>{{ control?.errors?.[\"invalidCUI\"]?.message }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"invalidDateRange\"]) {\r\n <strong>{{ control?.errors?.[\"invalidDateRange\"]?.message }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"dateNotRange\"]) {\r\n <strong>{{ control?.errors?.[\"dateNotRange\"]?.message }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"minlength\"]) {\r\n Debe tener al menos\r\n <strong>{{ control?.errors?.[\"minlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"maxlength\"]) {\r\n Debe tener como máximo\r\n <strong>{{ control?.errors?.[\"maxlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"min\"]) {\r\n El valor mínimo permitido es\r\n <strong>{{ control?.errors?.[\"min\"]?.min }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"max\"]) {\r\n El valor máximo permitido es\r\n <strong>{{ control?.errors?.[\"max\"]?.max | number: \"1.2-2\" }}</strong\r\n >.\r\n } @else if (control?.errors?.[\"email\"]) {\r\n Debe ser una dirección de correo válida.\r\n } @else if (control?.errors?.[\"pattern\"]) {\r\n El campo no tiene el formato requerido.\r\n } @else if (control?.errors?.[\"alreadyValueExists\"]) {\r\n <strong>{{ control?.errors?.[\"alreadyValueExists\"]?.message }}</strong>\r\n } @else {\r\n Existe un error aún no identificado.\r\n }\r\n </div>\r\n }\r\n</div>\r\n<!-- mensaje para formulario en general -->\r\n@if (form?.invalid && form?.touched) {\r\n <div class=\"mt-2 mb-2\">\r\n @if (this.form?.errors?.[\"atLeastOneRequired\"]) {\r\n <p-tag severity=\"danger\" [rounded]=\"true\">\r\n {{ form?.getError(\"atLeastOneRequired\")?.message }}</p-tag\r\n >\r\n }\r\n </div>\r\n}\r\n","import { Component, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'dsx-checkbox',\r\n imports: [],\r\n templateUrl: './enable-disable.html',\r\n styleUrl: './enable-disable.css',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DsxEnableDisable),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class DsxEnableDisable implements ControlValueAccessor {\r\n checked = false;\r\n\r\n writeValue(value: boolean): void {\r\n this.checked = !!value;\r\n }\r\n\r\n // El componente es solo lectura; no necesita propagar cambios\r\n registerOnChange(_fn: unknown): void {}\r\n registerOnTouched(_fn: unknown): void {}\r\n}\r\n","<!-- From Uiverse.io by adamgiebl -->\r\n<div class=\"container\">\r\n <input type=\"checkbox\" [checked]=\"checked\" disabled />\r\n <div class=\"checkmark\"></div>\r\n</div>\r\n","import { Component, forwardRef, input, signal, viewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FileUpload } from 'primeng/fileupload';\r\n\r\n@Component({\r\n selector: 'dsx-file-upload',\r\n imports: [FileUpload],\r\n templateUrl: './file.component.html',\r\n styleUrl: './file.component.css',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FileComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class FileComponent implements ControlValueAccessor {\r\n fileUpload = viewChild.required<FileUpload>('fileUpload');\r\n accept = input<string>('.xls,.xlsx');\r\n // Tamaño máximo en MB (se convierte internamente a bytes)\r\n maxFileSize = input<number>(5);\r\n // Mensajes para tipo de archivo inválido\r\n invalidSummary = input<string>('El formato es inválido.');\r\n invalidDetail = input<string>('Archivo debe tener un formato válido. ({0}).');\r\n\r\n // Mensajes para tamaño de archivo inválido\r\n invalidSizeSummary = input<string>('Tamaño de archivo inválido.');\r\n invalidSizeDetail = input<string>('El tamaño máximo permitido es {0}');\r\n disabled = signal<boolean>(false);\r\n private value: File | null = null;\r\n private onChange = (_: File | null) => {};\r\n private onTouched = () => {};\r\n\r\n onSelect(event: any) {\r\n const file = event.files?.[0] ?? null;\r\n this.value = file;\r\n this.onChange(file);\r\n this.onTouched();\r\n }\r\n\r\n /** 👇 API pública */\r\n clear() {\r\n this.fileUpload()?.clear();\r\n this.value = null;\r\n this.onChange(null);\r\n }\r\n\r\n writeValue(value: File | null): void {\r\n this.value = value;\r\n\r\n if (!value) {\r\n // Si se limpia el valor desde el formulario, limpiamos el componente\r\n this.fileUpload()?.clear();\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n}\r\n","<p-fileUpload\r\n #fileUpload\r\n mode=\"basic\"\r\n [accept]=\"accept()\"\r\n [maxFileSize]=\"maxFileSize() * 1024 * 1024\"\r\n [invalidFileTypeMessageSummary]=\"invalidSummary()\"\r\n [invalidFileTypeMessageDetail]=\"invalidDetail()\"\r\n [invalidFileSizeMessageSummary]=\"invalidSizeSummary()\"\r\n [invalidFileSizeMessageDetail]=\"invalidSizeDetail()\"\r\n (onSelect)=\"onSelect($event)\"\r\n [disabled]=\"disabled()\"\r\n/>\r\n","import { Component, effect, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TreeNode } from 'primeng/api';\r\nimport { TreeModule } from 'primeng/tree';\r\n\r\n@Component({\r\n selector: 'app-json-viewer',\r\n standalone: true,\r\n imports: [TreeModule],\r\n templateUrl: './json-viewer.component.html',\r\n styleUrl: './json-viewer.component.css',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => JsonViewerComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class JsonViewerComponent implements ControlValueAccessor {\r\n data = input<unknown>(null);\r\n nodes: TreeNode[] = [];\r\n selectedNode: TreeNode | null = null;\r\n private controlValue: unknown = null;\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.controlValue === null || this.controlValue === undefined) {\r\n this.updateNodes(this.data());\r\n }\r\n });\r\n }\r\n\r\n writeValue(value: unknown): void {\r\n this.controlValue = value;\r\n this.updateNodes(value);\r\n }\r\n\r\n registerOnChange(fn: (value: unknown) => void): void {\r\n void fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n void fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n void isDisabled;\r\n }\r\n\r\n onNodeSelect(event: { node?: TreeNode }): void {\r\n const node = event?.node;\r\n\r\n if (!node?.children?.length) return;\r\n\r\n node.expanded = !node.expanded;\r\n this.selectedNode = null;\r\n this.nodes = [...this.nodes];\r\n }\r\n\r\n private updateNodes(value: unknown): void {\r\n this.nodes = this.buildTree(this.parseIfNeeded(value));\r\n }\r\n\r\n private parseIfNeeded(data: unknown): any {\r\n if (!data) return {};\r\n\r\n if (typeof data === 'string') {\r\n try {\r\n return JSON.parse(data);\r\n } catch {\r\n return {};\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n\r\n private buildTree(data: any, parentKey: string = '0'): TreeNode[] {\r\n if (Array.isArray(data)) {\r\n return data.map((item, index) => {\r\n const key = `${parentKey}-${index}`;\r\n\r\n if (this.isComplex(item)) {\r\n return {\r\n key,\r\n label: `[${index}]`,\r\n //icon: this.getIcon(item),\r\n children: this.buildTree(item, key),\r\n };\r\n }\r\n\r\n return {\r\n key,\r\n label: `[${index}]: ${this.formatPrimitive(item)}`,\r\n //icon: 'pi pi-file',\r\n };\r\n });\r\n }\r\n\r\n if (typeof data === 'object' && data !== null) {\r\n return Object.keys(data).map((key, index) => {\r\n const value = data[key];\r\n const nodeKey = `${parentKey}-${index}`;\r\n\r\n if (this.isComplex(value)) {\r\n return {\r\n key: nodeKey,\r\n label: key,\r\n //icon: this.getIcon(value),\r\n children: this.buildTree(value, nodeKey),\r\n };\r\n }\r\n\r\n return {\r\n key: nodeKey,\r\n label: `${key}: ${this.formatPrimitive(value)}`,\r\n icon: 'pi pi-file',\r\n };\r\n });\r\n }\r\n\r\n return [\r\n {\r\n key: parentKey,\r\n label: this.formatPrimitive(data),\r\n icon: 'pi pi-file',\r\n },\r\n ];\r\n }\r\n\r\n private isComplex(value: unknown): boolean {\r\n return (\r\n Array.isArray(value) || (typeof value === 'object' && value !== null)\r\n );\r\n }\r\n\r\n private formatPrimitive(value: unknown): string {\r\n if (value === null || value === undefined) return '-';\r\n\r\n if (typeof value === 'string') return value;\r\n\r\n return String(value);\r\n }\r\n\r\n private getIcon(value: any): string {\r\n if (Array.isArray(value)) return 'pi pi-list';\r\n\r\n if (typeof value === 'object') return 'pi pi-folder';\r\n\r\n return 'pi pi-file';\r\n }\r\n}\r\n","<p-tree\r\n\t[value]=\"nodes\"\r\n\tclass=\"json-tree w-full\"\r\n\tselectionMode=\"single\"\r\n\t[(selection)]=\"selectedNode\"\r\n\t[highlightOnSelect]=\"false\"\r\n\t(onNodeSelect)=\"onNodeSelect($event)\"\r\n>\r\n</p-tree>\r\n","import { Component, input } from '@angular/core';\r\nimport { CountUpDirective } from 'ngx-countup';\r\n\r\n@Component({\r\n selector: 'app-kpicard',\r\n imports: [CountUpDirective],\r\n templateUrl: './kpicard.component.html',\r\n styleUrl: './kpicard.component.css',\r\n})\r\nexport class KpicardComponent {\r\n //type = input.required<string>();\r\n option = input.required<'currency' | 'integer' | 'percent'>();\r\n label = input.required<string>();\r\n iconType = input<string>('fa-regular fa-bell');\r\n color = input<string>();\r\n valor = input<number>(0);\r\n theme = input<\r\n | 'light'\r\n | 'dark'\r\n | 'aqua'\r\n | 'sunset'\r\n | 'mint'\r\n | 'peach'\r\n | 'plasma'\r\n | 'nebula'\r\n >('light');\r\n\r\n options: Record<'currency' | 'integer' | 'percent', any> = {\r\n currency: {\r\n startVal: 0,\r\n duration: 0.5,\r\n //prefix: 'Q',\r\n decimalPlaces: 2, // Decimales\r\n useGrouping: true, // Separador de miles\r\n separator: ',', // Carácter separador\r\n decimal: '.', // Carácter decimal\r\n suffix: ' GTQ', // Sufijo\r\n scrollSpyDelay: 200, // Retardo antes de la animación\r\n enableScrollSpy: true,\r\n scrollSpyOnce: true,\r\n },\r\n integer: {\r\n startVal: 0,\r\n duration: 0.5,\r\n prefix: 'Cant. ',\r\n decimalPlaces: 2, // Decimales\r\n useGrouping: true, // Separador de miles\r\n separator: ',', // Carácter separador\r\n decimal: '.', // Carácter decimal\r\n scrollSpyDelay: 200, // Retardo antes de la animación\r\n enableScrollSpy: true,\r\n scrollSpyOnce: true,\r\n },\r\n percent: {\r\n startVal: 0,\r\n duration: 0.5,\r\n suffix: '%',\r\n decimalPlaces: 2, // Decimales\r\n useGrouping: true, // Separador de miles\r\n separator: ',', // Carácter separador\r\n decimal: '.', // Carácter decimal\r\n scrollSpyDelay: 200, // Retardo antes de la animación\r\n enableScrollSpy: true,\r\n scrollSpyOnce: true,\r\n },\r\n };\r\n\r\n // ✅ Método auxiliar para obtener la opción con seguridad\r\n getSelectedOption() {\r\n return this.options[this.option()] ?? this.options.currency; // Si no existe, usa `currency`\r\n }\r\n}\r\n","<div [class]=\"`kpi-card ${color()} ${theme()}-theme`\">\r\n <div class=\"kpi-container\">\r\n <span\r\n [countUp]=\"valor()\"\r\n [countUpOptions]=\"getSelectedOption()\"\r\n [class]=\"`card-value-${theme()}`\"\r\n >0</span\r\n >\r\n <span [class]=\"`card-text-${theme()}`\">{{ label() }}</span>\r\n </div>\r\n <i [class]=\"`${iconType()} icon icon-${theme()}`\"></i>\r\n</div>\r\n","import {\r\n Component,\r\n effect,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n input,\r\n Output,\r\n signal,\r\n viewChild,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { DialogModule } from 'primeng/dialog';\r\n\r\ntype DocxRenderOptions = {\r\n ignoreWidth?: boolean;\r\n renderHeaders?: boolean;\r\n renderFooters?: boolean;\r\n};\r\n\r\ntype DocxPreviewModule = {\r\n renderAsync: (\r\n document: Blob,\r\n bodyContainer: HTMLElement,\r\n styleContainer?: HTMLElement,\r\n options?: DocxRenderOptions,\r\n ) => Promise<void>;\r\n};\r\n\r\n@Component({\r\n selector: 'app-docx-preview',\r\n imports: [DialogModule, AvatarModule],\r\n templateUrl: './docx-preview.component.html',\r\n styleUrl: './docx-preview.component.css',\r\n})\r\nexport class DocxPreviewComponent {\r\n view = viewChild<ElementRef>('viewer');\r\n private visibleState: WritableSignal<boolean> = signal(false);\r\n private renderToken = 0;\r\n\r\n @Input()\r\n set visible(value: boolean) {\r\n this.visibleState.set(!!value);\r\n }\r\n\r\n get visible(): boolean {\r\n return this.visibleState();\r\n }\r\n\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n blob = input<Blob | null>(null);\r\n\r\n constructor() {\r\n effect(() => {\r\n const container = this.view()?.nativeElement;\r\n const isVisible = this.visibleState();\r\n const fileBlob = this.blob();\r\n\r\n if (!container) {\r\n return;\r\n }\r\n\r\n if (!isVisible) {\r\n this.renderToken++;\r\n container.innerHTML = '';\r\n return;\r\n }\r\n\r\n if (!(fileBlob instanceof Blob)) {\r\n this.renderToken++;\r\n container.innerHTML =\r\n '<p>No hay un archivo .docx válido para previsualizar.</p>';\r\n return;\r\n }\r\n\r\n if (!fileBlob.size) {\r\n this.renderToken++;\r\n container.innerHTML = '<p>El archivo .docx está vacío.</p>';\r\n return;\r\n }\r\n\r\n const token = ++this.renderToken;\r\n container.innerHTML = '';\r\n const options: DocxRenderOptions = {\r\n ignoreWidth: true,\r\n renderHeaders: true,\r\n renderFooters: true,\r\n };\r\n\r\n void this.renderDocx(fileBlob, container, options, token);\r\n });\r\n }\r\n\r\n private async renderDocx(\r\n fileBlob: Blob,\r\n container: HTMLElement,\r\n options: DocxRenderOptions,\r\n token: number,\r\n ) {\r\n try {\r\n // Import dinámico directo: esbuild/Vite lo interceptan en build time.\r\n // Si el consumidor no instaló docx-preview, el catch captura el error\r\n // y muestra el mensaje de fallback sin romper el resto de la librería.\r\n const docxPreviewModule = (await import(\r\n // @ts-ignore — peer opcional; puede no existir en todos los consumidores\r\n 'docx-preview'\r\n )) as unknown as DocxPreviewModule;\r\n\r\n if (token !== this.renderToken || !this.visibleState()) {\r\n return;\r\n }\r\n\r\n await docxPreviewModule.renderAsync(\r\n fileBlob,\r\n container,\r\n undefined,\r\n options,\r\n );\r\n } catch (error) {\r\n if (token !== this.renderToken || !this.visibleState()) {\r\n return;\r\n }\r\n\r\n console.error(\r\n '[DocxPreview] Error al renderizar el archivo DOCX.',\r\n error,\r\n );\r\n\r\n container.innerHTML =\r\n '<p>No se pudo renderizar la vista previa DOCX. Verifica la consola para más detalles.</p>';\r\n }\r\n }\r\n\r\n onHide() {\r\n const container = this.view()?.nativeElement;\r\n\r\n if (container) {\r\n this.renderToken++;\r\n container.innerHTML = '';\r\n }\r\n\r\n this.visibleChange.emit(false);\r\n }\r\n}\r\n","<p-dialog\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n <ng-template #header>\r\n <div class=\"flex justify-content-center align-items-center gap-2 px-2\">\r\n <p-avatar image=\"icon2/word-2019.png\" />\r\n <span class=\"font-bold\">Vista preliminar del documento</span>\r\n </div>\r\n </ng-template>\r\n <div #viewer></div>\r\n</p-dialog>\r\n","import { Component, OnDestroy, effect, input, model } from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { DialogModule } from 'primeng/dialog';\r\n\r\n@Component({\r\n selector: 'app-pdf-preview',\r\n imports: [DialogModule],\r\n templateUrl: './pdf-preview.component.html',\r\n styleUrl: './pdf-preview.component.css',\r\n})\r\nexport class PdfPreviewComponent implements OnDestroy {\r\n visible = model<boolean>(false);\r\n blob = input<Blob | null>(null);\r\n private objectUrl: string | null = null;\r\n pdfUrl: SafeResourceUrl | null = null;\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n effect((onCleanup) => {\r\n const file = this.blob();\r\n const isVisible = this.visible();\r\n\r\n if (!isVisible || file === null) {\r\n this.limpiarUrlAnterior();\r\n return;\r\n }\r\n\r\n if (file.type !== 'application/pdf') {\r\n this.limpiarUrlAnterior();\r\n console.warn('El archivo recibido no es un PDF válido');\r\n return;\r\n }\r\n\r\n this.limpiarUrlAnterior();\r\n const currentObjectUrl = URL.createObjectURL(file);\r\n this.objectUrl = currentObjectUrl;\r\n this.pdfUrl =\r\n this.sanitizer.bypassSecurityTrustResourceUrl(currentObjectUrl);\r\n\r\n onCleanup(() => {\r\n URL.revokeObjectURL(currentObjectUrl);\r\n if (this.objectUrl === currentObjectUrl) {\r\n this.objectUrl = null;\r\n this.pdfUrl = null;\r\n }\r\n });\r\n });\r\n }\r\n\r\n private limpiarUrlAnterior(): void {\r\n if (this.objectUrl) {\r\n URL.revokeObjectURL(this.objectUrl);\r\n this.objectUrl = null;\r\n }\r\n this.pdfUrl = null;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.limpiarUrlAnterior();\r\n }\r\n}\r\n","<p-dialog\r\n header=\"Vista previa del documento de soporte\"\r\n [(visible)]=\"visible\"\r\n [style]=\"{ width: '80vw', height: '90vh' }\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n @if (pdfUrl) {\r\n <iframe\r\n [src]=\"pdfUrl\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n style=\"border: none\"\r\n ></iframe>\r\n }\r\n</p-dialog>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -3,12 +3,14 @@ import * as i0 from '@angular/core';
3
3
  import { Input, Component, forwardRef, viewChild, input, signal, effect, EventEmitter, Output, model, InjectionToken, inject, Injectable, output, computed, HostBinding, Pipe, ViewEncapsulation, isDevMode, HostListener, Directive, NgModule } from '@angular/core';
4
4
  import * as i1 from 'primeng/tag';
5
5
  import { TagModule } from 'primeng/tag';
6
- import * as i2 from '@angular/forms';
6
+ import * as i2$1 from '@angular/forms';
7
7
  import { NG_VALUE_ACCESSOR, FormControl, FormsModule, ReactiveFormsModule, FormGroup } from '@angular/forms';
8
8
  import { FileUpload, FileUploadModule } from 'primeng/fileupload';
9
9
  import * as i1$1 from 'primeng/tree';
10
10
  import { TreeModule } from 'primeng/tree';
11
11
  import { CountUpDirective } from 'ngx-countup';
12
+ import * as i2 from 'primeng/avatar';
13
+ import { AvatarModule, Avatar } from 'primeng/avatar';
12
14
  import * as i1$2 from 'primeng/dialog';
13
15
  import { DialogModule } from 'primeng/dialog';
14
16
  import * as i1$3 from '@angular/platform-browser';
@@ -31,7 +33,6 @@ import * as i4 from 'primeng/menubar';
31
33
  import { MenubarModule } from 'primeng/menubar';
32
34
  import { JwtHelperService } from '@auth0/angular-jwt';
33
35
  import { CookieService } from 'ngx-cookie-service';
34
- import { Avatar, AvatarModule } from 'primeng/avatar';
35
36
  import { AccordionModule } from 'primeng/accordion';
36
37
  import { AutoCompleteModule } from 'primeng/autocomplete';
37
38
  import { AutoFocusModule } from 'primeng/autofocus';
@@ -500,10 +501,12 @@ class DocxPreviewComponent {
500
501
  }
501
502
  async renderDocx(fileBlob, container, options, token) {
502
503
  try {
503
- // Use Function constructor to bypass Vite's static import analysis.
504
- // This makes 'docx-preview' a truly optional peer dependency.
505
- const load = new Function('m', 'return import(m)');
506
- const docxPreviewModule = (await load('docx-preview'));
504
+ // Import dinámico directo: esbuild/Vite lo interceptan en build time.
505
+ // Si el consumidor no instaló docx-preview, el catch captura el error
506
+ // y muestra el mensaje de fallback sin romper el resto de la librería.
507
+ const docxPreviewModule = (await import(
508
+ // @ts-ignore — peer opcional; puede no existir en todos los consumidores
509
+ 'docx-preview'));
507
510
  if (token !== this.renderToken || !this.visibleState()) {
508
511
  return;
509
512
  }
@@ -527,11 +530,11 @@ class DocxPreviewComponent {
527
530
  this.visibleChange.emit(false);
528
531
  }
529
532
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DocxPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
530
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.11", type: DocxPreviewComponent, isStandalone: true, selector: "app-docx-preview", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, viewQueries: [{ propertyName: "view", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], ngImport: i0, template: "<p-dialog\r\n header=\"Vista preliminar del documento\"\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n>\r\n <div #viewer></div>\r\n</p-dialog>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1$2.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "maskMotionOptions", "motionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }] });
533
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.11", type: DocxPreviewComponent, isStandalone: true, selector: "app-docx-preview", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, viewQueries: [{ propertyName: "view", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], ngImport: i0, template: "<p-dialog\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n <ng-template #header>\r\n <div class=\"flex justify-content-center align-items-center gap-2 px-2\">\r\n <p-avatar image=\"icon2/word-2019.png\" />\r\n <span class=\"font-bold\">Vista preliminar del documento</span>\r\n </div>\r\n </ng-template>\r\n <div #viewer></div>\r\n</p-dialog>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1$2.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "maskMotionOptions", "motionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }] });
531
534
  }
532
535
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DocxPreviewComponent, decorators: [{
533
536
  type: Component,
534
- args: [{ selector: 'app-docx-preview', imports: [DialogModule], template: "<p-dialog\r\n header=\"Vista preliminar del documento\"\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n>\r\n <div #viewer></div>\r\n</p-dialog>\r\n" }]
537
+ args: [{ selector: 'app-docx-preview', imports: [DialogModule, AvatarModule], template: "<p-dialog\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n <ng-template #header>\r\n <div class=\"flex justify-content-center align-items-center gap-2 px-2\">\r\n <p-avatar image=\"icon2/word-2019.png\" />\r\n <span class=\"font-bold\">Vista preliminar del documento</span>\r\n </div>\r\n </ng-template>\r\n <div #viewer></div>\r\n</p-dialog>\r\n" }]
535
538
  }], ctorParameters: () => [], propDecorators: { view: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }], visible: [{
536
539
  type: Input
537
540
  }], visibleChange: [{
@@ -2707,6 +2710,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
2707
2710
  * **Navegación / Utilidades**
2708
2711
  * - `home` → Ir al inicio (gris)
2709
2712
  * - `refresh` → Recargar datos desde el servidor (morado)
2713
+ *
2714
+ * **Consulta / Descarga**
2715
+ * - `view` → Previsualizar o abrir detalle (azul cielo)
2716
+ * - `download` → Descargar archivo o recurso (ámbar cálido)
2710
2717
  */
2711
2718
  const ACTION_TYPES = {
2712
2719
  delete: 'delete',
@@ -2718,6 +2725,8 @@ const ACTION_TYPES = {
2718
2725
  create: 'create',
2719
2726
  saveOrUpdate: 'saveOrUpdate',
2720
2727
  refresh: 'refresh',
2728
+ view: 'view',
2729
+ download: 'download',
2721
2730
  };
2722
2731
  /**
2723
2732
  * Paleta corporativa de colores para `dsx-button`.
@@ -2735,6 +2744,8 @@ const ACTION_TYPES = {
2735
2744
  * | info | Cian suave | Recargar datos / refrescar vista |
2736
2745
  * | neutral | Gris azulado | Acción secundaria / navegación sin contexto |
2737
2746
  * | restore | Violeta suave | Deshacer / restaurar estado anterior |
2747
+ * | view | Teal profundo | Ver / previsualizar detalle |
2748
+ * | download | Naranja quemado| Descargar archivo o recurso |
2738
2749
  */
2739
2750
  const DSX_PALETTE = {
2740
2751
  danger: '#EF5350',
@@ -2745,6 +2756,8 @@ const DSX_PALETTE = {
2745
2756
  info: '#26C6DA',
2746
2757
  neutral: '#90A4AE',
2747
2758
  restore: '#AB47BC',
2759
+ view: '#00838F',
2760
+ download: '#E65100',
2748
2761
  };
2749
2762
  class DsxButtonComponent {
2750
2763
  _paramService = inject((ParameterValuesService));
@@ -3122,6 +3135,20 @@ const ACTION_CONFIG = {
3122
3135
  colorToken: 'success',
3123
3136
  tooltip: 'Nuevo registro',
3124
3137
  },
3138
+ view: {
3139
+ label: 'Visualizar',
3140
+ icon: 'visibility',
3141
+ primeIcon: 'pi pi-eye',
3142
+ colorToken: 'view',
3143
+ tooltip: 'Vista previa',
3144
+ },
3145
+ download: {
3146
+ label: 'Descargar',
3147
+ icon: 'download',
3148
+ primeIcon: 'pi pi-download',
3149
+ colorToken: 'download',
3150
+ tooltip: 'Descargar archivo',
3151
+ },
3125
3152
  };
3126
3153
 
3127
3154
  /** SVG del icono help como fallback de emergencia */
@@ -4174,7 +4201,7 @@ class NavbarDsxComponent {
4174
4201
  });
4175
4202
  }
4176
4203
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: NavbarDsxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4177
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.11", type: NavbarDsxComponent, isStandalone: true, selector: "app-navbar-dsx", inputs: { appVersion: { classPropertyName: "appVersion", publicName: "appVersion", isSignal: true, isRequired: false, transformFunction: null }, logoWidth: { classPropertyName: "logoWidth", publicName: "logoWidth", isSignal: true, isRequired: false, transformFunction: null }, urlLogo: { classPropertyName: "urlLogo", publicName: "urlLogo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<p-menubar>\r\n <ng-template #start>\r\n <p-image\r\n class=\"ms-15\"\r\n [src]=\"urlLogo()\"\r\n alt=\"Image\"\r\n [width]=\"logoWidth()\"\r\n />\r\n <span class=\"version-text\">{{ appVersion() }}</span>\r\n </ng-template>\r\n <ng-template #end>\r\n <div>\r\n <!-- Datos del usuario -->\r\n <div class=\"navbar-user-info\">\r\n <icon-dsx name=\"verified_user\" class=\"navbar-user-icon\"></icon-dsx>\r\n <div class=\"navbar-user-text\">\r\n <span class=\"navbar-user-name\">\r\n {{ _authorizeService.getTokenValues.userName }}\r\n </span>\r\n <span class=\"navbar-user-role\">\r\n {{ currentRole }}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Componente de estado de red -->\r\n <app-network-status></app-network-status>\r\n\r\n <!-- Actualizaci\u00F3n de permisos -->\r\n <p-button\r\n class=\"mr-2\"\r\n label=\"Permisos\"\r\n variant=\"text\"\r\n severity=\"info\"\r\n (click)=\"actualizarSeguridadIT()\"\r\n >\r\n <span class=\"material-symbols-outlined mr-1\">local_police</span>\r\n </p-button>\r\n\r\n <label class=\"ui-switch\">\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"checked\"\r\n (click)=\"onThemeChange(!checked ? true : false)\"\r\n />\r\n <div class=\"slider\">\r\n <div class=\"circle\"></div>\r\n </div>\r\n </label>\r\n <!-- <p-inputSwitch\r\n [(ngModel)]=\"checked\"\r\n (onChange)=\"onThemeChange($event.checked)\"\r\n ></p-inputSwitch> -->\r\n </div>\r\n </ng-template>\r\n</p-menubar>\r\n", styles: [":host ::ng-deep .p-menubar{display:flex;align-items:center!important;padding:.25rem 1.5rem!important;border-radius:999px;border:1px solid rgba(255,255,255,.2);background:#ffffff1f!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 10px 30px #0f172a14;margin-left:4rem;margin-right:2.5rem}:host ::ng-deep .p-menubar-end>*{display:flex;align-items:center}.version-text{font-size:1.3rem;font-family:Montserrat,sans-serif!important;margin-left:.5rem;font-weight:600;background-image:linear-gradient(to right,#38bdf8,#630cb4);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 2px 4px rgba(0,0,0,.1);padding:.2rem 0}.navbar-user-info{display:flex;align-items:center;gap:.35rem;padding:0 .75rem;border-radius:999px;background-color:#00000005}.navbar-user-icon{font-size:1.1rem;color:#374151}.navbar-user-name{font-size:.8rem;font-weight:500;color:#374151;white-space:nowrap}.navbar-user-text{display:flex;flex-direction:column;line-height:1.1}.navbar-user-role{font-size:.7rem;color:#6b7280;white-space:nowrap}.ui-switch{--switch-bg: rgb(135, 150, 165);--switch-width: 48px;--switch-height: 20px;--circle-diameter: 32px;--circle-bg: rgb(232, 89, 15);--circle-inset: calc((var(--circle-diameter) - var(--switch-height)) / 2)}.ui-switch input{display:none}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--switch-width);height:var(--switch-height);background:var(--switch-bg);border-radius:999px;position:relative;cursor:pointer}.slider .circle{top:calc(var(--circle-inset) * -1);left:0;width:var(--circle-diameter);height:var(--circle-diameter);position:absolute;background:var(--circle-bg);border-radius:inherit;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTkuMzA1IDEuNjY3VjMuNzVoMS4zODlWMS42NjdoLTEuMzl6bS00LjcwNyAxLjk1bC0uOTgyLjk4Mkw1LjA5IDYuMDcybC45ODItLjk4Mi0xLjQ3My0xLjQ3M3ptMTAuODAyIDBMMTMuOTI3IDUuMDlsLjk4Mi45ODIgMS40NzMtMS40NzMtLjk4Mi0uOTgyek0xMCA1LjEzOWE0Ljg3MiA0Ljg3MiAwIDAwLTQuODYyIDQuODZBNC44NzIgNC44NzIgMCAwMDEwIDE0Ljg2MiA0Ljg3MiA0Ljg3MiAwIDAwMTQuODYgMTAgNC44NzIgNC44NzIgMCAwMDEwIDUuMTM5em0wIDEuMzg5QTMuNDYyIDMuNDYyIDAgMDExMy40NzEgMTBhMy40NjIgMy40NjIgMCAwMS0zLjQ3MyAzLjQ3MkEzLjQ2MiAzLjQ2MiAwIDAxNi41MjcgMTAgMy40NjIgMy40NjIgMCAwMTEwIDYuNTI4ek0xLjY2NSA5LjMwNXYxLjM5aDIuMDgzdi0xLjM5SDEuNjY2em0xNC41ODMgMHYxLjM5aDIuMDg0di0xLjM5aC0yLjA4NHpNNS4wOSAxMy45MjhMMy42MTYgMTUuNGwuOTgyLjk4MiAxLjQ3My0xLjQ3My0uOTgyLS45ODJ6bTkuODIgMGwtLjk4Mi45ODIgMS40NzMgMS40NzMuOTgyLS45ODItMS40NzMtMS40NzN6TTkuMzA1IDE2LjI1djIuMDgzaDEuMzg5VjE2LjI1aC0xLjM5eiIgLz4KPC9zdmc+);background-repeat:no-repeat;background-position:center center;-webkit-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;-o-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms;transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.slider .circle:before{content:\"\";position:absolute;width:100%;height:100%;background:#ffffffbf;border-radius:inherit;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;opacity:0}.ui-switch input:checked+.slider .circle{left:calc(100% - var(--circle-diameter));background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTQuMiAyLjVsLS43IDEuOC0xLjguNyAxLjguNy43IDEuOC42LTEuOEw2LjcgNWwtMS45LS43LS42LTEuOHptMTUgOC4zYTYuNyA2LjcgMCAxMS02LjYtNi42IDUuOCA1LjggMCAwMDYuNiA2LjZ6IiAvPgo8L3N2Zz4=);background-color:#003892}.ui-switch input:active+.slider .circle:before{-webkit-transition:0s;-o-transition:0s;transition:0s;opacity:1;width:0;height:0}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$6.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { 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: IconDsxComponent, selector: "icon-dsx", inputs: ["name"] }, { kind: "ngmodule", type: ImageModule }, { kind: "component", type: i3.Image, selector: "p-image", inputs: ["imageClass", "imageStyle", "styleClass", "src", "srcSet", "sizes", "previewImageSrc", "previewImageSrcSet", "previewImageSizes", "alt", "width", "height", "loading", "preview", "showTransitionOptions", "hideTransitionOptions", "modalEnterAnimation", "modalLeaveAnimation", "appendTo", "maskMotionOptions", "motionOptions"], outputs: ["onShow", "onHide", "onImageError"] }, { kind: "ngmodule", type: MenubarModule }, { kind: "component", type: i4.Menubar, selector: "p-menubar", inputs: ["model", "styleClass", "autoZIndex", "baseZIndex", "autoDisplay", "autoHide", "breakpoint", "autoHideDelay", "id", "ariaLabel", "ariaLabelledBy"], outputs: ["onFocus", "onBlur"] }, { kind: "component", type: NetworkStatusComponent, selector: "app-network-status" }] });
4204
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.11", type: NavbarDsxComponent, isStandalone: true, selector: "app-navbar-dsx", inputs: { appVersion: { classPropertyName: "appVersion", publicName: "appVersion", isSignal: true, isRequired: false, transformFunction: null }, logoWidth: { classPropertyName: "logoWidth", publicName: "logoWidth", isSignal: true, isRequired: false, transformFunction: null }, urlLogo: { classPropertyName: "urlLogo", publicName: "urlLogo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<p-menubar>\r\n <ng-template #start>\r\n <p-image\r\n class=\"ms-15\"\r\n [src]=\"urlLogo()\"\r\n alt=\"Image\"\r\n [width]=\"logoWidth()\"\r\n />\r\n <span class=\"version-text\">{{ appVersion() }}</span>\r\n </ng-template>\r\n <ng-template #end>\r\n <div>\r\n <!-- Datos del usuario -->\r\n <div class=\"navbar-user-info\">\r\n <icon-dsx name=\"verified_user\" class=\"navbar-user-icon\"></icon-dsx>\r\n <div class=\"navbar-user-text\">\r\n <span class=\"navbar-user-name\">\r\n {{ _authorizeService.getTokenValues.userName }}\r\n </span>\r\n <span class=\"navbar-user-role\">\r\n {{ currentRole }}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Componente de estado de red -->\r\n <app-network-status></app-network-status>\r\n\r\n <!-- Actualizaci\u00F3n de permisos -->\r\n <p-button\r\n class=\"mr-2\"\r\n label=\"Permisos\"\r\n variant=\"text\"\r\n severity=\"info\"\r\n (click)=\"actualizarSeguridadIT()\"\r\n >\r\n <span class=\"material-symbols-outlined mr-1\">local_police</span>\r\n </p-button>\r\n\r\n <label class=\"ui-switch\">\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"checked\"\r\n (click)=\"onThemeChange(!checked ? true : false)\"\r\n />\r\n <div class=\"slider\">\r\n <div class=\"circle\"></div>\r\n </div>\r\n </label>\r\n <!-- <p-inputSwitch\r\n [(ngModel)]=\"checked\"\r\n (onChange)=\"onThemeChange($event.checked)\"\r\n ></p-inputSwitch> -->\r\n </div>\r\n </ng-template>\r\n</p-menubar>\r\n", styles: [":host ::ng-deep .p-menubar{display:flex;align-items:center!important;padding:.25rem 1.5rem!important;border-radius:999px;border:1px solid rgba(255,255,255,.2);background:#ffffff1f!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 10px 30px #0f172a14;margin-left:4rem;margin-right:2.5rem}:host ::ng-deep .p-menubar-end>*{display:flex;align-items:center}.version-text{font-size:1.3rem;font-family:Montserrat,sans-serif!important;margin-left:.5rem;font-weight:600;background-image:linear-gradient(to right,#38bdf8,#630cb4);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 2px 4px rgba(0,0,0,.1);padding:.2rem 0}.navbar-user-info{display:flex;align-items:center;gap:.35rem;padding:0 .75rem;border-radius:999px;background-color:#00000005}.navbar-user-icon{font-size:1.1rem;color:#374151}.navbar-user-name{font-size:.8rem;font-weight:500;color:#374151;white-space:nowrap}.navbar-user-text{display:flex;flex-direction:column;line-height:1.1}.navbar-user-role{font-size:.7rem;color:#6b7280;white-space:nowrap}.ui-switch{--switch-bg: rgb(135, 150, 165);--switch-width: 48px;--switch-height: 20px;--circle-diameter: 32px;--circle-bg: rgb(232, 89, 15);--circle-inset: calc((var(--circle-diameter) - var(--switch-height)) / 2)}.ui-switch input{display:none}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--switch-width);height:var(--switch-height);background:var(--switch-bg);border-radius:999px;position:relative;cursor:pointer}.slider .circle{top:calc(var(--circle-inset) * -1);left:0;width:var(--circle-diameter);height:var(--circle-diameter);position:absolute;background:var(--circle-bg);border-radius:inherit;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTkuMzA1IDEuNjY3VjMuNzVoMS4zODlWMS42NjdoLTEuMzl6bS00LjcwNyAxLjk1bC0uOTgyLjk4Mkw1LjA5IDYuMDcybC45ODItLjk4Mi0xLjQ3My0xLjQ3M3ptMTAuODAyIDBMMTMuOTI3IDUuMDlsLjk4Mi45ODIgMS40NzMtMS40NzMtLjk4Mi0uOTgyek0xMCA1LjEzOWE0Ljg3MiA0Ljg3MiAwIDAwLTQuODYyIDQuODZBNC44NzIgNC44NzIgMCAwMDEwIDE0Ljg2MiA0Ljg3MiA0Ljg3MiAwIDAwMTQuODYgMTAgNC44NzIgNC44NzIgMCAwMDEwIDUuMTM5em0wIDEuMzg5QTMuNDYyIDMuNDYyIDAgMDExMy40NzEgMTBhMy40NjIgMy40NjIgMCAwMS0zLjQ3MyAzLjQ3MkEzLjQ2MiAzLjQ2MiAwIDAxNi41MjcgMTAgMy40NjIgMy40NjIgMCAwMTEwIDYuNTI4ek0xLjY2NSA5LjMwNXYxLjM5aDIuMDgzdi0xLjM5SDEuNjY2em0xNC41ODMgMHYxLjM5aDIuMDg0di0xLjM5aC0yLjA4NHpNNS4wOSAxMy45MjhMMy42MTYgMTUuNGwuOTgyLjk4MiAxLjQ3My0xLjQ3My0uOTgyLS45ODJ6bTkuODIgMGwtLjk4Mi45ODIgMS40NzMgMS40NzMuOTgyLS45ODItMS40NzMtMS40NzN6TTkuMzA1IDE2LjI1djIuMDgzaDEuMzg5VjE2LjI1aC0xLjM5eiIgLz4KPC9zdmc+);background-repeat:no-repeat;background-position:center center;-webkit-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;-o-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms;transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.slider .circle:before{content:\"\";position:absolute;width:100%;height:100%;background:#ffffffbf;border-radius:inherit;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;opacity:0}.ui-switch input:checked+.slider .circle{left:calc(100% - var(--circle-diameter));background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTQuMiAyLjVsLS43IDEuOC0xLjguNyAxLjguNy43IDEuOC42LTEuOEw2LjcgNWwtMS45LS43LS42LTEuOHptMTUgOC4zYTYuNyA2LjcgMCAxMS02LjYtNi42IDUuOCA1LjggMCAwMDYuNiA2LjZ6IiAvPgo8L3N2Zz4=);background-color:#003892}.ui-switch input:active+.slider .circle:before{-webkit-transition:0s;-o-transition:0s;transition:0s;opacity:1;width:0;height:0}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$6.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IconDsxComponent, selector: "icon-dsx", inputs: ["name"] }, { kind: "ngmodule", type: ImageModule }, { kind: "component", type: i3.Image, selector: "p-image", inputs: ["imageClass", "imageStyle", "styleClass", "src", "srcSet", "sizes", "previewImageSrc", "previewImageSrcSet", "previewImageSizes", "alt", "width", "height", "loading", "preview", "showTransitionOptions", "hideTransitionOptions", "modalEnterAnimation", "modalLeaveAnimation", "appendTo", "maskMotionOptions", "motionOptions"], outputs: ["onShow", "onHide", "onImageError"] }, { kind: "ngmodule", type: MenubarModule }, { kind: "component", type: i4.Menubar, selector: "p-menubar", inputs: ["model", "styleClass", "autoZIndex", "baseZIndex", "autoDisplay", "autoHide", "breakpoint", "autoHideDelay", "id", "ariaLabel", "ariaLabelledBy"], outputs: ["onFocus", "onBlur"] }, { kind: "component", type: NetworkStatusComponent, selector: "app-network-status" }] });
4178
4205
  }
4179
4206
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: NavbarDsxComponent, decorators: [{
4180
4207
  type: Component,