ngx-dsxlibrary 2.21.57 → 2.21.58
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,7 +1,7 @@
|
|
|
1
1
|
import * as i1$2 from '@angular/common';
|
|
2
2
|
import { DecimalPipe, CommonModule, AsyncPipe, Location } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
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';
|
|
4
|
+
import { Input, Component, input, forwardRef, viewChild, signal, EventEmitter, effect, Output, model, inject, computed, InjectionToken, Injectable, isDevMode, output, HostBinding, Pipe, ViewEncapsulation, HostListener, Directive, NgZone, NgModule } from '@angular/core';
|
|
5
5
|
import * as i1 from 'primeng/tag';
|
|
6
6
|
import { TagModule } from 'primeng/tag';
|
|
7
7
|
import * as i1$1 from '@angular/forms';
|
|
@@ -52,6 +52,7 @@ import { BadgeModule } from 'primeng/badge';
|
|
|
52
52
|
import { CardModule } from 'primeng/card';
|
|
53
53
|
import { CheckboxModule } from 'primeng/checkbox';
|
|
54
54
|
import { ContextMenuModule } from 'primeng/contextmenu';
|
|
55
|
+
import { DataViewModule } from 'primeng/dataview';
|
|
55
56
|
import { DatePickerModule } from 'primeng/datepicker';
|
|
56
57
|
import { DividerModule } from 'primeng/divider';
|
|
57
58
|
import { DrawerModule } from 'primeng/drawer';
|
|
@@ -3626,6 +3627,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
3626
3627
|
* - `refresh` → Recargar datos desde el servidor (morado)
|
|
3627
3628
|
*
|
|
3628
3629
|
* **Consulta / Descarga**
|
|
3630
|
+
* - `details` → Ver el detalle de un registro (azul índigo)
|
|
3629
3631
|
* - `view` → Previsualizar o abrir detalle (azul cielo)
|
|
3630
3632
|
* - `export` → Exportar información a Excel (verde Excel)
|
|
3631
3633
|
* - `download` → Descargar archivo o recurso (ámbar cálido)
|
|
@@ -3643,6 +3645,7 @@ const ACTION_TYPES = {
|
|
|
3643
3645
|
save: 'save',
|
|
3644
3646
|
update: 'update',
|
|
3645
3647
|
refresh: 'refresh',
|
|
3648
|
+
details: 'details',
|
|
3646
3649
|
view: 'view',
|
|
3647
3650
|
export: 'export',
|
|
3648
3651
|
download: 'download',
|
|
@@ -3761,6 +3764,7 @@ function getActionMessageConfig(action, isActive = true) {
|
|
|
3761
3764
|
* | excel | Verde Excel | Exportar información a hoja de cálculo |
|
|
3762
3765
|
* | download | Naranja quemado| Descargar archivo o recurso |
|
|
3763
3766
|
* | import | Azul acero | Importar información desde archivo |
|
|
3767
|
+
* | details | Azul índigo | Abrir detalle de registro |
|
|
3764
3768
|
*/
|
|
3765
3769
|
const DSX_PALETTE = {
|
|
3766
3770
|
danger: '#EF5350',
|
|
@@ -3776,6 +3780,7 @@ const DSX_PALETTE = {
|
|
|
3776
3780
|
excel: '#217346',
|
|
3777
3781
|
download: '#E65100',
|
|
3778
3782
|
import: '#546E7A',
|
|
3783
|
+
details: '#3949AB',
|
|
3779
3784
|
magenta: '#D81B60', // Magenta vibrante
|
|
3780
3785
|
cyan: '#00BCD4', // Cian brillante
|
|
3781
3786
|
olive: '#808000', // Verde oliva
|
|
@@ -4233,6 +4238,13 @@ const ACTION_CONFIG = {
|
|
|
4233
4238
|
tooltip: 'Sincronizar datos',
|
|
4234
4239
|
outlined: true,
|
|
4235
4240
|
},
|
|
4241
|
+
details: {
|
|
4242
|
+
label: 'Detalles',
|
|
4243
|
+
icon: 'list',
|
|
4244
|
+
primeIcon: 'pi pi-list',
|
|
4245
|
+
colorToken: 'details',
|
|
4246
|
+
tooltip: 'Detalle de registro',
|
|
4247
|
+
},
|
|
4236
4248
|
create: {
|
|
4237
4249
|
label: 'Agregar',
|
|
4238
4250
|
icon: 'add_box',
|
|
@@ -5474,7 +5486,7 @@ class QrGenerator {
|
|
|
5474
5486
|
qrImage.src = qrUrl;
|
|
5475
5487
|
qrImage.onload = () => {
|
|
5476
5488
|
const qrSize = qrImage.width || 300;
|
|
5477
|
-
const padding =
|
|
5489
|
+
const padding = 20;
|
|
5478
5490
|
const labelAreaHeight = 70;
|
|
5479
5491
|
const canvas = document.createElement('canvas');
|
|
5480
5492
|
canvas.width = qrSize + padding * 2;
|
|
@@ -5558,7 +5570,7 @@ class QrGenerator {
|
|
|
5558
5570
|
qrImage.src = qrUrl;
|
|
5559
5571
|
qrImage.onload = () => {
|
|
5560
5572
|
const qrSize = qrImage.width || 300;
|
|
5561
|
-
const padding =
|
|
5573
|
+
const padding = 20; // Margen compacto para reducir el espacio superior
|
|
5562
5574
|
const labelAreaHeight = 70;
|
|
5563
5575
|
const canvas = document.createElement('canvas');
|
|
5564
5576
|
canvas.width = qrSize + padding * 2;
|
|
@@ -5649,11 +5661,11 @@ class QrGenerator {
|
|
|
5649
5661
|
};
|
|
5650
5662
|
}
|
|
5651
5663
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: QrGenerator, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5652
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: QrGenerator, isStandalone: true, selector: "dsx-qr-generator", inputs: { codigoQr: { classPropertyName: "codigoQr", publicName: "codigoQr", isSignal: true, isRequired: false, transformFunction: null }, labelQr: { classPropertyName: "labelQr", publicName: "labelQr", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"w-full max-w-xs mx-auto text-center\">\r\n <!-- Encabezado -->\r\n <h2 class=\"
|
|
5664
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: QrGenerator, isStandalone: true, selector: "dsx-qr-generator", inputs: { codigoQr: { classPropertyName: "codigoQr", publicName: "codigoQr", isSignal: true, isRequired: false, transformFunction: null }, labelQr: { classPropertyName: "labelQr", publicName: "labelQr", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"w-full max-w-xs mx-auto text-center\">\r\n <!-- Encabezado -->\r\n <h2 class=\"font-semibold text-gray-500\">Generador QR</h2>\r\n\r\n <!-- Valor recibido como validaci\u00F3n (solo lectura) -->\r\n <!-- <p class=\"text-xs text-gray-400 mb-3 truncate\">\r\n <span class=\"font-medium text-gray-500\">Contenido: </span>{{ textToEncode()\r\n }}\r\n </p> -->\r\n\r\n <div class=\"qr-preview-shell\">\r\n @if (loading()) {\r\n <div class=\"qr-loading-state\">\r\n <span class=\"qr-spinner\"></span>\r\n <span>Generando c\u00F3digo QR...</span>\r\n </div>\r\n } @if (qrImageUrl()) {\r\n <div class=\"flex flex-col items-center gap-3 qr-content\">\r\n <!-- Imagen generada con esquinas y banner -->\r\n <div\r\n class=\"rounded-xl border border-gray-200 bg-white p-1 shadow-md inline-block\"\r\n >\r\n <img\r\n [src]=\"qrImageUrl()\"\r\n alt=\"C\u00F3digo QR\"\r\n class=\"w-44 h-auto block rounded\"\r\n />\r\n </div>\r\n\r\n <!-- Bot\u00F3n descarga -->\r\n <button\r\n style=\"\r\n background: #059669;\r\n color: #fff;\r\n font-size: 0.8rem;\r\n padding: 0.4rem 1rem;\r\n border-radius: 0.5rem;\r\n cursor: pointer;\r\n \"\r\n class=\"font-semibold hover:opacity-90 transition-opacity flex items-center justify-center gap-1\"\r\n (click)=\"downloadWithLabel()\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style=\"width: 1rem; height: 1rem; flex-shrink: 0\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <path\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M4 16v2a2 2 0 002 2h12a2 2 0 002-2v-2M7 10l5 5 5-5M12 15V3\"\r\n />\r\n </svg>\r\n Descargar JPEG\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".qr-preview-shell{min-height:15rem}h2{color:#6b7280!important;margin:0 0 .35rem}.qr-loading-state{align-items:center;color:#475569;display:flex;flex-direction:column;gap:.75rem;justify-content:center;min-height:15rem;text-align:center}.qr-spinner{animation:qr-spin .8s linear infinite;border:3px solid rgba(71,85,105,.15);border-top-color:#059669;border-radius:50%;display:inline-block;height:2.25rem;width:2.25rem}.qr-content{animation:qr-fade-in .18s ease}@keyframes qr-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes qr-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }] });
|
|
5653
5665
|
}
|
|
5654
5666
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: QrGenerator, decorators: [{
|
|
5655
5667
|
type: Component,
|
|
5656
|
-
args: [{ selector: 'dsx-qr-generator', imports: [FormsModule], template: "<div class=\"w-full max-w-xs mx-auto text-center\">\r\n <!-- Encabezado -->\r\n <h2 class=\"
|
|
5668
|
+
args: [{ selector: 'dsx-qr-generator', imports: [FormsModule], template: "<div class=\"w-full max-w-xs mx-auto text-center\">\r\n <!-- Encabezado -->\r\n <h2 class=\"font-semibold text-gray-500\">Generador QR</h2>\r\n\r\n <!-- Valor recibido como validaci\u00F3n (solo lectura) -->\r\n <!-- <p class=\"text-xs text-gray-400 mb-3 truncate\">\r\n <span class=\"font-medium text-gray-500\">Contenido: </span>{{ textToEncode()\r\n }}\r\n </p> -->\r\n\r\n <div class=\"qr-preview-shell\">\r\n @if (loading()) {\r\n <div class=\"qr-loading-state\">\r\n <span class=\"qr-spinner\"></span>\r\n <span>Generando c\u00F3digo QR...</span>\r\n </div>\r\n } @if (qrImageUrl()) {\r\n <div class=\"flex flex-col items-center gap-3 qr-content\">\r\n <!-- Imagen generada con esquinas y banner -->\r\n <div\r\n class=\"rounded-xl border border-gray-200 bg-white p-1 shadow-md inline-block\"\r\n >\r\n <img\r\n [src]=\"qrImageUrl()\"\r\n alt=\"C\u00F3digo QR\"\r\n class=\"w-44 h-auto block rounded\"\r\n />\r\n </div>\r\n\r\n <!-- Bot\u00F3n descarga -->\r\n <button\r\n style=\"\r\n background: #059669;\r\n color: #fff;\r\n font-size: 0.8rem;\r\n padding: 0.4rem 1rem;\r\n border-radius: 0.5rem;\r\n cursor: pointer;\r\n \"\r\n class=\"font-semibold hover:opacity-90 transition-opacity flex items-center justify-center gap-1\"\r\n (click)=\"downloadWithLabel()\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style=\"width: 1rem; height: 1rem; flex-shrink: 0\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <path\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M4 16v2a2 2 0 002 2h12a2 2 0 002-2v-2M7 10l5 5 5-5M12 15V3\"\r\n />\r\n </svg>\r\n Descargar JPEG\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".qr-preview-shell{min-height:15rem}h2{color:#6b7280!important;margin:0 0 .35rem}.qr-loading-state{align-items:center;color:#475569;display:flex;flex-direction:column;gap:.75rem;justify-content:center;min-height:15rem;text-align:center}.qr-spinner{animation:qr-spin .8s linear infinite;border:3px solid rgba(71,85,105,.15);border-top-color:#059669;border-radius:50%;display:inline-block;height:2.25rem;width:2.25rem}.qr-content{animation:qr-fade-in .18s ease}@keyframes qr-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes qr-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
5657
5669
|
}], ctorParameters: () => [], propDecorators: { codigoQr: [{ type: i0.Input, args: [{ isSignal: true, alias: "codigoQr", required: false }] }], labelQr: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelQr", required: false }] }] } });
|
|
5658
5670
|
|
|
5659
5671
|
class TokenPurposeLogin {
|
|
@@ -5715,13 +5727,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
5715
5727
|
}], ctorParameters: () => [] });
|
|
5716
5728
|
|
|
5717
5729
|
class ScreenInspector {
|
|
5730
|
+
static GRID_STORAGE_KEY = 'dsx-screen-inspector-show-grid';
|
|
5718
5731
|
width = 0;
|
|
5719
5732
|
height = 0;
|
|
5720
5733
|
breakpoint = '';
|
|
5721
|
-
// Detecta automáticamente si la aplicación corre en entorno de desarrollo (npm start / ng serve)
|
|
5722
5734
|
isDevelopment = false;
|
|
5735
|
+
// Estado para controlar la visibilidad de las líneas guía
|
|
5736
|
+
showGrid = true;
|
|
5723
5737
|
ngOnInit() {
|
|
5724
5738
|
this.isDevelopment = isDevMode();
|
|
5739
|
+
if (this.isDevelopment) {
|
|
5740
|
+
this.showGrid = this.readGridStateFromStorage();
|
|
5741
|
+
}
|
|
5725
5742
|
this.updateDimensions();
|
|
5726
5743
|
}
|
|
5727
5744
|
onResize() {
|
|
@@ -5729,6 +5746,40 @@ class ScreenInspector {
|
|
|
5729
5746
|
this.updateDimensions();
|
|
5730
5747
|
}
|
|
5731
5748
|
}
|
|
5749
|
+
// Captura el atajo Alt + Shift + I de forma global
|
|
5750
|
+
handleKeyboardEvent(event) {
|
|
5751
|
+
if (this.isDevelopment &&
|
|
5752
|
+
event.altKey &&
|
|
5753
|
+
event.shiftKey &&
|
|
5754
|
+
(event.key === 'I' || event.key === 'i')) {
|
|
5755
|
+
event.preventDefault(); // Evita cualquier comportamiento secundario
|
|
5756
|
+
this.showGrid = !this.showGrid; // Alterna encendido / apagado
|
|
5757
|
+
this.persistGridState();
|
|
5758
|
+
}
|
|
5759
|
+
}
|
|
5760
|
+
readGridStateFromStorage() {
|
|
5761
|
+
if (typeof window === 'undefined')
|
|
5762
|
+
return true;
|
|
5763
|
+
try {
|
|
5764
|
+
const savedValue = window.localStorage.getItem(ScreenInspector.GRID_STORAGE_KEY);
|
|
5765
|
+
if (savedValue === null)
|
|
5766
|
+
return true;
|
|
5767
|
+
return savedValue === 'true';
|
|
5768
|
+
}
|
|
5769
|
+
catch {
|
|
5770
|
+
return true;
|
|
5771
|
+
}
|
|
5772
|
+
}
|
|
5773
|
+
persistGridState() {
|
|
5774
|
+
if (typeof window === 'undefined')
|
|
5775
|
+
return;
|
|
5776
|
+
try {
|
|
5777
|
+
window.localStorage.setItem(ScreenInspector.GRID_STORAGE_KEY, String(this.showGrid));
|
|
5778
|
+
}
|
|
5779
|
+
catch {
|
|
5780
|
+
// Ignora errores de almacenamiento (modo privado, cuota, etc.)
|
|
5781
|
+
}
|
|
5782
|
+
}
|
|
5732
5783
|
updateDimensions() {
|
|
5733
5784
|
this.width = window.innerWidth;
|
|
5734
5785
|
this.height = window.innerHeight;
|
|
@@ -5748,14 +5799,17 @@ class ScreenInspector {
|
|
|
5748
5799
|
return '2XL';
|
|
5749
5800
|
}
|
|
5750
5801
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ScreenInspector, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5751
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
5802
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ScreenInspector, isStandalone: true, selector: "dsx-screen-inspector", host: { listeners: { "window:resize": "onResize()", "window:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<!-- CONTROL DE ENTORNO: Solo se dibuja si estamos en modo desarrollo -->\r\n@if(isDevelopment){\r\n<ng-container>\r\n <!-- CONTENEDOR GENERAL TOTALMENTE TRANSPARENTE -->\r\n <div\r\n style=\"\r\n position: fixed !important;\r\n top: 0 !important;\r\n left: 0 !important;\r\n width: 100vw !important;\r\n height: 100vh !important;\r\n z-index: 999999 !important;\r\n background-color: transparent !important;\r\n pointer-events: none;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n \"\r\n >\r\n <!-- REGLA MILIM\u00C9TRICA CONDICIONAL -->\r\n @if(showGrid) {\r\n <div class=\"inspector-ruler\"></div>\r\n }\r\n\r\n <!-- CONTENEDOR DE CONTENIDO CENTRAL -->\r\n <div\r\n style=\"\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n text-align: center;\r\n pointer-events: none;\r\n width: 100%;\r\n \"\r\n >\r\n <!-- LETRAS GIGANTES EN NEGRO CON OPACIDAD -->\r\n <h1\r\n style=\"\r\n font-size: 35vw !important;\r\n font-weight: 900 !important;\r\n font-family:\r\n system-ui,\r\n -apple-system,\r\n sans-serif !important;\r\n color: rgba(0, 0, 0, 0.05) !important;\r\n margin: 0;\r\n padding: 0;\r\n line-height: 0.8;\r\n letter-spacing: -0.05em;\r\n text-transform: uppercase;\r\n \"\r\n >\r\n {{ breakpoint }}\r\n </h1>\r\n\r\n <!-- CUADRO DE DI\u00C1LOGO DE LAS MEDIDAS EXACTAS -->\r\n <div\r\n style=\"\r\n margin-top: 20px;\r\n background-color: #111827;\r\n border: 2px solid rgba(0, 0, 0, 0.15);\r\n border-radius: 12px;\r\n padding: 12px 32px;\r\n font-family: monospace;\r\n font-size: 22px;\r\n font-weight: bold;\r\n color: #34d399;\r\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\r\n backdrop-filter: blur(8px);\r\n pointer-events: auto;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n gap: 4px;\r\n \"\r\n >\r\n <div>\r\n {{ width }}<span\r\n style=\"\r\n color: rgba(255, 255, 255, 0.5);\r\n font-size: 16px;\r\n font-weight: normal;\r\n margin-left: 4px;\r\n \"\r\n >px ancho</span\r\n >\r\n <span style=\"color: rgba(255, 255, 255, 0.3); margin: 0 16px\">|</span>\r\n {{ height }}<span\r\n style=\"\r\n color: rgba(255, 255, 255, 0.5);\r\n font-size: 16px;\r\n font-weight: normal;\r\n margin-left: 4px;\r\n \"\r\n >px alto</span\r\n >\r\n </div>\r\n\r\n <!-- Recordatorio del atajo de teclado con tipograf\u00EDa peque\u00F1a -->\r\n <span\r\n style=\"\r\n color: rgba(255, 255, 255, 0.35);\r\n font-size: 11px;\r\n font-weight: normal;\r\n letter-spacing: 0.5px;\r\n \"\r\n >\r\n Presiona\r\n <b style=\"color: #f3f4f6; font-weight: bold\">Alt + Shift + I</b> para\r\n ocultar/mostrar cuadr\u00EDcula\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n}\r\n", styles: [".inspector-ruler{position:absolute!important;top:0!important;left:0!important;width:100vw!important;height:100%!important;background-color:transparent!important;pointer-events:none!important;background-image:linear-gradient(to right,rgba(0,0,0,.15) 1px,transparent 1px),linear-gradient(to bottom,rgba(220,38,38,.45) 1px,transparent 1px),linear-gradient(to bottom,rgba(0,0,0,.4) 1px,transparent 1px),linear-gradient(to bottom,rgba(0,0,0,.15) 1px,transparent 1px);background-size:45px 100%,100% 100px,100% 50px,100% 10px!important}.inspector-ruler:after{content:\"0\\a\\a\\a\\a\\a\\a\\a\\a\\a 100\\a\\a\\a\\a\\a\\a\\a\\a\\a 200\\a\\a\\a\\a\\a\\a\\a\\a\\a 300\\a\\a\\a\\a\\a\\a\\a\\a\\a 400\\a\\a\\a\\a\\a\\a\\a\\a\\a 500\\a\\a\\a\\a\\a\\a\\a\\a\\a 600\\a\\a\\a\\a\\a\\a\\a\\a\\a 700\\a\\a\\a\\a\\a\\a\\a\\a\\a 800\\a\\a\\a\\a\\a\\a\\a\\a\\a 900\\a\\a\\a\\a\\a\\a\\a\\a\\a 1000\\a\\a\\a\\a\\a\\a\\a\\a\\a 1100\\a\\a\\a\\a\\a\\a\\a\\a\\a 1200\"!important;white-space:pre!important;font-family:monospace!important;font-size:10px!important;font-weight:700!important;color:#374151!important;line-height:10px!important;position:absolute!important;top:0!important;left:6px!important;z-index:10!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
5752
5803
|
}
|
|
5753
5804
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ScreenInspector, decorators: [{
|
|
5754
5805
|
type: Component,
|
|
5755
|
-
args: [{ selector: 'dsx-screen-inspector', imports: [CommonModule], template: "<!-- CONTROL DE ENTORNO: Solo se dibuja si estamos en modo desarrollo -->\r\n<ng-container
|
|
5806
|
+
args: [{ selector: 'dsx-screen-inspector', imports: [CommonModule], template: "<!-- CONTROL DE ENTORNO: Solo se dibuja si estamos en modo desarrollo -->\r\n@if(isDevelopment){\r\n<ng-container>\r\n <!-- CONTENEDOR GENERAL TOTALMENTE TRANSPARENTE -->\r\n <div\r\n style=\"\r\n position: fixed !important;\r\n top: 0 !important;\r\n left: 0 !important;\r\n width: 100vw !important;\r\n height: 100vh !important;\r\n z-index: 999999 !important;\r\n background-color: transparent !important;\r\n pointer-events: none;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n \"\r\n >\r\n <!-- REGLA MILIM\u00C9TRICA CONDICIONAL -->\r\n @if(showGrid) {\r\n <div class=\"inspector-ruler\"></div>\r\n }\r\n\r\n <!-- CONTENEDOR DE CONTENIDO CENTRAL -->\r\n <div\r\n style=\"\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n text-align: center;\r\n pointer-events: none;\r\n width: 100%;\r\n \"\r\n >\r\n <!-- LETRAS GIGANTES EN NEGRO CON OPACIDAD -->\r\n <h1\r\n style=\"\r\n font-size: 35vw !important;\r\n font-weight: 900 !important;\r\n font-family:\r\n system-ui,\r\n -apple-system,\r\n sans-serif !important;\r\n color: rgba(0, 0, 0, 0.05) !important;\r\n margin: 0;\r\n padding: 0;\r\n line-height: 0.8;\r\n letter-spacing: -0.05em;\r\n text-transform: uppercase;\r\n \"\r\n >\r\n {{ breakpoint }}\r\n </h1>\r\n\r\n <!-- CUADRO DE DI\u00C1LOGO DE LAS MEDIDAS EXACTAS -->\r\n <div\r\n style=\"\r\n margin-top: 20px;\r\n background-color: #111827;\r\n border: 2px solid rgba(0, 0, 0, 0.15);\r\n border-radius: 12px;\r\n padding: 12px 32px;\r\n font-family: monospace;\r\n font-size: 22px;\r\n font-weight: bold;\r\n color: #34d399;\r\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\r\n backdrop-filter: blur(8px);\r\n pointer-events: auto;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n gap: 4px;\r\n \"\r\n >\r\n <div>\r\n {{ width }}<span\r\n style=\"\r\n color: rgba(255, 255, 255, 0.5);\r\n font-size: 16px;\r\n font-weight: normal;\r\n margin-left: 4px;\r\n \"\r\n >px ancho</span\r\n >\r\n <span style=\"color: rgba(255, 255, 255, 0.3); margin: 0 16px\">|</span>\r\n {{ height }}<span\r\n style=\"\r\n color: rgba(255, 255, 255, 0.5);\r\n font-size: 16px;\r\n font-weight: normal;\r\n margin-left: 4px;\r\n \"\r\n >px alto</span\r\n >\r\n </div>\r\n\r\n <!-- Recordatorio del atajo de teclado con tipograf\u00EDa peque\u00F1a -->\r\n <span\r\n style=\"\r\n color: rgba(255, 255, 255, 0.35);\r\n font-size: 11px;\r\n font-weight: normal;\r\n letter-spacing: 0.5px;\r\n \"\r\n >\r\n Presiona\r\n <b style=\"color: #f3f4f6; font-weight: bold\">Alt + Shift + I</b> para\r\n ocultar/mostrar cuadr\u00EDcula\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n}\r\n", styles: [".inspector-ruler{position:absolute!important;top:0!important;left:0!important;width:100vw!important;height:100%!important;background-color:transparent!important;pointer-events:none!important;background-image:linear-gradient(to right,rgba(0,0,0,.15) 1px,transparent 1px),linear-gradient(to bottom,rgba(220,38,38,.45) 1px,transparent 1px),linear-gradient(to bottom,rgba(0,0,0,.4) 1px,transparent 1px),linear-gradient(to bottom,rgba(0,0,0,.15) 1px,transparent 1px);background-size:45px 100%,100% 100px,100% 50px,100% 10px!important}.inspector-ruler:after{content:\"0\\a\\a\\a\\a\\a\\a\\a\\a\\a 100\\a\\a\\a\\a\\a\\a\\a\\a\\a 200\\a\\a\\a\\a\\a\\a\\a\\a\\a 300\\a\\a\\a\\a\\a\\a\\a\\a\\a 400\\a\\a\\a\\a\\a\\a\\a\\a\\a 500\\a\\a\\a\\a\\a\\a\\a\\a\\a 600\\a\\a\\a\\a\\a\\a\\a\\a\\a 700\\a\\a\\a\\a\\a\\a\\a\\a\\a 800\\a\\a\\a\\a\\a\\a\\a\\a\\a 900\\a\\a\\a\\a\\a\\a\\a\\a\\a 1000\\a\\a\\a\\a\\a\\a\\a\\a\\a 1100\\a\\a\\a\\a\\a\\a\\a\\a\\a 1200\"!important;white-space:pre!important;font-family:monospace!important;font-size:10px!important;font-weight:700!important;color:#374151!important;line-height:10px!important;position:absolute!important;top:0!important;left:6px!important;z-index:10!important}\n"] }]
|
|
5756
5807
|
}], propDecorators: { onResize: [{
|
|
5757
5808
|
type: HostListener,
|
|
5758
5809
|
args: ['window:resize']
|
|
5810
|
+
}], handleKeyboardEvent: [{
|
|
5811
|
+
type: HostListener,
|
|
5812
|
+
args: ['window:keydown', ['$event']]
|
|
5759
5813
|
}] } });
|
|
5760
5814
|
|
|
5761
5815
|
/**
|
|
@@ -5929,6 +5983,176 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
5929
5983
|
args: ['keydown', ['$event']]
|
|
5930
5984
|
}] } });
|
|
5931
5985
|
|
|
5986
|
+
class ScrollTableService {
|
|
5987
|
+
/**
|
|
5988
|
+
* Calcula la altura disponible para el scrollHeight de una tabla
|
|
5989
|
+
* @param element El elemento nativo HTML desde donde se empieza a contar
|
|
5990
|
+
* @param marginBottom Margen de seguridad inferior (por defecto 75px para paginadores)
|
|
5991
|
+
* @param minHeight Altura mínima permitida para evitar valores muy pequeños o negativos
|
|
5992
|
+
*/
|
|
5993
|
+
calculateAvailableHeight(element, marginBottom = 75, minHeight = 300) {
|
|
5994
|
+
const safeMinHeight = Number.isFinite(minHeight)
|
|
5995
|
+
? Math.max(100, Math.floor(minHeight))
|
|
5996
|
+
: 300;
|
|
5997
|
+
const safeMarginBottom = Number.isFinite(marginBottom)
|
|
5998
|
+
? Math.max(0, Math.floor(marginBottom))
|
|
5999
|
+
: 75;
|
|
6000
|
+
if (!element)
|
|
6001
|
+
return `${safeMinHeight}px`;
|
|
6002
|
+
// Medición exacta de todos los píxeles consumidos hacia arriba
|
|
6003
|
+
const rect = element.getBoundingClientRect();
|
|
6004
|
+
const pixelesConsumidosArriba = rect.top;
|
|
6005
|
+
// Altura utilizable actual de la ventana
|
|
6006
|
+
const alturaTotalPantalla = window.innerHeight;
|
|
6007
|
+
// Restamos la parte superior y el margen de abajo
|
|
6008
|
+
const alturaResultante = alturaTotalPantalla - pixelesConsumidosArriba - safeMarginBottom;
|
|
6009
|
+
// Retorna el string con el formato "000px" requerido por PrimeNG
|
|
6010
|
+
const alturaFinal = Math.max(alturaResultante, safeMinHeight);
|
|
6011
|
+
return `${Math.floor(alturaFinal)}px`;
|
|
6012
|
+
}
|
|
6013
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ScrollTableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6014
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ScrollTableService, providedIn: 'root' });
|
|
6015
|
+
}
|
|
6016
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ScrollTableService, decorators: [{
|
|
6017
|
+
type: Injectable,
|
|
6018
|
+
args: [{
|
|
6019
|
+
providedIn: 'root',
|
|
6020
|
+
}]
|
|
6021
|
+
}] });
|
|
6022
|
+
|
|
6023
|
+
class AutoScrollHeightDirective {
|
|
6024
|
+
el;
|
|
6025
|
+
static INITIAL_RECALC_DELAYS_MS = [120, 300];
|
|
6026
|
+
static INITIAL_STABILIZATION_MS = 360;
|
|
6027
|
+
// Te permite personalizar el margen desde el HTML si una tabla usa paginador y otra no
|
|
6028
|
+
marginBottom = input(75, ...(ngDevMode ? [{ debugName: "marginBottom" }] : /* istanbul ignore next */ []));
|
|
6029
|
+
// Altura mínima de seguridad para evitar valores demasiado pequeños
|
|
6030
|
+
minHeight = input(300, ...(ngDevMode ? [{ debugName: "minHeight" }] : /* istanbul ignore next */ []));
|
|
6031
|
+
// Evento que emite el string de píxeles resultante (ej: "520px")
|
|
6032
|
+
heightCalculated = output();
|
|
6033
|
+
ngZone = inject(NgZone);
|
|
6034
|
+
scrollService = inject(ScrollTableService);
|
|
6035
|
+
resizeObserver;
|
|
6036
|
+
rafId = null;
|
|
6037
|
+
lastEmittedHeight = null;
|
|
6038
|
+
pendingTimeouts = new Set();
|
|
6039
|
+
isInitializing = true;
|
|
6040
|
+
pendingInitialHeight = null;
|
|
6041
|
+
constructor(el) {
|
|
6042
|
+
this.el = el;
|
|
6043
|
+
}
|
|
6044
|
+
ngAfterViewInit() {
|
|
6045
|
+
this.setupLayoutObservers();
|
|
6046
|
+
this.scheduleInitialRecalcular();
|
|
6047
|
+
}
|
|
6048
|
+
ngOnDestroy() {
|
|
6049
|
+
this.teardownLayoutObservers();
|
|
6050
|
+
this.cancelPendingRaf();
|
|
6051
|
+
this.clearPendingTimeouts();
|
|
6052
|
+
}
|
|
6053
|
+
// Escucha global del cambio de monitor o tamaño de ventana
|
|
6054
|
+
onResize() {
|
|
6055
|
+
this.scheduleRecalcular();
|
|
6056
|
+
}
|
|
6057
|
+
setupLayoutObservers() {
|
|
6058
|
+
if (typeof window === 'undefined')
|
|
6059
|
+
return;
|
|
6060
|
+
// Detecta cambios de tamaño del host.
|
|
6061
|
+
this.resizeObserver = new ResizeObserver(() => this.scheduleRecalcular());
|
|
6062
|
+
this.resizeObserver.observe(this.el.nativeElement);
|
|
6063
|
+
}
|
|
6064
|
+
teardownLayoutObservers() {
|
|
6065
|
+
this.resizeObserver?.disconnect();
|
|
6066
|
+
this.resizeObserver = undefined;
|
|
6067
|
+
}
|
|
6068
|
+
scheduleInitialRecalcular() {
|
|
6069
|
+
this.scheduleRecalcular();
|
|
6070
|
+
for (const delayMs of AutoScrollHeightDirective.INITIAL_RECALC_DELAYS_MS) {
|
|
6071
|
+
this.scheduleRecalcularAfter(delayMs);
|
|
6072
|
+
}
|
|
6073
|
+
this.scheduleFinishInitialization(AutoScrollHeightDirective.INITIAL_STABILIZATION_MS);
|
|
6074
|
+
}
|
|
6075
|
+
scheduleFinishInitialization(delayMs) {
|
|
6076
|
+
if (typeof window === 'undefined')
|
|
6077
|
+
return;
|
|
6078
|
+
const timeoutId = window.setTimeout(() => {
|
|
6079
|
+
this.pendingTimeouts.delete(timeoutId);
|
|
6080
|
+
this.isInitializing = false;
|
|
6081
|
+
// Emite una sola vez el último valor estable de la fase inicial.
|
|
6082
|
+
if (this.pendingInitialHeight !== null) {
|
|
6083
|
+
if (this.lastEmittedHeight !== this.pendingInitialHeight) {
|
|
6084
|
+
this.lastEmittedHeight = this.pendingInitialHeight;
|
|
6085
|
+
this.emitHeight(this.pendingInitialHeight);
|
|
6086
|
+
}
|
|
6087
|
+
this.pendingInitialHeight = null;
|
|
6088
|
+
}
|
|
6089
|
+
}, delayMs);
|
|
6090
|
+
this.pendingTimeouts.add(timeoutId);
|
|
6091
|
+
}
|
|
6092
|
+
scheduleRecalcularAfter(delayMs) {
|
|
6093
|
+
if (typeof window === 'undefined')
|
|
6094
|
+
return;
|
|
6095
|
+
const timeoutId = window.setTimeout(() => {
|
|
6096
|
+
this.pendingTimeouts.delete(timeoutId);
|
|
6097
|
+
this.scheduleRecalcular();
|
|
6098
|
+
}, delayMs);
|
|
6099
|
+
this.pendingTimeouts.add(timeoutId);
|
|
6100
|
+
}
|
|
6101
|
+
clearPendingTimeouts() {
|
|
6102
|
+
for (const timeoutId of this.pendingTimeouts) {
|
|
6103
|
+
window.clearTimeout(timeoutId);
|
|
6104
|
+
}
|
|
6105
|
+
this.pendingTimeouts.clear();
|
|
6106
|
+
}
|
|
6107
|
+
scheduleRecalcular() {
|
|
6108
|
+
if (typeof window === 'undefined')
|
|
6109
|
+
return;
|
|
6110
|
+
this.cancelPendingRaf();
|
|
6111
|
+
this.rafId = window.requestAnimationFrame(() => {
|
|
6112
|
+
this.rafId = null;
|
|
6113
|
+
this.recalcular();
|
|
6114
|
+
});
|
|
6115
|
+
}
|
|
6116
|
+
cancelPendingRaf() {
|
|
6117
|
+
if (this.rafId === null)
|
|
6118
|
+
return;
|
|
6119
|
+
window.cancelAnimationFrame(this.rafId);
|
|
6120
|
+
this.rafId = null;
|
|
6121
|
+
}
|
|
6122
|
+
recalcular() {
|
|
6123
|
+
const alturaCalculada = this.scrollService.calculateAvailableHeight(this.el.nativeElement, this.marginBottom(), this.minHeight());
|
|
6124
|
+
if (this.isInitializing) {
|
|
6125
|
+
this.pendingInitialHeight = alturaCalculada;
|
|
6126
|
+
return;
|
|
6127
|
+
}
|
|
6128
|
+
// Evita emisiones repetidas del mismo valor cuando hay muchos cambios de DOM.
|
|
6129
|
+
if (this.lastEmittedHeight === alturaCalculada)
|
|
6130
|
+
return;
|
|
6131
|
+
this.lastEmittedHeight = alturaCalculada;
|
|
6132
|
+
this.emitHeight(alturaCalculada);
|
|
6133
|
+
}
|
|
6134
|
+
emitHeight(value) {
|
|
6135
|
+
if (NgZone.isInAngularZone()) {
|
|
6136
|
+
this.heightCalculated.emit(value);
|
|
6137
|
+
return;
|
|
6138
|
+
}
|
|
6139
|
+
this.ngZone.run(() => {
|
|
6140
|
+
this.heightCalculated.emit(value);
|
|
6141
|
+
});
|
|
6142
|
+
}
|
|
6143
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: AutoScrollHeightDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
6144
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.15", type: AutoScrollHeightDirective, isStandalone: true, selector: "[appAutoScrollHeight]", inputs: { marginBottom: { classPropertyName: "marginBottom", publicName: "marginBottom", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { heightCalculated: "heightCalculated" }, host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0 });
|
|
6145
|
+
}
|
|
6146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: AutoScrollHeightDirective, decorators: [{
|
|
6147
|
+
type: Directive,
|
|
6148
|
+
args: [{
|
|
6149
|
+
selector: '[appAutoScrollHeight]',
|
|
6150
|
+
}]
|
|
6151
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { marginBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "marginBottom", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeight", required: false }] }], heightCalculated: [{ type: i0.Output, args: ["heightCalculated"] }], onResize: [{
|
|
6152
|
+
type: HostListener,
|
|
6153
|
+
args: ['window:resize']
|
|
6154
|
+
}] } });
|
|
6155
|
+
|
|
5932
6156
|
/**
|
|
5933
6157
|
* Directiva que permite solo la entrada de:
|
|
5934
6158
|
* - Dígitos (0-9)
|
|
@@ -6551,6 +6775,7 @@ const PRIME_NG_MODULES = [
|
|
|
6551
6775
|
CardModule,
|
|
6552
6776
|
CheckboxModule,
|
|
6553
6777
|
ContextMenuModule,
|
|
6778
|
+
DataViewModule,
|
|
6554
6779
|
DatePickerModule,
|
|
6555
6780
|
DialogModule,
|
|
6556
6781
|
DividerModule,
|
|
@@ -6609,6 +6834,7 @@ class PrimeNgModule {
|
|
|
6609
6834
|
CardModule,
|
|
6610
6835
|
CheckboxModule,
|
|
6611
6836
|
ContextMenuModule,
|
|
6837
|
+
DataViewModule,
|
|
6612
6838
|
DatePickerModule,
|
|
6613
6839
|
DialogModule,
|
|
6614
6840
|
DividerModule,
|
|
@@ -6664,6 +6890,7 @@ class PrimeNgModule {
|
|
|
6664
6890
|
CardModule,
|
|
6665
6891
|
CheckboxModule,
|
|
6666
6892
|
ContextMenuModule,
|
|
6893
|
+
DataViewModule,
|
|
6667
6894
|
DatePickerModule,
|
|
6668
6895
|
DialogModule,
|
|
6669
6896
|
DividerModule,
|
|
@@ -8506,5 +8733,5 @@ function minimumAgeValidator(minimumAge, referenceDate) {
|
|
|
8506
8733
|
* Generated bundle index. Do not edit.
|
|
8507
8734
|
*/
|
|
8508
8735
|
|
|
8509
|
-
export { ACTION_TYPES, AlertaService, AppMessageErrorComponent, AppMessageHelpComponent, ArrowNavigationDirective, AuthorizeService, BaseCRUDService, CACHE_KEYS, CacheService, CssV2Component, DSX_PALETTE, DateIndicator, DocxPreviewComponent, DsxAddToolsModule, DsxButtonComponent, DsxEnableDisable, DsxMessagesService, DsxStatusToggle, DteService, ENVIRONMENT, EndpointService, ErrorHandlerService, FileComponent, GTQFormatter, HeaderDsx, HelpersService, HttpHelpersService, INITIAL_PARAMETERS, IcoLabel, IconDsxComponent, JoinByPipe, JsonHighlightPipe, JsonValuesDebujComponent, JsonViewerComponent, KpicardComponent, LoadingComponent, LoadingLottieComponent, LogoDsxComponent, MasterDetailChangeService, NavbarDsxComponent, NetworkStatusComponent, OnlyRangoPatternDirective, ParameterValuesService, PdfPreviewComponent, PrimeNgModule, QrGenerator, SWEET_ALERT_THEMES, ScreenInspector, SecurityService, SelectAllOnFocusDirective, ServiceResultFileService, SpinnerLoadingService, SweetAlert2DialogService, TemplateHighlight, TokenPurposeLogin, TruncatePipe, UtilityAddService, asyncExistsValidator, atLeastOneFieldRequiredValidator, chainControlGroups, createCurrencyFormatter, createInitialCache, createTypedCacheProvider, cuiValidator, dateMinMaxValidator, dateRangeValidator, dateRangeValidatorFromTo, developmentEnvironment, getActionMessageConfig, getZeroBasedRolIndex, guardTokenPurposeGuard, httpAuthorizeInterceptor, minimumAgeValidator, nitValidator, productionEnvironment, provideEnvironment, templateStructureValidator, templateVariablesValidator, validateEnvironmentConfig };
|
|
8736
|
+
export { ACTION_TYPES, AlertaService, AppMessageErrorComponent, AppMessageHelpComponent, ArrowNavigationDirective, AuthorizeService, AutoScrollHeightDirective, BaseCRUDService, CACHE_KEYS, CacheService, CssV2Component, DSX_PALETTE, DateIndicator, DocxPreviewComponent, DsxAddToolsModule, DsxButtonComponent, DsxEnableDisable, DsxMessagesService, DsxStatusToggle, DteService, ENVIRONMENT, EndpointService, ErrorHandlerService, FileComponent, GTQFormatter, HeaderDsx, HelpersService, HttpHelpersService, INITIAL_PARAMETERS, IcoLabel, IconDsxComponent, JoinByPipe, JsonHighlightPipe, JsonValuesDebujComponent, JsonViewerComponent, KpicardComponent, LoadingComponent, LoadingLottieComponent, LogoDsxComponent, MasterDetailChangeService, NavbarDsxComponent, NetworkStatusComponent, OnlyRangoPatternDirective, ParameterValuesService, PdfPreviewComponent, PrimeNgModule, QrGenerator, SWEET_ALERT_THEMES, ScreenInspector, SecurityService, SelectAllOnFocusDirective, ServiceResultFileService, SpinnerLoadingService, SweetAlert2DialogService, TemplateHighlight, TokenPurposeLogin, TruncatePipe, UtilityAddService, asyncExistsValidator, atLeastOneFieldRequiredValidator, chainControlGroups, createCurrencyFormatter, createInitialCache, createTypedCacheProvider, cuiValidator, dateMinMaxValidator, dateRangeValidator, dateRangeValidatorFromTo, developmentEnvironment, getActionMessageConfig, getZeroBasedRolIndex, guardTokenPurposeGuard, httpAuthorizeInterceptor, minimumAgeValidator, nitValidator, productionEnvironment, provideEnvironment, templateStructureValidator, templateVariablesValidator, validateEnvironmentConfig };
|
|
8510
8737
|
//# sourceMappingURL=ngx-dsxlibrary.mjs.map
|