general-library-union 3.0.96 → 3.0.97
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.
- package/esm2022/general-library-union.mjs +5 -0
- package/esm2022/public-api.mjs +180 -0
- package/esm2022/src/app/core/componentes/breadcrumb/breadcrumb.component.mjs +40 -0
- package/esm2022/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.mjs +28 -0
- package/esm2022/src/app/core/componentes/filtro-general/filtro-general.component.mjs +196 -0
- package/esm2022/src/app/core/componentes/footer/footer.component.mjs +16 -0
- package/esm2022/src/app/core/componentes/formulariodinamico/formulariodinamico.component.mjs +272 -0
- package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/Cambio.mjs +11 -0
- package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.mjs +124 -0
- package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.mjs +73 -0
- package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.mjs +59 -0
- package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.mjs +21 -0
- package/esm2022/src/app/core/componentes/inicio-component/inicio-component.component.mjs +72 -0
- package/esm2022/src/app/core/componentes/menu/menu.component.mjs +37 -0
- package/esm2022/src/app/core/componentes/tabla-general/tabla-general.component.mjs +93 -0
- package/esm2022/src/app/core/core.module.mjs +23 -0
- package/esm2022/src/app/core/errores/authentication.error.mjs +7 -0
- package/esm2022/src/app/core/modelos/error-response.model.mjs +2 -0
- package/esm2022/src/app/core/modelos/table-column.model.mjs +2 -0
- package/esm2022/src/app/core/modelos/user.model.mjs +7 -0
- package/esm2022/src/app/core/plantilla-general/plantilla-general.template.mjs +230 -0
- package/esm2022/src/app/core/servicios/auth.service.mjs +185 -0
- package/esm2022/src/app/core/servicios/cargar-control-funcionalidad.service.mjs +54 -0
- package/esm2022/src/app/core/servicios/data-exporter-table.utils.mjs +64 -0
- package/esm2022/src/app/core/servicios/error-interceptor.service.mjs +214 -0
- package/esm2022/src/app/core/servicios/guardias/auth.guard.mjs +66 -0
- package/esm2022/src/app/core/servicios/guardias/publico.guard.mjs +35 -0
- package/esm2022/src/app/core/servicios/interceptores/loading-interceptor.mjs +37 -0
- package/esm2022/src/app/core/servicios/interceptores/token-interceptor.service.mjs +180 -0
- package/esm2022/src/app/core/servicios/loading.service.mjs +43 -0
- package/esm2022/src/app/core/servicios/menu.service.mjs +146 -0
- package/esm2022/src/app/core/servicios/spinner-service.mjs +22 -0
- package/esm2022/src/app/core/servicios/storage.service.mjs +68 -0
- package/esm2022/src/app/core/servicios/template.service.mjs +99 -0
- package/esm2022/src/app/core/servicios/toast.service.mjs +120 -0
- package/esm2022/src/app/core/servicios/utils.service.mjs +338 -0
- package/esm2022/src/app/core/sharedlib.module.mjs +16 -0
- package/esm2022/src/app/core/utilidades/color.util.mjs +177 -0
- package/esm2022/src/app/layout/api/menuchangeevent.mjs +2 -0
- package/esm2022/src/app/layout/app.breadcrumb.component.mjs +71 -0
- package/esm2022/src/app/layout/app.footer.component.mjs +18 -0
- package/esm2022/src/app/layout/app.layout.component.mjs +188 -0
- package/esm2022/src/app/layout/app.layout.module.mjs +15 -0
- package/esm2022/src/app/layout/app.menu.component.mjs +51 -0
- package/esm2022/src/app/layout/app.menu.service.mjs +24 -0
- package/esm2022/src/app/layout/app.menuitem.component.mjs +296 -0
- package/esm2022/src/app/layout/app.menuprofile.component.mjs +78 -0
- package/esm2022/src/app/layout/app.rightmenu.component.mjs +24 -0
- package/esm2022/src/app/layout/app.sidebar.component.mjs +92 -0
- package/esm2022/src/app/layout/app.topbar.component.mjs +346 -0
- package/esm2022/src/app/layout/service/app.layout.service.mjs +134 -0
- package/esm2022/src/app/publico/pages/login/login.page.mjs +132 -0
- package/esm2022/src/app/publico/pages/not-found/not-found.page.mjs +51 -0
- package/esm2022/src/app/publico/pages/seleccion-rol/seleccion-rol.component.mjs +167 -0
- package/esm2022/src/app/publico/pages/timeout/timeout.page.mjs +20 -0
- package/esm2022/src/app/seguridad/constantes/ConstantesGenerales.mjs +30 -0
- package/esm2022/src/app/seguridad/constantes/ReporteEntradaConstantes.mjs +19 -0
- package/esm2022/src/app/seguridad/modelos/AplicacionModel.mjs +8 -0
- package/esm2022/src/app/seguridad/modelos/ArchivoPortalModel.mjs +14 -0
- package/esm2022/src/app/seguridad/modelos/AtributoPuntoModel.mjs +9 -0
- package/esm2022/src/app/seguridad/modelos/AtributoSSOportalModel.mjs +17 -0
- package/esm2022/src/app/seguridad/modelos/AuditoriaArchivoModel.mjs +11 -0
- package/esm2022/src/app/seguridad/modelos/CargueLineaModel.mjs +13 -0
- package/esm2022/src/app/seguridad/modelos/ColoresRGB.mjs +18 -0
- package/esm2022/src/app/seguridad/modelos/ColumnaFuenteModel.mjs +9 -0
- package/esm2022/src/app/seguridad/modelos/ColumnaWraperModel.mjs +6 -0
- package/esm2022/src/app/seguridad/modelos/ComplementoModel.mjs +7 -0
- package/esm2022/src/app/seguridad/modelos/ComponentePaginaModel.mjs +21 -0
- package/esm2022/src/app/seguridad/modelos/ConexionModel.mjs +14 -0
- package/esm2022/src/app/seguridad/modelos/ContenidoHtmlPortalModel.mjs +21 -0
- package/esm2022/src/app/seguridad/modelos/ControlFuncionModel.mjs +8 -0
- package/esm2022/src/app/seguridad/modelos/CorreoModel.mjs +35 -0
- package/esm2022/src/app/seguridad/modelos/CorreoWSModel.mjs +37 -0
- package/esm2022/src/app/seguridad/modelos/CruceRecursoPuntoModel.mjs +14 -0
- package/esm2022/src/app/seguridad/modelos/DatoInicioModel.mjs +6 -0
- package/esm2022/src/app/seguridad/modelos/EjecucionReporteDataModel.mjs +14 -0
- package/esm2022/src/app/seguridad/modelos/EmpresaModel.mjs +25 -0
- package/esm2022/src/app/seguridad/modelos/EmpresaSeguridadModel.mjs +19 -0
- package/esm2022/src/app/seguridad/modelos/EntradaComplementoModel.mjs +7 -0
- package/esm2022/src/app/seguridad/modelos/EtiquetaModel.mjs +5 -0
- package/esm2022/src/app/seguridad/modelos/Etiquetas.mjs +12 -0
- package/esm2022/src/app/seguridad/modelos/ForeingWraperModel.mjs +6 -0
- package/esm2022/src/app/seguridad/modelos/FuenteCampoAtributoModel.mjs +16 -0
- package/esm2022/src/app/seguridad/modelos/FuenteCampoModel.mjs +17 -0
- package/esm2022/src/app/seguridad/modelos/FuenteDato.mjs +19 -0
- package/esm2022/src/app/seguridad/modelos/FuenteEntradaModel.mjs +9 -0
- package/esm2022/src/app/seguridad/modelos/FuenteGeneralModel.mjs +37 -0
- package/esm2022/src/app/seguridad/modelos/FuenteLineaServicioModel.mjs +16 -0
- package/esm2022/src/app/seguridad/modelos/FuenteProcesoGeneralModel.mjs +11 -0
- package/esm2022/src/app/seguridad/modelos/FuenteServicioModel.mjs +51 -0
- package/esm2022/src/app/seguridad/modelos/FuncionalidadModel.mjs +10 -0
- package/esm2022/src/app/seguridad/modelos/GeneralModel.mjs +15 -0
- package/esm2022/src/app/seguridad/modelos/GrupoAccesoModel.mjs +7 -0
- package/esm2022/src/app/seguridad/modelos/GrupoControlFuncionModel.mjs +10 -0
- package/esm2022/src/app/seguridad/modelos/GrupoFuenteModel.mjs +13 -0
- package/esm2022/src/app/seguridad/modelos/GrupoPermisoModel.mjs +14 -0
- package/esm2022/src/app/seguridad/modelos/JoinFromModel.mjs +5 -0
- package/esm2022/src/app/seguridad/modelos/ListaServicioModel.mjs +17 -0
- package/esm2022/src/app/seguridad/modelos/LlaveForaneaModel.mjs +7 -0
- package/esm2022/src/app/seguridad/modelos/LoginModel.mjs +15 -0
- package/esm2022/src/app/seguridad/modelos/MensajeSistemaModel.mjs +8 -0
- package/esm2022/src/app/seguridad/modelos/MenuPortalModel.mjs +5 -0
- package/esm2022/src/app/seguridad/modelos/ModulosModel.mjs +18 -0
- package/esm2022/src/app/seguridad/modelos/ObjetoReporteModel.mjs +6 -0
- package/esm2022/src/app/seguridad/modelos/PaginaPortalModel.mjs +20 -0
- package/esm2022/src/app/seguridad/modelos/ParametroComponenteModel.mjs +9 -0
- package/esm2022/src/app/seguridad/modelos/ParametrosGeneralModel.mjs +15 -0
- package/esm2022/src/app/seguridad/modelos/PermisoFuncionModel.mjs +9 -0
- package/esm2022/src/app/seguridad/modelos/PermisocontenidoModel.mjs +20 -0
- package/esm2022/src/app/seguridad/modelos/PeticionModel.mjs +16 -0
- package/esm2022/src/app/seguridad/modelos/PreguntaSeguridadModel.mjs +7 -0
- package/esm2022/src/app/seguridad/modelos/PropiedadModel.mjs +10 -0
- package/esm2022/src/app/seguridad/modelos/PublicacionWebModel.mjs +27 -0
- package/esm2022/src/app/seguridad/modelos/PuntoProcesoModel.mjs +7 -0
- package/esm2022/src/app/seguridad/modelos/RecursoPunto.mjs +13 -0
- package/esm2022/src/app/seguridad/modelos/RecursoPuntoModel.mjs +13 -0
- package/esm2022/src/app/seguridad/modelos/ReporteBanda.mjs +8 -0
- package/esm2022/src/app/seguridad/modelos/ReporteColumna.mjs +33 -0
- package/esm2022/src/app/seguridad/modelos/ReporteColumnario.mjs +69 -0
- package/esm2022/src/app/seguridad/modelos/ReporteColumnarioMarcador.mjs +24 -0
- package/esm2022/src/app/seguridad/modelos/ReporteEntradaModel.mjs +20 -0
- package/esm2022/src/app/seguridad/modelos/ReporteFuenteModel.mjs +124 -0
- package/esm2022/src/app/seguridad/modelos/ReporteMarcador.mjs +40 -0
- package/esm2022/src/app/seguridad/modelos/ReporteSoporte.mjs +10 -0
- package/esm2022/src/app/seguridad/modelos/ReporteTabla.mjs +13 -0
- package/esm2022/src/app/seguridad/modelos/RespuestaModel.mjs +9 -0
- package/esm2022/src/app/seguridad/modelos/RolModel.mjs +39 -0
- package/esm2022/src/app/seguridad/modelos/ServidorCorreoModel.mjs +28 -0
- package/esm2022/src/app/seguridad/modelos/SistemaMensajeModel.mjs +9 -0
- package/esm2022/src/app/seguridad/modelos/SitioPortalModel.mjs +25 -0
- package/esm2022/src/app/seguridad/modelos/TablaFromModel.mjs +5 -0
- package/esm2022/src/app/seguridad/modelos/TareasModel.mjs +54 -0
- package/esm2022/src/app/seguridad/modelos/TextoModel.mjs +9 -0
- package/esm2022/src/app/seguridad/modelos/TipoEtiqueta.mjs +8 -0
- package/esm2022/src/app/seguridad/modelos/UnionModel.mjs +12 -0
- package/esm2022/src/app/seguridad/modelos/UsuarioModel.mjs +53 -0
- package/esm2022/src/app/seguridad/modelos/UsuariogrupoModel.mjs +24 -0
- package/esm2022/src/app/seguridad/modelos/aplicacion-propiedad-model.mjs +15 -0
- package/esm2022/src/app/seguridad/modelos/contenidoCorreoModel.mjs +10 -0
- package/esm2022/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.mjs +154 -0
- package/esm2022/src/app/shared/servicios/cargar-archivos.service.mjs +54 -0
- package/esm2022/src/app/shared/servicios/cargar-mapas.service.mjs +46 -0
- package/esm2022/src/app/shared/servicios/encriptado-basico.service.mjs +53 -0
- package/esm2022/src/app/shared/servicios/general.service.mjs +104 -0
- package/esm2022/src/app/shared/servicios/parametros-navegacion.service.mjs +21 -0
- package/esm2022/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.mjs +378 -0
- package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.mjs +187 -0
- package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.mjs +85 -0
- package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.mjs +347 -0
- package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.mjs +206 -0
- package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.mjs +329 -0
- package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +1583 -0
- package/esm2022/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.mjs +105 -0
- package/esm2022/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.mjs +114 -0
- package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.mjs +588 -0
- package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.mjs +177 -0
- package/esm2022/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.mjs +769 -0
- package/esm2022/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.mjs +331 -0
- package/esm2022/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.mjs +95 -0
- package/esm2022/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.mjs +675 -0
- package/esm2022/src/app/webcommon/pipes/dashboard.pipe.mjs +86 -0
- package/esm2022/src/app/webcommon/pipes/fuente.pipe.mjs +201 -0
- package/esm2022/src/app/webcommon/pipes/general.pipe.mjs +918 -0
- package/esm2022/src/app/webcommon/pipes/reporte-columnario.pipe.mjs +115 -0
- package/esm2022/src/app/webcommon/pipes/reporte-fuente.pipe.mjs +301 -0
- package/esm2022/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.mjs +267 -0
- package/esm2022/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.mjs +128 -0
- package/esm2022/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.mjs +73 -0
- package/esm2022/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.mjs +293 -0
- package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +269 -0
- package/esm2022/src/app/webcommon/popups/popup-reporte/popup-reporte.component.mjs +555 -0
- package/esm2022/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.mjs +64 -0
- package/esm2022/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.mjs +162 -0
- package/esm2022/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.mjs +89 -0
- package/esm2022/src/app/webcommon/services/carguelinea.service.mjs +69 -0
- package/esm2022/src/app/webcommon/services/dashboard.service.mjs +253 -0
- package/esm2022/src/app/webcommon/services/ejecucionreporte.service.mjs +114 -0
- package/esm2022/src/app/webcommon/services/fechaUtils.service.mjs +97 -0
- package/esm2022/src/app/webcommon/services/fuentegeneral.service.mjs +68 -0
- package/esm2022/src/app/webcommon/services/homologacion.service.mjs +50 -0
- package/esm2022/src/app/webcommon/services/plantillas.service.mjs +129 -0
- package/esm2022/src/app/webcommon/services/reportes.service.mjs +95 -0
- package/esm2022/src/app/webcommon/webcommon.module.mjs +15 -0
- package/esm2022/src/environments/environment.mjs +24 -0
- package/fesm2022/general-library-union.mjs +16039 -0
- package/fesm2022/general-library-union.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +17 -28
- package/{public-api.ts → public-api.d.ts} +35 -75
- package/src/app/core/componentes/breadcrumb/breadcrumb.component.d.ts +18 -0
- package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.d.ts +14 -0
- package/src/app/core/componentes/filtro-general/filtro-general.component.d.ts +34 -0
- package/src/app/core/componentes/footer/footer.component.d.ts +9 -0
- package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.d.ts +46 -0
- package/src/app/core/componentes/formulariodinamico/objetosformulario/{Cambio.ts → Cambio.d.ts} +3 -9
- package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.d.ts +44 -0
- package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.d.ts +45 -0
- package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.d.ts +33 -0
- package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.d.ts +9 -0
- package/src/app/core/componentes/inicio-component/inicio-component.component.d.ts +26 -0
- package/src/app/core/componentes/menu/menu.component.d.ts +16 -0
- package/src/app/core/componentes/tabla-general/tabla-general.component.d.ts +32 -0
- package/src/app/core/core.module.d.ts +8 -0
- package/src/app/core/errores/authentication.error.d.ts +3 -0
- package/src/app/core/modelos/error-response.model.d.ts +9 -0
- package/src/app/core/modelos/table-column.model.d.ts +12 -0
- package/src/app/core/modelos/user.model.d.ts +6 -0
- package/src/app/core/plantilla-general/plantilla-general.template.d.ts +89 -0
- package/src/app/core/servicios/auth.service.d.ts +52 -0
- package/src/app/core/servicios/cargar-control-funcionalidad.service.d.ts +19 -0
- package/src/app/core/servicios/data-exporter-table.utils.d.ts +11 -0
- package/src/app/core/servicios/error-interceptor.service.d.ts +41 -0
- package/src/app/core/servicios/guardias/auth.guard.d.ts +17 -0
- package/src/app/core/servicios/guardias/publico.guard.d.ts +13 -0
- package/src/app/core/servicios/interceptores/loading-interceptor.d.ts +11 -0
- package/src/app/core/servicios/interceptores/token-interceptor.service.d.ts +26 -0
- package/src/app/core/servicios/loading.service.d.ts +22 -0
- package/src/app/core/servicios/menu.service.d.ts +35 -0
- package/src/app/core/servicios/spinner-service.d.ts +9 -0
- package/src/app/core/servicios/storage.service.d.ts +37 -0
- package/src/app/core/servicios/template.service.d.ts +20 -0
- package/src/app/core/servicios/toast.service.d.ts +48 -0
- package/src/app/core/servicios/utils.service.d.ts +43 -0
- package/src/app/core/sharedlib.module.d.ts +6 -0
- package/src/app/core/utilidades/color.util.d.ts +70 -0
- package/src/app/layout/api/{menuchangeevent.ts → menuchangeevent.d.ts} +1 -1
- package/src/app/layout/app.breadcrumb.component.d.ts +28 -0
- package/src/app/layout/app.footer.component.d.ts +8 -0
- package/src/app/layout/app.layout.component.d.ts +39 -0
- package/src/app/layout/app.layout.module.d.ts +6 -0
- package/src/app/layout/app.menu.component.d.ts +19 -0
- package/src/app/layout/app.menu.service.d.ts +12 -0
- package/src/app/layout/app.menuitem.component.d.ts +41 -0
- package/src/app/layout/app.menuprofile.component.d.ts +18 -0
- package/src/app/layout/app.rightmenu.component.d.ts +10 -0
- package/src/app/layout/app.sidebar.component.d.ts +34 -0
- package/src/app/layout/app.topbar.component.d.ts +79 -0
- package/src/app/layout/service/app.layout.service.d.ts +57 -0
- package/src/app/publico/pages/login/login.page.d.ts +40 -0
- package/src/app/publico/pages/not-found/not-found.page.d.ts +17 -0
- package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.d.ts +41 -0
- package/src/app/publico/pages/timeout/timeout.page.d.ts +10 -0
- package/src/app/seguridad/constantes/ConstantesGenerales.d.ts +25 -0
- package/src/app/seguridad/constantes/ReporteEntradaConstantes.d.ts +7 -0
- package/src/app/seguridad/modelos/AplicacionModel.d.ts +7 -0
- package/src/app/seguridad/modelos/ArchivoPortalModel.d.ts +13 -0
- package/src/app/seguridad/modelos/AtributoPuntoModel.d.ts +8 -0
- package/src/app/seguridad/modelos/AtributoSSOportalModel.d.ts +16 -0
- package/src/app/seguridad/modelos/{AuditoriaArchivoModel.ts → AuditoriaArchivoModel.d.ts} +2 -5
- package/src/app/seguridad/modelos/CargueLineaModel.d.ts +12 -0
- package/src/app/seguridad/modelos/ColoresRGB.d.ts +17 -0
- package/src/app/seguridad/modelos/ColumnaFuenteModel.d.ts +8 -0
- package/src/app/seguridad/modelos/{ColumnaWraperModel.ts → ColumnaWraperModel.d.ts} +4 -5
- package/src/app/seguridad/modelos/ComplementoModel.d.ts +6 -0
- package/src/app/seguridad/modelos/ComponentePaginaModel.d.ts +20 -0
- package/src/app/seguridad/modelos/ConexionModel.d.ts +13 -0
- package/src/app/seguridad/modelos/{ContenidoHtmlPortalModel.ts → ContenidoHtmlPortalModel.d.ts} +2 -7
- package/src/app/seguridad/modelos/ControlFuncionModel.d.ts +7 -0
- package/src/app/seguridad/modelos/CorreoModel.d.ts +31 -0
- package/src/app/seguridad/modelos/CorreoWSModel.d.ts +33 -0
- package/src/app/seguridad/modelos/CruceRecursoPuntoModel.d.ts +13 -0
- package/src/app/seguridad/modelos/{DatoInicioModel.ts → DatoInicioModel.d.ts} +3 -4
- package/src/app/seguridad/modelos/{EjecucionReporteDataModel.ts → EjecucionReporteDataModel.d.ts} +2 -3
- package/src/app/seguridad/modelos/EmpresaModel.d.ts +23 -0
- package/src/app/seguridad/modelos/EmpresaSeguridadModel.d.ts +18 -0
- package/src/app/seguridad/modelos/{EntradaComplementoModel.ts → EntradaComplementoModel.d.ts} +2 -5
- package/src/app/seguridad/modelos/EtiquetaModel.d.ts +4 -0
- package/src/app/seguridad/modelos/Etiquetas.d.ts +10 -0
- package/src/app/seguridad/modelos/{ForeingWraperModel.ts → ForeingWraperModel.d.ts} +2 -5
- package/src/app/seguridad/modelos/FuenteCampoAtributoModel.d.ts +15 -0
- package/src/app/seguridad/modelos/{FuenteCampoModel.ts → FuenteCampoModel.d.ts} +2 -6
- package/src/app/seguridad/modelos/FuenteDato.d.ts +18 -0
- package/src/app/seguridad/modelos/FuenteEntradaModel.d.ts +8 -0
- package/src/app/seguridad/modelos/{FuenteGeneralModel.ts → FuenteGeneralModel.d.ts} +2 -21
- package/src/app/seguridad/modelos/FuenteLineaServicioModel.d.ts +16 -0
- package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.d.ts +10 -0
- package/src/app/seguridad/modelos/{FuenteServicioModel.ts → FuenteServicioModel.d.ts} +2 -16
- package/src/app/seguridad/modelos/FuncionalidadModel.d.ts +8 -0
- package/src/app/seguridad/modelos/GeneralModel.d.ts +8 -0
- package/src/app/seguridad/modelos/{GrupoAccesoModel.ts → GrupoAccesoModel.d.ts} +2 -5
- package/src/app/seguridad/modelos/GrupoControlFuncionModel.d.ts +9 -0
- package/src/app/seguridad/modelos/GrupoFuenteModel.d.ts +13 -0
- package/src/app/seguridad/modelos/GrupoPermisoModel.d.ts +13 -0
- package/src/app/seguridad/modelos/{JoinFromModel.ts → JoinFromModel.d.ts} +2 -2
- package/src/app/seguridad/modelos/ListaServicioModel.d.ts +16 -0
- package/src/app/seguridad/modelos/LlaveForaneaModel.d.ts +6 -0
- package/src/app/seguridad/modelos/LoginModel.d.ts +17 -0
- package/src/app/seguridad/modelos/MensajeSistemaModel.d.ts +7 -0
- package/src/app/seguridad/modelos/{MenuPortalModel.ts → MenuPortalModel.d.ts} +1 -2
- package/src/app/seguridad/modelos/ModulosModel.d.ts +14 -0
- package/src/app/seguridad/modelos/{ObjetoReporteModel.ts → ObjetoReporteModel.d.ts} +2 -3
- package/src/app/seguridad/modelos/PaginaPortalModel.d.ts +19 -0
- package/src/app/seguridad/modelos/ParametroComponenteModel.d.ts +8 -0
- package/src/app/seguridad/modelos/ParametrosGeneralModel.d.ts +8 -0
- package/src/app/seguridad/modelos/PermisoFuncionModel.d.ts +8 -0
- package/src/app/seguridad/modelos/PermisocontenidoModel.d.ts +18 -0
- package/src/app/seguridad/modelos/{PeticionModel.ts → PeticionModel.d.ts} +1 -6
- package/src/app/seguridad/modelos/PreguntaSeguridadModel.d.ts +6 -0
- package/src/app/seguridad/modelos/PropiedadModel.d.ts +9 -0
- package/src/app/seguridad/modelos/PublicacionWebModel.d.ts +25 -0
- package/src/app/seguridad/modelos/PuntoProcesoModel.d.ts +6 -0
- package/src/app/seguridad/modelos/RecursoPunto.d.ts +12 -0
- package/src/app/seguridad/modelos/RecursoPuntoModel.d.ts +12 -0
- package/src/app/seguridad/modelos/ReporteBanda.d.ts +7 -0
- package/src/app/seguridad/modelos/ReporteColumna.d.ts +32 -0
- package/src/app/seguridad/modelos/ReporteColumnario.d.ts +68 -0
- package/src/app/seguridad/modelos/ReporteColumnarioMarcador.d.ts +23 -0
- package/src/app/seguridad/modelos/{ReporteEntradaModel.ts → ReporteEntradaModel.d.ts} +2 -4
- package/src/app/seguridad/modelos/{ReporteFuenteModel.ts → ReporteFuenteModel.d.ts} +16 -70
- package/src/app/seguridad/modelos/ReporteMarcador.d.ts +39 -0
- package/src/app/seguridad/modelos/ReporteSoporte.d.ts +9 -0
- package/src/app/seguridad/modelos/ReporteTabla.d.ts +12 -0
- package/src/app/seguridad/modelos/RespuestaModel.d.ts +8 -0
- package/src/app/seguridad/modelos/{RolModel.ts → RolModel.d.ts} +4 -8
- package/src/app/seguridad/modelos/ServidorCorreoModel.d.ts +25 -0
- package/src/app/seguridad/modelos/SistemaMensajeModel.d.ts +8 -0
- package/src/app/seguridad/modelos/SitioPortalModel.d.ts +24 -0
- package/src/app/seguridad/modelos/TablaFromModel.d.ts +4 -0
- package/src/app/seguridad/modelos/TareasModel.d.ts +49 -0
- package/src/app/seguridad/modelos/TextoModel.d.ts +8 -0
- package/src/app/seguridad/modelos/TipoEtiqueta.d.ts +7 -0
- package/src/app/seguridad/modelos/UnionModel.d.ts +11 -0
- package/src/app/seguridad/modelos/{UsuarioModel.ts → UsuarioModel.d.ts} +5 -16
- package/src/app/seguridad/modelos/UsuariogrupoModel.d.ts +22 -0
- package/src/app/seguridad/modelos/aplicacion-propiedad-model.d.ts +13 -0
- package/src/app/seguridad/modelos/contenidoCorreoModel.d.ts +9 -0
- package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.d.ts +47 -0
- package/src/app/shared/servicios/cargar-archivos.service.d.ts +15 -0
- package/src/app/shared/servicios/cargar-mapas.service.d.ts +18 -0
- package/src/app/shared/servicios/encriptado-basico.service.d.ts +10 -0
- package/src/app/shared/servicios/general.service.d.ts +24 -0
- package/src/app/shared/servicios/parametros-navegacion.service.d.ts +9 -0
- package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.d.ts +79 -0
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.d.ts +79 -0
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.d.ts +29 -0
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.d.ts +69 -0
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.d.ts +51 -0
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.d.ts +77 -0
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +278 -0
- package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.d.ts +42 -0
- package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.d.ts +35 -0
- package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +143 -0
- package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.d.ts +49 -0
- package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.d.ts +132 -0
- package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.d.ts +64 -0
- package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.d.ts +33 -0
- package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.d.ts +149 -0
- package/src/app/webcommon/pipes/dashboard.pipe.d.ts +48 -0
- package/src/app/webcommon/pipes/fuente.pipe.d.ts +136 -0
- package/src/app/webcommon/pipes/general.pipe.d.ts +647 -0
- package/src/app/webcommon/pipes/reporte-columnario.pipe.d.ts +59 -0
- package/src/app/webcommon/pipes/reporte-fuente.pipe.d.ts +193 -0
- package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.d.ts +59 -0
- package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.d.ts +27 -0
- package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.d.ts +21 -0
- package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.d.ts +64 -0
- package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.d.ts +63 -0
- package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.d.ts +105 -0
- package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.d.ts +21 -0
- package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.d.ts +42 -0
- package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.d.ts +30 -0
- package/src/app/webcommon/services/carguelinea.service.d.ts +19 -0
- package/src/app/webcommon/services/dashboard.service.d.ts +27 -0
- package/src/app/webcommon/services/ejecucionreporte.service.d.ts +34 -0
- package/src/app/webcommon/services/fechaUtils.service.d.ts +30 -0
- package/src/app/webcommon/services/fuentegeneral.service.d.ts +24 -0
- package/src/app/webcommon/services/homologacion.service.d.ts +17 -0
- package/src/app/webcommon/services/plantillas.service.d.ts +26 -0
- package/src/app/webcommon/services/reportes.service.d.ts +35 -0
- package/src/app/webcommon/webcommon.module.d.ts +6 -0
- package/src/environments/environment.d.ts +7 -0
- package/.browserslistrc +0 -15
- package/.editorconfig +0 -16
- package/.vscode/extensions.json +0 -4
- package/.vscode/launch.json +0 -20
- package/.vscode/tasks.json +0 -42
- package/angular.json +0 -143
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -21
- package/src/app/app.component.html +0 -12
- package/src/app/app.component.scss +0 -0
- package/src/app/app.component.spec.ts +0 -29
- package/src/app/app.component.ts +0 -34
- package/src/app/app.config.ts +0 -43
- package/src/app/app.module.ts +0 -10
- package/src/app/app.routes.ts +0 -88
- package/src/app/core/componentes/breadcrumb/breadcrumb.component.html +0 -6
- package/src/app/core/componentes/breadcrumb/breadcrumb.component.scss +0 -0
- package/src/app/core/componentes/breadcrumb/breadcrumb.component.ts +0 -39
- package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.html +0 -1
- package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.scss +0 -0
- package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.ts +0 -31
- package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.html +0 -9
- package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.scss +0 -28
- package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.ts +0 -32
- package/src/app/core/componentes/filtro-general/filtro-general.component.html +0 -36
- package/src/app/core/componentes/filtro-general/filtro-general.component.scss +0 -3
- package/src/app/core/componentes/filtro-general/filtro-general.component.ts +0 -203
- package/src/app/core/componentes/footer/footer.component.html +0 -13
- package/src/app/core/componentes/footer/footer.component.scss +0 -3
- package/src/app/core/componentes/footer/footer.component.ts +0 -20
- package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.html +0 -267
- package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.scss +0 -21
- package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.ts +0 -275
- package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.ts +0 -118
- package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.ts +0 -76
- package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.ts +0 -67
- package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.ts +0 -11
- package/src/app/core/componentes/inicio-component/inicio-component.component.html +0 -29
- package/src/app/core/componentes/inicio-component/inicio-component.component.scss +0 -69
- package/src/app/core/componentes/inicio-component/inicio-component.component.ts +0 -70
- package/src/app/core/componentes/menu/menu.component.html +0 -13
- package/src/app/core/componentes/menu/menu.component.scss +0 -36
- package/src/app/core/componentes/menu/menu.component.ts +0 -35
- package/src/app/core/componentes/tabla-general/tabla-general.component.html +0 -90
- package/src/app/core/componentes/tabla-general/tabla-general.component.scss +0 -0
- package/src/app/core/componentes/tabla-general/tabla-general.component.ts +0 -96
- package/src/app/core/core.module.ts +0 -22
- package/src/app/core/errores/authentication.error.ts +0 -6
- package/src/app/core/modelos/error-response.model.ts +0 -9
- package/src/app/core/modelos/table-column.model.ts +0 -10
- package/src/app/core/modelos/user.model.ts +0 -6
- package/src/app/core/plantilla-general/plantilla-general.template.html +0 -139
- package/src/app/core/plantilla-general/plantilla-general.template.scss +0 -37
- package/src/app/core/plantilla-general/plantilla-general.template.ts +0 -233
- package/src/app/core/servicios/auth.service.ts +0 -189
- package/src/app/core/servicios/cargar-control-funcionalidad.service.ts +0 -48
- package/src/app/core/servicios/data-exporter-table.utils.ts +0 -78
- package/src/app/core/servicios/error-interceptor.service.ts +0 -208
- package/src/app/core/servicios/guardias/auth.guard.ts +0 -51
- package/src/app/core/servicios/guardias/publico.guard.ts +0 -26
- package/src/app/core/servicios/interceptores/loading-interceptor.ts +0 -37
- package/src/app/core/servicios/interceptores/token-interceptor.service.ts +0 -177
- package/src/app/core/servicios/loading.service.ts +0 -48
- package/src/app/core/servicios/menu.service.ts +0 -153
- package/src/app/core/servicios/spinner-service.ts +0 -18
- package/src/app/core/servicios/storage.service.ts +0 -68
- package/src/app/core/servicios/template.service.ts +0 -91
- package/src/app/core/servicios/toast.service.ts +0 -114
- package/src/app/core/servicios/utils.service.ts +0 -367
- package/src/app/core/sharedlib.module.ts +0 -11
- package/src/app/core/utilidades/color.util.ts +0 -197
- package/src/app/layout/app.breadcrumb.component.html +0 -20
- package/src/app/layout/app.breadcrumb.component.ts +0 -78
- package/src/app/layout/app.footer.component.html +0 -18
- package/src/app/layout/app.footer.component.ts +0 -15
- package/src/app/layout/app.layout.component.html +0 -20
- package/src/app/layout/app.layout.component.ts +0 -201
- package/src/app/layout/app.layout.module.ts +0 -9
- package/src/app/layout/app.menu.component.html +0 -6
- package/src/app/layout/app.menu.component.ts +0 -51
- package/src/app/layout/app.menu.service.ts +0 -23
- package/src/app/layout/app.menuitem.component.ts +0 -252
- package/src/app/layout/app.menuprofile.component.html +0 -35
- package/src/app/layout/app.menuprofile.component.ts +0 -60
- package/src/app/layout/app.rightmenu.component.html +0 -72
- package/src/app/layout/app.rightmenu.component.ts +0 -24
- package/src/app/layout/app.sidebar.component.html +0 -40
- package/src/app/layout/app.sidebar.component.ts +0 -81
- package/src/app/layout/app.topbar.component.html +0 -214
- package/src/app/layout/app.topbar.component.ts +0 -336
- package/src/app/layout/config/app.config.component.html +0 -125
- package/src/app/layout/config/app.config.component.ts +0 -206
- package/src/app/layout/config/app.config.module.ts +0 -11
- package/src/app/layout/service/app.layout.service.ts +0 -191
- package/src/app/publico/pages/login/login.page.html +0 -53
- package/src/app/publico/pages/login/login.page.scss +0 -210
- package/src/app/publico/pages/login/login.page.ts +0 -130
- package/src/app/publico/pages/not-found/not-found.page.html +0 -35
- package/src/app/publico/pages/not-found/not-found.page.scss +0 -2
- package/src/app/publico/pages/not-found/not-found.page.ts +0 -46
- package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.html +0 -58
- package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.scss +0 -49
- package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.ts +0 -176
- package/src/app/publico/pages/timeout/timeout.page.html +0 -24
- package/src/app/publico/pages/timeout/timeout.page.scss +0 -2
- package/src/app/publico/pages/timeout/timeout.page.ts +0 -18
- package/src/app/seguridad/constantes/ConstantesGenerales.ts +0 -30
- package/src/app/seguridad/constantes/ReporteEntradaConstantes.ts +0 -18
- package/src/app/seguridad/constantes/ReporteFuenteConstantes.ts +0 -13
- package/src/app/seguridad/modelos/AplicacionModel.ts +0 -11
- package/src/app/seguridad/modelos/ArchivoPortalModel.ts +0 -16
- package/src/app/seguridad/modelos/AtributoPuntoModel.ts +0 -9
- package/src/app/seguridad/modelos/AtributoSSOportalModel.ts +0 -22
- package/src/app/seguridad/modelos/CargueLineaModel.ts +0 -17
- package/src/app/seguridad/modelos/ColoresRGB.ts +0 -17
- package/src/app/seguridad/modelos/ColumnaFuenteModel.ts +0 -9
- package/src/app/seguridad/modelos/ComplementoModel.ts +0 -10
- package/src/app/seguridad/modelos/ComponentePaginaModel.ts +0 -22
- package/src/app/seguridad/modelos/ConexionModel.ts +0 -15
- package/src/app/seguridad/modelos/ControlFuncionModel.ts +0 -10
- package/src/app/seguridad/modelos/CorreoModel.ts +0 -45
- package/src/app/seguridad/modelos/CorreoWSModel.ts +0 -49
- package/src/app/seguridad/modelos/CruceRecursoPuntoModel.ts +0 -14
- package/src/app/seguridad/modelos/EmpresaModel.ts +0 -25
- package/src/app/seguridad/modelos/EmpresaSeguridadModel.ts +0 -19
- package/src/app/seguridad/modelos/EtiquetaModel.ts +0 -4
- package/src/app/seguridad/modelos/Etiquetas.ts +0 -14
- package/src/app/seguridad/modelos/FuenteCampoAtributoModel.ts +0 -21
- package/src/app/seguridad/modelos/FuenteDato.ts +0 -19
- package/src/app/seguridad/modelos/FuenteEntradaModel.ts +0 -9
- package/src/app/seguridad/modelos/FuenteLineaServicioModel.ts +0 -19
- package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.ts +0 -14
- package/src/app/seguridad/modelos/FuncionalidadModel.ts +0 -12
- package/src/app/seguridad/modelos/GeneralModel.ts +0 -16
- package/src/app/seguridad/modelos/GrupoControlFuncionModel.ts +0 -12
- package/src/app/seguridad/modelos/GrupoFuenteModel.ts +0 -17
- package/src/app/seguridad/modelos/GrupoPermisoModel.ts +0 -16
- package/src/app/seguridad/modelos/ListaServicioModel.ts +0 -18
- package/src/app/seguridad/modelos/LlaveForaneaModel.ts +0 -6
- package/src/app/seguridad/modelos/LoginModel.ts +0 -19
- package/src/app/seguridad/modelos/MensajeSistemaModel.ts +0 -10
- package/src/app/seguridad/modelos/ModulosModel.ts +0 -17
- package/src/app/seguridad/modelos/PaginaPortalModel.ts +0 -23
- package/src/app/seguridad/modelos/ParametroComponenteModel.ts +0 -9
- package/src/app/seguridad/modelos/ParametrosGeneralModel.ts +0 -16
- package/src/app/seguridad/modelos/PermisoFuncionModel.ts +0 -11
- package/src/app/seguridad/modelos/PermisocontenidoModel.ts +0 -20
- package/src/app/seguridad/modelos/PreguntaSeguridadModel.ts +0 -9
- package/src/app/seguridad/modelos/PropiedadModel.ts +0 -12
- package/src/app/seguridad/modelos/PublicacionWebModel.ts +0 -29
- package/src/app/seguridad/modelos/PuntoProcesoModel.ts +0 -7
- package/src/app/seguridad/modelos/RecursoPunto.ts +0 -13
- package/src/app/seguridad/modelos/RecursoPuntoModel.ts +0 -13
- package/src/app/seguridad/modelos/ReporteBanda.ts +0 -9
- package/src/app/seguridad/modelos/ReporteColumna.ts +0 -33
- package/src/app/seguridad/modelos/ReporteColumnario.ts +0 -82
- package/src/app/seguridad/modelos/ReporteColumnarioMarcador.ts +0 -31
- package/src/app/seguridad/modelos/ReporteMarcador.ts +0 -40
- package/src/app/seguridad/modelos/ReporteSoporte.ts +0 -10
- package/src/app/seguridad/modelos/ReporteTabla.ts +0 -14
- package/src/app/seguridad/modelos/RespuestaModel.ts +0 -10
- package/src/app/seguridad/modelos/ServidorCorreoModel.ts +0 -31
- package/src/app/seguridad/modelos/SistemaMensajeModel.ts +0 -11
- package/src/app/seguridad/modelos/SitioPortalModel.ts +0 -29
- package/src/app/seguridad/modelos/TablaFromModel.ts +0 -5
- package/src/app/seguridad/modelos/TareasModel.ts +0 -54
- package/src/app/seguridad/modelos/TextoModel.ts +0 -11
- package/src/app/seguridad/modelos/TipoEtiqueta.ts +0 -8
- package/src/app/seguridad/modelos/UnionModel.ts +0 -14
- package/src/app/seguridad/modelos/UsuariogrupoModel.ts +0 -27
- package/src/app/seguridad/modelos/aplicacion-propiedad-model.ts +0 -16
- package/src/app/seguridad/modelos/contenidoCorreoModel.ts +0 -13
- package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.html +0 -47
- package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.scss +0 -8
- package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.ts +0 -144
- package/src/app/shared/servicios/cargar-archivos.service.ts +0 -51
- package/src/app/shared/servicios/cargar-mapas.service.ts +0 -43
- package/src/app/shared/servicios/encriptado-basico.service.ts +0 -54
- package/src/app/shared/servicios/encriptador-simetrico.service.ts +0 -29
- package/src/app/shared/servicios/general.service.ts +0 -124
- package/src/app/shared/servicios/parametros-navegacion.service.ts +0 -20
- package/src/app/shared/servicios/plantillas.service.ts +0 -22
- package/src/app/shared/servicios/tarea.service.ts +0 -71
- package/src/app/shared/utilidades/translate-loader.util.ts +0 -44
- package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.html +0 -175
- package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.scss +0 -78
- package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.ts +0 -438
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.html +0 -87
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.scss +0 -0
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.ts +0 -189
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.html +0 -117
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.scss +0 -0
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.ts +0 -87
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.html +0 -158
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.scss +0 -6
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.ts +0 -345
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.html +0 -131
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.scss +0 -0
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.ts +0 -198
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.html +0 -206
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.scss +0 -3
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.ts +0 -330
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.html +0 -2121
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.scss +0 -241
- package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.ts +0 -1694
- package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.html +0 -33
- package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.scss +0 -0
- package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.ts +0 -96
- package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.html +0 -54
- package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.scss +0 -0
- package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.ts +0 -111
- package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.html +0 -394
- package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.scss +0 -10
- package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.ts +0 -599
- package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.html +0 -130
- package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.scss +0 -0
- package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.ts +0 -172
- package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.html +0 -404
- package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.scss +0 -5
- package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.ts +0 -763
- package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.html +0 -145
- package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.scss +0 -0
- package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.ts +0 -302
- package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.html +0 -19
- package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.scss +0 -0
- package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.ts +0 -88
- package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.html +0 -714
- package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.scss +0 -0
- package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.ts +0 -688
- package/src/app/webcommon/pipes/dashboard.pipe.ts +0 -79
- package/src/app/webcommon/pipes/fuente.pipe.ts +0 -207
- package/src/app/webcommon/pipes/general.pipe.ts +0 -1046
- package/src/app/webcommon/pipes/reporte-columnario.pipe.ts +0 -101
- package/src/app/webcommon/pipes/reporte-fuente.pipe.ts +0 -306
- package/src/app/webcommon/pipes/sara-general.pipe.ts +0 -289
- package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.html +0 -90
- package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.scss +0 -0
- package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.ts +0 -262
- package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.html +0 -50
- package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.scss +0 -0
- package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.ts +0 -135
- package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.html +0 -44
- package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.scss +0 -0
- package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.ts +0 -66
- package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.html +0 -41
- package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.scss +0 -0
- package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.ts +0 -283
- package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.html +0 -179
- package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.scss +0 -3
- package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.ts +0 -266
- package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.html +0 -273
- package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.scss +0 -13
- package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.ts +0 -557
- package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.html +0 -10
- package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.scss +0 -5
- package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.ts +0 -58
- package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.html +0 -71
- package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.scss +0 -0
- package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.ts +0 -154
- package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.html +0 -11
- package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.scss +0 -0
- package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.ts +0 -82
- package/src/app/webcommon/services/carguelinea.service.ts +0 -74
- package/src/app/webcommon/services/dashboard.service.ts +0 -258
- package/src/app/webcommon/services/ejecucionreporte.service.ts +0 -160
- package/src/app/webcommon/services/fechaUtils.service.ts +0 -127
- package/src/app/webcommon/services/fuentegeneral.service.ts +0 -74
- package/src/app/webcommon/services/homologacion.service.ts +0 -49
- package/src/app/webcommon/services/plantillas.service.ts +0 -165
- package/src/app/webcommon/services/reportes.service.ts +0 -133
- package/src/app/webcommon/webcommon.module.ts +0 -11
- package/src/environments/environment.prod.ts +0 -3
- package/src/environments/environment.ts +0 -25
- package/src/favicon.ico +0 -0
- package/src/index.html +0 -14
- package/src/main.ts +0 -12
- package/src/polyfills.ts +0 -53
- package/src/test.ts +0 -14
- package/tsconfig.app.json +0 -15
- package/tsconfig.json +0 -35
- package/tsconfig.spec.json +0 -18
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "ngx-cookie-service";
|
|
5
|
+
export class UtilsService {
|
|
6
|
+
cookieService;
|
|
7
|
+
document;
|
|
8
|
+
RESERVADAS_SQL_NOPUEDECONTENER = [';'];
|
|
9
|
+
reservadas = ['ALTER', 'DELETE', 'DROP', 'MODIFY', 'CREATE', 'DATABASE', 'TABLE', 'UPDATE', 'TRIGGER', 'GRANT', 'REVOKE', 'CALL', 'INSERT', 'TRUNCATE', 'USE', '--'];
|
|
10
|
+
constructor(cookieService, document) {
|
|
11
|
+
this.cookieService = cookieService;
|
|
12
|
+
this.document = document;
|
|
13
|
+
}
|
|
14
|
+
generarLlave() {
|
|
15
|
+
let result = '';
|
|
16
|
+
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
17
|
+
const charactersLength = 32;
|
|
18
|
+
for (let i = 0; i < charactersLength; i++) {
|
|
19
|
+
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
20
|
+
}
|
|
21
|
+
return result.toLowerCase();
|
|
22
|
+
}
|
|
23
|
+
generarPin(cantidad) {
|
|
24
|
+
let result = '';
|
|
25
|
+
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
26
|
+
for (let i = 0; i < cantidad; i++) {
|
|
27
|
+
result += characters.charAt(Math.floor(Math.random() * cantidad));
|
|
28
|
+
}
|
|
29
|
+
return result.toLowerCase();
|
|
30
|
+
}
|
|
31
|
+
rightpad(str, length, char) {
|
|
32
|
+
if (str === undefined) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
if (typeof str !== 'string' || typeof length !== 'number') {
|
|
36
|
+
throw new TypeError('Los argumentos deben ser una cadena y un número.');
|
|
37
|
+
}
|
|
38
|
+
if (str.length >= length) {
|
|
39
|
+
return str;
|
|
40
|
+
}
|
|
41
|
+
char = char || ' '; // Utiliza un espacio como carácter de relleno si no se proporciona uno
|
|
42
|
+
var padLength = length - str.length;
|
|
43
|
+
var padding = char.repeat(padLength);
|
|
44
|
+
return str + padding;
|
|
45
|
+
}
|
|
46
|
+
validarCampoNumerico(event) {
|
|
47
|
+
const input = event.target;
|
|
48
|
+
const regex = /[^0-9]/gi;
|
|
49
|
+
input.value = input.value.replace(regex, '');
|
|
50
|
+
}
|
|
51
|
+
isNotBlank(str) {
|
|
52
|
+
return str != null && str.trim().length > 0;
|
|
53
|
+
}
|
|
54
|
+
isBlank(str) {
|
|
55
|
+
return str == null || str?.trim() === '';
|
|
56
|
+
}
|
|
57
|
+
validarCampoObligatorio(valor) {
|
|
58
|
+
// Verificar si el valor no es null ni undefined
|
|
59
|
+
if (valor !== null && valor !== undefined) {
|
|
60
|
+
// Verificar si el valor no es una cadena vacía (en caso de ser una cadena)
|
|
61
|
+
if (typeof valor === 'string' && valor.trim() === '') {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
// Verificar si el valor no es un arreglo vacío (en caso de ser un arreglo)
|
|
65
|
+
if (Array.isArray(valor) && valor.length === 0) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
/*if (typeof valor === 'object' && Object.keys(valor).length === 0) {
|
|
69
|
+
return false;
|
|
70
|
+
}*/
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
capitalizeFully(inputString) {
|
|
76
|
+
if (!inputString) {
|
|
77
|
+
return '';
|
|
78
|
+
}
|
|
79
|
+
const words = inputString.split(' ');
|
|
80
|
+
const capitalizedWords = words.map(word => {
|
|
81
|
+
if (word.length > 0) {
|
|
82
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
83
|
+
}
|
|
84
|
+
return '';
|
|
85
|
+
});
|
|
86
|
+
const result = capitalizedWords.join(' ');
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
ordenarSelectItemsAlfabeticamente(arrayDeObjetos) {
|
|
90
|
+
arrayDeObjetos.sort((a, b) => {
|
|
91
|
+
const nombreA = a.label.toLowerCase();
|
|
92
|
+
const nombreB = b.label.toLowerCase();
|
|
93
|
+
if (nombreA < nombreB) {
|
|
94
|
+
return -1;
|
|
95
|
+
}
|
|
96
|
+
if (nombreA > nombreB) {
|
|
97
|
+
return 1;
|
|
98
|
+
}
|
|
99
|
+
return 0;
|
|
100
|
+
});
|
|
101
|
+
return arrayDeObjetos;
|
|
102
|
+
}
|
|
103
|
+
obtenerParametroDeURL(urlString, parametro) {
|
|
104
|
+
const url = new URL(urlString);
|
|
105
|
+
const searchParams = new URLSearchParams(url.search);
|
|
106
|
+
return searchParams.get(parametro);
|
|
107
|
+
}
|
|
108
|
+
validarEmail(email) {
|
|
109
|
+
const patronEmail = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
|
110
|
+
return patronEmail.test(email);
|
|
111
|
+
}
|
|
112
|
+
obtenerBase() {
|
|
113
|
+
var basePortal = null;
|
|
114
|
+
var paginaActual = window.location.href;
|
|
115
|
+
var url = new URL(paginaActual);
|
|
116
|
+
var params = new URLSearchParams(url.search);
|
|
117
|
+
if (paginaActual.toString().includes('PortalSara')) {
|
|
118
|
+
for (var match of paginaActual.matchAll(/(?<inicio>.*)\/(?<seguridad>.*)\/(?<sitio>.*)\/(?<pagina>.*)/g)) {
|
|
119
|
+
basePortal = match.groups?.seguridad;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else if (params?.get('us_id')) {
|
|
123
|
+
paginaActual = window.parent.location.href;
|
|
124
|
+
for (var match of paginaActual.matchAll(/(?<inicio>.*)\/(?<seguridad>.*)\/(?<sitio>.*)\/(?<pagina>.*)/g)) {
|
|
125
|
+
basePortal = match.groups?.seguridad;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
const regex = /^.*?\/\/.*?\/(.*?)\//g; // Expresión regular para obtener la primera parte de la URL
|
|
130
|
+
const match = Array.from(paginaActual.matchAll(regex));
|
|
131
|
+
if (match && match[0] && match[0][1]) {
|
|
132
|
+
basePortal = match[0][1];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return basePortal;
|
|
136
|
+
}
|
|
137
|
+
validarEspacio(caracter) {
|
|
138
|
+
const regex = /\s/; // La expresión regular para espacios en blanco
|
|
139
|
+
return regex.test(caracter); // Devuelve true si el carácter es un espacio en blanco
|
|
140
|
+
}
|
|
141
|
+
validarTextoSQL(valor, obligatorio, select, longitud, validarSentencia) {
|
|
142
|
+
// Verifica obligatoriedad
|
|
143
|
+
if (obligatorio && (valor == null || valor.trim().length == 0 || valor == '--')) {
|
|
144
|
+
return 'Obligatorio';
|
|
145
|
+
}
|
|
146
|
+
// Verifica longitud máxima
|
|
147
|
+
if (longitud > 0) {
|
|
148
|
+
if (valor != null && valor != '--' && valor.length > longitud) {
|
|
149
|
+
return 'Longitud maxima de ' + longitud;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Realiza las demás validacion solo en el caso de que la cadena SQL/valor no sea vacia
|
|
153
|
+
if (valor == null || valor.trim().length == 0 || valor == '--')
|
|
154
|
+
return null;
|
|
155
|
+
if (validarSentencia) {
|
|
156
|
+
if (select) {
|
|
157
|
+
if (!valor.toUpperCase().startsWith('SELECT')) {
|
|
158
|
+
return 'El texto debe iniciar con la palabra Select';
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
if (valor.toUpperCase().includes('SELECT')) {
|
|
163
|
+
return 'No puede contener la palabra Select';
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
var indice;
|
|
168
|
+
var mensaje;
|
|
169
|
+
this.RESERVADAS_SQL_NOPUEDECONTENER.forEach(item => {
|
|
170
|
+
if (valor.includes(item)) {
|
|
171
|
+
mensaje = 'No puede contener ' + item;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
this.reservadas.forEach(item => {
|
|
175
|
+
if (valor.toUpperCase().includes(item.toUpperCase())) {
|
|
176
|
+
indice = (valor.toUpperCase().indexOf(item.toUpperCase()));
|
|
177
|
+
if (indice == 0 || (this.validarEspacio(valor.charAt(indice - 1)) && this.validarEspacio(valor.charAt(item.length + indice)))) {
|
|
178
|
+
mensaje = 'No puede contener ' + item;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
return mensaje;
|
|
183
|
+
}
|
|
184
|
+
sleep(ms) {
|
|
185
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
186
|
+
}
|
|
187
|
+
validarTextoArchivoJasper(texto) {
|
|
188
|
+
if (texto.trim() == '' || texto == null) {
|
|
189
|
+
return "El campo no puede estar vacio";
|
|
190
|
+
}
|
|
191
|
+
if (texto.match("^[^\\D].*")) {
|
|
192
|
+
return "El campo no puede iniciar con numeros";
|
|
193
|
+
}
|
|
194
|
+
if (texto.match("^[^\\S].*")) {
|
|
195
|
+
return "El campo no puede iniciar con caracteres en blanco";
|
|
196
|
+
}
|
|
197
|
+
if (!texto.match("^[^\\W].*")) {
|
|
198
|
+
return "El campo no puede iniciar con caracteres especiales";
|
|
199
|
+
}
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
resizeWindowIFrame() {
|
|
203
|
+
if (window.frameElement != null) {
|
|
204
|
+
this.resizeIframeKeepPosition(window.frameElement);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Funcion para mantener la posición actual en el iframe.
|
|
209
|
+
* @param obj es un "FrameElement"
|
|
210
|
+
*/
|
|
211
|
+
resizeIframeKeepPosition(obj) {
|
|
212
|
+
var ifrm = obj;
|
|
213
|
+
var doc = ifrm.contentDocument ? ifrm.contentDocument : ifrm.contentWindow.document;
|
|
214
|
+
var tamanio = this.getDocHeight(doc) + 40;
|
|
215
|
+
ifrm.style.height = tamanio + "px";
|
|
216
|
+
}
|
|
217
|
+
getDocHeight(doc) {
|
|
218
|
+
console.log('getDocHeight');
|
|
219
|
+
let navegador = this.obtenerNavegador().toLowerCase();
|
|
220
|
+
var height = 0;
|
|
221
|
+
doc = doc || document;
|
|
222
|
+
const appRoot = doc.querySelector('app-root');
|
|
223
|
+
const swalPopup = doc.querySelector('.swal2-popup');
|
|
224
|
+
if (swalPopup) {
|
|
225
|
+
return swalPopup.offsetHeight + 40;
|
|
226
|
+
}
|
|
227
|
+
// Si encuentra el elemento <app-root>, retorna su altura
|
|
228
|
+
if (appRoot) {
|
|
229
|
+
return appRoot.offsetHeight;
|
|
230
|
+
}
|
|
231
|
+
//var body = doc.body, html = doc.documentElement;
|
|
232
|
+
//height = Math.max( body.scrollHeight, body.offsetHeight,
|
|
233
|
+
//html.clientHeight, html.scrollHeight, html.offsetHeight );
|
|
234
|
+
if (navegador.indexOf('firefox') !== -1) {
|
|
235
|
+
if (doc.formDetalleConvocatoria) {
|
|
236
|
+
let cantidadMiles = height / 1000;
|
|
237
|
+
height = height + 600 + (cantidadMiles * 40);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// console.warn('FCO : llama a getDocHeight');
|
|
241
|
+
return height;
|
|
242
|
+
}
|
|
243
|
+
obtenerNavegador() {
|
|
244
|
+
var ua = navigator.userAgent, tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
|
|
245
|
+
if (/trident/i.test(M[1])) {
|
|
246
|
+
tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
|
|
247
|
+
return 'IE ' + (tem[1] || '');
|
|
248
|
+
}
|
|
249
|
+
if (M[1] === 'Chrome') {
|
|
250
|
+
tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
|
|
251
|
+
if (tem != null)
|
|
252
|
+
return tem.slice(1).join(' ').replace('OPR', 'Opera');
|
|
253
|
+
}
|
|
254
|
+
M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
|
|
255
|
+
if ((tem = ua.match(/version\/(\d+)/i)) != null)
|
|
256
|
+
M.splice(1, 1, tem[1]);
|
|
257
|
+
return M.join(' ');
|
|
258
|
+
}
|
|
259
|
+
obtenerUrlApi(urlapi) {
|
|
260
|
+
if (urlapi) {
|
|
261
|
+
return urlapi;
|
|
262
|
+
}
|
|
263
|
+
switch (this.getTokenKey('aplicacion')) {
|
|
264
|
+
case '1':
|
|
265
|
+
return window['env']['urlapisara'] ? window['env']['urlapisara'] : this.cookieService.get('urlnucleo');
|
|
266
|
+
case '13':
|
|
267
|
+
return window['env']['urlapimana'] ? window['env']['urlapimana'] : this.cookieService.get('urlnucleo');
|
|
268
|
+
case '10':
|
|
269
|
+
return window['env']['urlapisara'] ? window['env']['urlapisara'] : this.cookieService.get('urlnucleo');
|
|
270
|
+
//return window['env']['urlapi'] ? window['env']['urlapi'] : this.cookieService.get('urlnucleo');
|
|
271
|
+
case '77':
|
|
272
|
+
return window['env']['urlapimanaaps'] ? window['env']['urlapimanaaps'] : this.cookieService.get('urlnucleo');
|
|
273
|
+
default:
|
|
274
|
+
return this.cookieService.get('urlnucleo');
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
getTokenKey(key) {
|
|
278
|
+
try {
|
|
279
|
+
const data = this._decodeToken();
|
|
280
|
+
return data[key].toString();
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
return undefined;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
_decodeToken() {
|
|
287
|
+
try {
|
|
288
|
+
const token = this.getItem('token', '');
|
|
289
|
+
const data = token.split('.')[1];
|
|
290
|
+
return JSON.parse(atob(data));
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
throw error;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
getItem(key, defaultValue) {
|
|
297
|
+
return localStorage.getItem(this.obtenerBase() + '_' + key) ?? defaultValue;
|
|
298
|
+
}
|
|
299
|
+
cambiarTema(tema) {
|
|
300
|
+
localStorage.setItem(this.obtenerBase() + '_' + 'tema', tema);
|
|
301
|
+
let linkTema = this.document.getElementById('temaApp');
|
|
302
|
+
linkTema.href = `${tema}.css`;
|
|
303
|
+
}
|
|
304
|
+
calcularPosicionDialog() {
|
|
305
|
+
var parentWindow = window.parent;
|
|
306
|
+
var obj = window.frameElement;
|
|
307
|
+
var ifrm = obj;
|
|
308
|
+
if (ifrm) {
|
|
309
|
+
const scrollTop = parentWindow.pageYOffset || parentWindow.document.documentElement.scrollTop || parentWindow.document.body.scrollTop || 0;
|
|
310
|
+
const dialog = document.querySelector('.p-dialog');
|
|
311
|
+
if (dialog) {
|
|
312
|
+
const scrollHeight = parentWindow.document.documentElement.scrollHeight;
|
|
313
|
+
const mitadScrollHeight = scrollHeight / 2;
|
|
314
|
+
const inicio = -mitadScrollHeight;
|
|
315
|
+
dialog.style.top = `${inicio + 50 + (scrollTop)}px`;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
validarPalabra(texto) {
|
|
320
|
+
const pletras = /^[a-zA-Z][0-9a-zA-Z]*$/;
|
|
321
|
+
return pletras.test(texto);
|
|
322
|
+
}
|
|
323
|
+
isNumeric(value) {
|
|
324
|
+
return !isNaN(Number(value));
|
|
325
|
+
}
|
|
326
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UtilsService, deps: [{ token: i1.CookieService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
327
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UtilsService, providedIn: 'root' });
|
|
328
|
+
}
|
|
329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UtilsService, decorators: [{
|
|
330
|
+
type: Injectable,
|
|
331
|
+
args: [{
|
|
332
|
+
providedIn: 'root'
|
|
333
|
+
}]
|
|
334
|
+
}], ctorParameters: () => [{ type: i1.CookieService }, { type: Document, decorators: [{
|
|
335
|
+
type: Inject,
|
|
336
|
+
args: [DOCUMENT]
|
|
337
|
+
}] }] });
|
|
338
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNpb3MvdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUszQyxNQUFNLE9BQU8sWUFBWTtJQUtIO0lBQXdEO0lBSHBFLDhCQUE4QixHQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDN0MsVUFBVSxHQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFbkwsWUFBb0IsYUFBNEIsRUFBNEIsUUFBa0I7UUFBMUUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBNEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUM5RixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxVQUFVLEdBQUcsZ0VBQWdFLENBQUM7UUFDcEYsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDNUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxP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RCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7dUdBcldVLFlBQVksK0NBS21DLFFBQVE7MkdBTHZELFlBQVksY0FGWCxNQUFNOzsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTW9ELE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFV0aWxzU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBSRVNFUlZBREFTX1NRTF9OT1BVRURFQ09OVEVORVI6IGFueVtdID0gWyc7J11cbiAgcHJpdmF0ZSByZXNlcnZhZGFzOiBhbnlbXSA9IFsnQUxURVInLCAnREVMRVRFJywgJ0RST1AnLCAnTU9ESUZZJywgJ0NSRUFURScsICdEQVRBQkFTRScsICdUQUJMRScsICdVUERBVEUnLCAnVFJJR0dFUicsICdHUkFOVCcsICdSRVZPS0UnLCAnQ0FMTCcsICdJTlNFUlQnLCAnVFJVTkNBVEUnLCAnVVNFJywgJy0tJ11cbiAgXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29va2llU2VydmljZTogQ29va2llU2VydmljZSwgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsKXtcbiAgfVxuICBcbiAgcHVibGljIGdlbmVyYXJMbGF2ZSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgY29uc3QgY2hhcmFjdGVycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gICAgY29uc3QgY2hhcmFjdGVyc0xlbmd0aCA9IDMyO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhcmFjdGVyc0xlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVyc0xlbmd0aCkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG5cblxuICBwdWJsaWMgZ2VuZXJhclBpbihjYW50aWRhZDogbnVtYmVyKSB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGNvbnN0IGNoYXJhY3RlcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FudGlkYWQ7IGkrKykge1xuICAgICAgcmVzdWx0ICs9IGNoYXJhY3RlcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNhbnRpZGFkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcmlnaHRwYWQoc3RyLCBsZW5ndGgsIGNoYXIpIHtcbiAgICBpZiAoc3RyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIGxlbmd0aCAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0xvcyBhcmd1bWVudG9zIGRlYmVuIHNlciB1bmEgY2FkZW5hIHkgdW4gbsO6bWVyby4nKTtcbiAgICB9XG5cbiAgICBpZiAoc3RyLmxlbmd0aCA+PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgY2hhciA9IGNoYXIgfHwgJyAnOyAvLyBVdGlsaXphIHVuIGVzcGFjaW8gY29tbyBjYXLDoWN0ZXIgZGUgcmVsbGVubyBzaSBubyBzZSBwcm9wb3JjaW9uYSB1bm9cblxuICAgIHZhciBwYWRMZW5ndGggPSBsZW5ndGggLSBzdHIubGVuZ3RoO1xuICAgIHZhciBwYWRkaW5nID0gY2hhci5yZXBlYXQocGFkTGVuZ3RoKTtcblxuICAgIHJldHVybiBzdHIgKyBwYWRkaW5nO1xuICB9XG5cbiAgdmFsaWRhckNhbXBvTnVtZXJpY28oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHJlZ2V4ID0gL1teMC05XS9naTtcbiAgICBpbnB1dC52YWx1ZSA9IGlucHV0LnZhbHVlLnJlcGxhY2UocmVnZXgsICcnKTtcbiAgfVxuXG4gIGlzTm90Qmxhbmsoc3RyOiBzdHJpbmcgfCBTdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0ciAhPSBudWxsICYmIHN0ci50cmltKCkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGlzQmxhbmsoc3RyOiBzdHJpbmcgfCBTdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0ciA9PSBudWxsIHx8IHN0cj8udHJpbSgpID09PSAnJztcbiAgfVxuXG4gIHZhbGlkYXJDYW1wb09ibGlnYXRvcmlvKHZhbG9yKTogYm9vbGVhbiB7XG4gICAgLy8gVmVyaWZpY2FyIHNpIGVsIHZhbG9yIG5vIGVzIG51bGwgbmkgdW5kZWZpbmVkXG4gICAgaWYgKHZhbG9yICE9PSBudWxsICYmIHZhbG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCB2YWxvciBubyBlcyB1bmEgY2FkZW5hIHZhY8OtYSAoZW4gY2FzbyBkZSBzZXIgdW5hIGNhZGVuYSlcbiAgICAgIGlmICh0eXBlb2YgdmFsb3IgPT09ICdzdHJpbmcnICYmIHZhbG9yLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIHZhbG9yIG5vIGVzIHVuIGFycmVnbG8gdmFjw61vIChlbiBjYXNvIGRlIHNlciB1biBhcnJlZ2xvKVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsb3IpICYmIHZhbG9yLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvKmlmICh0eXBlb2YgdmFsb3IgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbG9yKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSovXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2FwaXRhbGl6ZUZ1bGx5KGlucHV0U3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghaW5wdXRTdHJpbmcpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3Qgd29yZHMgPSBpbnB1dFN0cmluZy5zcGxpdCgnICcpO1xuICAgIGNvbnN0IGNhcGl0YWxpemVkV29yZHMgPSB3b3Jkcy5tYXAod29yZCA9PiB7XG4gICAgICBpZiAod29yZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICcnO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IGNhcGl0YWxpemVkV29yZHMuam9pbignICcpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBvcmRlbmFyU2VsZWN0SXRlbXNBbGZhYmV0aWNhbWVudGUoYXJyYXlEZU9iamV0b3M6IGFueVtdKTogYW55W10ge1xuICAgIGFycmF5RGVPYmpldG9zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IG5vbWJyZUEgPSBhLmxhYmVsLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBub21icmVCID0gYi5sYWJlbC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBpZiAobm9tYnJlQSA8IG5vbWJyZUIpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgaWYgKG5vbWJyZUEgPiBub21icmVCKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFycmF5RGVPYmpldG9zO1xuICB9XG5cbiAgb2J0ZW5lclBhcmFtZXRyb0RlVVJMKHVybFN0cmluZzogc3RyaW5nLCBwYXJhbWV0cm86IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodXJsU3RyaW5nKTtcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHVybC5zZWFyY2gpO1xuICAgIHJldHVybiBzZWFyY2hQYXJhbXMuZ2V0KHBhcmFtZXRybyk7XG4gIH1cblxuICB2YWxpZGFyRW1haWwoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdHJvbkVtYWlsID0gL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSQvO1xuICAgIHJldHVybiBwYXRyb25FbWFpbC50ZXN0KGVtYWlsKTtcbiAgfVxuXG4gIG9idGVuZXJCYXNlKCk6IChzdHJpbmcgfCBudWxsKSB7XG5cbiAgICB2YXIgYmFzZVBvcnRhbDogc3RyaW5nID0gbnVsbDtcbiAgICB2YXIgcGFnaW5hQWN0dWFsOiBhbnkgPSB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgIHZhciB1cmwgPSBuZXcgVVJMKHBhZ2luYUFjdHVhbCk7XG4gICAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXModXJsLnNlYXJjaCk7XG4gICAgaWYgKHBhZ2luYUFjdHVhbC50b1N0cmluZygpLmluY2x1ZGVzKCdQb3J0YWxTYXJhJykpIHtcbiAgICAgIGZvciAodmFyIG1hdGNoIG9mIHBhZ2luYUFjdHVhbC5tYXRjaEFsbCgvKD88aW5pY2lvPi4qKVxcLyg/PHNlZ3VyaWRhZD4uKilcXC8oPzxzaXRpbz4uKilcXC8oPzxwYWdpbmE+LiopL2cpKSB7XG4gICAgICAgIGJhc2VQb3J0YWwgPSBtYXRjaC5ncm91cHM/LnNlZ3VyaWRhZDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBhcmFtcz8uZ2V0KCd1c19pZCcpKSB7XG4gICAgICBwYWdpbmFBY3R1YWwgPSB3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWY7XG4gICAgICBmb3IgKHZhciBtYXRjaCBvZiBwYWdpbmFBY3R1YWwubWF0Y2hBbGwoLyg/PGluaWNpbz4uKilcXC8oPzxzZWd1cmlkYWQ+LiopXFwvKD88c2l0aW8+LiopXFwvKD88cGFnaW5hPi4qKS9nKSkge1xuICAgICAgICBiYXNlUG9ydGFsID0gbWF0Y2guZ3JvdXBzPy5zZWd1cmlkYWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL14uKj9cXC9cXC8uKj9cXC8oLio/KVxcLy9nOyAvLyBFeHByZXNpw7NuIHJlZ3VsYXIgcGFyYSBvYnRlbmVyIGxhIHByaW1lcmEgcGFydGUgZGUgbGEgVVJMXG4gICAgICBjb25zdCBtYXRjaCA9IEFycmF5LmZyb20ocGFnaW5hQWN0dWFsLm1hdGNoQWxsKHJlZ2V4KSk7XG5cbiAgICAgIGlmIChtYXRjaCAmJiBtYXRjaFswXSAmJiBtYXRjaFswXVsxXSkge1xuICAgICAgICBiYXNlUG9ydGFsID0gbWF0Y2hbMF1bMV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiYXNlUG9ydGFsO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGFyRXNwYWNpbyhjYXJhY3Rlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnZXggPSAvXFxzLzsgLy8gTGEgZXhwcmVzacOzbiByZWd1bGFyIHBhcmEgZXNwYWNpb3MgZW4gYmxhbmNvXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QoY2FyYWN0ZXIpOyAvLyBEZXZ1ZWx2ZSB0cnVlIHNpIGVsIGNhcsOhY3RlciBlcyB1biBlc3BhY2lvIGVuIGJsYW5jb1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXJUZXh0b1NRTCh2YWxvcjogc3RyaW5nLCBvYmxpZ2F0b3JpbzogYm9vbGVhbiwgc2VsZWN0OiBib29sZWFuLCBsb25naXR1ZDogbnVtYmVyLCB2YWxpZGFyU2VudGVuY2lhOiBib29sZWFuKTogKHN0cmluZyB8IG51bGwpIHtcbiAgICAvLyBWZXJpZmljYSBvYmxpZ2F0b3JpZWRhZFxuICAgIGlmIChvYmxpZ2F0b3JpbyAmJiAodmFsb3IgPT0gbnVsbCB8fCB2YWxvci50cmltKCkubGVuZ3RoID09IDAgfHwgdmFsb3IgPT0gJy0tJykpIHtcbiAgICAgIHJldHVybiAnT2JsaWdhdG9yaW8nO1xuICAgIH1cbiAgICAvLyBWZXJpZmljYSBsb25naXR1ZCBtw6F4aW1hXG4gICAgaWYgKGxvbmdpdHVkID4gMCkge1xuICAgICAgaWYgKHZhbG9yICE9IG51bGwgJiYgdmFsb3IgIT0gJy0tJyAmJiB2YWxvci5sZW5ndGggPiBsb25naXR1ZCkge1xuICAgICAgICByZXR1cm4gJ0xvbmdpdHVkIG1heGltYSBkZSAnICsgbG9uZ2l0dWQ7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJlYWxpemEgbGFzIGRlbcOhcyB2YWxpZGFjaW9uIHNvbG8gZW4gZWwgY2FzbyBkZSBxdWUgbGEgY2FkZW5hIFNRTC92YWxvciBubyBzZWEgdmFjaWFcbiAgICBpZiAodmFsb3IgPT0gbnVsbCB8fCB2YWxvci50cmltKCkubGVuZ3RoID09IDAgfHwgdmFsb3IgPT0gJy0tJylcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHZhbGlkYXJTZW50ZW5jaWEpIHtcbiAgICAgIGlmIChzZWxlY3QpIHtcbiAgICAgICAgaWYgKCF2YWxvci50b1VwcGVyQ2FzZSgpLnN0YXJ0c1dpdGgoJ1NFTEVDVCcpKSB7XG4gICAgICAgICAgcmV0dXJuICdFbCB0ZXh0byBkZWJlIGluaWNpYXIgY29uIGxhIHBhbGFicmEgU2VsZWN0JztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbG9yLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoJ1NFTEVDVCcpKSB7XG4gICAgICAgICAgcmV0dXJuICdObyBwdWVkZSBjb250ZW5lciBsYSBwYWxhYnJhIFNlbGVjdCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGluZGljZTogbnVtYmVyO1xuICAgIHZhciBtZW5zYWplOiBzdHJpbmc7XG4gICAgdGhpcy5SRVNFUlZBREFTX1NRTF9OT1BVRURFQ09OVEVORVIuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmICh2YWxvci5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICBtZW5zYWplID0gJ05vIHB1ZWRlIGNvbnRlbmVyICcgKyBpdGVtO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5yZXNlcnZhZGFzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAodmFsb3IudG9VcHBlckNhc2UoKS5pbmNsdWRlcyhpdGVtLnRvVXBwZXJDYXNlKCkpKSB7XG4gICAgICAgIGluZGljZSA9ICh2YWxvci50b1VwcGVyQ2FzZSgpLmluZGV4T2YoaXRlbS50b1VwcGVyQ2FzZSgpKSk7XG4gICAgICAgIGlmIChpbmRpY2UgPT0gMCB8fCAodGhpcy52YWxpZGFyRXNwYWNpbyh2YWxvci5jaGFyQXQoaW5kaWNlIC0gMSkpICYmIHRoaXMudmFsaWRhckVzcGFjaW8odmFsb3IuY2hhckF0KGl0ZW0ubGVuZ3RoICsgaW5kaWNlKSkpKSB7XG4gICAgICAgICAgbWVuc2FqZSA9ICdObyBwdWVkZSBjb250ZW5lciAnICsgaXRlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG1lbnNhamU7XG4gIH1cblxuICBzbGVlcChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG4gIH1cblxuICB2YWxpZGFyVGV4dG9BcmNoaXZvSmFzcGVyKHRleHRvOiBzdHJpbmcpOiAoc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICh0ZXh0by50cmltKCkgPT0gJycgfHwgdGV4dG8gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFwiRWwgY2FtcG8gbm8gcHVlZGUgZXN0YXIgdmFjaW9cIjtcbiAgICB9XG4gICAgaWYgKHRleHRvLm1hdGNoKFwiXlteXFxcXERdLipcIikpIHtcbiAgICAgIHJldHVybiBcIkVsIGNhbXBvIG5vIHB1ZWRlIGluaWNpYXIgY29uIG51bWVyb3NcIjtcbiAgICB9XG4gICAgaWYgKHRleHRvLm1hdGNoKFwiXlteXFxcXFNdLipcIikpIHtcbiAgICAgIHJldHVybiBcIkVsIGNhbXBvIG5vIHB1ZWRlIGluaWNpYXIgY29uIGNhcmFjdGVyZXMgZW4gYmxhbmNvXCI7XG4gICAgfVxuICAgIGlmICghdGV4dG8ubWF0Y2goXCJeW15cXFxcV10uKlwiKSkge1xuICAgICAgcmV0dXJuIFwiRWwgY2FtcG8gbm8gcHVlZGUgaW5pY2lhciBjb24gY2FyYWN0ZXJlcyBlc3BlY2lhbGVzXCI7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVzaXplV2luZG93SUZyYW1lKCkge1xuXHRcdGlmICggd2luZG93LmZyYW1lRWxlbWVudCAhPSBudWxsKSB7XG5cdFx0XHR0aGlzLnJlc2l6ZUlmcmFtZUtlZXBQb3NpdGlvbih3aW5kb3cuZnJhbWVFbGVtZW50KTtcblx0XHR9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBGdW5jaW9uIHBhcmEgbWFudGVuZXIgbGEgcG9zaWNpw7NuIGFjdHVhbCBlbiBlbCBpZnJhbWUuXG5cdCAqIEBwYXJhbSBvYmogZXMgdW4gXCJGcmFtZUVsZW1lbnRcIlxuXHQgKi9cblx0cHJpdmF0ZSByZXNpemVJZnJhbWVLZWVwUG9zaXRpb24ob2JqKSB7XG5cdFx0XG5cdFx0dmFyIGlmcm0gPSBvYmo7XG5cdFx0dmFyIGRvYyA9IGlmcm0uY29udGVudERvY3VtZW50ID8gaWZybS5jb250ZW50RG9jdW1lbnQ6IGlmcm0uY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgICB2YXIgdGFtYW5pbzogbnVtYmVyPSAgdGhpcy5nZXREb2NIZWlnaHQoIGRvYyApICArIDQwXG5cdFx0aWZybS5zdHlsZS5oZWlnaHQgPSB0YW1hbmlvICsgXCJweFwiO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXREb2NIZWlnaHQoZG9jKXtcbiAgICBjb25zb2xlLmxvZygnZ2V0RG9jSGVpZ2h0Jylcblx0XHRsZXQgbmF2ZWdhZG9yID0gdGhpcy5vYnRlbmVyTmF2ZWdhZG9yKCkudG9Mb3dlckNhc2UoKTtcblx0XHR2YXIgaGVpZ2h0ID0gMDtcblx0XHRkb2MgPSBkb2MgfHwgZG9jdW1lbnQ7XG4gICAgY29uc3QgYXBwUm9vdCA9IGRvYy5xdWVyeVNlbGVjdG9yKCdhcHAtcm9vdCcpO1xuXG4gICAgY29uc3Qgc3dhbFBvcHVwID0gZG9jLnF1ZXJ5U2VsZWN0b3IoJy5zd2FsMi1wb3B1cCcpO1xuICAgIGlmIChzd2FsUG9wdXApIHtcbiAgICAgICAgcmV0dXJuIHN3YWxQb3B1cC5vZmZzZXRIZWlnaHQgKyA0MDtcbiAgICB9XG5cbiAgICAvLyBTaSBlbmN1ZW50cmEgZWwgZWxlbWVudG8gPGFwcC1yb290PiwgcmV0b3JuYSBzdSBhbHR1cmFcbiAgICBpZiAoYXBwUm9vdCkge1xuICAgICAgICByZXR1cm4gYXBwUm9vdC5vZmZzZXRIZWlnaHQ7XG4gICAgfVxuXHRcdC8vdmFyIGJvZHkgPSBkb2MuYm9keSwgaHRtbCA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7XG5cdFx0Ly9oZWlnaHQgPSBNYXRoLm1heCggYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkub2Zmc2V0SGVpZ2h0LCBcblx0XHQvL2h0bWwuY2xpZW50SGVpZ2h0LCBodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5vZmZzZXRIZWlnaHQgKTtcblx0XHRcblx0XHRpZiAobmF2ZWdhZG9yLmluZGV4T2YoJ2ZpcmVmb3gnKSAhPT0gLTEpe1xuXHRcdFx0aWYoZG9jLmZvcm1EZXRhbGxlQ29udm9jYXRvcmlhKXtcblx0XHRcdFx0bGV0IGNhbnRpZGFkTWlsZXMgPSBoZWlnaHQgLyAxMDAwO1xuXHRcdFx0XHRoZWlnaHQgPSBoZWlnaHQgKyA2MDAgKyAoY2FudGlkYWRNaWxlcyo0MClcblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdC8vXHRjb25zb2xlLndhcm4oJ0ZDTyA6IGxsYW1hIGEgZ2V0RG9jSGVpZ2h0Jyk7XG5cdFxuXHRcdHJldHVybiBoZWlnaHQ7XG5cdH1cblxuXHRvYnRlbmVyTmF2ZWdhZG9yKCl7XG5cdFx0dmFyIHVhPSBuYXZpZ2F0b3IudXNlckFnZW50LCB0ZW0sIFxuXHRcdE09IHVhLm1hdGNoKC8ob3BlcmF8Y2hyb21lfHNhZmFyaXxmaXJlZm94fG1zaWV8dHJpZGVudCg/PVxcLykpXFwvP1xccyooXFxkKykvaSkgfHwgW107XG5cdFx0aWYoL3RyaWRlbnQvaS50ZXN0KE1bMV0pKXtcblx0XHRcdHRlbT0gIC9cXGJydlsgOl0rKFxcZCspL2cuZXhlYyh1YSkgfHwgW107XG5cdFx0XHRyZXR1cm4gJ0lFICcrKHRlbVsxXSB8fCAnJyk7XG5cdFx0fVxuXHRcdGlmKE1bMV09PT0gJ0Nocm9tZScpe1xuXHRcdFx0dGVtPSB1YS5tYXRjaCgvXFxiKE9QUnxFZGdlKVxcLyhcXGQrKS8pO1xuXHRcdFx0aWYodGVtIT0gbnVsbCkgcmV0dXJuIHRlbS5zbGljZSgxKS5qb2luKCcgJykucmVwbGFjZSgnT1BSJywgJ09wZXJhJyk7XG5cdFx0fVxuXHRcdE09IE1bMl0/IFtNWzFdLCBNWzJdXTogW25hdmlnYXRvci5hcHBOYW1lLCBuYXZpZ2F0b3IuYXBwVmVyc2lvbiwgJy0/J107XG5cdFx0aWYoKHRlbT0gdWEubWF0Y2goL3ZlcnNpb25cXC8oXFxkKykvaSkpIT0gbnVsbCkgTS5zcGxpY2UoMSwgMSwgdGVtWzFdKTtcblx0XHRyZXR1cm4gTS5qb2luKCcgJyk7XG5cdH1cblxuICBvYnRlbmVyVXJsQXBpKHVybGFwaT86IHN0cmluZyApOiBzdHJpbmcge1xuICAgIGlmICh1cmxhcGkpe1xuICAgICAgcmV0dXJuIHVybGFwaTtcbiAgICB9XG4gICAgc3dpdGNoICh0aGlzLmdldFRva2VuS2V5KCdhcGxpY2FjaW9uJykpIHtcbiAgICAgIGNhc2UgJzEnOlxuICAgICAgICByZXR1cm4gd2luZG93WydlbnYnXVsndXJsYXBpc2FyYSddID8gd2luZG93WydlbnYnXVsndXJsYXBpc2FyYSddIDogdGhpcy5jb29raWVTZXJ2aWNlLmdldCgndXJsbnVjbGVvJyk7XG4gICAgICBjYXNlICcxMyc6XG4gICAgICAgIHJldHVybiB3aW5kb3dbJ2VudiddWyd1cmxhcGltYW5hJ10gPyB3aW5kb3dbJ2VudiddWyd1cmxhcGltYW5hJ10gOiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKTtcbiAgICAgIGNhc2UgJzEwJzpcbiAgICAgICAgcmV0dXJuIHdpbmRvd1snZW52J11bJ3VybGFwaXNhcmEnXSA/IHdpbmRvd1snZW52J11bJ3VybGFwaXNhcmEnXSA6IHRoaXMuY29va2llU2VydmljZS5nZXQoJ3VybG51Y2xlbycpO1xuICAgICAgICAvL3JldHVybiB3aW5kb3dbJ2VudiddWyd1cmxhcGknXSA/IHdpbmRvd1snZW52J11bJ3VybGFwaSddIDogdGhpcy5jb29raWVTZXJ2aWNlLmdldCgndXJsbnVjbGVvJyk7XG4gICAgICBjYXNlICc3Nyc6XG4gICAgICAgIHJldHVybiB3aW5kb3dbJ2VudiddWyd1cmxhcGltYW5hYXBzJ10gPyB3aW5kb3dbJ2VudiddWyd1cmxhcGltYW5hYXBzJ10gOiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAgdGhpcy5jb29raWVTZXJ2aWNlLmdldCgndXJsbnVjbGVvJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbktleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kZWNvZGVUb2tlbigpO1xuICAgICAgcmV0dXJuIGRhdGFba2V5XS50b1N0cmluZygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2RlY29kZVRva2VuKCk6IGFueSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRJdGVtKCd0b2tlbicsICcnKTtcbiAgICAgIGNvbnN0IGRhdGEgPSB0b2tlbi5zcGxpdCgnLicpWzFdO1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXRvYihkYXRhKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGdldEl0ZW0oa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMub2J0ZW5lckJhc2UoKSArICdfJyArICBrZXkpID8/IGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIGNhbWJpYXJUZW1hKHRlbWEgOiAoJ3RlbWFDbGFybycgfCAndGVtYU9zY3VybycpKXtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLm9idGVuZXJCYXNlKCkgKyAnXycgKyd0ZW1hJywgdGVtYSk7XG4gICAgbGV0IGxpbmtUZW1hID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVtYUFwcCcpIGFzIEhUTUxMaW5rRWxlbWVudDtcbiAgICBsaW5rVGVtYS5ocmVmID0gYCR7dGVtYX0uY3NzYFxuICB9XG5cbiAgY2FsY3VsYXJQb3NpY2lvbkRpYWxvZygpIHtcbiAgICB2YXIgcGFyZW50V2luZG93OiBXaW5kb3cgPSB3aW5kb3cucGFyZW50O1xuICAgIHZhciBvYmo6IGFueSA9IHdpbmRvdy5mcmFtZUVsZW1lbnQgO1xuICAgIHZhciBpZnJtID0gb2JqO1xuICAgIGlmIChpZnJtKSB7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPSBwYXJlbnRXaW5kb3cucGFnZVlPZmZzZXQgfHwgcGFyZW50V2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgcGFyZW50V2luZG93LmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IDA7XG4gICAgICBjb25zdCBkaWFsb2cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucC1kaWFsb2cnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmIChkaWFsb2cpIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gcGFyZW50V2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgY29uc3QgbWl0YWRTY3JvbGxIZWlnaHQgPSBzY3JvbGxIZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBpbmljaW8gPSAtbWl0YWRTY3JvbGxIZWlnaHQ7XG4gICAgICAgIGRpYWxvZy5zdHlsZS50b3AgPSBgJHtpbmljaW8gKyA1MCArIChzY3JvbGxUb3AgKSB9cHhgOyAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YWxpZGFyUGFsYWJyYSh0ZXh0bzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGxldHJhcyA9IC9eW2EtekEtWl1bMC05YS16QS1aXSokLztcbiAgICByZXR1cm4gcGxldHJhcy50ZXN0KHRleHRvKTtcbiAgfVxuXG4gIGlzTnVtZXJpYyh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc05hTihOdW1iZXIodmFsdWUpKTtcbiAgfVxuICBcbn0iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SharedLibModule {
|
|
4
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
5
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.4", ngImport: i0, type: SharedLibModule });
|
|
6
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedLibModule });
|
|
7
|
+
}
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedLibModule, decorators: [{
|
|
9
|
+
type: NgModule,
|
|
10
|
+
args: [{
|
|
11
|
+
declarations: [],
|
|
12
|
+
imports: [],
|
|
13
|
+
exports: []
|
|
14
|
+
}]
|
|
15
|
+
}] });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkbGliLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zaGFyZWRsaWIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVXpDLE1BQU0sT0FBTyxlQUFlO3VHQUFmLGVBQWU7d0dBQWYsZUFBZTt3R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQVIzQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUNiO29CQUNELE9BQU8sRUFBRSxFQUNOO29CQUNILE9BQU8sRUFBRSxFQUNSO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBdLFxuICBleHBvcnRzOiBbXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2hhcmVkTGliTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
export class ColorUtil {
|
|
2
|
+
/**
|
|
3
|
+
* Define las variables CSS del tema y las agrega al documento.
|
|
4
|
+
* Se definene 9 colores alternativos más el color principal.
|
|
5
|
+
* Adicional se agregan las componentes HSL del color para hacer
|
|
6
|
+
* variaciones personalizadas y ajustar la opacidad.
|
|
7
|
+
* @param color Color principal del tema
|
|
8
|
+
*/
|
|
9
|
+
static addPalleteToRoot(color) {
|
|
10
|
+
const head = (document.head || document.getElementsByTagName('head')[0]);
|
|
11
|
+
const style = document.createElement('style');
|
|
12
|
+
const { hue, saturation, lightness } = this.RGB2HSL(color);
|
|
13
|
+
const contrast = this.contrastColor(color) === 1 ? '--color-50' : '--color-900';
|
|
14
|
+
const intermediateColors = [50, 75, 85];
|
|
15
|
+
let index = 0;
|
|
16
|
+
const css = ':root { ' +
|
|
17
|
+
this._generatePalette(color)
|
|
18
|
+
.map((color, position) => {
|
|
19
|
+
if (index < 100) {
|
|
20
|
+
index = intermediateColors[position] ? intermediateColors[position] : 100;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
index += 100;
|
|
24
|
+
}
|
|
25
|
+
return `--color-${index}: ${color};`;
|
|
26
|
+
})
|
|
27
|
+
.join('') +
|
|
28
|
+
`--color-h: ${hue};` +
|
|
29
|
+
`--color-s: ${saturation}%;` +
|
|
30
|
+
`--color-l: ${lightness}%;` +
|
|
31
|
+
`--color-contrast: var(${contrast});` +
|
|
32
|
+
'}';
|
|
33
|
+
style.type = 'text/css';
|
|
34
|
+
style.appendChild(document.createTextNode(css));
|
|
35
|
+
head.appendChild(style);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Mezcla dos colores en proporción a un porcentaje para obtener un
|
|
39
|
+
* nuevo color.
|
|
40
|
+
* @param baseColor Color base para mezclar
|
|
41
|
+
* @param color Color que se quiere mezclar
|
|
42
|
+
* @param weight Porcentaje que se quiere mezclar. Entre 0 y 1
|
|
43
|
+
* @returns Color resultante en formato RGB (#AABBCC)
|
|
44
|
+
*/
|
|
45
|
+
static mix(baseColor, color, weight) {
|
|
46
|
+
const newColor = [];
|
|
47
|
+
baseColor = this._normalizeColor(baseColor);
|
|
48
|
+
color = this._normalizeColor(color);
|
|
49
|
+
const rgbColorBase = this._getRGBValues(baseColor);
|
|
50
|
+
const rgbColorAdjust = this._getRGBValues(color);
|
|
51
|
+
['red', 'green', 'blue'].forEach((part) => {
|
|
52
|
+
newColor.push(Math.round(rgbColorAdjust[part] + (rgbColorBase[part] - rgbColorAdjust[part]) * weight)
|
|
53
|
+
.toString(16)
|
|
54
|
+
.padStart(2, '0'));
|
|
55
|
+
});
|
|
56
|
+
return '#' + newColor.join('');
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Aclara un color proporcionalmente.
|
|
60
|
+
* @param color Color base para modificar
|
|
61
|
+
* @param percent Porcentaje de blanco que se agrega
|
|
62
|
+
* @returns Nuevo color más claro
|
|
63
|
+
*/
|
|
64
|
+
static tint(color, percent) {
|
|
65
|
+
return this.mix('#fff', color, percent);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Oscurece un color proporcionalmente.
|
|
69
|
+
* @param color Color base para modificar
|
|
70
|
+
* @param percent Porcentaje de negro que se agrega
|
|
71
|
+
* @returns Nuevo color más oscuro
|
|
72
|
+
*/
|
|
73
|
+
static shade(color, percent) {
|
|
74
|
+
return this.mix('#000', color, percent);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Transforma un color en RGB a su equivalente en formato HSL
|
|
78
|
+
* @param color Color en formato RGB
|
|
79
|
+
* @returns Arreglo de componentes HSL
|
|
80
|
+
*/
|
|
81
|
+
static RGB2HSL(color) {
|
|
82
|
+
color = this._normalizeColor(color);
|
|
83
|
+
let { red, green, blue } = this._getRGBValues(color);
|
|
84
|
+
red /= 255;
|
|
85
|
+
green /= 255;
|
|
86
|
+
blue /= 255;
|
|
87
|
+
const max = Math.max(red, green, blue);
|
|
88
|
+
const min = Math.min(red, green, blue);
|
|
89
|
+
let hue = 0;
|
|
90
|
+
let saturation = 0;
|
|
91
|
+
let lightness = (max + min) / 2;
|
|
92
|
+
if (max != min) {
|
|
93
|
+
const delta = max - min;
|
|
94
|
+
saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);
|
|
95
|
+
switch (max) {
|
|
96
|
+
case red:
|
|
97
|
+
hue = (green - blue) / delta + (green < blue ? 6 : 0);
|
|
98
|
+
break;
|
|
99
|
+
case green:
|
|
100
|
+
hue = (blue - red) / delta + 2;
|
|
101
|
+
break;
|
|
102
|
+
case blue:
|
|
103
|
+
hue = (red - green) / delta + 4;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
hue /= 6;
|
|
107
|
+
}
|
|
108
|
+
hue = Math.round(hue * 360);
|
|
109
|
+
saturation = Math.round(saturation * 100);
|
|
110
|
+
lightness = Math.round(lightness * 100);
|
|
111
|
+
return { hue, saturation, lightness };
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Retorna 1 (blanco) o 0 (negro) para contrastar el color enviado.
|
|
115
|
+
* @param color Color del cual se quiere buscar el contraste
|
|
116
|
+
* @returns Blanco o Negro en RGB
|
|
117
|
+
*/
|
|
118
|
+
static contrastColor(color) {
|
|
119
|
+
color = this._normalizeColor(color);
|
|
120
|
+
const { red, green, blue } = this._getRGBValues(color);
|
|
121
|
+
return red * 0.299 + green * 0.587 + blue * 0.114 > 186 ? 0 : 1;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Valida que la cadena de texto represente un color RGB válido y
|
|
125
|
+
* retorna las componentes del color en formato de seis caracteres.
|
|
126
|
+
* @param color Color en formato RGB. Ejemplo: (#000)
|
|
127
|
+
* @returns String del color sin el simbolo #
|
|
128
|
+
*/
|
|
129
|
+
static _normalizeColor(color) {
|
|
130
|
+
const rgbColor = color.match(/^#([0-9A-F]{3}|[0-9A-F]{6})$/i);
|
|
131
|
+
if (!rgbColor) {
|
|
132
|
+
throw new Error(`${color} is not a RGB color.`);
|
|
133
|
+
}
|
|
134
|
+
const colorParts = rgbColor[1].toLowerCase();
|
|
135
|
+
if (colorParts.length === 3) {
|
|
136
|
+
return colorParts.replace(/(.)/g, '$1$1');
|
|
137
|
+
}
|
|
138
|
+
return colorParts;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Transforma un color Hexadecimal a Decimal en sus respectivas
|
|
142
|
+
* comopnenetes.
|
|
143
|
+
* @param color Color en Hecadecimal para descomponer
|
|
144
|
+
* @returns Un objeto {red, green, blue} en decimal
|
|
145
|
+
*/
|
|
146
|
+
static _getRGBValues(color) {
|
|
147
|
+
const red = parseInt(color.slice(0, 2), 16);
|
|
148
|
+
const green = parseInt(color.slice(2, 4), 16);
|
|
149
|
+
const blue = parseInt(color.slice(4, 6), 16);
|
|
150
|
+
return { red, green, blue };
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Define una paleta de 10 colores, 5 más claros y 4 más oscuros basados
|
|
154
|
+
* en el color principal. El color principal será el color medio de la paleta
|
|
155
|
+
* @param color Color base para definir los demás colores
|
|
156
|
+
* @returns Arreglo de todos los colores de la paleta
|
|
157
|
+
*/
|
|
158
|
+
static _generatePalette(color) {
|
|
159
|
+
const palette = [];
|
|
160
|
+
for (let i = 0; i < 5; i++) {
|
|
161
|
+
if (i === 0) {
|
|
162
|
+
palette.push(this.tint(color, (5 - i) * 0.19));
|
|
163
|
+
palette.push(this.tint(color, (4.8 - i) * 0.19));
|
|
164
|
+
palette.push(this.tint(color, (4.55 - i) * 0.19));
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
palette.push(this.tint(color, (5 - i) * 0.19));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
palette.push(color);
|
|
171
|
+
for (let i = 1; i < 5; i++) {
|
|
172
|
+
palette.push(this.shade(color, i * 0.15));
|
|
173
|
+
}
|
|
174
|
+
return palette;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS91dGlsaWRhZGVzL2NvbG9yLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFNBQVM7SUFDcEI7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQWE7UUFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBb0IsQ0FBQztRQUM1RixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBcUIsQ0FBQztRQUNsRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUVoRixNQUFNLGtCQUFrQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN2QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxNQUFNLEdBQUcsR0FDUCxVQUFVO1lBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztpQkFDekIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUN2QixJQUFHLEtBQUssR0FBRyxHQUFHLEVBQUMsQ0FBQztvQkFDZCxLQUFLLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFH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O1FBQ0gsQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb2xvclV0aWwge1xuICAvKipcbiAgICogRGVmaW5lIGxhcyB2YXJpYWJsZXMgQ1NTIGRlbCB0ZW1hIHkgbGFzIGFncmVnYSBhbCBkb2N1bWVudG8uXG4gICAqIFNlIGRlZmluZW5lIDkgY29sb3JlcyBhbHRlcm5hdGl2b3MgbcOhcyBlbCBjb2xvciBwcmluY2lwYWwuXG4gICAqIEFkaWNpb25hbCBzZSBhZ3JlZ2FuIGxhcyBjb21wb25lbnRlcyBIU0wgZGVsIGNvbG9yIHBhcmEgaGFjZXJcbiAgICogdmFyaWFjaW9uZXMgcGVyc29uYWxpemFkYXMgeSBhanVzdGFyIGxhIG9wYWNpZGFkLlxuICAgKiBAcGFyYW0gY29sb3IgQ29sb3IgcHJpbmNpcGFsIGRlbCB0ZW1hXG4gICAqL1xuICBzdGF0aWMgYWRkUGFsbGV0ZVRvUm9vdChjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaGVhZCA9IChkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0pIGFzIEhUTUxIZWFkRWxlbWVudDtcbiAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJykgYXMgSFRNTFN0eWxlRWxlbWVudDtcbiAgICBjb25zdCB7IGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzIH0gPSB0aGlzLlJHQjJIU0woY29sb3IpO1xuICAgIGNvbnN0IGNvbnRyYXN0ID0gdGhpcy5jb250cmFzdENvbG9yKGNvbG9yKSA9PT0gMSA/ICctLWNvbG9yLTUwJyA6ICctLWNvbG9yLTkwMCc7XG5cbiAgICBjb25zdCBpbnRlcm1lZGlhdGVDb2xvcnMgPSBbNTAsIDc1LCA4NV1cbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGNvbnN0IGNzcyA9XG4gICAgICAnOnJvb3QgeyAnICtcbiAgICAgIHRoaXMuX2dlbmVyYXRlUGFsZXR0ZShjb2xvcilcbiAgICAgICAgLm1hcCgoY29sb3IsIHBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgaWYoaW5kZXggPCAxMDApe1xuICAgICAgICAgICAgaW5kZXggPSBpbnRlcm1lZGlhdGVDb2xvcnNbcG9zaXRpb25dID8gaW50ZXJtZWRpYXRlQ29sb3JzW3Bvc2l0aW9uXSA6IDEwMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5kZXggKz0gMTAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYC0tY29sb3ItJHtpbmRleH06ICR7Y29sb3J9O2A7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcnKSArXG4gICAgICBgLS1jb2xvci1oOiAke2h1ZX07YCArXG4gICAgICBgLS1jb2xvci1zOiAke3NhdHVyYXRpb259JTtgICtcbiAgICAgIGAtLWNvbG9yLWw6ICR7bGlnaHRuZXNzfSU7YCArXG4gICAgICBgLS1jb2xvci1jb250cmFzdDogdmFyKCR7Y29udHJhc3R9KTtgICtcbiAgICAgICd9JztcbiAgICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXpjbGEgZG9zIGNvbG9yZXMgZW4gcHJvcG9yY2nDs24gYSB1biBwb3JjZW50YWplIHBhcmEgb2J0ZW5lciB1blxuICAgKiBudWV2byBjb2xvci5cbiAgICogQHBhcmFtIGJhc2VDb2xvciBDb2xvciBiYXNlIHBhcmEgbWV6Y2xhclxuICAgKiBAcGFyYW0gY29sb3IgQ29sb3IgcXVlIHNlIHF1aWVyZSBtZXpjbGFyXG4gICAqIEBwYXJhbSB3ZWlnaHQgUG9yY2VudGFqZSBxdWUgc2UgcXVpZXJlIG1lemNsYXIuIEVudHJlIDAgeSAxXG4gICAqIEByZXR1cm5zIENvbG9yIHJlc3VsdGFudGUgZW4gZm9ybWF0byBSR0IgKCNBQUJCQ0MpXG4gICAqL1xuICBzdGF0aWMgbWl4KGJhc2VDb2xvcjogc3RyaW5nLCBjb2xvcjogc3RyaW5nLCB3ZWlnaHQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbmV3Q29sb3IgPSBbXTtcbiAgICBiYXNlQ29sb3IgPSB0aGlzLl9ub3JtYWxpemVDb2xvcihiYXNlQ29sb3IpO1xuICAgIGNvbG9yID0gdGhpcy5fbm9ybWFsaXplQ29sb3IoY29sb3IpO1xuXG4gICAgY29uc3QgcmdiQ29sb3JCYXNlID0gdGhpcy5fZ2V0UkdCVmFsdWVzKGJhc2VDb2xvcik7XG4gICAgY29uc3QgcmdiQ29sb3JBZGp1c3QgPSB0aGlzLl9nZXRSR0JWYWx1ZXMoY29sb3IpO1xuXG4gICAgWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZSddLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgIG5ld0NvbG9yLnB1c2goXG4gICAgICAgIE1hdGgucm91bmQocmdiQ29sb3JBZGp1c3RbcGFydF0gKyAocmdiQ29sb3JCYXNlW3BhcnRdIC0gcmdiQ29sb3JBZGp1c3RbcGFydF0pICogd2VpZ2h0KVxuICAgICAgICAgIC50b1N0cmluZygxNilcbiAgICAgICAgICAucGFkU3RhcnQoMiwgJzAnKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAnIycgKyBuZXdDb2xvci5qb2luKCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2xhcmEgdW4gY29sb3IgcHJvcG9yY2lvbmFsbWVudGUuXG4gICAqIEBwYXJhbSBjb2xvciBDb2xvciBiYXNlIHBhcmEgbW9kaWZpY2FyXG4gICAqIEBwYXJhbSBwZXJjZW50IFBvcmNlbnRhamUgZGUgYmxhbmNvIHF1ZSBzZSBhZ3JlZ2FcbiAgICogQHJldHVybnMgTnVldm8gY29sb3IgbcOhcyBjbGFyb1xuICAgKi9cbiAgc3RhdGljIHRpbnQoY29sb3I6IHN0cmluZywgcGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5taXgoJyNmZmYnLCBjb2xvciwgcGVyY2VudCk7XG4gIH1cblxuICAvKipcbiAgICogT3NjdXJlY2UgdW4gY29sb3IgcHJvcG9yY2lvbmFsbWVudGUuXG4gICAqIEBwYXJhbSBjb2xvciBDb2xvciBiYXNlIHBhcmEgbW9kaWZpY2FyXG4gICAqIEBwYXJhbSBwZXJjZW50ICBQb3JjZW50YWplIGRlIG5lZ3JvIHF1ZSBzZSBhZ3JlZ2FcbiAgICogQHJldHVybnMgTnVldm8gY29sb3IgbcOhcyBvc2N1cm9cbiAgICovXG4gIHN0YXRpYyBzaGFkZShjb2xvcjogc3RyaW5nLCBwZXJjZW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1peCgnIzAwMCcsIGNvbG9yLCBwZXJjZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1hIHVuIGNvbG9yIGVuIFJHQiBhIHN1IGVxdWl2YWxlbnRlIGVuIGZvcm1hdG8gSFNMXG4gICAqIEBwYXJhbSBjb2xvciBDb2xvciBlbiBmb3JtYXRvIFJHQlxuICAgKiBAcmV0dXJucyBBcnJlZ2xvIGRlIGNvbXBvbmVudGVzIEhTTFxuICAgKi9cbiAgc3RhdGljIFJHQjJIU0woY29sb3I6IHN0cmluZyk6IHsgaHVlOiBudW1iZXI7IHNhdHVyYXRpb246IG51bWJlcjsgbGlnaHRuZXNzOiBudW1iZXIgfSB7XG4gICAgY29sb3IgPSB0aGlzLl9ub3JtYWxpemVDb2xvcihjb2xvcik7XG5cbiAgICBsZXQgeyByZWQsIGdyZWVuLCBibHVlIH0gPSB0aGlzLl9nZXRSR0JWYWx1ZXMoY29sb3IpO1xuICAgIHJlZCAvPSAyNTU7XG4gICAgZ3JlZW4gLz0gMjU1O1xuICAgIGJsdWUgLz0gMjU1O1xuXG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgocmVkLCBncmVlbiwgYmx1ZSk7XG4gICAgY29uc3QgbWluID0gTWF0aC5taW4ocmVkLCBncmVlbiwgYmx1ZSk7XG5cbiAgICBsZXQgaHVlID0gMDtcbiAgICBsZXQgc2F0dXJhdGlvbiA9IDA7XG4gICAgbGV0IGxpZ2h0bmVzcyA9IChtYXggKyBtaW4pIC8gMjtcblxuICAgIGlmIChtYXggIT0gbWluKSB7XG4gICAgICBjb25zdCBkZWx0YSA9IG1heCAtIG1pbjtcbiAgICAgIHNhdHVyYXRpb24gPSBsaWdodG5lc3MgPiAwLjUgPyBkZWx0YSAvICgyIC0gbWF4IC0gbWluKSA6IGRlbHRhIC8gKG1heCArIG1pbik7XG4gICAgICBzd2l0Y2ggKG1heCkge1xuICAgICAgICBjYXNlIHJlZDpcbiAgICAgICAgICBodWUgPSAoZ3JlZW4gLSBibHVlKSAvIGRlbHRhICsgKGdyZWVuIDwgYmx1ZSA/IDYgOiAwKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBncmVlbjpcbiAgICAgICAgICBodWUgPSAoYmx1ZSAtIHJlZCkgLyBkZWx0YSArIDI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgYmx1ZTpcbiAgICAgICAgICBodWUgPSAocmVkIC0gZ3JlZW4pIC8gZGVsdGEgKyA0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaHVlIC89IDY7XG4gICAgfVxuXG4gICAgaHVlID0gTWF0aC5yb3VuZChodWUgKiAzNjApO1xuICAgIHNhdHVyYXRpb24gPSBNYXRoLnJvdW5kKHNhdHVyYXRpb24gKiAxMDApO1xuICAgIGxpZ2h0bmVzcyA9IE1hdGgucm91bmQobGlnaHRuZXNzICogMTAwKTtcblxuICAgIHJldHVybiB7IGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0b3JuYSAxIChibGFuY28pIG8gMCAobmVncm8pIHBhcmEgY29udHJhc3RhciBlbCBjb2xvciBlbnZpYWRvLlxuICAgKiBAcGFyYW0gY29sb3IgQ29sb3IgZGVsIGN1YWwgc2UgcXVpZXJlIGJ1c2NhciBlbCBjb250cmFzdGVcbiAgICogQHJldHVybnMgQmxhbmNvIG8gTmVncm8gZW4gUkdCXG4gICAqL1xuICBzdGF0aWMgY29udHJhc3RDb2xvcihjb2xvcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb2xvciA9IHRoaXMuX25vcm1hbGl6ZUNvbG9yKGNvbG9yKTtcbiAgICBjb25zdCB7IHJlZCwgZ3JlZW4sIGJsdWUgfSA9IHRoaXMuX2dldFJHQlZhbHVlcyhjb2xvcik7XG4gICAgcmV0dXJuIHJlZCAqIDAuMjk5ICsgZ3JlZW4gKiAwLjU4NyArIGJsdWUgKiAwLjExNCA+IDE4NiA/IDAgOiAxO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYSBxdWUgbGEgY2FkZW5hIGRlIHRleHRvIHJlcHJlc2VudGUgdW4gY29sb3IgUkdCIHbDoWxpZG8geVxuICAgKiByZXRvcm5hIGxhcyBjb21wb25lbnRlcyBkZWwgY29sb3IgZW4gZm9ybWF0byBkZSBzZWlzIGNhcmFjdGVyZXMuXG4gICAqIEBwYXJhbSBjb2xvciBDb2xvciBlbiBmb3JtYXRvIFJHQi4gRWplbXBsbzogKCMwMDApXG4gICAqIEByZXR1cm5zIFN0cmluZyBkZWwgY29sb3Igc2luIGVsIHNpbWJvbG8gI1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX25vcm1hbGl6ZUNvbG9yKGNvbG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJnYkNvbG9yID0gY29sb3IubWF0Y2goL14jKFswLTlBLUZdezN9fFswLTlBLUZdezZ9KSQvaSk7XG4gICAgaWYgKCFyZ2JDb2xvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2NvbG9yfSBpcyBub3QgYSBSR0IgY29sb3IuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29sb3JQYXJ0cyA9IHJnYkNvbG9yWzFdLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGNvbG9yUGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICByZXR1cm4gY29sb3JQYXJ0cy5yZXBsYWNlKC8oLikvZywgJyQxJDEnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29sb3JQYXJ0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1hIHVuIGNvbG9yIEhleGFkZWNpbWFsIGEgRGVjaW1hbCBlbiBzdXMgcmVzcGVjdGl2YXNcbiAgICogY29tb3BuZW5ldGVzLlxuICAgKiBAcGFyYW0gY29sb3IgQ29sb3IgZW4gSGVjYWRlY2ltYWwgcGFyYSBkZXNjb21wb25lclxuICAgKiBAcmV0dXJucyBVbiBvYmpldG8ge3JlZCwgZ3JlZW4sIGJsdWV9IGVuIGRlY2ltYWxcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIF9nZXRSR0JWYWx1ZXMoY29sb3I6IHN0cmluZyk6IHsgcmVkOiBudW1iZXI7IGdyZWVuOiBudW1iZXI7IGJsdWU6IG51bWJlciB9IHtcbiAgICBjb25zdCByZWQgPSBwYXJzZUludChjb2xvci5zbGljZSgwLCAyKSwgMTYpO1xuICAgIGNvbnN0IGdyZWVuID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMiwgNCksIDE2KTtcbiAgICBjb25zdCBibHVlID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoNCwgNiksIDE2KTtcbiAgICByZXR1cm4geyByZWQsIGdyZWVuLCBibHVlIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHVuYSBwYWxldGEgZGUgMTAgY29sb3JlcywgNSBtw6FzIGNsYXJvcyB5IDQgbcOhcyBvc2N1cm9zIGJhc2Fkb3NcbiAgICogZW4gZWwgY29sb3IgcHJpbmNpcGFsLiBFbCBjb2xvciBwcmluY2lwYWwgc2Vyw6EgZWwgY29sb3IgbWVkaW8gZGUgbGEgcGFsZXRhXG4gICAqIEBwYXJhbSBjb2xvciBDb2xvciBiYXNlIHBhcmEgZGVmaW5pciBsb3MgZGVtw6FzIGNvbG9yZXNcbiAgICogQHJldHVybnMgQXJyZWdsbyBkZSB0b2RvcyBsb3MgY29sb3JlcyBkZSBsYSBwYWxldGFcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIF9nZW5lcmF0ZVBhbGV0dGUoY29sb3I6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBwYWxldHRlID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIGlmKGkgPT09IDApIHtcbiAgICAgICAgcGFsZXR0ZS5wdXNoKHRoaXMudGludChjb2xvciwgKDUgLSBpKSAqIDAuMTkpKTtcbiAgICAgICAgcGFsZXR0ZS5wdXNoKHRoaXMudGludChjb2xvciwgKDQuOCAtIGkpICogMC4xOSkpO1xuICAgICAgICBwYWxldHRlLnB1c2godGhpcy50aW50KGNvbG9yLCAoNC41NSAtIGkpICogMC4xOSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFsZXR0ZS5wdXNoKHRoaXMudGludChjb2xvciwgKDUgLSBpKSAqIDAuMTkpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFsZXR0ZS5wdXNoKGNvbG9yKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IDU7IGkrKykge1xuICAgICAgcGFsZXR0ZS5wdXNoKHRoaXMuc2hhZGUoY29sb3IsIGkgKiAwLjE1KSk7XG4gICAgfVxuICAgIHJldHVybiBwYWxldHRlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudWNoYW5nZWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9sYXlvdXQvYXBpL21lbnVjaGFuZ2VldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBNZW51Q2hhbmdlRXZlbnQge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHJvdXRlRXZlbnQ/OiBib29sZWFuO1xufSJdfQ==
|