ngx-dsxlibrary 2.21.37 → 2.21.39

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,23 +1,23 @@
1
- import * as i1$1 from '@angular/common';
2
- import { DecimalPipe, CommonModule, AsyncPipe } from '@angular/common';
1
+ import * as i1$2 from '@angular/common';
2
+ import { DecimalPipe, CommonModule, AsyncPipe, Location } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Input, Component, input, forwardRef, viewChild, signal, EventEmitter, effect, Output, model, inject, computed, InjectionToken, Injectable, isDevMode, output, HostBinding, Pipe, ViewEncapsulation, HostListener, Directive, NgModule } from '@angular/core';
5
5
  import * as i1 from 'primeng/tag';
6
6
  import { TagModule } from 'primeng/tag';
7
- import * as i2 from '@angular/forms';
8
- import { FormsModule, NG_VALUE_ACCESSOR, FormControl, ReactiveFormsModule, FormGroup } from '@angular/forms';
9
- import * as i2$1 from 'primeng/togglebutton';
7
+ import * as i1$1 from '@angular/forms';
8
+ import { FormsModule, NG_VALUE_ACCESSOR, FormControl, FormBuilder, Validators, ReactiveFormsModule, FormGroup } from '@angular/forms';
9
+ import * as i2 from 'primeng/togglebutton';
10
10
  import { ToggleButtonModule } from 'primeng/togglebutton';
11
11
  import { FileUpload, FileUploadModule } from 'primeng/fileupload';
12
- import * as i2$2 from 'primeng/tree';
12
+ import * as i2$1 from 'primeng/tree';
13
13
  import { TreeModule } from 'primeng/tree';
14
14
  import * as i3 from 'primeng/api';
15
- import * as i1$2 from 'primeng/tooltip';
15
+ import * as i1$3 from 'primeng/tooltip';
16
16
  import { TooltipModule } from 'primeng/tooltip';
17
17
  import { CountUpDirective } from 'ngx-countup';
18
18
  import * as i2$3 from 'primeng/avatar';
19
19
  import { AvatarModule, Avatar } from 'primeng/avatar';
20
- import * as i1$3 from 'primeng/dialog';
20
+ import * as i2$2 from 'primeng/dialog';
21
21
  import { DialogModule } from 'primeng/dialog';
22
22
  import * as i1$4 from '@angular/platform-browser';
23
23
  import { DomSanitizer } from '@angular/platform-browser';
@@ -40,6 +40,10 @@ import * as i4 from 'primeng/menubar';
40
40
  import { MenubarModule } from 'primeng/menubar';
41
41
  import { JwtHelperService } from '@auth0/angular-jwt';
42
42
  import { CookieService } from 'ngx-cookie-service';
43
+ import * as i6 from 'primeng/floatlabel';
44
+ import { FloatLabelModule } from 'primeng/floatlabel';
45
+ import * as i7 from 'primeng/password';
46
+ import { PasswordModule } from 'primeng/password';
43
47
  import { AccordionModule } from 'primeng/accordion';
44
48
  import { AutoCompleteModule } from 'primeng/autocomplete';
45
49
  import { AutoFocusModule } from 'primeng/autofocus';
@@ -52,7 +56,6 @@ import { DatePickerModule } from 'primeng/datepicker';
52
56
  import { DividerModule } from 'primeng/divider';
53
57
  import { DrawerModule } from 'primeng/drawer';
54
58
  import { FieldsetModule } from 'primeng/fieldset';
55
- import { FloatLabelModule } from 'primeng/floatlabel';
56
59
  import { IconFieldModule } from 'primeng/iconfield';
57
60
  import { InputIconModule } from 'primeng/inputicon';
58
61
  import { InputMaskModule } from 'primeng/inputmask';
@@ -65,7 +68,6 @@ import { MultiSelectModule } from 'primeng/multiselect';
65
68
  import { OrganizationChartModule } from 'primeng/organizationchart';
66
69
  import { OverlayBadgeModule } from 'primeng/overlaybadge';
67
70
  import { PanelMenuModule } from 'primeng/panelmenu';
68
- import { PasswordModule } from 'primeng/password';
69
71
  import { PickListModule } from 'primeng/picklist';
70
72
  import { PopoverModule } from 'primeng/popover';
71
73
  import { RadioButtonModule } from 'primeng/radiobutton';
@@ -176,10 +178,10 @@ class AppMessageErrorComponent {
176
178
  }
177
179
  return this.defaultFloatLabelErrorSpace;
178
180
  }
179
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AppMessageErrorComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
180
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: AppMessageErrorComponent, isStandalone: true, selector: "app-message-error", inputs: { control: "control", form: "form" }, ngImport: i0, template: "<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 } @else if (control?.errors?.[\"invalidCUI\"]) {\r\n <strong>{{ control?.errors?.[\"invalidCUI\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"invalidDateRange\"]) {\r\n <strong>{{ control?.errors?.[\"invalidDateRange\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"dateNotRange\"]) {\r\n <strong>{{ control?.errors?.[\"dateNotRange\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"invalidDate\"]) {\r\n <strong>{{ control?.errors?.[\"invalidDate\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"minimumAge\"]) {\r\n <strong>{{ control?.errors?.[\"minimumAge\"]?.message }}</strong>\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\u00E1ximo\r\n <strong>{{ control?.errors?.[\"maxlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"min\"]) {\r\n El valor m\u00EDnimo permitido es\r\n <strong>{{ control?.errors?.[\"min\"]?.min }}</strong>\r\n } @else if (control?.errors?.[\"max\"]) {\r\n El valor m\u00E1ximo permitido es\r\n <strong>{{ control?.errors?.[\"max\"]?.max | number: \"1.2-2\" }}</strong>\r\n } @else if (control?.errors?.[\"email\"]) {\r\n Debe ser una direcci\u00F3n de correo v\u00E1lida.\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 if (control?.errors?.[\"invalidTemplateVariables\"]) {\r\n <div class=\"dsx-template-error\">\r\n <strong>\r\n {{ control?.errors?.[\"invalidTemplateVariables\"]?.message }}\r\n </strong>\r\n @if (control?.errors?.[\"invalidTemplateVariables\"]?.details?.length) {\r\n <span class=\"dsx-template-error-detail\">\r\n {{ control?.errors?.[\"invalidTemplateVariables\"]?.details?.[0] }}\r\n </span>\r\n }\r\n </div>\r\n } @else {\r\n Existe un error a\u00FAn 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", styles: [":host{display:block}.dsx-error-slot{max-height:0;margin-top:0;overflow:hidden;opacity:0;transition:max-height .22s ease,margin-top .22s ease,opacity .18s ease}.dsx-error-slot.is-visible{max-height:4.25rem;margin-top:.3rem;opacity:1}.dsx-error-message{--dsx-error-color: #b42318;--dsx-error-bg: #fff2f0;color:var(--dsx-error-color);font-family:Roboto,Montserrat,sans-serif;font-size:clamp(.75rem,.72rem + .12vw,.8125rem);font-weight:400;line-height:1.35;letter-spacing:.01em;display:flex;align-items:center;gap:.35rem;position:relative;z-index:1;padding:.2rem .45rem;border-left:3px solid var(--dsx-error-color);border-radius:0 6px 6px 0;background:var(--dsx-error-bg);box-shadow:0 1px 2px #00000014;max-width:min(40ch,100%);white-space:normal;word-break:break-word;transform:translateY(-2px);transition:transform .2s ease}.dsx-error-message strong{font-weight:500}.dsx-error-icon{flex-shrink:0;font-size:.78rem;line-height:1;color:var(--dsx-error-color)}.dsx-error-slot.is-visible .dsx-error-message{transform:translateY(0)}@media(max-width:640px){.dsx-error-slot.is-visible{max-height:5rem}.dsx-error-message{max-width:100%}}:host-context(.p-floatlabel){position:absolute;top:100%;left:0;width:100%;z-index:3;pointer-events:none}:host-context(.p-floatlabel) .dsx-error-slot{max-height:none;margin-top:.25rem;overflow:visible;opacity:0;transform:translateY(-3px);transition:opacity .16s ease,transform .18s ease}:host-context(.p-floatlabel) .dsx-error-slot.is-visible{opacity:1;transform:translateY(0)}:host-context(.p-floatlabel) .dsx-error-message{max-width:min(40ch,calc(100% - .25rem))}\n"], dependencies: [{ kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "pipe", type: DecimalPipe, name: "number" }] });
181
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AppMessageErrorComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
182
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: AppMessageErrorComponent, isStandalone: true, selector: "app-message-error", inputs: { control: "control", form: "form" }, ngImport: i0, template: "<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 } @else if (control?.errors?.[\"invalidCUI\"]) {\r\n <strong>{{ control?.errors?.[\"invalidCUI\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"invalidDateRange\"]) {\r\n <strong>{{ control?.errors?.[\"invalidDateRange\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"dateNotRange\"]) {\r\n <strong>{{ control?.errors?.[\"dateNotRange\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"invalidDate\"]) {\r\n <strong>{{ control?.errors?.[\"invalidDate\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"minimumAge\"]) {\r\n <strong>{{ control?.errors?.[\"minimumAge\"]?.message }}</strong>\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\u00E1ximo\r\n <strong>{{ control?.errors?.[\"maxlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"min\"]) {\r\n El valor m\u00EDnimo permitido es\r\n <strong>{{ control?.errors?.[\"min\"]?.min }}</strong>\r\n } @else if (control?.errors?.[\"max\"]) {\r\n El valor m\u00E1ximo permitido es\r\n <strong>{{ control?.errors?.[\"max\"]?.max | number: \"1.2-2\" }}</strong>\r\n } @else if (control?.errors?.[\"email\"]) {\r\n Debe ser una direcci\u00F3n de correo v\u00E1lida.\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 if (control?.errors?.[\"invalidTemplateVariables\"]) {\r\n <div class=\"dsx-template-error\">\r\n <strong>\r\n {{ control?.errors?.[\"invalidTemplateVariables\"]?.message }}\r\n </strong>\r\n @if (control?.errors?.[\"invalidTemplateVariables\"]?.details?.length) {\r\n <span class=\"dsx-template-error-detail\">\r\n {{ control?.errors?.[\"invalidTemplateVariables\"]?.details?.[0] }}\r\n </span>\r\n }\r\n </div>\r\n } @else {\r\n Existe un error a\u00FAn 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", styles: [":host{display:block}.dsx-error-slot{max-height:0;margin-top:0;overflow:hidden;opacity:0;transition:max-height .22s ease,margin-top .22s ease,opacity .18s ease}.dsx-error-slot.is-visible{max-height:4.25rem;margin-top:.3rem;opacity:1}.dsx-error-message{--dsx-error-color: #b42318;--dsx-error-bg: #fff2f0;color:var(--dsx-error-color);font-family:Roboto,Montserrat,sans-serif;font-size:clamp(.75rem,.72rem + .12vw,.8125rem);font-weight:400;line-height:1.35;letter-spacing:.01em;display:flex;align-items:center;gap:.35rem;position:relative;z-index:1;padding:.2rem .45rem;border-left:3px solid var(--dsx-error-color);border-radius:0 6px 6px 0;background:var(--dsx-error-bg);box-shadow:0 1px 2px #00000014;max-width:min(40ch,100%);white-space:normal;word-break:break-word;transform:translateY(-2px);transition:transform .2s ease}.dsx-error-message strong{font-weight:500}.dsx-error-icon{flex-shrink:0;font-size:.78rem;line-height:1;color:var(--dsx-error-color)}.dsx-error-slot.is-visible .dsx-error-message{transform:translateY(0)}@media(max-width:640px){.dsx-error-slot.is-visible{max-height:5rem}.dsx-error-message{max-width:100%}}:host-context(.p-floatlabel){position:absolute;top:100%;left:0;width:100%;z-index:3;pointer-events:none}:host-context(.p-floatlabel) .dsx-error-slot{max-height:none;margin-top:.25rem;overflow:visible;opacity:0;transform:translateY(-3px);transition:opacity .16s ease,transform .18s ease}:host-context(.p-floatlabel) .dsx-error-slot.is-visible{opacity:1;transform:translateY(0)}:host-context(.p-floatlabel) .dsx-error-message{max-width:min(40ch,calc(100% - .25rem))}\n"], dependencies: [{ kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "pipe", type: DecimalPipe, name: "number" }] });
181
183
  }
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AppMessageErrorComponent, decorators: [{
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AppMessageErrorComponent, decorators: [{
183
185
  type: Component,
184
186
  args: [{ selector: 'app-message-error', imports: [TagModule, DecimalPipe], template: "<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 } @else if (control?.errors?.[\"invalidCUI\"]) {\r\n <strong>{{ control?.errors?.[\"invalidCUI\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"invalidDateRange\"]) {\r\n <strong>{{ control?.errors?.[\"invalidDateRange\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"dateNotRange\"]) {\r\n <strong>{{ control?.errors?.[\"dateNotRange\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"invalidDate\"]) {\r\n <strong>{{ control?.errors?.[\"invalidDate\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"minimumAge\"]) {\r\n <strong>{{ control?.errors?.[\"minimumAge\"]?.message }}</strong>\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\u00E1ximo\r\n <strong>{{ control?.errors?.[\"maxlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"min\"]) {\r\n El valor m\u00EDnimo permitido es\r\n <strong>{{ control?.errors?.[\"min\"]?.min }}</strong>\r\n } @else if (control?.errors?.[\"max\"]) {\r\n El valor m\u00E1ximo permitido es\r\n <strong>{{ control?.errors?.[\"max\"]?.max | number: \"1.2-2\" }}</strong>\r\n } @else if (control?.errors?.[\"email\"]) {\r\n Debe ser una direcci\u00F3n de correo v\u00E1lida.\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 if (control?.errors?.[\"invalidTemplateVariables\"]) {\r\n <div class=\"dsx-template-error\">\r\n <strong>\r\n {{ control?.errors?.[\"invalidTemplateVariables\"]?.message }}\r\n </strong>\r\n @if (control?.errors?.[\"invalidTemplateVariables\"]?.details?.length) {\r\n <span class=\"dsx-template-error-detail\">\r\n {{ control?.errors?.[\"invalidTemplateVariables\"]?.details?.[0] }}\r\n </span>\r\n }\r\n </div>\r\n } @else {\r\n Existe un error a\u00FAn 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", styles: [":host{display:block}.dsx-error-slot{max-height:0;margin-top:0;overflow:hidden;opacity:0;transition:max-height .22s ease,margin-top .22s ease,opacity .18s ease}.dsx-error-slot.is-visible{max-height:4.25rem;margin-top:.3rem;opacity:1}.dsx-error-message{--dsx-error-color: #b42318;--dsx-error-bg: #fff2f0;color:var(--dsx-error-color);font-family:Roboto,Montserrat,sans-serif;font-size:clamp(.75rem,.72rem + .12vw,.8125rem);font-weight:400;line-height:1.35;letter-spacing:.01em;display:flex;align-items:center;gap:.35rem;position:relative;z-index:1;padding:.2rem .45rem;border-left:3px solid var(--dsx-error-color);border-radius:0 6px 6px 0;background:var(--dsx-error-bg);box-shadow:0 1px 2px #00000014;max-width:min(40ch,100%);white-space:normal;word-break:break-word;transform:translateY(-2px);transition:transform .2s ease}.dsx-error-message strong{font-weight:500}.dsx-error-icon{flex-shrink:0;font-size:.78rem;line-height:1;color:var(--dsx-error-color)}.dsx-error-slot.is-visible .dsx-error-message{transform:translateY(0)}@media(max-width:640px){.dsx-error-slot.is-visible{max-height:5rem}.dsx-error-message{max-width:100%}}:host-context(.p-floatlabel){position:absolute;top:100%;left:0;width:100%;z-index:3;pointer-events:none}:host-context(.p-floatlabel) .dsx-error-slot{max-height:none;margin-top:.25rem;overflow:visible;opacity:0;transform:translateY(-3px);transition:opacity .16s ease,transform .18s ease}:host-context(.p-floatlabel) .dsx-error-slot.is-visible{opacity:1;transform:translateY(0)}:host-context(.p-floatlabel) .dsx-error-message{max-width:min(40ch,calc(100% - .25rem))}\n"] }]
185
187
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { control: [{
@@ -213,16 +215,16 @@ class DsxStatusToggle {
213
215
  this.onChange(value);
214
216
  this.onTouched();
215
217
  }
216
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DsxStatusToggle, deps: [], target: i0.ɵɵFactoryTarget.Component });
217
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.11", type: DsxStatusToggle, isStandalone: true, selector: "dsx-status-toggle", inputs: { onLabel: { classPropertyName: "onLabel", publicName: "onLabel", isSignal: true, isRequired: false, transformFunction: null }, offLabel: { classPropertyName: "offLabel", publicName: "offLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
218
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxStatusToggle, deps: [], target: i0.ɵɵFactoryTarget.Component });
219
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: DsxStatusToggle, isStandalone: true, selector: "dsx-status-toggle", inputs: { onLabel: { classPropertyName: "onLabel", publicName: "onLabel", isSignal: true, isRequired: false, transformFunction: null }, offLabel: { classPropertyName: "offLabel", publicName: "offLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
218
220
  {
219
221
  provide: NG_VALUE_ACCESSOR,
220
222
  useExisting: forwardRef(() => DsxStatusToggle),
221
223
  multi: true,
222
224
  },
223
- ], ngImport: i0, template: "<p-toggleButton\r\n fluid\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [onLabel]=\"onLabel()\"\r\n [offLabel]=\"offLabel()\"\r\n [disabled]=\"disabled() || formDisabled\"\r\n [onIcon]=\"'pi pi-check-circle'\"\r\n [offIcon]=\"'pi pi-times-circle'\"\r\n class=\"dsx-status-toggle\"\r\n/>\r\n", styles: [":host ::ng-deep .dsx-status-toggle .p-button-label{font-weight:700!important}:host ::ng-deep .dsx-status-toggle.p-highlight,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked,:host ::ng-deep .dsx-status-toggle[aria-pressed=true],:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-label,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-label,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-label,:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-icon,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-icon,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-icon,:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-icon:before,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-icon:before,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-icon:before{color:#16a34a!important}:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked),:host ::ng-deep .dsx-status-toggle[aria-pressed=false],:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-label,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-label,:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-icon,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-icon,:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-icon:before,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-icon:before{color:#dc2626!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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: "ngmodule", type: ToggleButtonModule }, { kind: "component", type: i2$1.ToggleButton, selector: "p-toggleButton, p-togglebutton, p-toggle-button", inputs: ["onLabel", "offLabel", "onIcon", "offIcon", "ariaLabel", "ariaLabelledBy", "styleClass", "inputId", "tabindex", "iconPos", "autofocus", "size", "allowEmpty", "fluid"], outputs: ["onChange"] }] });
225
+ ], ngImport: i0, template: "<p-toggleButton\r\n fluid\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [onLabel]=\"onLabel()\"\r\n [offLabel]=\"offLabel()\"\r\n [disabled]=\"disabled() || formDisabled\"\r\n [onIcon]=\"'pi pi-check-circle'\"\r\n [offIcon]=\"'pi pi-times-circle'\"\r\n class=\"dsx-status-toggle\"\r\n/>\r\n", styles: [":host ::ng-deep .dsx-status-toggle .p-button-label{font-weight:700!important}:host ::ng-deep .dsx-status-toggle.p-highlight,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked,:host ::ng-deep .dsx-status-toggle[aria-pressed=true],:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-label,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-label,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-label,:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-icon,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-icon,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-icon,:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-icon:before,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-icon:before,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-icon:before{color:#16a34a!important}:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked),:host ::ng-deep .dsx-status-toggle[aria-pressed=false],:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-label,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-label,:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-icon,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-icon,:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-icon:before,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-icon:before{color:#dc2626!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ToggleButtonModule }, { kind: "component", type: i2.ToggleButton, selector: "p-toggleButton, p-togglebutton, p-toggle-button", inputs: ["onLabel", "offLabel", "onIcon", "offIcon", "ariaLabel", "ariaLabelledBy", "styleClass", "inputId", "tabindex", "iconPos", "autofocus", "size", "allowEmpty", "fluid"], outputs: ["onChange"] }] });
224
226
  }
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DsxStatusToggle, decorators: [{
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxStatusToggle, decorators: [{
226
228
  type: Component,
227
229
  args: [{ selector: 'dsx-status-toggle', imports: [FormsModule, ToggleButtonModule], providers: [
228
230
  {
@@ -241,8 +243,8 @@ class DsxEnableDisable {
241
243
  // El componente es solo lectura; no necesita propagar cambios
242
244
  registerOnChange(_fn) { }
243
245
  registerOnTouched(_fn) { }
244
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DsxEnableDisable, deps: [], target: i0.ɵɵFactoryTarget.Component });
245
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: DsxEnableDisable, isStandalone: true, selector: "dsx-checkbox", providers: [
246
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxEnableDisable, deps: [], target: i0.ɵɵFactoryTarget.Component });
247
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.12", type: DsxEnableDisable, isStandalone: true, selector: "dsx-checkbox", providers: [
246
248
  {
247
249
  provide: NG_VALUE_ACCESSOR,
248
250
  useExisting: forwardRef(() => DsxEnableDisable),
@@ -250,7 +252,7 @@ class DsxEnableDisable {
250
252
  },
251
253
  ], ngImport: i0, template: "<!-- 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", styles: [".container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.container{cursor:not-allowed;font-size:20px;line-height:1;-webkit-user-select:none;user-select:none}.checkmark{position:relative;display:block;box-sizing:border-box;height:1.1em;width:1.1em;background-color:#ccc;transition:background-color .3s,box-shadow .3s,transform .3s;border-radius:3px}.container input:checked~.checkmark{background-color:#47da99;box-shadow:inset 0 0 0 1px #ffffff59,0 2px 8px #47da9980;animation:pop .5s;animation-direction:alternate}.container input:disabled~.checkmark{opacity:1}.checkmark:after{content:\"\";position:absolute;display:none}.container input:checked~.checkmark:after{display:block}.container .checkmark:after{left:50%;top:50%;width:.28em;height:.58em;border:solid white;border-width:0 .18em .18em 0;transform:translate(-50%,-50%) rotate(45deg);filter:drop-shadow(0 0 1px rgba(0,0,0,.2))}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(.9)}to{transform:scale(1)}}\n"] });
252
254
  }
253
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DsxEnableDisable, decorators: [{
255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxEnableDisable, decorators: [{
254
256
  type: Component,
255
257
  args: [{ selector: 'dsx-checkbox', imports: [], providers: [
256
258
  {
@@ -304,8 +306,8 @@ class FileComponent {
304
306
  setDisabledState(isDisabled) {
305
307
  this.disabled.set(isDisabled);
306
308
  }
307
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: FileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
308
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.11", type: FileComponent, isStandalone: true, selector: "dsx-file-upload", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: "maxFileSize", publicName: "maxFileSize", isSignal: true, isRequired: false, transformFunction: null }, invalidSummary: { classPropertyName: "invalidSummary", publicName: "invalidSummary", isSignal: true, isRequired: false, transformFunction: null }, invalidDetail: { classPropertyName: "invalidDetail", publicName: "invalidDetail", isSignal: true, isRequired: false, transformFunction: null }, invalidSizeSummary: { classPropertyName: "invalidSizeSummary", publicName: "invalidSizeSummary", isSignal: true, isRequired: false, transformFunction: null }, invalidSizeDetail: { classPropertyName: "invalidSizeDetail", publicName: "invalidSizeDetail", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
309
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: FileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
310
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.12", type: FileComponent, isStandalone: true, selector: "dsx-file-upload", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: "maxFileSize", publicName: "maxFileSize", isSignal: true, isRequired: false, transformFunction: null }, invalidSummary: { classPropertyName: "invalidSummary", publicName: "invalidSummary", isSignal: true, isRequired: false, transformFunction: null }, invalidDetail: { classPropertyName: "invalidDetail", publicName: "invalidDetail", isSignal: true, isRequired: false, transformFunction: null }, invalidSizeSummary: { classPropertyName: "invalidSizeSummary", publicName: "invalidSizeSummary", isSignal: true, isRequired: false, transformFunction: null }, invalidSizeDetail: { classPropertyName: "invalidSizeDetail", publicName: "invalidSizeDetail", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
309
311
  {
310
312
  provide: NG_VALUE_ACCESSOR,
311
313
  useExisting: forwardRef(() => FileComponent),
@@ -313,7 +315,7 @@ class FileComponent {
313
315
  },
314
316
  ], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true, isSignal: true }], ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "component", type: FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }] });
315
317
  }
316
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: FileComponent, decorators: [{
318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: FileComponent, decorators: [{
317
319
  type: Component,
318
320
  args: [{ selector: 'dsx-file-upload', imports: [FileUpload], providers: [
319
321
  {
@@ -733,16 +735,16 @@ class JsonViewerComponent {
733
735
  return value;
734
736
  }
735
737
  }
736
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JsonViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
737
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.11", type: JsonViewerComponent, isStandalone: true, selector: "app-json-viewer", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, textKey: { classPropertyName: "textKey", publicName: "textKey", isSignal: true, isRequired: false, transformFunction: null }, activeKey: { classPropertyName: "activeKey", publicName: "activeKey", isSignal: true, isRequired: false, transformFunction: null }, itemsKey: { classPropertyName: "itemsKey", publicName: "itemsKey", isSignal: true, isRequired: false, transformFunction: null }, showStatusAsSymbol: { classPropertyName: "showStatusAsSymbol", publicName: "showStatusAsSymbol", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, providers: [
738
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
739
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: JsonViewerComponent, isStandalone: true, selector: "app-json-viewer", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, textKey: { classPropertyName: "textKey", publicName: "textKey", isSignal: true, isRequired: false, transformFunction: null }, activeKey: { classPropertyName: "activeKey", publicName: "activeKey", isSignal: true, isRequired: false, transformFunction: null }, itemsKey: { classPropertyName: "itemsKey", publicName: "itemsKey", isSignal: true, isRequired: false, transformFunction: null }, showStatusAsSymbol: { classPropertyName: "showStatusAsSymbol", publicName: "showStatusAsSymbol", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, providers: [
738
740
  {
739
741
  provide: NG_VALUE_ACCESSOR,
740
742
  useExisting: forwardRef(() => JsonViewerComponent),
741
743
  multi: true,
742
744
  },
743
- ], ngImport: i0, template: "<p-tree\r\n [value]=\"nodes\"\r\n class=\"json-tree w-full\"\r\n selectionMode=\"single\"\r\n [(selection)]=\"selectedNode\"\r\n [highlightOnSelect]=\"false\"\r\n (onNodeSelect)=\"onNodeSelect($event)\"\r\n>\r\n <ng-template let-node pTemplate=\"default\">\r\n <div class=\"json-node\">\r\n <ng-container *ngIf=\"getNodeMeta(node) as meta; else defaultLabel\">\r\n <ng-container [ngSwitch]=\"meta.kind\">\r\n <ng-container *ngSwitchCase=\"'compact-item'\">\r\n <span class=\"json-prefix\">{{ meta.indexLabel || \"\" }}</span>\r\n <span class=\"json-key\"> Texto: </span>\r\n <ng-container *ngIf=\"isEditMode(); else compactTextView\">\r\n <input\r\n type=\"text\"\r\n class=\"json-text-input\"\r\n [class.json-text-inactive]=\"meta.activeBoolean === false\"\r\n [value]=\"meta.text || ''\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (input)=\"\r\n onTextEdit(\r\n $any(meta.textPath),\r\n $any($event.target).value,\r\n meta\r\n )\r\n \"\r\n (blur)=\"onTextBlur()\"\r\n />\r\n </ng-container>\r\n <ng-template #compactTextView>\r\n <span [class.json-text-inactive]=\"meta.activeBoolean === false\">{{\r\n meta.text || \"\"\r\n }}</span>\r\n </ng-template>\r\n <span class=\"json-separator\"> | </span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode()\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.activePath),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'group-active'\">\r\n <span>{{ meta.title || \"\" }}</span>\r\n <span class=\"json-separator\"> | </span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode() && meta.activePath\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.activePath),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'text-primitive'\">\r\n <span>{{ meta.key || \"\" }}:</span>\r\n <ng-container *ngIf=\"isEditMode(); else textPrimitiveView\">\r\n <input\r\n type=\"text\"\r\n class=\"json-text-input\"\r\n [value]=\"meta.value || ''\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (input)=\"\r\n onTextEdit($any(meta.path), $any($event.target).value, meta)\r\n \"\r\n (blur)=\"onTextBlur()\"\r\n />\r\n </ng-container>\r\n <ng-template #textPrimitiveView>\r\n <span>{{ meta.value || \"\" }}</span>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'active-primitive'\">\r\n <span>{{ meta.key || \"\" }}:</span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode()\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.path),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n {{ node.label }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultLabel>\r\n {{ node.label }}\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n</p-tree>\r\n", styles: [":host ::ng-deep .json-tree .p-tree-node-content,:host ::ng-deep .json-tree .p-treenode-content{padding:.02rem .15rem!important;display:flex;align-items:center;width:100%;min-width:0}:host ::ng-deep .json-tree .p-tree-node-label,:host ::ng-deep .json-tree .p-tree-node-label>span{flex:1 1 0;min-width:0;display:flex}:host ::ng-deep .json-tree .json-node{display:flex;align-items:center;gap:.25rem;width:100%;min-width:0}:host ::ng-deep .json-tree .json-prefix,:host ::ng-deep .json-tree .json-key,:host ::ng-deep .json-tree .json-separator,:host ::ng-deep .json-tree .json-status{white-space:nowrap;flex-shrink:0}:host ::ng-deep .json-tree .json-text-input{flex:1 1 0;min-width:0;border:1px solid #cbd5e1;border-radius:.25rem;padding:.15rem .5rem;font-size:.875rem}:host ::ng-deep .json-tree .json-text-inactive{color:#8b5e61}:host ::ng-deep .json-tree input.json-text-input.json-text-inactive{background-color:#f9f2f2;border-color:#e5c8cb}:host ::ng-deep .json-tree .json-checkbox{width:.9rem;height:.9rem;cursor:pointer;flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i2$2.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "styleClass", "contextMenu", "contextMenuSelectionMode", "contextMenuSelection", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterInputAutoFocus", "filterBy", "filterMode", "filterOptions", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "highlightOnSelect"], outputs: ["selectionChange", "contextMenuSelectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDoubleClick", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] });
745
+ ], ngImport: i0, template: "<p-tree\r\n [value]=\"nodes\"\r\n class=\"json-tree w-full\"\r\n selectionMode=\"single\"\r\n [(selection)]=\"selectedNode\"\r\n [highlightOnSelect]=\"false\"\r\n (onNodeSelect)=\"onNodeSelect($event)\"\r\n>\r\n <ng-template let-node pTemplate=\"default\">\r\n <div class=\"json-node\">\r\n <ng-container *ngIf=\"getNodeMeta(node) as meta; else defaultLabel\">\r\n <ng-container [ngSwitch]=\"meta.kind\">\r\n <ng-container *ngSwitchCase=\"'compact-item'\">\r\n <span class=\"json-prefix\">{{ meta.indexLabel || \"\" }}</span>\r\n <span class=\"json-key\"> Texto: </span>\r\n <ng-container *ngIf=\"isEditMode(); else compactTextView\">\r\n <input\r\n type=\"text\"\r\n class=\"json-text-input\"\r\n [class.json-text-inactive]=\"meta.activeBoolean === false\"\r\n [value]=\"meta.text || ''\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (input)=\"\r\n onTextEdit(\r\n $any(meta.textPath),\r\n $any($event.target).value,\r\n meta\r\n )\r\n \"\r\n (blur)=\"onTextBlur()\"\r\n />\r\n </ng-container>\r\n <ng-template #compactTextView>\r\n <span [class.json-text-inactive]=\"meta.activeBoolean === false\">{{\r\n meta.text || \"\"\r\n }}</span>\r\n </ng-template>\r\n <span class=\"json-separator\"> | </span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode()\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.activePath),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'group-active'\">\r\n <span>{{ meta.title || \"\" }}</span>\r\n <span class=\"json-separator\"> | </span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode() && meta.activePath\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.activePath),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'text-primitive'\">\r\n <span>{{ meta.key || \"\" }}:</span>\r\n <ng-container *ngIf=\"isEditMode(); else textPrimitiveView\">\r\n <input\r\n type=\"text\"\r\n class=\"json-text-input\"\r\n [value]=\"meta.value || ''\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (input)=\"\r\n onTextEdit($any(meta.path), $any($event.target).value, meta)\r\n \"\r\n (blur)=\"onTextBlur()\"\r\n />\r\n </ng-container>\r\n <ng-template #textPrimitiveView>\r\n <span>{{ meta.value || \"\" }}</span>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'active-primitive'\">\r\n <span>{{ meta.key || \"\" }}:</span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode()\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.path),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n {{ node.label }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultLabel>\r\n {{ node.label }}\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n</p-tree>\r\n", styles: [":host ::ng-deep .json-tree .p-tree-node-content,:host ::ng-deep .json-tree .p-treenode-content{padding:.02rem .15rem!important;display:flex;align-items:center;width:100%;min-width:0}:host ::ng-deep .json-tree .p-tree-node-label,:host ::ng-deep .json-tree .p-tree-node-label>span{flex:1 1 0;min-width:0;display:flex}:host ::ng-deep .json-tree .json-node{display:flex;align-items:center;gap:.25rem;width:100%;min-width:0}:host ::ng-deep .json-tree .json-prefix,:host ::ng-deep .json-tree .json-key,:host ::ng-deep .json-tree .json-separator,:host ::ng-deep .json-tree .json-status{white-space:nowrap;flex-shrink:0}:host ::ng-deep .json-tree .json-text-input{flex:1 1 0;min-width:0;border:1px solid #cbd5e1;border-radius:.25rem;padding:.15rem .5rem;font-size:.875rem}:host ::ng-deep .json-tree .json-text-inactive{color:#8b5e61}:host ::ng-deep .json-tree input.json-text-input.json-text-inactive{background-color:#f9f2f2;border-color:#e5c8cb}:host ::ng-deep .json-tree .json-checkbox{width:.9rem;height:.9rem;cursor:pointer;flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i2$1.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "styleClass", "contextMenu", "contextMenuSelectionMode", "contextMenuSelection", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterInputAutoFocus", "filterBy", "filterMode", "filterOptions", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "highlightOnSelect"], outputs: ["selectionChange", "contextMenuSelectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDoubleClick", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] });
744
746
  }
745
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JsonViewerComponent, decorators: [{
747
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonViewerComponent, decorators: [{
746
748
  type: Component,
747
749
  args: [{ selector: 'app-json-viewer', standalone: true, imports: [CommonModule, TreeModule], providers: [
748
750
  {
@@ -813,10 +815,10 @@ class DateIndicator {
813
815
  this.icon = 'pi pi-times-circle';
814
816
  this.tooltip = 'Última actualización: Sin valor • 0 días';
815
817
  }
816
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DateIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
817
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.11", type: DateIndicator, isStandalone: true, selector: "dsx-date-indicator", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, minDays: { classPropertyName: "minDays", publicName: "minDays", isSignal: true, isRequired: false, transformFunction: null }, maxDays: { classPropertyName: "maxDays", publicName: "maxDays", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: "<p-tag\r\n [severity]=\"severity\"\r\n [icon]=\"icon\"\r\n [value]=\"status\"\r\n [pTooltip]=\"tooltip\"\r\n>\r\n</p-tag>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }] });
818
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DateIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
819
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: DateIndicator, isStandalone: true, selector: "dsx-date-indicator", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, minDays: { classPropertyName: "minDays", publicName: "minDays", isSignal: true, isRequired: false, transformFunction: null }, maxDays: { classPropertyName: "maxDays", publicName: "maxDays", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: "<p-tag\r\n [severity]=\"severity\"\r\n [icon]=\"icon\"\r\n [value]=\"status\"\r\n [pTooltip]=\"tooltip\"\r\n>\r\n</p-tag>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }] });
818
820
  }
819
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DateIndicator, decorators: [{
821
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DateIndicator, decorators: [{
820
822
  type: Component,
821
823
  args: [{ selector: 'dsx-date-indicator', imports: [TagModule, TooltipModule], template: "<p-tag\r\n [severity]=\"severity\"\r\n [icon]=\"icon\"\r\n [value]=\"status\"\r\n [pTooltip]=\"tooltip\"\r\n>\r\n</p-tag>\r\n" }]
822
824
  }], propDecorators: { date: [{ type: i0.Input, args: [{ isSignal: true, alias: "date", required: false }] }], minDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDays", required: false }] }], maxDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDays", required: false }] }] } });
@@ -872,10 +874,10 @@ class KpicardComponent {
872
874
  getSelectedOption() {
873
875
  return this.options[this.option()] ?? this.options.currency; // Si no existe, usa `currency`
874
876
  }
875
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: KpicardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
876
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.11", type: KpicardComponent, isStandalone: true, selector: "app-kpicard", inputs: { option: { classPropertyName: "option", publicName: "option", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, iconType: { classPropertyName: "iconType", publicName: "iconType", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, valor: { classPropertyName: "valor", publicName: "valor", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<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", styles: [".icon{float:right;font-size:500%;position:absolute;top:0rem;right:-.3rem;opacity:.2}.icon-light{color:#000}.icon-dark{color:#fff}.icon-aqua{color:#28cce9}.icon-sunset{color:#d1a9a5}.icon-mint{color:#91cc08}.icon-peach{color:#5e412f}.icon-plasma{color:#dcdde1}.icon-nebula{color:#d8d8d8}.kpi-card{--gradient-light: linear-gradient(to bottom, #00fffc, #008cff);--text-color-light: #495057;--card-value-gradient-light: linear-gradient( 45deg, #00fffc, #a200ff, #0094ff );--gradient-dark: linear-gradient(to bottom, #ff00ff, #ff0066);--text-color-dark: #d5d7d8;--card-value-gradient-dark: linear-gradient(45deg, #ff7e5f, #feb47b, #ff6a00);--gradient-aqua: linear-gradient(to bottom, #00e0ff, #0079ff);--text-color-aqua: #6fa6b8;--card-value-gradient-aqua: linear-gradient(45deg, #00e0ff, #00ffc8, #00b7ff);--gradient-sunset: linear-gradient(to bottom, #ff9a9e, #fad0c4);--text-color-sunset: #cfbfaf;--card-value-gradient-sunset: linear-gradient( 45deg, #ff9a9e, #fad0c4, #ff6f61 );--gradient-mint: linear-gradient(to bottom, #98ff98, #00d4ff);--text-color-mint: #a3ca36;--card-value-gradient-mint: linear-gradient(45deg, #98ff98, #00e1ff, #00ffa6);--gradient-peach: linear-gradient(to bottom, #ffecd2, #fcb69f);--text-color-peach: #5e412f;--card-value-gradient-peach: linear-gradient( 45deg, #ffecd2, #ffb347, #ffcccb );--gradient-plasma: linear-gradient(to bottom, #6a00f4, #240046);--text-color-plasma: #dcdde1;--card-value-gradient-plasma: linear-gradient( 45deg, #6a00f4, #8338ec, #3a0ca3 );--gradient-nebula: linear-gradient(to bottom, #38aa0c, #2632d4);--text-color-nebula: #a372d1;--card-value-gradient-nebula: linear-gradient( 45deg, #c4ffe2, #a6c9ff, #8a12f3 );overflow:hidden;position:relative;box-shadow:1px 1px 8px #000000a6;display:inline-block;padding:1em;border-radius:.8em;font-family:Montserrat,sans-serif;font-size:.9rem;width:90%;min-width:180px;margin-left:.5em;margin-top:.5em}.kpi-card:after{position:absolute;content:\"\";width:.25rem;inset:.65rem auto .65rem .5rem;border-radius:.125rem;background:var(--gradient);transition:transform .3s ease;z-index:4}.kpi-card.light-theme:after{background:var(--gradient-light)}.kpi-card.dark-theme:after{background:var(--gradient-dark)}.kpi-card.aqua-theme:after{background:var(--gradient-aqua)}.kpi-card.sunset-theme:after{background:var(--gradient-sunset)}.kpi-card.mint-theme:after{background:var(--gradient-mint)}.kpi-card.peach-theme:after{background:var(--gradient-peach)}.kpi-card.plasma-theme:after{background:var(--gradient-plasma)}.kpi-card.nebula-theme:after{background:var(--gradient-nebula)}.kpi-container{margin-left:.5em}.card-value-light{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#00fffc,#a200ff,#0094ff);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,255,252,.3),0 0 10px rgba(162,0,255,.2),0 0 15px rgba(0,148,255,.1)}.card-value-dark{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#ff7e5f,#feb47b,#ff6a00);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,126,95,.5),0 0 10px rgba(254,180,123,.4),0 0 15px rgba(255,106,0,.3)}.card-value-aqua{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-aqua);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,224,255,.3),0 0 10px rgba(0,255,200,.2),0 0 15px rgba(0,183,255,.1)}.card-value-sunset{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-sunset);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,154,158,.3),0 0 10px rgba(250,208,196,.2),0 0 15px rgba(255,111,97,.1)}.card-value-mint{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-mint);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(152,255,152,.4),0 0 10px rgba(0,225,255,.3),0 0 15px rgba(0,255,166,.2)}.card-value-peach{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-peach);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,236,210,.4),0 0 10px rgba(255,179,71,.3),0 0 15px rgba(255,204,203,.2)}.card-value-plasma{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-plasma);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(106,0,244,.5),0 0 10px rgba(131,56,236,.4),0 0 15px rgba(58,12,163,.3)}.card-value-nebula{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-nebula);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(27,27,47,.4),0 0 10px rgba(63,13,18,.3),0 0 15px rgba(142,45,226,.2)}.card-text{display:block;font-family:Roboto,sans-serif;padding-left:.2em}.card-text-light{color:var(--text-color-light)}.card-text-dark{color:var(--text-color-dark)}.card-text-aqua{color:var(--text-color-aqua)}.card-text-sunset{color:var(--text-color-sunset)}.card-text-mint{color:var(--text-color-mint)}.card-text-peach{color:var(--text-color-peach)}.card-text-plasma{color:var(--text-color-plasma)}.card-text-nebula{color:var(--text-color-nebula)}\n"], dependencies: [{ kind: "directive", type: CountUpDirective, selector: "[countUp]", inputs: ["countUp", "countUpOptions", "reanimateOnClick"], outputs: ["complete"] }] });
877
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: KpicardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
878
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: KpicardComponent, isStandalone: true, selector: "app-kpicard", inputs: { option: { classPropertyName: "option", publicName: "option", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, iconType: { classPropertyName: "iconType", publicName: "iconType", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, valor: { classPropertyName: "valor", publicName: "valor", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<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", styles: [".icon{float:right;font-size:500%;position:absolute;top:0rem;right:-.3rem;opacity:.2}.icon-light{color:#000}.icon-dark{color:#fff}.icon-aqua{color:#28cce9}.icon-sunset{color:#d1a9a5}.icon-mint{color:#91cc08}.icon-peach{color:#5e412f}.icon-plasma{color:#dcdde1}.icon-nebula{color:#d8d8d8}.kpi-card{--gradient-light: linear-gradient(to bottom, #00fffc, #008cff);--text-color-light: #495057;--card-value-gradient-light: linear-gradient( 45deg, #00fffc, #a200ff, #0094ff );--gradient-dark: linear-gradient(to bottom, #ff00ff, #ff0066);--text-color-dark: #d5d7d8;--card-value-gradient-dark: linear-gradient(45deg, #ff7e5f, #feb47b, #ff6a00);--gradient-aqua: linear-gradient(to bottom, #00e0ff, #0079ff);--text-color-aqua: #6fa6b8;--card-value-gradient-aqua: linear-gradient(45deg, #00e0ff, #00ffc8, #00b7ff);--gradient-sunset: linear-gradient(to bottom, #ff9a9e, #fad0c4);--text-color-sunset: #cfbfaf;--card-value-gradient-sunset: linear-gradient( 45deg, #ff9a9e, #fad0c4, #ff6f61 );--gradient-mint: linear-gradient(to bottom, #98ff98, #00d4ff);--text-color-mint: #a3ca36;--card-value-gradient-mint: linear-gradient(45deg, #98ff98, #00e1ff, #00ffa6);--gradient-peach: linear-gradient(to bottom, #ffecd2, #fcb69f);--text-color-peach: #5e412f;--card-value-gradient-peach: linear-gradient( 45deg, #ffecd2, #ffb347, #ffcccb );--gradient-plasma: linear-gradient(to bottom, #6a00f4, #240046);--text-color-plasma: #dcdde1;--card-value-gradient-plasma: linear-gradient( 45deg, #6a00f4, #8338ec, #3a0ca3 );--gradient-nebula: linear-gradient(to bottom, #38aa0c, #2632d4);--text-color-nebula: #a372d1;--card-value-gradient-nebula: linear-gradient( 45deg, #c4ffe2, #a6c9ff, #8a12f3 );overflow:hidden;position:relative;box-shadow:1px 1px 8px #000000a6;display:inline-block;padding:1em;border-radius:.8em;font-family:Montserrat,sans-serif;font-size:.9rem;width:90%;min-width:180px;margin-left:.5em;margin-top:.5em}.kpi-card:after{position:absolute;content:\"\";width:.25rem;inset:.65rem auto .65rem .5rem;border-radius:.125rem;background:var(--gradient);transition:transform .3s ease;z-index:4}.kpi-card.light-theme:after{background:var(--gradient-light)}.kpi-card.dark-theme:after{background:var(--gradient-dark)}.kpi-card.aqua-theme:after{background:var(--gradient-aqua)}.kpi-card.sunset-theme:after{background:var(--gradient-sunset)}.kpi-card.mint-theme:after{background:var(--gradient-mint)}.kpi-card.peach-theme:after{background:var(--gradient-peach)}.kpi-card.plasma-theme:after{background:var(--gradient-plasma)}.kpi-card.nebula-theme:after{background:var(--gradient-nebula)}.kpi-container{margin-left:.5em}.card-value-light{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#00fffc,#a200ff,#0094ff);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,255,252,.3),0 0 10px rgba(162,0,255,.2),0 0 15px rgba(0,148,255,.1)}.card-value-dark{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#ff7e5f,#feb47b,#ff6a00);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,126,95,.5),0 0 10px rgba(254,180,123,.4),0 0 15px rgba(255,106,0,.3)}.card-value-aqua{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-aqua);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,224,255,.3),0 0 10px rgba(0,255,200,.2),0 0 15px rgba(0,183,255,.1)}.card-value-sunset{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-sunset);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,154,158,.3),0 0 10px rgba(250,208,196,.2),0 0 15px rgba(255,111,97,.1)}.card-value-mint{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-mint);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(152,255,152,.4),0 0 10px rgba(0,225,255,.3),0 0 15px rgba(0,255,166,.2)}.card-value-peach{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-peach);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,236,210,.4),0 0 10px rgba(255,179,71,.3),0 0 15px rgba(255,204,203,.2)}.card-value-plasma{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-plasma);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(106,0,244,.5),0 0 10px rgba(131,56,236,.4),0 0 15px rgba(58,12,163,.3)}.card-value-nebula{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-nebula);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(27,27,47,.4),0 0 10px rgba(63,13,18,.3),0 0 15px rgba(142,45,226,.2)}.card-text{display:block;font-family:Roboto,sans-serif;padding-left:.2em}.card-text-light{color:var(--text-color-light)}.card-text-dark{color:var(--text-color-dark)}.card-text-aqua{color:var(--text-color-aqua)}.card-text-sunset{color:var(--text-color-sunset)}.card-text-mint{color:var(--text-color-mint)}.card-text-peach{color:var(--text-color-peach)}.card-text-plasma{color:var(--text-color-plasma)}.card-text-nebula{color:var(--text-color-nebula)}\n"], dependencies: [{ kind: "directive", type: CountUpDirective, selector: "[countUp]", inputs: ["countUp", "countUpOptions", "reanimateOnClick"], outputs: ["complete"] }] });
877
879
  }
878
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: KpicardComponent, decorators: [{
880
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: KpicardComponent, decorators: [{
879
881
  type: Component,
880
882
  args: [{ selector: 'app-kpicard', imports: [CountUpDirective], template: "<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", styles: [".icon{float:right;font-size:500%;position:absolute;top:0rem;right:-.3rem;opacity:.2}.icon-light{color:#000}.icon-dark{color:#fff}.icon-aqua{color:#28cce9}.icon-sunset{color:#d1a9a5}.icon-mint{color:#91cc08}.icon-peach{color:#5e412f}.icon-plasma{color:#dcdde1}.icon-nebula{color:#d8d8d8}.kpi-card{--gradient-light: linear-gradient(to bottom, #00fffc, #008cff);--text-color-light: #495057;--card-value-gradient-light: linear-gradient( 45deg, #00fffc, #a200ff, #0094ff );--gradient-dark: linear-gradient(to bottom, #ff00ff, #ff0066);--text-color-dark: #d5d7d8;--card-value-gradient-dark: linear-gradient(45deg, #ff7e5f, #feb47b, #ff6a00);--gradient-aqua: linear-gradient(to bottom, #00e0ff, #0079ff);--text-color-aqua: #6fa6b8;--card-value-gradient-aqua: linear-gradient(45deg, #00e0ff, #00ffc8, #00b7ff);--gradient-sunset: linear-gradient(to bottom, #ff9a9e, #fad0c4);--text-color-sunset: #cfbfaf;--card-value-gradient-sunset: linear-gradient( 45deg, #ff9a9e, #fad0c4, #ff6f61 );--gradient-mint: linear-gradient(to bottom, #98ff98, #00d4ff);--text-color-mint: #a3ca36;--card-value-gradient-mint: linear-gradient(45deg, #98ff98, #00e1ff, #00ffa6);--gradient-peach: linear-gradient(to bottom, #ffecd2, #fcb69f);--text-color-peach: #5e412f;--card-value-gradient-peach: linear-gradient( 45deg, #ffecd2, #ffb347, #ffcccb );--gradient-plasma: linear-gradient(to bottom, #6a00f4, #240046);--text-color-plasma: #dcdde1;--card-value-gradient-plasma: linear-gradient( 45deg, #6a00f4, #8338ec, #3a0ca3 );--gradient-nebula: linear-gradient(to bottom, #38aa0c, #2632d4);--text-color-nebula: #a372d1;--card-value-gradient-nebula: linear-gradient( 45deg, #c4ffe2, #a6c9ff, #8a12f3 );overflow:hidden;position:relative;box-shadow:1px 1px 8px #000000a6;display:inline-block;padding:1em;border-radius:.8em;font-family:Montserrat,sans-serif;font-size:.9rem;width:90%;min-width:180px;margin-left:.5em;margin-top:.5em}.kpi-card:after{position:absolute;content:\"\";width:.25rem;inset:.65rem auto .65rem .5rem;border-radius:.125rem;background:var(--gradient);transition:transform .3s ease;z-index:4}.kpi-card.light-theme:after{background:var(--gradient-light)}.kpi-card.dark-theme:after{background:var(--gradient-dark)}.kpi-card.aqua-theme:after{background:var(--gradient-aqua)}.kpi-card.sunset-theme:after{background:var(--gradient-sunset)}.kpi-card.mint-theme:after{background:var(--gradient-mint)}.kpi-card.peach-theme:after{background:var(--gradient-peach)}.kpi-card.plasma-theme:after{background:var(--gradient-plasma)}.kpi-card.nebula-theme:after{background:var(--gradient-nebula)}.kpi-container{margin-left:.5em}.card-value-light{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#00fffc,#a200ff,#0094ff);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,255,252,.3),0 0 10px rgba(162,0,255,.2),0 0 15px rgba(0,148,255,.1)}.card-value-dark{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#ff7e5f,#feb47b,#ff6a00);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,126,95,.5),0 0 10px rgba(254,180,123,.4),0 0 15px rgba(255,106,0,.3)}.card-value-aqua{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-aqua);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,224,255,.3),0 0 10px rgba(0,255,200,.2),0 0 15px rgba(0,183,255,.1)}.card-value-sunset{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-sunset);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,154,158,.3),0 0 10px rgba(250,208,196,.2),0 0 15px rgba(255,111,97,.1)}.card-value-mint{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-mint);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(152,255,152,.4),0 0 10px rgba(0,225,255,.3),0 0 15px rgba(0,255,166,.2)}.card-value-peach{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-peach);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,236,210,.4),0 0 10px rgba(255,179,71,.3),0 0 15px rgba(255,204,203,.2)}.card-value-plasma{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-plasma);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(106,0,244,.5),0 0 10px rgba(131,56,236,.4),0 0 15px rgba(58,12,163,.3)}.card-value-nebula{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-nebula);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(27,27,47,.4),0 0 10px rgba(63,13,18,.3),0 0 15px rgba(142,45,226,.2)}.card-text{display:block;font-family:Roboto,sans-serif;padding-left:.2em}.card-text-light{color:var(--text-color-light)}.card-text-dark{color:var(--text-color-dark)}.card-text-aqua{color:var(--text-color-aqua)}.card-text-sunset{color:var(--text-color-sunset)}.card-text-mint{color:var(--text-color-mint)}.card-text-peach{color:var(--text-color-peach)}.card-text-plasma{color:var(--text-color-plasma)}.card-text-nebula{color:var(--text-color-nebula)}\n"] }]
881
883
  }], propDecorators: { option: [{ type: i0.Input, args: [{ isSignal: true, alias: "option", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], iconType: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconType", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], valor: [{ type: i0.Input, args: [{ isSignal: true, alias: "valor", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }] } });
@@ -956,10 +958,10 @@ class DocxPreviewComponent {
956
958
  }
957
959
  this.visibleChange.emit(false);
958
960
  }
959
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DocxPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
960
- 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$3.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$3.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }] });
961
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DocxPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
962
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.12", 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: i2$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$3.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }] });
961
963
  }
962
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DocxPreviewComponent, decorators: [{
964
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DocxPreviewComponent, decorators: [{
963
965
  type: Component,
964
966
  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" }]
965
967
  }], ctorParameters: () => [], propDecorators: { view: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }], visible: [{
@@ -1012,10 +1014,10 @@ class PdfPreviewComponent {
1012
1014
  ngOnDestroy() {
1013
1015
  this.limpiarUrlAnterior();
1014
1016
  }
1015
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: PdfPreviewComponent, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
1016
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: PdfPreviewComponent, isStandalone: true, selector: "app-pdf-preview", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange" }, ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1$3.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"] }] });
1017
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: PdfPreviewComponent, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
1018
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: PdfPreviewComponent, isStandalone: true, selector: "app-pdf-preview", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange" }, ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i2$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"] }] });
1017
1019
  }
1018
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: PdfPreviewComponent, decorators: [{
1020
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: PdfPreviewComponent, decorators: [{
1019
1021
  type: Component,
1020
1022
  args: [{ selector: 'app-pdf-preview', imports: [DialogModule], template: "<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" }]
1021
1023
  }], ctorParameters: () => [{ type: i1$4.DomSanitizer }], propDecorators: { visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], blob: [{ type: i0.Input, args: [{ isSignal: true, alias: "blob", required: false }] }] } });
@@ -1074,10 +1076,10 @@ class TemplateHighlight {
1074
1076
  escapeAttr(text) {
1075
1077
  return text.replace(/"/g, '&quot;');
1076
1078
  }
1077
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: TemplateHighlight, deps: [], target: i0.ɵɵFactoryTarget.Component });
1078
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: TemplateHighlight, isStandalone: true, selector: "dsx-template-highlight", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, allowedKeys: { classPropertyName: "allowedKeys", publicName: "allowedKeys", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<p-tabs value=\"0\">\r\n <p-tablist>\r\n <p-tab value=\"0\">\r\n <i class=\"pi pi-file-edit tab-icon\" aria-hidden=\"true\"></i>\r\n <span>Preliminar</span>\r\n </p-tab>\r\n <p-tab value=\"1\">\r\n <i class=\"pi pi-list tab-icon\" aria-hidden=\"true\"></i>\r\n <span>Variables</span>\r\n </p-tab>\r\n </p-tablist>\r\n <p-tabpanels>\r\n <p-tabpanel value=\"0\">\r\n <div class=\"template-highlight\" [innerHTML]=\"highlightedText()\"></div>\r\n </p-tabpanel>\r\n <p-tabpanel value=\"1\">\r\n @if (allowedKeys().length) {\r\n <ul class=\"template-vars-list\">\r\n @for (key of allowedKeys(); track key) {\r\n <li>\r\n <strong>{{ key }}</strong>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </p-tabpanel>\r\n </p-tabpanels>\r\n</p-tabs>\r\n", styles: [":host .template-highlight{white-space:pre-wrap;font-family:monospace;text-align:justify}:host .template-vars-list{margin:0 0 .65rem;padding-left:1rem}:host .template-vars-list li{margin:.15rem 0}:host .tab-icon{margin-right:.45rem}:host ::ng-deep .var-valid{color:#0a7a0a;background:#e6ffe6;border-radius:3px;padding:0 2px;font-weight:600}:host ::ng-deep .var-invalid{color:#b30000;background:#ffe6e6;border-radius:3px;padding:0 2px;font-weight:600;text-decoration:underline wavy #b30000;cursor:help}:host ::ng-deep .var-brace-error{color:#cc7a00;background:#fff2cc;border-radius:3px;padding:0 2px;font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: TabsModule }, { kind: "component", type: i1$5.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i1$5.TabPanels, selector: "p-tabpanels" }, { kind: "component", type: i1$5.TabPanel, selector: "p-tabpanel", inputs: ["lazy", "value"], outputs: ["valueChange"] }, { kind: "component", type: i1$5.TabList, selector: "p-tablist" }, { kind: "component", type: i1$5.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }] });
1079
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TemplateHighlight, deps: [], target: i0.ɵɵFactoryTarget.Component });
1080
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: TemplateHighlight, isStandalone: true, selector: "dsx-template-highlight", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, allowedKeys: { classPropertyName: "allowedKeys", publicName: "allowedKeys", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<p-tabs value=\"0\">\r\n <p-tablist>\r\n <p-tab value=\"0\">\r\n <i class=\"pi pi-file-edit tab-icon\" aria-hidden=\"true\"></i>\r\n <span>Preliminar</span>\r\n </p-tab>\r\n <p-tab value=\"1\">\r\n <i class=\"pi pi-list tab-icon\" aria-hidden=\"true\"></i>\r\n <span>Variables</span>\r\n </p-tab>\r\n </p-tablist>\r\n <p-tabpanels>\r\n <p-tabpanel value=\"0\">\r\n <div class=\"template-highlight\" [innerHTML]=\"highlightedText()\"></div>\r\n </p-tabpanel>\r\n <p-tabpanel value=\"1\">\r\n @if (allowedKeys().length) {\r\n <ul class=\"template-vars-list\">\r\n @for (key of allowedKeys(); track key) {\r\n <li>\r\n <strong>{{ key }}</strong>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </p-tabpanel>\r\n </p-tabpanels>\r\n</p-tabs>\r\n", styles: [":host .template-highlight{white-space:pre-wrap;font-family:monospace;text-align:justify}:host .template-vars-list{margin:0 0 .65rem;padding-left:1rem}:host .template-vars-list li{margin:.15rem 0}:host .tab-icon{margin-right:.45rem}:host ::ng-deep .var-valid{color:#0a7a0a;background:#e6ffe6;border-radius:3px;padding:0 2px;font-weight:600}:host ::ng-deep .var-invalid{color:#b30000;background:#ffe6e6;border-radius:3px;padding:0 2px;font-weight:600;text-decoration:underline wavy #b30000;cursor:help}:host ::ng-deep .var-brace-error{color:#cc7a00;background:#fff2cc;border-radius:3px;padding:0 2px;font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: TabsModule }, { kind: "component", type: i1$5.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i1$5.TabPanels, selector: "p-tabpanels" }, { kind: "component", type: i1$5.TabPanel, selector: "p-tabpanel", inputs: ["lazy", "value"], outputs: ["valueChange"] }, { kind: "component", type: i1$5.TabList, selector: "p-tablist" }, { kind: "component", type: i1$5.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }] });
1079
1081
  }
1080
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: TemplateHighlight, decorators: [{
1082
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TemplateHighlight, decorators: [{
1081
1083
  type: Component,
1082
1084
  args: [{ selector: 'dsx-template-highlight', imports: [TabsModule], template: "<p-tabs value=\"0\">\r\n <p-tablist>\r\n <p-tab value=\"0\">\r\n <i class=\"pi pi-file-edit tab-icon\" aria-hidden=\"true\"></i>\r\n <span>Preliminar</span>\r\n </p-tab>\r\n <p-tab value=\"1\">\r\n <i class=\"pi pi-list tab-icon\" aria-hidden=\"true\"></i>\r\n <span>Variables</span>\r\n </p-tab>\r\n </p-tablist>\r\n <p-tabpanels>\r\n <p-tabpanel value=\"0\">\r\n <div class=\"template-highlight\" [innerHTML]=\"highlightedText()\"></div>\r\n </p-tabpanel>\r\n <p-tabpanel value=\"1\">\r\n @if (allowedKeys().length) {\r\n <ul class=\"template-vars-list\">\r\n @for (key of allowedKeys(); track key) {\r\n <li>\r\n <strong>{{ key }}</strong>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </p-tabpanel>\r\n </p-tabpanels>\r\n</p-tabs>\r\n", styles: [":host .template-highlight{white-space:pre-wrap;font-family:monospace;text-align:justify}:host .template-vars-list{margin:0 0 .65rem;padding-left:1rem}:host .template-vars-list li{margin:.15rem 0}:host .tab-icon{margin-right:.45rem}:host ::ng-deep .var-valid{color:#0a7a0a;background:#e6ffe6;border-radius:3px;padding:0 2px;font-weight:600}:host ::ng-deep .var-invalid{color:#b30000;background:#ffe6e6;border-radius:3px;padding:0 2px;font-weight:600;text-decoration:underline wavy #b30000;cursor:help}:host ::ng-deep .var-brace-error{color:#cc7a00;background:#fff2cc;border-radius:3px;padding:0 2px;font-weight:600}\n"] }]
1083
1085
  }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], allowedKeys: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowedKeys", required: false }] }] } });
@@ -1139,6 +1141,7 @@ const ENVIRONMENT_SCHEMA = {
1139
1141
  myAppUrl: 'string',
1140
1142
  SeguridadITApiUrl: 'string',
1141
1143
  tokenName: 'string',
1144
+ tokenPurpose: 'string',
1142
1145
  tokenNameRF: 'string',
1143
1146
  sessionStatus: 'string',
1144
1147
  refreshTokenExpiry: 'string',
@@ -1463,7 +1466,8 @@ class SecurityService {
1463
1466
  environment = inject(ENVIRONMENT);
1464
1467
  /** URL base de la API JWT construida desde la configuración del entorno */
1465
1468
  urlApi = `${this.environment.myAppUrl}api/parameter`;
1466
- SeguridadITApi = `${this.environment.SeguridadITApiUrl}api/jwt`;
1469
+ SeguridadITApiJwt = `${this.environment.SeguridadITApiUrl}api/jwt`;
1470
+ SeguridadITApiJwtSensitiveData = `${this.environment.SeguridadITApiUrl}api/jwtSensitiveData`;
1467
1471
  /**
1468
1472
  * Obtiene un nuevo token de acceso utilizando un refresh token válido.
1469
1473
  *
@@ -1486,7 +1490,7 @@ class SecurityService {
1486
1490
  // Crea el cuerpo de la solicitud con el refresh token
1487
1491
  const body = { refreshToken };
1488
1492
  // Realiza una solicitud POST al endpoint de refresco de token
1489
- return this.http.post(`${this.SeguridadITApi}/refresh-token/`, body, {
1493
+ return this.http.post(`${this.SeguridadITApiJwt}/refresh-token/`, body, {
1490
1494
  headers: new HttpHeaders({
1491
1495
  'Content-Type': 'application/json', // Establece el tipo de contenido como JSON
1492
1496
  }),
@@ -1516,12 +1520,20 @@ class SecurityService {
1516
1520
  // Crea el cuerpo de la solicitud con el refresh token
1517
1521
  const body = { refreshToken };
1518
1522
  // Realiza una solicitud POST al endpoint de revocación de token
1519
- return this.http.post(`${this.SeguridadITApi}/revoke-token/`, body, {
1523
+ return this.http.post(`${this.SeguridadITApiJwt}/revoke-token/`, body, {
1520
1524
  headers: new HttpHeaders({
1521
1525
  'Content-Type': 'application/json', // Establece el tipo de contenido como JSON
1522
1526
  }),
1523
1527
  });
1524
1528
  }
1529
+ /**
1530
+ *
1531
+ * @param credencial
1532
+ * @returns
1533
+ */
1534
+ tokenPurposeGenerate(credencial) {
1535
+ return this.http.post(`${this.SeguridadITApiJwtSensitiveData}/token-purpose/`, credencial);
1536
+ }
1525
1537
  /**
1526
1538
  * Obtiene los parámetros de seguridad de la aplicación desde el servidor.
1527
1539
  *
@@ -1551,10 +1563,10 @@ class SecurityService {
1551
1563
  // Realiza una solicitud GET al endpoint de parámetros de seguridad
1552
1564
  return this.http.get(`${this.urlApi}/security-parameter/`, { params });
1553
1565
  }
1554
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: SecurityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1555
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: SecurityService, providedIn: 'root' });
1566
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SecurityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1567
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SecurityService, providedIn: 'root' });
1556
1568
  }
1557
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: SecurityService, decorators: [{
1569
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SecurityService, decorators: [{
1558
1570
  type: Injectable,
1559
1571
  args: [{
1560
1572
  providedIn: 'root',
@@ -1892,10 +1904,10 @@ class AlertaService {
1892
1904
  });
1893
1905
  }
1894
1906
  }
1895
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AlertaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1896
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AlertaService, providedIn: 'root' });
1907
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AlertaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1908
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AlertaService, providedIn: 'root' });
1897
1909
  }
1898
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AlertaService, decorators: [{
1910
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AlertaService, decorators: [{
1899
1911
  type: Injectable,
1900
1912
  args: [{
1901
1913
  providedIn: 'root',
@@ -2993,10 +3005,10 @@ class UtilityAddService {
2993
3005
  this._serviceAlerta.toastrAlerts(4, 'Error', error instanceof Error ? error.message : String(error), 2);
2994
3006
  }
2995
3007
  }
2996
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: UtilityAddService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2997
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: UtilityAddService, providedIn: 'root' });
3008
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UtilityAddService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3009
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UtilityAddService, providedIn: 'root' });
2998
3010
  }
2999
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: UtilityAddService, decorators: [{
3011
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UtilityAddService, decorators: [{
3000
3012
  type: Injectable,
3001
3013
  args: [{
3002
3014
  providedIn: 'root',
@@ -3248,10 +3260,10 @@ class ParameterValuesService {
3248
3260
  return (this.dataParameter.find((p) => p.parameterName === parameterName)
3249
3261
  ?.values ?? []);
3250
3262
  }
3251
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ParameterValuesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3252
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ParameterValuesService, providedIn: 'root' });
3263
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ParameterValuesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3264
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ParameterValuesService, providedIn: 'root' });
3253
3265
  }
3254
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ParameterValuesService, decorators: [{
3266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ParameterValuesService, decorators: [{
3255
3267
  type: Injectable,
3256
3268
  args: [{
3257
3269
  providedIn: 'root',
@@ -3665,10 +3677,10 @@ class DsxButtonComponent {
3665
3677
  // - alerta si el parámetro no existe (ayuda a detectar typos)
3666
3678
  return this._paramService.isParameterValue(parameterName, this.parameterExpectedValue(), this.parameterIndex());
3667
3679
  }
3668
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DsxButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3669
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: DsxButtonComponent, isStandalone: true, selector: "dsx-button", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, routerPath: { classPropertyName: "routerPath", publicName: "routerPath", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, iconOnlyWidth: { classPropertyName: "iconOnlyWidth", publicName: "iconOnlyWidth", isSignal: true, isRequired: false, transformFunction: null }, raised: { classPropertyName: "raised", publicName: "raised", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, parameterName: { classPropertyName: "parameterName", publicName: "parameterName", isSignal: true, isRequired: false, transformFunction: null }, parameterExpectedValue: { classPropertyName: "parameterExpectedValue", publicName: "parameterExpectedValue", isSignal: true, isRequired: false, transformFunction: null }, parameterIndex: { classPropertyName: "parameterIndex", publicName: "parameterIndex", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, requireIdInput: { classPropertyName: "requireIdInput", publicName: "requireIdInput", isSignal: true, isRequired: false, transformFunction: null }, requiresIdGreaterThanZero: { classPropertyName: "requiresIdGreaterThanZero", publicName: "requiresIdGreaterThanZero", isSignal: true, isRequired: false, transformFunction: null }, labelOverride: { classPropertyName: "labelOverride", publicName: "labelOverride", isSignal: true, isRequired: false, transformFunction: null }, tooltipOverride: { classPropertyName: "tooltipOverride", publicName: "tooltipOverride", isSignal: true, isRequired: false, transformFunction: null }, iconOverride: { classPropertyName: "iconOverride", publicName: "iconOverride", isSignal: true, isRequired: false, transformFunction: null }, primeIconOverride: { classPropertyName: "primeIconOverride", publicName: "primeIconOverride", isSignal: true, isRequired: false, transformFunction: null }, colorOverride: { classPropertyName: "colorOverride", publicName: "colorOverride", isSignal: true, isRequired: false, transformFunction: null }, outlinedOverride: { classPropertyName: "outlinedOverride", publicName: "outlinedOverride", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { action: "action" }, host: { properties: { "class.dsx-button-compact-host": "this.compactHostClass" } }, ngImport: i0, template: "<!--Bot\u00F3n con las configuraciones din\u00E1micas para CRUD -->\r\n@if (showButton()) {\r\n<p-button\r\n [label]=\"buttonLabel\"\r\n [style]=\"buttonStyle\"\r\n [styleClass]=\"buttonStyleClass\"\r\n [pTooltip]=\"tooltip\"\r\n [tooltipDisabled]=\"disabled()\"\r\n tooltipPosition=\"top\"\r\n [raised]=\"isCompactIconButton ? false : raised()\"\r\n [rounded]=\"rounded()\"\r\n [text]=\"isCompactIconButton\"\r\n [size]=\"buttonSize\"\r\n severity=\"secondary\"\r\n [disabled]=\"disabled()\"\r\n [icon]=\"primeIcon\"\r\n (click)=\"onButtonClick()\"\r\n></p-button>\r\n}\r\n", styles: [":host{display:inline-flex;margin-bottom:.25rem}:host.dsx-button-compact-host{margin-bottom:0}:host ::ng-deep .p-button .p-button-label{font-family:Montserrat,Roboto,sans-serif;font-weight:500;letter-spacing:.01em}:host ::ng-deep .p-button.dsx-button-compact{min-height:2rem;padding-block:.2rem}:host ::ng-deep .p-button .material-symbols-outlined.p-button-icon{line-height:1;vertical-align:middle}:host ::ng-deep .p-button.dsx-button-compact .p-button-icon{margin:0;font-size:1.2rem;line-height:1}:host ::ng-deep .p-button.dsx-button-compact .material-symbols-outlined.p-button-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 0,\"opsz\" 24}:host ::ng-deep .p-button:disabled,:host ::ng-deep .p-button.p-disabled{cursor:not-allowed!important;opacity:.45!important;filter:grayscale(.2) saturate(.75)}:host ::ng-deep .p-button:disabled *,:host ::ng-deep .p-button.p-disabled *{cursor:not-allowed!important}\n"], dependencies: [{ kind: "component", type: 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: TooltipModule }, { kind: "directive", type: i1$2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }] });
3680
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3681
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: DsxButtonComponent, isStandalone: true, selector: "dsx-button", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, routerPath: { classPropertyName: "routerPath", publicName: "routerPath", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, iconOnlyWidth: { classPropertyName: "iconOnlyWidth", publicName: "iconOnlyWidth", isSignal: true, isRequired: false, transformFunction: null }, raised: { classPropertyName: "raised", publicName: "raised", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, parameterName: { classPropertyName: "parameterName", publicName: "parameterName", isSignal: true, isRequired: false, transformFunction: null }, parameterExpectedValue: { classPropertyName: "parameterExpectedValue", publicName: "parameterExpectedValue", isSignal: true, isRequired: false, transformFunction: null }, parameterIndex: { classPropertyName: "parameterIndex", publicName: "parameterIndex", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, requireIdInput: { classPropertyName: "requireIdInput", publicName: "requireIdInput", isSignal: true, isRequired: false, transformFunction: null }, requiresIdGreaterThanZero: { classPropertyName: "requiresIdGreaterThanZero", publicName: "requiresIdGreaterThanZero", isSignal: true, isRequired: false, transformFunction: null }, labelOverride: { classPropertyName: "labelOverride", publicName: "labelOverride", isSignal: true, isRequired: false, transformFunction: null }, tooltipOverride: { classPropertyName: "tooltipOverride", publicName: "tooltipOverride", isSignal: true, isRequired: false, transformFunction: null }, iconOverride: { classPropertyName: "iconOverride", publicName: "iconOverride", isSignal: true, isRequired: false, transformFunction: null }, primeIconOverride: { classPropertyName: "primeIconOverride", publicName: "primeIconOverride", isSignal: true, isRequired: false, transformFunction: null }, colorOverride: { classPropertyName: "colorOverride", publicName: "colorOverride", isSignal: true, isRequired: false, transformFunction: null }, outlinedOverride: { classPropertyName: "outlinedOverride", publicName: "outlinedOverride", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { action: "action" }, host: { properties: { "class.dsx-button-compact-host": "this.compactHostClass" } }, ngImport: i0, template: "<!--Bot\u00F3n con las configuraciones din\u00E1micas para CRUD -->\r\n@if (showButton()) {\r\n<p-button\r\n [label]=\"buttonLabel\"\r\n [style]=\"buttonStyle\"\r\n [styleClass]=\"buttonStyleClass\"\r\n [pTooltip]=\"tooltip\"\r\n [tooltipDisabled]=\"disabled()\"\r\n tooltipPosition=\"top\"\r\n [raised]=\"isCompactIconButton ? false : raised()\"\r\n [rounded]=\"rounded()\"\r\n [text]=\"isCompactIconButton\"\r\n [size]=\"buttonSize\"\r\n severity=\"secondary\"\r\n [disabled]=\"disabled()\"\r\n [icon]=\"primeIcon\"\r\n (click)=\"onButtonClick()\"\r\n></p-button>\r\n}\r\n", styles: [":host{display:inline-flex;margin-bottom:.25rem}:host.dsx-button-compact-host{margin-bottom:0}:host ::ng-deep .p-button .p-button-label{font-family:Montserrat,Roboto,sans-serif;font-weight:500;letter-spacing:.01em}:host ::ng-deep .p-button.dsx-button-compact{min-height:2rem;padding-block:.2rem}:host ::ng-deep .p-button .material-symbols-outlined.p-button-icon{line-height:1;vertical-align:middle}:host ::ng-deep .p-button.dsx-button-compact .p-button-icon{margin:0;font-size:1.2rem;line-height:1}:host ::ng-deep .p-button.dsx-button-compact .material-symbols-outlined.p-button-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 0,\"opsz\" 24}:host ::ng-deep .p-button:disabled,:host ::ng-deep .p-button.p-disabled{cursor:not-allowed!important;opacity:.45!important;filter:grayscale(.2) saturate(.75)}:host ::ng-deep .p-button:disabled *,:host ::ng-deep .p-button.p-disabled *{cursor:not-allowed!important}\n"], dependencies: [{ kind: "component", type: 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: TooltipModule }, { kind: "directive", type: i1$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }] });
3670
3682
  }
3671
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DsxButtonComponent, decorators: [{
3683
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxButtonComponent, decorators: [{
3672
3684
  type: Component,
3673
3685
  args: [{ selector: 'dsx-button', imports: [Button, TooltipModule], template: "<!--Bot\u00F3n con las configuraciones din\u00E1micas para CRUD -->\r\n@if (showButton()) {\r\n<p-button\r\n [label]=\"buttonLabel\"\r\n [style]=\"buttonStyle\"\r\n [styleClass]=\"buttonStyleClass\"\r\n [pTooltip]=\"tooltip\"\r\n [tooltipDisabled]=\"disabled()\"\r\n tooltipPosition=\"top\"\r\n [raised]=\"isCompactIconButton ? false : raised()\"\r\n [rounded]=\"rounded()\"\r\n [text]=\"isCompactIconButton\"\r\n [size]=\"buttonSize\"\r\n severity=\"secondary\"\r\n [disabled]=\"disabled()\"\r\n [icon]=\"primeIcon\"\r\n (click)=\"onButtonClick()\"\r\n></p-button>\r\n}\r\n", styles: [":host{display:inline-flex;margin-bottom:.25rem}:host.dsx-button-compact-host{margin-bottom:0}:host ::ng-deep .p-button .p-button-label{font-family:Montserrat,Roboto,sans-serif;font-weight:500;letter-spacing:.01em}:host ::ng-deep .p-button.dsx-button-compact{min-height:2rem;padding-block:.2rem}:host ::ng-deep .p-button .material-symbols-outlined.p-button-icon{line-height:1;vertical-align:middle}:host ::ng-deep .p-button.dsx-button-compact .p-button-icon{margin:0;font-size:1.2rem;line-height:1}:host ::ng-deep .p-button.dsx-button-compact .material-symbols-outlined.p-button-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 0,\"opsz\" 24}:host ::ng-deep .p-button:disabled,:host ::ng-deep .p-button.p-disabled{cursor:not-allowed!important;opacity:.45!important;filter:grayscale(.2) saturate(.75)}:host ::ng-deep .p-button:disabled *,:host ::ng-deep .p-button.p-disabled *{cursor:not-allowed!important}\n"] }]
3674
3686
  }], ctorParameters: () => [], propDecorators: { compactHostClass: [{
@@ -3809,10 +3821,10 @@ class IconDsxService {
3809
3821
  this.cache.set(name, request$);
3810
3822
  return request$;
3811
3823
  }
3812
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: IconDsxService, deps: [{ token: i1$6.HttpClient }, { token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
3813
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: IconDsxService, providedIn: 'root' });
3824
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: IconDsxService, deps: [{ token: i1$6.HttpClient }, { token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
3825
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: IconDsxService, providedIn: 'root' });
3814
3826
  }
3815
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: IconDsxService, decorators: [{
3827
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: IconDsxService, decorators: [{
3816
3828
  type: Injectable,
3817
3829
  args: [{
3818
3830
  providedIn: 'root',
@@ -3829,10 +3841,10 @@ class IconDsxComponent {
3829
3841
  ngOnInit() {
3830
3842
  this.svg$ = this.iconService.getIcon(this.name()); // 👈 AHORA CUADRA CON EL async
3831
3843
  }
3832
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: IconDsxComponent, deps: [{ token: IconDsxService }], target: i0.ɵɵFactoryTarget.Component });
3833
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.11", type: IconDsxComponent, isStandalone: true, selector: "icon-dsx", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<span class=\"dsx-icon\" [innerHTML]=\"svg$ | async\"></span>\r\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:1em;height:1em;font-size:24px;line-height:1;flex-shrink:0}.dsx-icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}:host ::ng-deep .dsx-icon svg{width:100%;height:100%;fill:currentColor;shape-rendering:geometricPrecision;stroke:currentColor;stroke-width:4px;stroke-linejoin:round;stroke-linecap:round;overflow:visible;transition:fill .2s ease,stroke .2s ease}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }] });
3844
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: IconDsxComponent, deps: [{ token: IconDsxService }], target: i0.ɵɵFactoryTarget.Component });
3845
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: IconDsxComponent, isStandalone: true, selector: "icon-dsx", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<span class=\"dsx-icon\" [innerHTML]=\"svg$ | async\"></span>\r\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:1em;height:1em;font-size:24px;line-height:1;flex-shrink:0}.dsx-icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}:host ::ng-deep .dsx-icon svg{width:100%;height:100%;fill:currentColor;shape-rendering:geometricPrecision;stroke:currentColor;stroke-width:4px;stroke-linejoin:round;stroke-linecap:round;overflow:visible;transition:fill .2s ease,stroke .2s ease}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }] });
3834
3846
  }
3835
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: IconDsxComponent, decorators: [{
3847
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: IconDsxComponent, decorators: [{
3836
3848
  type: Component,
3837
3849
  args: [{ selector: 'icon-dsx', imports: [AsyncPipe], template: "<span class=\"dsx-icon\" [innerHTML]=\"svg$ | async\"></span>\r\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:1em;height:1em;font-size:24px;line-height:1;flex-shrink:0}.dsx-icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}:host ::ng-deep .dsx-icon svg{width:100%;height:100%;fill:currentColor;shape-rendering:geometricPrecision;stroke:currentColor;stroke-width:4px;stroke-linejoin:round;stroke-linecap:round;overflow:visible;transition:fill .2s ease,stroke .2s ease}\n"] }]
3838
3850
  }], ctorParameters: () => [{ type: IconDsxService }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }] } });
@@ -3930,10 +3942,10 @@ class JsonHighlightPipe {
3930
3942
  .replace(/,/g, '<span class="json-comma">$&</span>')
3931
3943
  .replace(/:/g, '<span class="json-colon">$&</span>');
3932
3944
  }
3933
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JsonHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3934
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.11", ngImport: i0, type: JsonHighlightPipe, isStandalone: true, name: "jsonHighlight" });
3945
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3946
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: JsonHighlightPipe, isStandalone: true, name: "jsonHighlight" });
3935
3947
  }
3936
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JsonHighlightPipe, decorators: [{
3948
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonHighlightPipe, decorators: [{
3937
3949
  type: Pipe,
3938
3950
  args: [{
3939
3951
  name: 'jsonHighlight',
@@ -3950,10 +3962,10 @@ class JsonValuesDebujComponent {
3950
3962
  isDev() {
3951
3963
  return this.isDevSignal();
3952
3964
  }
3953
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JsonValuesDebujComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3954
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: JsonValuesDebujComponent, isStandalone: true, selector: "app-json-values-debuj", inputs: { form: "form" }, ngImport: i0, template: "@if (isDev()) {\r\n <span class=\"debug-title\">Development mode</span>\r\n <div class=\"custom-container\">\r\n <pre\r\n class=\"custom-pre\"\r\n [innerHTML]=\"form.getRawValue() | jsonHighlight\"\r\n ></pre>\r\n </div>\r\n}\r\n", styles: [".custom-container{width:100%;overflow:auto;background:linear-gradient(135deg,#f8f9fa,#f1f3f5);padding:1rem;border-radius:.75rem;margin-bottom:.75rem;border:1px solid #e9ecef;box-shadow:0 2px 8px #0000000d}.custom-pre{white-space:pre-wrap;word-break:break-word;font-size:.95rem;font-family:Consolas,Monaco,Courier New,monospace;line-height:1.6;margin:0;color:#2c3e50}.debug-title{display:inline-flex;align-items:center;gap:.4rem;padding:.15rem .6rem;margin-bottom:.5rem;border-radius:999px;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:#495057;background:#4950570a;border:1px solid rgba(73,80,87,.18)}.debug-title:before{content:\"\";width:7px;height:7px;border-radius:50%;background:#51cf66;box-shadow:0 0 0 2px #51cf6640}.json-key{color:tomato;font-style:italic;font-weight:700;font-size:1.02em;letter-spacing:.3px}.json-string{color:#27ae60;font-weight:500}.json-number{color:#3498db;font-weight:700;font-size:1.02em}.json-boolean{color:#daa248;font-weight:700;font-size:1.02em}.json-null{color:#6c757d;font-style:italic;font-weight:500}.json-bracket{color:#2c3e50;font-weight:700}.json-colon{color:#34495e;font-weight:700}.json-comma{color:#7f8c8d;font-weight:700}.json-date-part{color:#2980b9;font-weight:600}.json-date-sep{color:#95a5a6;font-weight:400}.json-date-time{color:#8e44ad;font-weight:500}.json-date-part .json-number,.json-date-time .json-number,.json-date-part .json-colon,.json-date-time .json-colon{color:inherit;font-weight:inherit}\n"], dependencies: [{ kind: "pipe", type: JsonHighlightPipe, name: "jsonHighlight" }], encapsulation: i0.ViewEncapsulation.None });
3965
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonValuesDebujComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3966
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: JsonValuesDebujComponent, isStandalone: true, selector: "app-json-values-debuj", inputs: { form: "form" }, ngImport: i0, template: "@if (isDev()) {\r\n <span class=\"debug-title\">Development mode</span>\r\n <div class=\"custom-container\">\r\n <pre\r\n class=\"custom-pre\"\r\n [innerHTML]=\"form.getRawValue() | jsonHighlight\"\r\n ></pre>\r\n </div>\r\n}\r\n", styles: [".custom-container{width:100%;overflow:auto;background:linear-gradient(135deg,#f8f9fa,#f1f3f5);padding:1rem;border-radius:.75rem;margin-bottom:.75rem;border:1px solid #e9ecef;box-shadow:0 2px 8px #0000000d}.custom-pre{white-space:pre-wrap;word-break:break-word;font-size:.95rem;font-family:Consolas,Monaco,Courier New,monospace;line-height:1.6;margin:0;color:#2c3e50}.debug-title{display:inline-flex;align-items:center;gap:.4rem;padding:.15rem .6rem;margin-bottom:.5rem;border-radius:999px;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:#495057;background:#4950570a;border:1px solid rgba(73,80,87,.18)}.debug-title:before{content:\"\";width:7px;height:7px;border-radius:50%;background:#51cf66;box-shadow:0 0 0 2px #51cf6640}.json-key{color:tomato;font-style:italic;font-weight:700;font-size:1.02em;letter-spacing:.3px}.json-string{color:#27ae60;font-weight:500}.json-number{color:#3498db;font-weight:700;font-size:1.02em}.json-boolean{color:#daa248;font-weight:700;font-size:1.02em}.json-null{color:#6c757d;font-style:italic;font-weight:500}.json-bracket{color:#2c3e50;font-weight:700}.json-colon{color:#34495e;font-weight:700}.json-comma{color:#7f8c8d;font-weight:700}.json-date-part{color:#2980b9;font-weight:600}.json-date-sep{color:#95a5a6;font-weight:400}.json-date-time{color:#8e44ad;font-weight:500}.json-date-part .json-number,.json-date-time .json-number,.json-date-part .json-colon,.json-date-time .json-colon{color:inherit;font-weight:inherit}\n"], dependencies: [{ kind: "pipe", type: JsonHighlightPipe, name: "jsonHighlight" }], encapsulation: i0.ViewEncapsulation.None });
3955
3967
  }
3956
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JsonValuesDebujComponent, decorators: [{
3968
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonValuesDebujComponent, decorators: [{
3957
3969
  type: Component,
3958
3970
  args: [{ selector: 'app-json-values-debuj', imports: [JsonHighlightPipe], encapsulation: ViewEncapsulation.None, template: "@if (isDev()) {\r\n <span class=\"debug-title\">Development mode</span>\r\n <div class=\"custom-container\">\r\n <pre\r\n class=\"custom-pre\"\r\n [innerHTML]=\"form.getRawValue() | jsonHighlight\"\r\n ></pre>\r\n </div>\r\n}\r\n", styles: [".custom-container{width:100%;overflow:auto;background:linear-gradient(135deg,#f8f9fa,#f1f3f5);padding:1rem;border-radius:.75rem;margin-bottom:.75rem;border:1px solid #e9ecef;box-shadow:0 2px 8px #0000000d}.custom-pre{white-space:pre-wrap;word-break:break-word;font-size:.95rem;font-family:Consolas,Monaco,Courier New,monospace;line-height:1.6;margin:0;color:#2c3e50}.debug-title{display:inline-flex;align-items:center;gap:.4rem;padding:.15rem .6rem;margin-bottom:.5rem;border-radius:999px;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:#495057;background:#4950570a;border:1px solid rgba(73,80,87,.18)}.debug-title:before{content:\"\";width:7px;height:7px;border-radius:50%;background:#51cf66;box-shadow:0 0 0 2px #51cf6640}.json-key{color:tomato;font-style:italic;font-weight:700;font-size:1.02em;letter-spacing:.3px}.json-string{color:#27ae60;font-weight:500}.json-number{color:#3498db;font-weight:700;font-size:1.02em}.json-boolean{color:#daa248;font-weight:700;font-size:1.02em}.json-null{color:#6c757d;font-style:italic;font-weight:500}.json-bracket{color:#2c3e50;font-weight:700}.json-colon{color:#34495e;font-weight:700}.json-comma{color:#7f8c8d;font-weight:700}.json-date-part{color:#2980b9;font-weight:600}.json-date-sep{color:#95a5a6;font-weight:400}.json-date-time{color:#8e44ad;font-weight:500}.json-date-part .json-number,.json-date-time .json-number,.json-date-part .json-colon,.json-date-time .json-colon{color:inherit;font-weight:inherit}\n"] }]
3959
3971
  }], propDecorators: { form: [{
@@ -4040,10 +4052,10 @@ class SpinnerLoadingService {
4040
4052
  this.counter = 0;
4041
4053
  this.spinnerVisible.set(false);
4042
4054
  }
4043
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: SpinnerLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4044
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: SpinnerLoadingService, providedIn: 'root' });
4055
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SpinnerLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4056
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SpinnerLoadingService, providedIn: 'root' });
4045
4057
  }
4046
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: SpinnerLoadingService, decorators: [{
4058
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SpinnerLoadingService, decorators: [{
4047
4059
  type: Injectable,
4048
4060
  args: [{
4049
4061
  providedIn: 'root',
@@ -4103,10 +4115,10 @@ class LogoDsxComponent {
4103
4115
  easing: 'outBounce',
4104
4116
  }, 490);
4105
4117
  }
4106
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: LogoDsxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4107
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.11", type: LogoDsxComponent, isStandalone: true, selector: "app-logo-dsx", viewQueries: [{ propertyName: "logo", first: true, predicate: ["logo"], descendants: true, isSignal: true }, { propertyName: "hexagon", first: true, predicate: ["logoHexagon"], descendants: true, isSignal: true }, { propertyName: "circle", first: true, predicate: ["logoCircle"], descendants: true, isSignal: true }, { propertyName: "mask", first: true, predicate: ["logoMask"], descendants: true, isSignal: true }, { propertyName: "text", first: true, predicate: ["logoText"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"site-logo\">\r\n <figure #logo>\r\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 148 128\">\r\n <defs>\r\n <linearGradient id=\"logo-gradient\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\">\r\n <stop offset=\"0%\" stop-color=\"#00ffff\" />\r\n <stop offset=\"100%\" stop-color=\"#ff00ff\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"circle-gradient\"\r\n x1=\"0%\"\r\n y1=\"100%\"\r\n x2=\"100%\"\r\n y2=\"0%\"\r\n >\r\n <stop offset=\"0%\" stop-color=\"#ff00ff\" />\r\n <stop offset=\"100%\" stop-color=\"#00ffff\" />\r\n </linearGradient>\r\n <mask id=\"circle-mask\">\r\n <rect fill=\"white\" width=\"100%\" height=\"100%\"></rect>\r\n <circle\r\n #logoMask\r\n id=\"logo-mask\"\r\n fill=\"black\"\r\n cx=\"120\"\r\n cy=\"96\"\r\n r=\"28\"\r\n ></circle>\r\n </mask>\r\n </defs>\r\n <polygon\r\n #logoHexagon\r\n id=\"logo-hexagon\"\r\n fill=\"#475569\"\r\n stroke=\"#9ca3af\"\r\n stroke-width=\"2\"\r\n stroke-linejoin=\"round\"\r\n points=\"64 128 8.574 96 8.574 32 64 0 119.426 32 119.426 96\"\r\n mask=\"url(#circle-mask)\"\r\n ></polygon>\r\n <circle #logoCircle fill=\"#16a34a\" cx=\"120\" cy=\"96\" r=\"20\"></circle>\r\n </svg>\r\n </figure>\r\n <div class=\"site-title\">\r\n <div #logoText class=\"site-title-text\">\r\n DEV<span\r\n >SOFTXela<span style=\"font-size: small; vertical-align: super\"\r\n >&copy;</span\r\n >\r\n {{ currentYear }}</span\r\n >\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}body{display:flex;align-items:center;justify-content:center;min-height:100vh;font-family:Dosis,sans-serif;color:#3f3c3c}.site-logo{display:flex;align-items:center;transform:translateZ(0)}.site-logo figure{position:relative;flex:0 0 2.75rem;width:3.75rem;z-index:2;opacity:0}#logo-hexagon{transform-origin:50%}.site-logo figure circle{transform-origin:80% 80%}.site-title{position:relative;overflow:hidden;margin-left:-1.5rem;z-index:1;transform:translateZ(0)}.site-title-text{padding:.25rem .375rem .25rem 1.75rem;font-size:1.25rem;font-weight:800;opacity:0;background:linear-gradient(90deg,#7e22ce,#4f46e5,#2563eb);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.site-title-text span{margin-left:.015625rem}\n"] });
4118
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LogoDsxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4119
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.12", type: LogoDsxComponent, isStandalone: true, selector: "app-logo-dsx", viewQueries: [{ propertyName: "logo", first: true, predicate: ["logo"], descendants: true, isSignal: true }, { propertyName: "hexagon", first: true, predicate: ["logoHexagon"], descendants: true, isSignal: true }, { propertyName: "circle", first: true, predicate: ["logoCircle"], descendants: true, isSignal: true }, { propertyName: "mask", first: true, predicate: ["logoMask"], descendants: true, isSignal: true }, { propertyName: "text", first: true, predicate: ["logoText"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"site-logo\">\r\n <figure #logo>\r\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 148 128\">\r\n <defs>\r\n <linearGradient id=\"logo-gradient\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\">\r\n <stop offset=\"0%\" stop-color=\"#00ffff\" />\r\n <stop offset=\"100%\" stop-color=\"#ff00ff\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"circle-gradient\"\r\n x1=\"0%\"\r\n y1=\"100%\"\r\n x2=\"100%\"\r\n y2=\"0%\"\r\n >\r\n <stop offset=\"0%\" stop-color=\"#ff00ff\" />\r\n <stop offset=\"100%\" stop-color=\"#00ffff\" />\r\n </linearGradient>\r\n <mask id=\"circle-mask\">\r\n <rect fill=\"white\" width=\"100%\" height=\"100%\"></rect>\r\n <circle\r\n #logoMask\r\n id=\"logo-mask\"\r\n fill=\"black\"\r\n cx=\"120\"\r\n cy=\"96\"\r\n r=\"28\"\r\n ></circle>\r\n </mask>\r\n </defs>\r\n <polygon\r\n #logoHexagon\r\n id=\"logo-hexagon\"\r\n fill=\"#475569\"\r\n stroke=\"#9ca3af\"\r\n stroke-width=\"2\"\r\n stroke-linejoin=\"round\"\r\n points=\"64 128 8.574 96 8.574 32 64 0 119.426 32 119.426 96\"\r\n mask=\"url(#circle-mask)\"\r\n ></polygon>\r\n <circle #logoCircle fill=\"#16a34a\" cx=\"120\" cy=\"96\" r=\"20\"></circle>\r\n </svg>\r\n </figure>\r\n <div class=\"site-title\">\r\n <div #logoText class=\"site-title-text\">\r\n DEV<span\r\n >SOFTXela<span style=\"font-size: small; vertical-align: super\"\r\n >&copy;</span\r\n >\r\n {{ currentYear }}</span\r\n >\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}body{display:flex;align-items:center;justify-content:center;min-height:100vh;font-family:Dosis,sans-serif;color:#3f3c3c}.site-logo{display:flex;align-items:center;transform:translateZ(0)}.site-logo figure{position:relative;flex:0 0 2.75rem;width:3.75rem;z-index:2;opacity:0}#logo-hexagon{transform-origin:50%}.site-logo figure circle{transform-origin:80% 80%}.site-title{position:relative;overflow:hidden;margin-left:-1.5rem;z-index:1;transform:translateZ(0)}.site-title-text{padding:.25rem .375rem .25rem 1.75rem;font-size:1.25rem;font-weight:800;opacity:0;background:linear-gradient(90deg,#7e22ce,#4f46e5,#2563eb);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.site-title-text span{margin-left:.015625rem}\n"] });
4108
4120
  }
4109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: LogoDsxComponent, decorators: [{
4121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LogoDsxComponent, decorators: [{
4110
4122
  type: Component,
4111
4123
  args: [{ selector: 'app-logo-dsx', imports: [], template: "<div class=\"site-logo\">\r\n <figure #logo>\r\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 148 128\">\r\n <defs>\r\n <linearGradient id=\"logo-gradient\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\">\r\n <stop offset=\"0%\" stop-color=\"#00ffff\" />\r\n <stop offset=\"100%\" stop-color=\"#ff00ff\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"circle-gradient\"\r\n x1=\"0%\"\r\n y1=\"100%\"\r\n x2=\"100%\"\r\n y2=\"0%\"\r\n >\r\n <stop offset=\"0%\" stop-color=\"#ff00ff\" />\r\n <stop offset=\"100%\" stop-color=\"#00ffff\" />\r\n </linearGradient>\r\n <mask id=\"circle-mask\">\r\n <rect fill=\"white\" width=\"100%\" height=\"100%\"></rect>\r\n <circle\r\n #logoMask\r\n id=\"logo-mask\"\r\n fill=\"black\"\r\n cx=\"120\"\r\n cy=\"96\"\r\n r=\"28\"\r\n ></circle>\r\n </mask>\r\n </defs>\r\n <polygon\r\n #logoHexagon\r\n id=\"logo-hexagon\"\r\n fill=\"#475569\"\r\n stroke=\"#9ca3af\"\r\n stroke-width=\"2\"\r\n stroke-linejoin=\"round\"\r\n points=\"64 128 8.574 96 8.574 32 64 0 119.426 32 119.426 96\"\r\n mask=\"url(#circle-mask)\"\r\n ></polygon>\r\n <circle #logoCircle fill=\"#16a34a\" cx=\"120\" cy=\"96\" r=\"20\"></circle>\r\n </svg>\r\n </figure>\r\n <div class=\"site-title\">\r\n <div #logoText class=\"site-title-text\">\r\n DEV<span\r\n >SOFTXela<span style=\"font-size: small; vertical-align: super\"\r\n >&copy;</span\r\n >\r\n {{ currentYear }}</span\r\n >\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}body{display:flex;align-items:center;justify-content:center;min-height:100vh;font-family:Dosis,sans-serif;color:#3f3c3c}.site-logo{display:flex;align-items:center;transform:translateZ(0)}.site-logo figure{position:relative;flex:0 0 2.75rem;width:3.75rem;z-index:2;opacity:0}#logo-hexagon{transform-origin:50%}.site-logo figure circle{transform-origin:80% 80%}.site-title{position:relative;overflow:hidden;margin-left:-1.5rem;z-index:1;transform:translateZ(0)}.site-title-text{padding:.25rem .375rem .25rem 1.75rem;font-size:1.25rem;font-weight:800;opacity:0;background:linear-gradient(90deg,#7e22ce,#4f46e5,#2563eb);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.site-title-text span{margin-left:.015625rem}\n"] }]
4112
4124
  }], ctorParameters: () => [], propDecorators: { logo: [{ type: i0.ViewChild, args: ['logo', { isSignal: true }] }], hexagon: [{ type: i0.ViewChild, args: ['logoHexagon', { isSignal: true }] }], circle: [{ type: i0.ViewChild, args: ['logoCircle', { isSignal: true }] }], mask: [{ type: i0.ViewChild, args: ['logoMask', { isSignal: true }] }], text: [{ type: i0.ViewChild, args: ['logoText', { isSignal: true }] }] } });
@@ -4126,20 +4138,20 @@ class LoadingLottieComponent {
4126
4138
  };
4127
4139
  });
4128
4140
  }
4129
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: LoadingLottieComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4130
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: LoadingLottieComponent, isStandalone: true, selector: "app-loading-lottie", inputs: { jsonUrl: { classPropertyName: "jsonUrl", publicName: "jsonUrl", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (_spinnerService.spinnerVisible()) {\r\n <div class=\"loader-container\">\r\n <ng-lottie\r\n [options]=\"options\"\r\n [width]=\"size()\"\r\n [height]=\"size()\"\r\n ></ng-lottie>\r\n <!-- <p class=\"loading-text\">&copy;DevsoftXela {{ currentYear }}</p> -->\r\n <app-logo-dsx></app-logo-dsx>\r\n </div>\r\n}\r\n", styles: [".loader-container{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000e6;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;z-index:9999;overflow:hidden;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loader-container app-logo-dsx{margin-top:-24px}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "component", type: LottieComponent, selector: "ng-lottie", inputs: ["width", "height"] }, { kind: "component", type: LogoDsxComponent, selector: "app-logo-dsx" }] });
4141
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LoadingLottieComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4142
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: LoadingLottieComponent, isStandalone: true, selector: "app-loading-lottie", inputs: { jsonUrl: { classPropertyName: "jsonUrl", publicName: "jsonUrl", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (_spinnerService.spinnerVisible()) {\r\n <div class=\"loader-container\">\r\n <ng-lottie\r\n [options]=\"options\"\r\n [width]=\"size()\"\r\n [height]=\"size()\"\r\n ></ng-lottie>\r\n <!-- <p class=\"loading-text\">&copy;DevsoftXela {{ currentYear }}</p> -->\r\n <app-logo-dsx></app-logo-dsx>\r\n </div>\r\n}\r\n", styles: [".loader-container{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000e6;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;z-index:9999;overflow:hidden;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loader-container app-logo-dsx{margin-top:-24px}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "component", type: LottieComponent, selector: "ng-lottie", inputs: ["width", "height"] }, { kind: "component", type: LogoDsxComponent, selector: "app-logo-dsx" }] });
4131
4143
  }
4132
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: LoadingLottieComponent, decorators: [{
4144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LoadingLottieComponent, decorators: [{
4133
4145
  type: Component,
4134
4146
  args: [{ selector: 'app-loading-lottie', imports: [LottieComponent, LogoDsxComponent], template: "@if (_spinnerService.spinnerVisible()) {\r\n <div class=\"loader-container\">\r\n <ng-lottie\r\n [options]=\"options\"\r\n [width]=\"size()\"\r\n [height]=\"size()\"\r\n ></ng-lottie>\r\n <!-- <p class=\"loading-text\">&copy;DevsoftXela {{ currentYear }}</p> -->\r\n <app-logo-dsx></app-logo-dsx>\r\n </div>\r\n}\r\n", styles: [".loader-container{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000e6;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;z-index:9999;overflow:hidden;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loader-container app-logo-dsx{margin-top:-24px}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"] }]
4135
4147
  }], ctorParameters: () => [], propDecorators: { jsonUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "jsonUrl", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
4136
4148
 
4137
4149
  class CssV2Component {
4138
4150
  _spinnerService = inject(SpinnerLoadingService);
4139
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CssV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
4140
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: CssV2Component, isStandalone: true, selector: "app-loading-v2", ngImport: i0, template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"spinner-container\">\r\n <div class=\"center_div\">\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n </div>\r\n <p class=\"loading-text\">Cargando...</p>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";.spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:9999;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.spinner-container{display:flex;flex-direction:column;align-items:center}.loading-text{font-family:Arial,sans-serif;color:#00e1ff;margin-top:10px;font-size:18px;animation:fadeInOut 1.7s linear infinite}@keyframes fadeInOut{0%,to{opacity:0}50%{opacity:1}}.center_div{display:flex;justify-content:center;align-items:center;margin:5px}.wave{width:1.8rem;height:75px;background-color:#ff6b6b40;margin:0 4px;border-radius:.4rem;animation:wave 1.5s linear infinite;transform-origin:center}@keyframes wave{0%{transform:scale(0);filter:hue-rotate(90deg) blur(100px)}25%{transform:scale(0);filter:hue-rotate(120deg) blur(50px)}50%{transform:scale(1);filter:hue-rotate(180deg) blur(25px)}25%{transform:scale(0);filter:hue-rotate(360deg) blur(2px)}to{transform:scale(0);filter:hue-rotate(0deg) blur(0)}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.wave:nth-child(2){animation-delay:.1s}.wave:nth-child(3){animation-delay:.2s}.wave:nth-child(4){animation-delay:.3s}.wave:nth-child(5){animation-delay:.4s}.wave:nth-child(6){animation-delay:.5s}.wave:nth-child(7){animation-delay:.6s}.wave:nth-child(8){animation-delay:.7s}.wave:nth-child(9){animation-delay:.8s}.wave:nth-child(10){animation-delay:.9s}\n"] });
4151
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CssV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
4152
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: CssV2Component, isStandalone: true, selector: "app-loading-v2", ngImport: i0, template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"spinner-container\">\r\n <div class=\"center_div\">\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n </div>\r\n <p class=\"loading-text\">Cargando...</p>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";.spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:9999;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.spinner-container{display:flex;flex-direction:column;align-items:center}.loading-text{font-family:Arial,sans-serif;color:#00e1ff;margin-top:10px;font-size:18px;animation:fadeInOut 1.7s linear infinite}@keyframes fadeInOut{0%,to{opacity:0}50%{opacity:1}}.center_div{display:flex;justify-content:center;align-items:center;margin:5px}.wave{width:1.8rem;height:75px;background-color:#ff6b6b40;margin:0 4px;border-radius:.4rem;animation:wave 1.5s linear infinite;transform-origin:center}@keyframes wave{0%{transform:scale(0);filter:hue-rotate(90deg) blur(100px)}25%{transform:scale(0);filter:hue-rotate(120deg) blur(50px)}50%{transform:scale(1);filter:hue-rotate(180deg) blur(25px)}25%{transform:scale(0);filter:hue-rotate(360deg) blur(2px)}to{transform:scale(0);filter:hue-rotate(0deg) blur(0)}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.wave:nth-child(2){animation-delay:.1s}.wave:nth-child(3){animation-delay:.2s}.wave:nth-child(4){animation-delay:.3s}.wave:nth-child(5){animation-delay:.4s}.wave:nth-child(6){animation-delay:.5s}.wave:nth-child(7){animation-delay:.6s}.wave:nth-child(8){animation-delay:.7s}.wave:nth-child(9){animation-delay:.8s}.wave:nth-child(10){animation-delay:.9s}\n"] });
4141
4153
  }
4142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CssV2Component, decorators: [{
4154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CssV2Component, decorators: [{
4143
4155
  type: Component,
4144
4156
  args: [{ selector: 'app-loading-v2', imports: [], template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"spinner-container\">\r\n <div class=\"center_div\">\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n </div>\r\n <p class=\"loading-text\">Cargando...</p>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";.spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:9999;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.spinner-container{display:flex;flex-direction:column;align-items:center}.loading-text{font-family:Arial,sans-serif;color:#00e1ff;margin-top:10px;font-size:18px;animation:fadeInOut 1.7s linear infinite}@keyframes fadeInOut{0%,to{opacity:0}50%{opacity:1}}.center_div{display:flex;justify-content:center;align-items:center;margin:5px}.wave{width:1.8rem;height:75px;background-color:#ff6b6b40;margin:0 4px;border-radius:.4rem;animation:wave 1.5s linear infinite;transform-origin:center}@keyframes wave{0%{transform:scale(0);filter:hue-rotate(90deg) blur(100px)}25%{transform:scale(0);filter:hue-rotate(120deg) blur(50px)}50%{transform:scale(1);filter:hue-rotate(180deg) blur(25px)}25%{transform:scale(0);filter:hue-rotate(360deg) blur(2px)}to{transform:scale(0);filter:hue-rotate(0deg) blur(0)}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.wave:nth-child(2){animation-delay:.1s}.wave:nth-child(3){animation-delay:.2s}.wave:nth-child(4){animation-delay:.3s}.wave:nth-child(5){animation-delay:.4s}.wave:nth-child(6){animation-delay:.5s}.wave:nth-child(7){animation-delay:.6s}.wave:nth-child(8){animation-delay:.7s}.wave:nth-child(9){animation-delay:.8s}.wave:nth-child(10){animation-delay:.9s}\n"] }]
4145
4157
  }] });
@@ -4151,10 +4163,10 @@ class LoadingComponent {
4151
4163
  constructor() {
4152
4164
  this.currentYear = new Date().getFullYear(); // Asigna el año actual
4153
4165
  }
4154
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4155
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: LoadingComponent, isStandalone: true, selector: "app-loading", ngImport: i0, template: "<!-- Actualizaci\u00F3n 2025-31-01 12:00 -->\r\n@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"loader\">\r\n <div class=\"external-shadow\">\r\n <div class=\"central\"></div>\r\n </div>\r\n <img src=\"/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">&copy;DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000e6;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:9999;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loader{display:flex;justify-content:center;align-items:center;position:relative;cursor:not-allowed;scale:.8}.central{display:flex;justify-content:center;align-items:center;position:relative;width:10em;height:10em;border-radius:50%;box-shadow:.5em 1em 1em #8a2be2,-.5em .5em 1em #00f,.5em -.5em 1em purple,-.5em -.5em 1em #0ff;background-color:#0003}.external-shadow{width:10em;height:10em;border-radius:50%;display:flex;justify-content:center;align-items:center;position:relative;box-shadow:.5em .5em 3em #8a2be2,-.5em .5em 3em #00f,.5em -.5em 3em purple,-.5em -.5em 3em #0ff;z-index:999;animation:rotate 3s linear infinite;background-color:#21212180}@keyframes rotate{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.spinner-image{width:70%;height:70%;border-radius:50%;object-fit:cover;position:absolute;z-index:1000}.loading-text{font-family:Montserrat,sans-serif;text-transform:uppercase;letter-spacing:3px;background:linear-gradient(45deg,#0ff,#f0f);-webkit-background-clip:text;background-clip:text;color:transparent;margin-top:1em}@keyframes pulse{0%,to{opacity:.7}50%{opacity:1}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"] });
4166
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4167
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: LoadingComponent, isStandalone: true, selector: "app-loading", ngImport: i0, template: "<!-- Actualizaci\u00F3n 2025-31-01 12:00 -->\r\n@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"loader\">\r\n <div class=\"external-shadow\">\r\n <div class=\"central\"></div>\r\n </div>\r\n <img src=\"/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">&copy;DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000e6;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:9999;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loader{display:flex;justify-content:center;align-items:center;position:relative;cursor:not-allowed;scale:.8}.central{display:flex;justify-content:center;align-items:center;position:relative;width:10em;height:10em;border-radius:50%;box-shadow:.5em 1em 1em #8a2be2,-.5em .5em 1em #00f,.5em -.5em 1em purple,-.5em -.5em 1em #0ff;background-color:#0003}.external-shadow{width:10em;height:10em;border-radius:50%;display:flex;justify-content:center;align-items:center;position:relative;box-shadow:.5em .5em 3em #8a2be2,-.5em .5em 3em #00f,.5em -.5em 3em purple,-.5em -.5em 3em #0ff;z-index:999;animation:rotate 3s linear infinite;background-color:#21212180}@keyframes rotate{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.spinner-image{width:70%;height:70%;border-radius:50%;object-fit:cover;position:absolute;z-index:1000}.loading-text{font-family:Montserrat,sans-serif;text-transform:uppercase;letter-spacing:3px;background:linear-gradient(45deg,#0ff,#f0f);-webkit-background-clip:text;background-clip:text;color:transparent;margin-top:1em}@keyframes pulse{0%,to{opacity:.7}50%{opacity:1}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"] });
4156
4168
  }
4157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: LoadingComponent, decorators: [{
4169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LoadingComponent, decorators: [{
4158
4170
  type: Component,
4159
4171
  args: [{ selector: 'app-loading', imports: [], template: "<!-- Actualizaci\u00F3n 2025-31-01 12:00 -->\r\n@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"loader\">\r\n <div class=\"external-shadow\">\r\n <div class=\"central\"></div>\r\n </div>\r\n <img src=\"/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">&copy;DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000e6;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:9999;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loader{display:flex;justify-content:center;align-items:center;position:relative;cursor:not-allowed;scale:.8}.central{display:flex;justify-content:center;align-items:center;position:relative;width:10em;height:10em;border-radius:50%;box-shadow:.5em 1em 1em #8a2be2,-.5em .5em 1em #00f,.5em -.5em 1em purple,-.5em -.5em 1em #0ff;background-color:#0003}.external-shadow{width:10em;height:10em;border-radius:50%;display:flex;justify-content:center;align-items:center;position:relative;box-shadow:.5em .5em 3em #8a2be2,-.5em .5em 3em #00f,.5em -.5em 3em purple,-.5em -.5em 3em #0ff;z-index:999;animation:rotate 3s linear infinite;background-color:#21212180}@keyframes rotate{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.spinner-image{width:70%;height:70%;border-radius:50%;object-fit:cover;position:absolute;z-index:1000}.loading-text{font-family:Montserrat,sans-serif;text-transform:uppercase;letter-spacing:3px;background:linear-gradient(45deg,#0ff,#f0f);-webkit-background-clip:text;background-clip:text;color:transparent;margin-top:1em}@keyframes pulse{0%,to{opacity:.7}50%{opacity:1}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"] }]
4160
4172
  }], ctorParameters: () => [] });
@@ -4169,6 +4181,7 @@ const developmentEnvironment = {
4169
4181
  production: false,
4170
4182
  SeguridadITApiUrl: 'https://localhost:7197/',
4171
4183
  tokenName: 'securityIT-Authorize',
4184
+ tokenPurpose: 'token-Purpose',
4172
4185
  tokenNameRF: 'refresh-Authorize',
4173
4186
  sessionStatus: 'lastActivity',
4174
4187
  refreshTokenExpiry: 'refreshToken-Expiry',
@@ -4184,6 +4197,7 @@ const productionEnvironment = {
4184
4197
  myAppUrl: '/',
4185
4198
  SeguridadITApiUrl: 'https://securityapi.itgtxela.com/',
4186
4199
  tokenName: 'securityIT-Authorize',
4200
+ tokenPurpose: 'token-Purpose',
4187
4201
  tokenNameRF: 'refresh-Authorize',
4188
4202
  sessionStatus: 'lastActivity',
4189
4203
  refreshTokenExpiry: 'refreshToken-Expiry',
@@ -4373,7 +4387,12 @@ class AuthorizeService {
4373
4387
  }
4374
4388
  getToken() {
4375
4389
  return this._cookieService.get(this.environment.tokenName);
4376
- //return localStorage.getItem(environment.tokenName);
4390
+ }
4391
+ getTokenPurpose() {
4392
+ return this._cookieService.get(this.environment.tokenPurpose);
4393
+ }
4394
+ setTokenPurpose(token) {
4395
+ this.setCookie(this.environment.tokenPurpose, token.token, new Date(token.refreshTokenExpiry));
4377
4396
  }
4378
4397
  /**
4379
4398
  * Obtiene el Refresh Token almacenado en cookies.
@@ -4442,6 +4461,14 @@ class AuthorizeService {
4442
4461
  // Devuelve true si el token NO ha expirado
4443
4462
  return !this.helperJwt.isTokenExpired(token);
4444
4463
  }
4464
+ getTokenPurposeValid() {
4465
+ const token = this.getTokenPurpose();
4466
+ if (!token) {
4467
+ return false;
4468
+ }
4469
+ // Devuelve true si el token NO ha expirado
4470
+ return !this.helperJwt.isTokenExpired(token);
4471
+ }
4445
4472
  /**
4446
4473
  * Obtiene los valores principales del JWT almacenado (usuario, roles y estado).
4447
4474
  *
@@ -4636,6 +4663,7 @@ class AuthorizeService {
4636
4663
  const cookiesToDelete = [
4637
4664
  this.environment.tokenName,
4638
4665
  this.environment.tokenNameRF,
4666
+ this.environment.tokenPurpose,
4639
4667
  this.environment.sessionStatus,
4640
4668
  ];
4641
4669
  cookiesToDelete.forEach((cookieName) => {
@@ -4678,10 +4706,10 @@ class AuthorizeService {
4678
4706
  });
4679
4707
  }
4680
4708
  }
4681
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AuthorizeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4682
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AuthorizeService, providedIn: 'root' });
4709
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AuthorizeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4710
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AuthorizeService, providedIn: 'root' });
4683
4711
  }
4684
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: AuthorizeService, decorators: [{
4712
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AuthorizeService, decorators: [{
4685
4713
  type: Injectable,
4686
4714
  args: [{
4687
4715
  providedIn: 'root',
@@ -4721,10 +4749,10 @@ class RequestMetricsService {
4721
4749
  return 50;
4722
4750
  return 25;
4723
4751
  }
4724
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: RequestMetricsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4725
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: RequestMetricsService, providedIn: 'root' });
4752
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: RequestMetricsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4753
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: RequestMetricsService, providedIn: 'root' });
4726
4754
  }
4727
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: RequestMetricsService, decorators: [{
4755
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: RequestMetricsService, decorators: [{
4728
4756
  type: Injectable,
4729
4757
  args: [{ providedIn: 'root' }]
4730
4758
  }] });
@@ -4750,10 +4778,10 @@ class NetworkStatusComponent {
4750
4778
  // 50 o menos -> última imagen (mala)
4751
4779
  return 'image/Status_Red.png';
4752
4780
  }
4753
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: NetworkStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4754
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: NetworkStatusComponent, isStandalone: true, selector: "app-network-status", ngImport: i0, template: "<div class=\"network-status-container\">\r\n <p-avatar\r\n [image]=\"getStatusImage()\"\r\n [pTooltip]=\"tooltipText\"\r\n tooltipPosition=\"bottom\"\r\n />\r\n <span> {{ state().score }}% </span>\r\n <span> {{ state().averageDurationMs | number: \"1.0-0\" }}ms </span>\r\n</div>\r\n", styles: [".network-status-container{display:flex;align-items:center;gap:.5rem}.network-status-container span{font-size:.85rem;color:#6b7280;font-weight:400}.network-status-container span:first-of-type{font-weight:500}\n"], dependencies: [{ kind: "component", type: Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "pipe", type: DecimalPipe, name: "number" }] });
4781
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: NetworkStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4782
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.12", type: NetworkStatusComponent, isStandalone: true, selector: "app-network-status", ngImport: i0, template: "<div class=\"network-status-container\">\r\n <p-avatar\r\n [image]=\"getStatusImage()\"\r\n [pTooltip]=\"tooltipText\"\r\n tooltipPosition=\"bottom\"\r\n />\r\n <span> {{ state().score }}% </span>\r\n <span> {{ state().averageDurationMs | number: \"1.0-0\" }}ms </span>\r\n</div>\r\n", styles: [".network-status-container{display:flex;align-items:center;gap:.5rem}.network-status-container span{font-size:.85rem;color:#6b7280;font-weight:400}.network-status-container span:first-of-type{font-weight:500}\n"], dependencies: [{ kind: "component", type: Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "pipe", type: DecimalPipe, name: "number" }] });
4755
4783
  }
4756
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: NetworkStatusComponent, decorators: [{
4784
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: NetworkStatusComponent, decorators: [{
4757
4785
  type: Component,
4758
4786
  args: [{ selector: 'app-network-status', imports: [Avatar, DecimalPipe, TooltipModule], template: "<div class=\"network-status-container\">\r\n <p-avatar\r\n [image]=\"getStatusImage()\"\r\n [pTooltip]=\"tooltipText\"\r\n tooltipPosition=\"bottom\"\r\n />\r\n <span> {{ state().score }}% </span>\r\n <span> {{ state().averageDurationMs | number: \"1.0-0\" }}ms </span>\r\n</div>\r\n", styles: [".network-status-container{display:flex;align-items:center;gap:.5rem}.network-status-container span{font-size:.85rem;color:#6b7280;font-weight:400}.network-status-container span:first-of-type{font-weight:500}\n"] }]
4759
4787
  }] });
@@ -4812,10 +4840,10 @@ class NavbarDsxComponent {
4812
4840
  complete: () => this._parameterSecurityService.clearParameterCache(),
4813
4841
  });
4814
4842
  }
4815
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: NavbarDsxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4816
- 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$7.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$1.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" }] });
4843
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: NavbarDsxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4844
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", 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$7.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: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$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$1.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" }] });
4817
4845
  }
4818
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: NavbarDsxComponent, decorators: [{
4846
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: NavbarDsxComponent, decorators: [{
4819
4847
  type: Component,
4820
4848
  args: [{ selector: 'app-navbar-dsx', imports: [
4821
4849
  ButtonModule,
@@ -4827,6 +4855,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
4827
4855
  ], 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"] }]
4828
4856
  }], propDecorators: { appVersion: [{ type: i0.Input, args: [{ isSignal: true, alias: "appVersion", required: false }] }], logoWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "logoWidth", required: false }] }], urlLogo: [{ type: i0.Input, args: [{ isSignal: true, alias: "urlLogo", required: false }] }] } });
4829
4857
 
4858
+ class TokenPurposeLogin {
4859
+ fb = inject(FormBuilder);
4860
+ _authorizeService = inject(AuthorizeService);
4861
+ _securityService = inject(SecurityService);
4862
+ _alertService = inject(AlertaService);
4863
+ form;
4864
+ visible = false;
4865
+ constructor() {
4866
+ this.getForm();
4867
+ }
4868
+ getForm() {
4869
+ this.form = this.fb.group({
4870
+ userName: [{ value: null, disabled: true }, [Validators.required]],
4871
+ password: [null, [Validators.required]],
4872
+ });
4873
+ }
4874
+ showDialog() {
4875
+ this.visible = true;
4876
+ }
4877
+ generarTokenPurpose() {
4878
+ //Validar el password
4879
+ if (this.form.valid) {
4880
+ this._securityService
4881
+ .tokenPurposeGenerate(this.form.getRawValue())
4882
+ .subscribe({
4883
+ next: (result) => {
4884
+ if (result.isSuccess) {
4885
+ this._authorizeService.setTokenPurpose(result.data);
4886
+ this._alertService.toastrAlerts(1, result.title, result.message, 2);
4887
+ this.visible = false;
4888
+ this.form.reset();
4889
+ }
4890
+ else {
4891
+ this._alertService.toastrAlerts(4, result.title, result.message, 2);
4892
+ }
4893
+ },
4894
+ error: (err) => console.error('Error al generar token purpose:', err),
4895
+ complete: () => '',
4896
+ });
4897
+ }
4898
+ }
4899
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TokenPurposeLogin, deps: [], target: i0.ɵɵFactoryTarget.Component });
4900
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: TokenPurposeLogin, isStandalone: true, selector: "app-token-purpose-login", ngImport: i0, template: "<div class=\"flex\">\r\n <p-button\r\n (click)=\"showDialog()\"\r\n label=\"Generar Token\"\r\n pTooltip=\"Ingrese sus credenciales para generar un token de acceso.\"\r\n tooltipPosition=\"top\"\r\n severity=\"secondary\"\r\n icon=\"pi pi-lock\"\r\n [rounded]=\"true\"\r\n [raised]=\"true\"\r\n />\r\n</div>\r\n<form [formGroup]=\"form\">\r\n <p-dialog [(visible)]=\"visible\" [modal]=\"true\" [style]=\"{ width: '30rem' }\">\r\n <ng-template #header>\r\n <div class=\"flex items-center gap-2 px-2\">\r\n <p-avatar image=\"icon/folder.png\" size=\"large\" />\r\n <h5>Token de Seguridad</h5>\r\n </div>\r\n </ng-template>\r\n <span class=\"text-surface-500 dark:text-surface-400 block\"\r\n >Ingrese sus credenciales para generar un token de acceso.</span\r\n >\r\n <div class=\"mt-3\">\r\n <p-floatLabel variant=\"in\">\r\n <p-password\r\n formControlName=\"password\"\r\n [invalid]=\"form.get('password')?.invalid && (form.get('password')?.dirty || form.get('password')?.touched)\"\r\n [feedback]=\"false\"\r\n [toggleMask]=\"true\"\r\n fluid\r\n />\r\n <label>Contrase\u00F1a</label>\r\n </p-floatLabel>\r\n @if (form.get('password')?.invalid && (form.get('password')?.dirty ||\r\n form.get('password')?.touched)) {\r\n <small class=\"text-red-500\">La contrase\u00F1a es obligatoria.</small>\r\n }\r\n </div>\r\n <ng-template #footer>\r\n <p-button\r\n label=\"Cancelar\"\r\n variant=\"outlined\"\r\n [rounded]=\"true\"\r\n icon=\"pi pi-times\"\r\n severity=\"danger\"\r\n (click)=\"visible = false\"\r\n />\r\n <p-button\r\n label=\"Generar\"\r\n variant=\"outlined\"\r\n [rounded]=\"true\"\r\n icon=\"pi pi-unlock\"\r\n severity=\"success\"\r\n [disabled]=\"!form.valid\"\r\n (click)=\"generarTokenPurpose()\"\r\n />\r\n </ng-template>\r\n </p-dialog>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i2$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$3.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$7.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: TooltipModule }, { kind: "directive", type: i1$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "ngmodule", type: FloatLabelModule }, { kind: "component", type: i6.FloatLabel, selector: "p-floatlabel, p-floatLabel, p-float-label", inputs: ["variant"] }, { kind: "ngmodule", type: PasswordModule }, { kind: "component", type: i7.Password, selector: "p-password", inputs: ["ariaLabel", "ariaLabelledBy", "label", "promptLabel", "mediumRegex", "strongRegex", "weakLabel", "mediumLabel", "maxLength", "strongLabel", "inputId", "feedback", "toggleMask", "inputStyleClass", "styleClass", "inputStyle", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "placeholder", "showClear", "autofocus", "tabindex", "appendTo", "motionOptions", "overlayOptions"], outputs: ["onFocus", "onBlur", "onClear"] }] });
4901
+ }
4902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TokenPurposeLogin, decorators: [{
4903
+ type: Component,
4904
+ args: [{ selector: 'app-token-purpose-login', imports: [
4905
+ FormsModule,
4906
+ ReactiveFormsModule,
4907
+ DialogModule,
4908
+ AvatarModule,
4909
+ ButtonModule,
4910
+ TooltipModule,
4911
+ FloatLabelModule,
4912
+ PasswordModule,
4913
+ ], template: "<div class=\"flex\">\r\n <p-button\r\n (click)=\"showDialog()\"\r\n label=\"Generar Token\"\r\n pTooltip=\"Ingrese sus credenciales para generar un token de acceso.\"\r\n tooltipPosition=\"top\"\r\n severity=\"secondary\"\r\n icon=\"pi pi-lock\"\r\n [rounded]=\"true\"\r\n [raised]=\"true\"\r\n />\r\n</div>\r\n<form [formGroup]=\"form\">\r\n <p-dialog [(visible)]=\"visible\" [modal]=\"true\" [style]=\"{ width: '30rem' }\">\r\n <ng-template #header>\r\n <div class=\"flex items-center gap-2 px-2\">\r\n <p-avatar image=\"icon/folder.png\" size=\"large\" />\r\n <h5>Token de Seguridad</h5>\r\n </div>\r\n </ng-template>\r\n <span class=\"text-surface-500 dark:text-surface-400 block\"\r\n >Ingrese sus credenciales para generar un token de acceso.</span\r\n >\r\n <div class=\"mt-3\">\r\n <p-floatLabel variant=\"in\">\r\n <p-password\r\n formControlName=\"password\"\r\n [invalid]=\"form.get('password')?.invalid && (form.get('password')?.dirty || form.get('password')?.touched)\"\r\n [feedback]=\"false\"\r\n [toggleMask]=\"true\"\r\n fluid\r\n />\r\n <label>Contrase\u00F1a</label>\r\n </p-floatLabel>\r\n @if (form.get('password')?.invalid && (form.get('password')?.dirty ||\r\n form.get('password')?.touched)) {\r\n <small class=\"text-red-500\">La contrase\u00F1a es obligatoria.</small>\r\n }\r\n </div>\r\n <ng-template #footer>\r\n <p-button\r\n label=\"Cancelar\"\r\n variant=\"outlined\"\r\n [rounded]=\"true\"\r\n icon=\"pi pi-times\"\r\n severity=\"danger\"\r\n (click)=\"visible = false\"\r\n />\r\n <p-button\r\n label=\"Generar\"\r\n variant=\"outlined\"\r\n [rounded]=\"true\"\r\n icon=\"pi pi-unlock\"\r\n severity=\"success\"\r\n [disabled]=\"!form.valid\"\r\n (click)=\"generarTokenPurpose()\"\r\n />\r\n </ng-template>\r\n </p-dialog>\r\n</form>\r\n" }]
4914
+ }], ctorParameters: () => [] });
4915
+
4830
4916
  /**
4831
4917
  * Directiva de navegación por teclado entre elementos de una tabla.
4832
4918
  *
@@ -4985,10 +5071,10 @@ class ArrowNavigationDirective {
4985
5071
  return;
4986
5072
  // console.log('[ArrowNavigationDirective]', message, data ?? '');
4987
5073
  }
4988
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ArrowNavigationDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
4989
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.11", type: ArrowNavigationDirective, isStandalone: true, selector: "[appKeyboardNav]", host: { listeners: { "keydown": "handleKey($event)" } }, ngImport: i0 });
5074
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ArrowNavigationDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5075
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.12", type: ArrowNavigationDirective, isStandalone: true, selector: "[appKeyboardNav]", host: { listeners: { "keydown": "handleKey($event)" } }, ngImport: i0 });
4990
5076
  }
4991
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ArrowNavigationDirective, decorators: [{
5077
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ArrowNavigationDirective, decorators: [{
4992
5078
  type: Directive,
4993
5079
  args: [{
4994
5080
  selector: '[appKeyboardNav]',
@@ -5099,10 +5185,10 @@ class OnlyRangoPatternDirective {
5099
5185
  event.preventDefault();
5100
5186
  }
5101
5187
  }
5102
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: OnlyRangoPatternDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5103
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.11", type: OnlyRangoPatternDirective, isStandalone: true, selector: "[appOnlyRangoPattern]", host: { listeners: { "keydown": "onKeyDown($event)", "paste": "onPaste($event)" } }, ngImport: i0 });
5188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: OnlyRangoPatternDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5189
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.12", type: OnlyRangoPatternDirective, isStandalone: true, selector: "[appOnlyRangoPattern]", host: { listeners: { "keydown": "onKeyDown($event)", "paste": "onPaste($event)" } }, ngImport: i0 });
5104
5190
  }
5105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: OnlyRangoPatternDirective, decorators: [{
5191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: OnlyRangoPatternDirective, decorators: [{
5106
5192
  type: Directive,
5107
5193
  args: [{
5108
5194
  selector: '[appOnlyRangoPattern]',
@@ -5122,10 +5208,10 @@ class SelectAllOnFocusDirective {
5122
5208
  htmlInput.select();
5123
5209
  }
5124
5210
  }
5125
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: SelectAllOnFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5126
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.11", type: SelectAllOnFocusDirective, isStandalone: true, selector: "[appSelectAllOnFocus]", host: { listeners: { "onFocus": "selectAll($event)", "focus": "selectAll($event)" } }, ngImport: i0 });
5211
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SelectAllOnFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5212
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.12", type: SelectAllOnFocusDirective, isStandalone: true, selector: "[appSelectAllOnFocus]", host: { listeners: { "onFocus": "selectAll($event)", "focus": "selectAll($event)" } }, ngImport: i0 });
5127
5213
  }
5128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: SelectAllOnFocusDirective, decorators: [{
5214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SelectAllOnFocusDirective, decorators: [{
5129
5215
  type: Directive,
5130
5216
  args: [{
5131
5217
  selector: '[appSelectAllOnFocus]',
@@ -5138,10 +5224,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
5138
5224
  args: ['focus', ['$event']]
5139
5225
  }] } });
5140
5226
 
5227
+ const guardTokenPurposeGuard = (route, state) => {
5228
+ const authService = inject(AuthorizeService);
5229
+ const location = inject(Location);
5230
+ //console.log('[guardTokenPurposeGuard] ruta capturada:', state.url);
5231
+ if (authService.getTokenPurposeValid()) {
5232
+ // Permite pasar a la edición
5233
+ return true;
5234
+ }
5235
+ // Si no es válido:
5236
+ console.warn('Permiso denegado: Token Purpose no válido');
5237
+ // Regresa a la pantalla anterior del navegador.
5238
+ location.back();
5239
+ return false;
5240
+ };
5241
+
5141
5242
  const CACHE_KEYS = new InjectionToken('CACHE_KEYS');
5142
5243
 
5143
5244
  class ErrorHandlerService {
5144
5245
  _serviceAlerta = inject(AlertaService);
5246
+ isPurposeTokenError(error) {
5247
+ const payload = error.error;
5248
+ return payload?.error === 'token_purpose_error';
5249
+ }
5250
+ getPurposeTokenDescription(error) {
5251
+ const payload = error.error;
5252
+ return (payload?.error_description ||
5253
+ 'Se requiere un token especial para acceder a este recurso.');
5254
+ }
5145
5255
  handleErrorResponse(error) {
5146
5256
  // Si el error ya no es un HttpErrorResponse (por ejemplo, un Error relanzado
5147
5257
  // desde otro catch), sólo lo propagamos sin volver a mostrar mensajes.
@@ -5160,8 +5270,9 @@ class ErrorHandlerService {
5160
5270
  'Solicitud incorrecta (400). Verifica los datos ingresados o validaciones existentes.';
5161
5271
  break;
5162
5272
  case HttpStatusCode.Unauthorized:
5163
- userMessage =
5164
- '<b>Acceso no autorizado</b> (401). Por favor inicia sesión.';
5273
+ userMessage = this.isPurposeTokenError(error)
5274
+ ? '<b>Acceso a recurso sensible no autorizado</b> (401).'
5275
+ : '<b>Acceso no autorizado</b> (401). Por favor inicia sesión.';
5165
5276
  break;
5166
5277
  case HttpStatusCode.Forbidden:
5167
5278
  userMessage = 'No tienes permisos para realizar esta acción (403).';
@@ -5183,7 +5294,12 @@ class ErrorHandlerService {
5183
5294
  }
5184
5295
  // Preparar detalle del error para mostrar, priorizando solo la parte "errors" del objeto
5185
5296
  let errorDetail = '';
5186
- if (error && typeof error.error === 'object' && error.error !== null) {
5297
+ if (this.isPurposeTokenError(error)) {
5298
+ errorDetail = this.getPurposeTokenDescription(error);
5299
+ }
5300
+ else if (error &&
5301
+ typeof error.error === 'object' &&
5302
+ error.error !== null) {
5187
5303
  const anyError = error.error;
5188
5304
  // Si existe la propiedad "errors" (típica de ASP.NET Core ProblemDetails), usar solo esa
5189
5305
  const validationErrors = anyError.errors ?? anyError.Errors;
@@ -5222,10 +5338,10 @@ class ErrorHandlerService {
5222
5338
  // Retornar el error para continuar con el flujo de manejo de errores
5223
5339
  return throwError(() => new Error(technicalMessage));
5224
5340
  }
5225
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ErrorHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5226
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ErrorHandlerService, providedIn: 'root' });
5341
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ErrorHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5342
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ErrorHandlerService, providedIn: 'root' });
5227
5343
  }
5228
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: ErrorHandlerService, decorators: [{
5344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ErrorHandlerService, decorators: [{
5229
5345
  type: Injectable,
5230
5346
  args: [{
5231
5347
  providedIn: 'root',
@@ -5252,6 +5368,7 @@ const httpAuthorizeInterceptor = (req, next) => {
5252
5368
  const _handleErrorService = inject(ErrorHandlerService);
5253
5369
  const _metricsService = inject(RequestMetricsService);
5254
5370
  const _token = _authorizeService.getToken();
5371
+ const _tokenPurpose = _authorizeService.getTokenPurpose();
5255
5372
  let authReq = req;
5256
5373
  // Si la URL de la petición es inválida, retorna un observable vacío
5257
5374
  // Surgio a partir de angular V21
@@ -5270,6 +5387,14 @@ const httpAuthorizeInterceptor = (req, next) => {
5270
5387
  setHeaders: { Authorization: `Bearer ${_token}` },
5271
5388
  });
5272
5389
  }
5390
+ // Validar si el token de propósito es válido y agregarlo a la petición si es necesario
5391
+ if (_tokenPurpose && _authorizeService.getTokenPurposeValid()) {
5392
+ authReq = authReq.clone({
5393
+ setHeaders: { 'X-Special-Token': _tokenPurpose },
5394
+ });
5395
+ // Debería incluir X-Special-Token
5396
+ // console.log('Cabeceras enviadas:', authReq.headers.keys());
5397
+ }
5273
5398
  //console.log('Interceptor - Petición HTTP iniciada:', req.url);
5274
5399
  // Para depuración: muestra el token agregado
5275
5400
  //console.log('Interceptor - Token agregado a la petición:', authReq);
@@ -5350,8 +5475,8 @@ function createInitialCache(cacheKeys) {
5350
5475
  }
5351
5476
 
5352
5477
  class DsxAddToolsModule {
5353
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DsxAddToolsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5354
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.11", ngImport: i0, type: DsxAddToolsModule, imports: [DsxButtonComponent,
5478
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxAddToolsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5479
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: DsxAddToolsModule, imports: [DsxButtonComponent,
5355
5480
  DsxEnableDisable,
5356
5481
  IconDsxComponent,
5357
5482
  JsonValuesDebujComponent,
@@ -5363,11 +5488,11 @@ class DsxAddToolsModule {
5363
5488
  JsonValuesDebujComponent,
5364
5489
  ReactiveFormsModule,
5365
5490
  RouterLink] });
5366
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DsxAddToolsModule, imports: [DsxButtonComponent, CommonModule,
5491
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxAddToolsModule, imports: [DsxButtonComponent, CommonModule,
5367
5492
  FormsModule,
5368
5493
  ReactiveFormsModule] });
5369
5494
  }
5370
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DsxAddToolsModule, decorators: [{
5495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxAddToolsModule, decorators: [{
5371
5496
  type: NgModule,
5372
5497
  args: [{
5373
5498
  declarations: [],
@@ -5450,8 +5575,8 @@ const PRIME_NG_MODULES = [
5450
5575
  TreeTableModule,
5451
5576
  ];
5452
5577
  class PrimeNgModule {
5453
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: PrimeNgModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5454
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.11", ngImport: i0, type: PrimeNgModule, exports: [AccordionModule,
5578
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: PrimeNgModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5579
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: PrimeNgModule, exports: [AccordionModule,
5455
5580
  AutoCompleteModule,
5456
5581
  AutoFocusModule,
5457
5582
  AvatarGroupModule,
@@ -5506,7 +5631,7 @@ class PrimeNgModule {
5506
5631
  TooltipModule,
5507
5632
  TreeModule,
5508
5633
  TreeTableModule] });
5509
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: PrimeNgModule, imports: [AccordionModule,
5634
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: PrimeNgModule, imports: [AccordionModule,
5510
5635
  AutoCompleteModule,
5511
5636
  AutoFocusModule,
5512
5637
  AvatarGroupModule,
@@ -5562,7 +5687,7 @@ class PrimeNgModule {
5562
5687
  TreeModule,
5563
5688
  TreeTableModule] });
5564
5689
  }
5565
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: PrimeNgModule, decorators: [{
5690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: PrimeNgModule, decorators: [{
5566
5691
  type: NgModule,
5567
5692
  args: [{
5568
5693
  declarations: [],
@@ -5617,10 +5742,10 @@ class JoinByPipe {
5617
5742
  .filter((value) => value.length > 0)
5618
5743
  .join(separator);
5619
5744
  }
5620
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JoinByPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5621
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.11", ngImport: i0, type: JoinByPipe, isStandalone: true, name: "joinBy" });
5745
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JoinByPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5746
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: JoinByPipe, isStandalone: true, name: "joinBy" });
5622
5747
  }
5623
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: JoinByPipe, decorators: [{
5748
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JoinByPipe, decorators: [{
5624
5749
  type: Pipe,
5625
5750
  args: [{
5626
5751
  name: 'joinBy',
@@ -5655,10 +5780,10 @@ class TruncatePipe {
5655
5780
  // Trunca el texto y añade el ellipsis si la longitud del texto supera el límite.
5656
5781
  return value.length > limit ? value.slice(0, limit) + ellipsis : value;
5657
5782
  }
5658
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5659
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.11", ngImport: i0, type: TruncatePipe, isStandalone: true, name: "truncate" });
5783
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5784
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: TruncatePipe, isStandalone: true, name: "truncate" });
5660
5785
  }
5661
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: TruncatePipe, decorators: [{
5786
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TruncatePipe, decorators: [{
5662
5787
  type: Pipe,
5663
5788
  args: [{
5664
5789
  name: 'truncate',
@@ -5741,10 +5866,10 @@ class EndpointService {
5741
5866
  delete(endpoint, id, softDelete = true) {
5742
5867
  return this.http.delete(`${this.getUrl(endpoint)}/delete/${id}/${softDelete}`);
5743
5868
  }
5744
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: EndpointService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5745
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: EndpointService, providedIn: 'root' });
5869
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: EndpointService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5870
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: EndpointService, providedIn: 'root' });
5746
5871
  }
5747
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: EndpointService, decorators: [{
5872
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: EndpointService, decorators: [{
5748
5873
  type: Injectable,
5749
5874
  args: [{
5750
5875
  providedIn: 'root',
@@ -5802,10 +5927,10 @@ class BaseCRUDService {
5802
5927
  listGroup(invalidateCache = false) {
5803
5928
  return this._endpointService.listGroup(this.endpoint, invalidateCache);
5804
5929
  }
5805
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BaseCRUDService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5806
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BaseCRUDService, providedIn: 'root' });
5930
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: BaseCRUDService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5931
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: BaseCRUDService, providedIn: 'root' });
5807
5932
  }
5808
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BaseCRUDService, decorators: [{
5933
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: BaseCRUDService, decorators: [{
5809
5934
  type: Injectable,
5810
5935
  args: [{
5811
5936
  providedIn: 'root',
@@ -5906,10 +6031,10 @@ class CacheService {
5906
6031
  this._options.set(current);
5907
6032
  this.alert.toastrAlerts(2, 'Estado', 'Datos actualizados (cache).', 2, 1000);
5908
6033
  }
5909
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5910
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CacheService, providedIn: 'root' });
6034
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6035
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CacheService, providedIn: 'root' });
5911
6036
  }
5912
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: CacheService, decorators: [{
6037
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CacheService, decorators: [{
5913
6038
  type: Injectable,
5914
6039
  args: [{
5915
6040
  providedIn: 'root',
@@ -5942,10 +6067,10 @@ class DteService {
5942
6067
  responseType: 'blob',
5943
6068
  });
5944
6069
  }
5945
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5946
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DteService, providedIn: 'root' });
6070
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6071
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DteService, providedIn: 'root' });
5947
6072
  }
5948
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DteService, decorators: [{
6073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DteService, decorators: [{
5949
6074
  type: Injectable,
5950
6075
  args: [{
5951
6076
  providedIn: 'root',
@@ -6123,10 +6248,10 @@ class HttpHelpersService {
6123
6248
  }
6124
6249
  return String(value);
6125
6250
  }
6126
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: HttpHelpersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6127
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: HttpHelpersService, providedIn: 'root' });
6251
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: HttpHelpersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6252
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: HttpHelpersService, providedIn: 'root' });
6128
6253
  }
6129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: HttpHelpersService, decorators: [{
6254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: HttpHelpersService, decorators: [{
6130
6255
  type: Injectable,
6131
6256
  args: [{
6132
6257
  providedIn: 'root',
@@ -6340,10 +6465,10 @@ class MasterDetailChangeService {
6340
6465
  },
6341
6466
  };
6342
6467
  }
6343
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: MasterDetailChangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6344
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: MasterDetailChangeService, providedIn: 'root' });
6468
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: MasterDetailChangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6469
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: MasterDetailChangeService, providedIn: 'root' });
6345
6470
  }
6346
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: MasterDetailChangeService, decorators: [{
6471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: MasterDetailChangeService, decorators: [{
6347
6472
  type: Injectable,
6348
6473
  args: [{
6349
6474
  providedIn: 'root',
@@ -6887,5 +7012,5 @@ function minimumAgeValidator(minimumAge, referenceDate) {
6887
7012
  * Generated bundle index. Do not edit.
6888
7013
  */
6889
7014
 
6890
- export { ACTION_TYPES, AlertaService, AppMessageErrorComponent, ArrowNavigationDirective, AuthorizeService, BaseCRUDService, CACHE_KEYS, CacheService, CssV2Component, DSX_PALETTE, DateIndicator, DocxPreviewComponent, DsxAddToolsModule, DsxButtonComponent, DsxEnableDisable, DsxStatusToggle, DteService, ENVIRONMENT, EndpointService, ErrorHandlerService, FileComponent, GTQFormatter, HttpHelpersService, INITIAL_PARAMETERS, IconDsxComponent, JoinByPipe, JsonHighlightPipe, JsonValuesDebujComponent, JsonViewerComponent, KpicardComponent, LoadingComponent, LoadingLottieComponent, LogoDsxComponent, MasterDetailChangeService, NavbarDsxComponent, NetworkStatusComponent, OnlyRangoPatternDirective, ParameterValuesService, PdfPreviewComponent, PrimeNgModule, SWEET_ALERT_THEMES, SecurityService, SelectAllOnFocusDirective, SpinnerLoadingService, TemplateHighlight, TruncatePipe, UtilityAddService, asyncExistsValidator, atLeastOneFieldRequiredValidator, chainControlGroups, createCurrencyFormatter, createInitialCache, createTypedCacheProvider, cuiValidator, dateMinMaxValidator, dateRangeValidator, dateRangeValidatorFromTo, developmentEnvironment, getZeroBasedRolIndex, httpAuthorizeInterceptor, minimumAgeValidator, nitValidator, productionEnvironment, provideEnvironment, templateVariablesValidator, validateEnvironmentConfig };
7015
+ export { ACTION_TYPES, AlertaService, AppMessageErrorComponent, ArrowNavigationDirective, AuthorizeService, BaseCRUDService, CACHE_KEYS, CacheService, CssV2Component, DSX_PALETTE, DateIndicator, DocxPreviewComponent, DsxAddToolsModule, DsxButtonComponent, DsxEnableDisable, DsxStatusToggle, DteService, ENVIRONMENT, EndpointService, ErrorHandlerService, FileComponent, GTQFormatter, HttpHelpersService, INITIAL_PARAMETERS, IconDsxComponent, JoinByPipe, JsonHighlightPipe, JsonValuesDebujComponent, JsonViewerComponent, KpicardComponent, LoadingComponent, LoadingLottieComponent, LogoDsxComponent, MasterDetailChangeService, NavbarDsxComponent, NetworkStatusComponent, OnlyRangoPatternDirective, ParameterValuesService, PdfPreviewComponent, PrimeNgModule, SWEET_ALERT_THEMES, SecurityService, SelectAllOnFocusDirective, SpinnerLoadingService, TemplateHighlight, TokenPurposeLogin, TruncatePipe, UtilityAddService, asyncExistsValidator, atLeastOneFieldRequiredValidator, chainControlGroups, createCurrencyFormatter, createInitialCache, createTypedCacheProvider, cuiValidator, dateMinMaxValidator, dateRangeValidator, dateRangeValidatorFromTo, developmentEnvironment, getZeroBasedRolIndex, guardTokenPurposeGuard, httpAuthorizeInterceptor, minimumAgeValidator, nitValidator, productionEnvironment, provideEnvironment, templateVariablesValidator, validateEnvironmentConfig };
6891
7016
  //# sourceMappingURL=ngx-dsxlibrary.mjs.map