{"version":3,"sources":["config/TelemetryService.ts","config/tipoColoresEnum.ts","config/tipoEstadoActualTrackingCorteEnum.ts","config/tipoLargoLineaEnum.ts","config/tipoTrackingCorteEnum.ts","config/tipoZoomEnum.ts","config/tipoEstadoActualSecundarioTrackingCorteEnum.ts","config/tipoEtapasEnumNumber.ts","config/tipoCaptchaDesconexiones.ts","config/AuthInterceptor.ts","config/ErrorInterceptor.ts","config/QueryParams.tsx","config/TelemetryProvider.tsx","config/version.ts","services/desconexionService.ts","utils/desconexionUtils.ts","navigation/constants.ts","assets/images/saesa-error.svg","navigation/NotFound/NotfoundStyle.ts","navigation/RootRouterConfig.tsx","config/HttpStatusCodeEnum.ts","components/Header/HeaderStyles.ts","components/Header/Header.tsx","components/InfoCliente/InfoClienteStyles.ts","components/InfoCliente/InfoCliente.tsx","utils/ejemploRespuestaServicioCortes.ts","utils/trackingUtils.ts","assets/images/cerrar-modal.svg","assets/images/boton-volver.svg","components/Modal/ModalStyles.ts","components/Modal/ModalPoligono.tsx","config/tiposCorteTitulo.ts","components/VentanaMobile/VentanaMobileStyles.ts","components/VentanaMobile/VentanaMobile.tsx","pages/Styles/VistasCorteStyles.ts","utils/obtenerZoom.ts","utils/colorBallsUtils.ts","utils/utilitario.ts","components/Maps/Disclaimer/DisclaimerStyles.ts","components/Maps/Disclaimer/Disclaimer.tsx","components/Maps/ColorBalls/ColorBallsStyles.ts","components/Maps/ColorBalls/ColorBallsImprevistoSinBrigada.tsx","components/Maps/ColorBalls/ColorBallsImprevistoConBrigada.tsx","components/Maps/DisclaimerTerVencido/DisclaimerTerVencidoStyles.ts","components/Maps/DisclaimerTerVencido/DisclaimerTerVencido.tsx","components/Maps/MapsStyles.ts","components/Maps/Maps.tsx","helper/trackingCorte.helper.tsx","components/MensajeServicio/IconoEstado/IconoEstadoStyles.ts","components/MensajeServicio/IconoEstado/IconoEstado.tsx","components/MensajeServicio/MensajeServicioStyles.ts","components/MensajeServicio/MensajeServicio.tsx","components/PagesItem/PagesItemStyle.ts","components/PagesItem/PagesItem.tsx","components/Sidemenu/SidemenuStyles.ts","components/Sidemenu/Sidemenu.tsx","components/TextoInformativo/TextoInformativoStyles.ts","components/TextoInformativo/TextoInformativo.tsx","components/Captchas/CaptchaV2.tsx","components/AcordeonNotificacionTer/NotificacionService.ts","components/AcordeonNotificacionTer/AcordeonNotificacionTerStyles.ts","components/AcordeonNotificacionTer/SuscritoNotificacionTer.tsx","components/AcordeonNotificacionTer/AcordeonNotificacionTer.tsx","components/AvisoPagoCortes/AvisoPagoCortesStyles.ts","components/AvisoPagoCortes/AvisoPagoCortes.tsx","components/TextoInferiorReportar/TextoInferiorReportar.tsx","utils/manejadorLogo.ts","config/tipoEtapasEnum.ts","utils/cookieUtils.ts","utils/styles/ModalGlobalStyles.ts","components/BotonCerrar/BotonCerrar.tsx","components/BotonCerrar/IconoCerrar.tsx","components/ModalSitioNoDisponible/ModalSitioNoDisponibleStyles.ts","components/ModalSitioNoDisponible/ModalSitioNoDisponible.tsx","assets/images/tooltip-numero-servicio.png","assets/images/icono-reportar-ok.svg","assets/images/icono-reportar-cortado.svg","assets/images/icono-reportar-comercial.svg","assets/images/icono-redireccion.svg","assets/images/icono-redireccion-morado.svg","assets/images/icono-volver.svg","assets/images/icono-informacion.svg","assets/images/icono-mapa.svg","assets/images/icono-reloj.svg","assets/images/flash-slash.svg","assets/images/clock.svg","assets/images/alerta.svg","assets/images/repair.svg","assets/images/alert-orange.svg","assets/images/close-circle.svg","assets/images/arrow-up.svg","assets/images/arrow-down.svg","assets/images/tick-circle.svg","assets/images/index.ts","assets/images/logo-google.svg","config/tiposCorte.ts","store/desconexion/desconexion.ts","store/store.ts","root-page/navigation/RouterConfig.tsx","root-page/RootStyles.ts","root-page/Root.tsx","config/tipoDistribuidoraEnum.ts","config/tipoCorteServicioEnum.ts","components/FormValidation/FormValidation.tsx","i18n/config.ts","AppStyles.ts","context/Auth/AuthProvider.tsx","App.tsx","reportWebVitals.js","serviceWorkerRegistration.ts","index.tsx","utils/constants.ts","root-page/constants.ts","services/AnalyticsService.ts","utils/GtmEvents.ts"],"names":["reactPlugin","appInsights","TipoColoresEnum","TipoEstadoActualTrackingCorteEnum","TipoLargoLineaEnum","TipoTrackingCorteEnum","TIPOZOOM","TipoEstadoActualSecundarioTrackingCorteEnum","EtapasNumero","TipoCaptchaDesconexiones","AuthInterceptor","apiKey","process","axios","interceptors","request","use","contador","sessionStorage","getItem","parseInt","setItem","toString","loading","document","getElementById","classList","add","mostrarLoading","token","localStorage","url","includes","headers","Authorization","ocultarLoading","querySelectorAll","forEach","item","remove","ErrorInterceptor","t","response","error","ERROR_MSG","data","message","mensaje","RegExp","test","status","HttpStatusCodeEnum","INTERNAL_SERVER_ERROR","Promise","reject","QueryParams","search","useLocation","useMemo","URLSearchParams","ai","initialize","connectionString","browserHistory","Error","ReactPlugin","ApplicationInsights","config","maxBatchInterval","disableFetchTracking","extensions","extensionConfig","identifier","history","enableAutoRouteTracking","distributedTracingMode","DistributedTracingModes","W3C","samplingPercentage","Number","REACT_APP_TELEMETRY_SAMPLING_PERCENTAGE","loadAppInsights","addTelemetryInitializer","envelope","tags","push","REACT_APP_TELEMETRY_ROLE","TelemetryProvider","props","state","initialized","this","conectionString","after","AppInsightsInstrumentationKey","Boolean","setState","children","Component","withRouter","withAITracking","VERSION","DesconexionService","get","then","resolve","numeroOrden","nroCliente","post","nroServicio","codigoRegion","tipo","caso","suscriptor","numeroCliente","captcha","identificador","body","esDatoValido","dato","undefined","setearDistribuidora","infoCliente","codDistribuidora","TipoDistribuidora","SAESA","glosa","GLOSA_SAESA","EDELAYSEN","GLOSA_EDELAYSEN","FRONTEL","GLOSA_FRONTEL","LUZ_OSORNO","GLOSA_LUZ_OSORNO","GLOSA_GRUPO_SAESA","validarCorte","responseCodigo","infoClienteModel","corte","cortes","codigoEstadoSuministro","TipoCorteServicio","NORMAL","estadoActual","CONFIRMED","tipoCorteMapping","DEFAULT","TIPOCORTE","PROGRAMADO","COD_CORTE_PROGRAMADO","IMPREVISTO","COD_CORTE_IMPREVISTO","estadoServicio","ROOT","URL_ESTOY_SIN_LUZ","makeStyles","theme","createStyles","contenedor","position","width","minHeight","zIndex","display","alignItems","contenido","marginLeft","breakpoints","down","justifyContent","marginTop","texto","maxWidth","textAlign","icono","right","top","title","color","subtitle","marginBottom","RootRouterConfig","useTranslation","path","exact","to","MAPACORTES","HeaderStyles","logoImg","height","logo","marginRight","menuHeader","margin","iconAbrirMenu","stroke","iconCerrarMenu","mostrarElemento","esconderElemento","visibility","listStyleType","cursor","fontSize","link","textDecoration","outlined","backgroundColor","border","borderWidth","menuItemActive","Header","className","styles","useStyles","useSelector","desconexion","distribuidora","dispatch","useDispatch","menuAbierto","menuNavegacion","id","option","SOMOSVECINOS","CLIENTEHOGAR","CLIENTEMPRESA","src","urlLogo","alt","map","href","target","rel","type","Hidden","only","IconButton","onClick","actualizarEstadoMenuAbierto","clsx","defaultProps","InfoClienteStyles","servicio","background","borderRadius","padding","minWidth","headerServicio","bodyServicio","contenedorEstado","flexDirection","gap","calle","comuna","localidad","estado","estadoActivo","fontWeight","estadoInactivo","estadoTransicion","tituloCampo","campo","botonVolver","editar","InfoCliente","contenidoPorTipo","variant","CORTADO","REPOSICION","TRAMITE_CORTE","useState","renderContenido","setRenderContenido","useEffect","strong","PATH_ESTOY_SIN_LUZ","newResponseTracking","clientesAfectadosTotales","clientesNormalizados","NORMALIZED","fechaArriboBrigada","fechaCreacionCaso","fechaFinCorte","fechaInicioCorte","motivo","clientesRecuperados","clientesAfectadosIniciales","porcentajeClientesRecuperados","porcentajeClientesAunSinServicio","estadoActualSecundario","CONFIRMADO","fechaActualizacion","formatoFecha","length","time","Date","replace","withSlash","toLocaleDateString","hour12","year","month","day","format","endOfDay","obtenerHora","split","substring","formatoFechaConHora","fechaSinDeterminar","ModalStyles","caja","maxHeight","boxShadow","cajaIframe","cuerpo","overflowX","overflowY","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","paddingTop","paddingBottom","contenedorBoton","paddingRight","contenedorBotonImprevistos","contenedorBotonMobile","botonCerrar","cajaTitulo","textoTitulo","fontFamily","fontStyle","lineHeight","textoTituloImprevisto","textoParrafo","sizeSmall","linea","circuloRojo","circuloNaranja","circuloAzul","circuloGris","tracking","sinTracking","cajaTextoNoTracking","contenedorMensaje","mensajeIcon","contenedorTextoIcono","parrafo","ModalPoligono","titulo","setTitulo","setMostrarModal","setMostrarBuscador","estadoTracking","dataSinTracking","setDataSinTracking","setServicioCargado","setVentanaMobileState","activadorMobile","cerrarModal","actualizarEstadoCaptchaV3","actualizarEstadoCaptchaV2","volverModal","window","location","pathname","PATH_MAPA_IFRAME","size","volverModalLogo","CORTE_IMPREVISTO","cerrarModalLogo","CORTE_PROGRAMADO","PROXIMO_CORTE_PROGRAMADO","tipoCorte","Typography","total","TIPOCORTETITULO","VentanaMobileStyles","cajaVentana","bottom","cajaTituloMobile","textoTituloMobile","textoParrafoMobile","sizeSmallMobile","lineaMobile","boton","verticalAlign","transition","cajaBoton","cajaMobileInformacion","textoTituloInformacion","textoParrafoInformacion","cajaContenedoraInformacion","textoBotonVerMasDetalles","contenedorTituloBoton","VentanaMobile","setActivadorMobile","modalTracking","primeraData","segundaData","stylesModal","useStylesModal","actualizarEstadoModalMobileAbierto","modalMobileAbierto","actualizarEstadoModalMobileAbiertoCompleto","modalMobileAbiertoCompleto","Button","VistasCorteStyles","numeroServicio","stepper","stepperCorte","botonIr","input","recaptcha","transform","tooltip","tooltipIcon","etapas","textos","descripcion","imgTooltip","textoInformativo","avisoPago","reportarCorteCnt","btnReportar","textoCorte","iconReportar","infoCnt","flexFlow","iconoManoArriba","line","left","info","formCnt","obtenerZoom","mobile","pec","ESCRITORIO_PEC","MOBILE_PEC","datoNoValido","trim","esCorteImprevisto","noEsCorteImprevisto","esCorteImprevistoConArriboBrigada","arriboBrigada","tieneArriboBrigadaValido","esCorteImprevistoCondicion","NORMALIZADO","esBrigadaEnTerreno","BRIGADA_EN_TERRENO","esFechaVencida","hora","horaActualChile","toLocaleString","LOCALE_EN_US","timeZone","zonaHoraria","horaProporcionada","isBefore","addMinutes","DisclaimerStyles","card","boxSizing","flexWrap","frame","text","subtext","Disclaimer","horaActualizacion","Box","alerta","ColorBallsStyles","contenedorInterno","contenedorIconoPrimero","alignContent","contenedorIconoSegundo","contenedorIconoFinalBrigada","contenedorIconoCirculoSinIcono","contenedorIconoCirculoSinIconoSinBrigadaTerreno","contenedorLinea","contenedorLineaUnionSinBrigadaTerreno","parteSuperiorLinea","parteInferiorLinea","contenedorLineaBrigada","contenedorSegundaLinea","contenedorSegundaLineaTerreno","contenedorTerceraLinea","contenedorTerceraLineaSinTerreno","parteInferiorLineaBrigada","parteInferiorSegundaLinea","lineaUnionPrimeraEtapa","textoGlobal","tituloConfirmado","tituloReposicion","tituloBrigadaSinTerreno","tituloBrigada","complementoBrigadaAsignada","complementoBrigadaAsignadaSinTerreno","complementoBrigadaAsignadaSinTerrenoTexto","textoHoraReposicion","textoPrincipalMotivoCorte","textoPrincipalBrigadaTerreno","textoPrincipalBrigadaTerrenoLink","userSelect","textoMotivoCorte","contenedorTextosMotivoCorte","contenedorTextos","contenedorInternoBolaCorte","contenedorPrimerosTexto","flex","contenedorTextosBrigada","contenedorSegundosTexto","contenedorTextoReposicion","complementoTextoReposicionEnTerreno","tituloReposicionReposicionSinTerreno","complementoTextoReposicionEnTerrenoSinGrafica","contenedorTextosSecundariosBrigadaEnTerreno","ColorBallsImprevistoSinBrigada","iconoInicio","iconoFinal","dataInvalidaMotivo","setDataInvalidaMotivo","ColorBallsImprevistoConBrigada","iconoInicial","iconoMedio","estadoGrafico","BRIGADA_ASIGNADA","ventanaModal","alturaTotalVentanaModal","scrollHeight","scrollTop","estadoGraficos","determinarEstiloFinal","DisclaimerTerVencidoStyles","contenedorParrafos","parrafoGlobal","parrafoTitulo","parrafoSubTitulo","DisclaimerTerVencido","alertaNaranja","MapsStyles","buscadorCnt","inputCnt","inputNroServicio","inputDireccion","lupaIcon","btnIconDireccion","flechaIcon","flechaIconDisabled","opacity","inputHasError","textoCambiar","modal","principal","circulo","content","iconoCnt","disclaimerQuinceMinutos","textoDisclaimerQuinceMinutos","contenedorBuscadorDireccion","Maps","zoom","cacheControl","setCacheControl","getTime","kmlUrl","kmlUrlFuturos","nombreCorteFuturo","rutaKmlCache","kml","concatenador","toLocaleLowerCase","endsWith","nuevaRutaKml","nuevaRutaKmlFuturos","modeloPasos","query","queryNroCliente","queryNombreEmpresa","modoPEC","modalNoDisponibleFlagVisible","modalPaginaNoDisponible","activacionModal","notificacionTerActivo","flagCargadoNotificacionTer","valorMinutosModal","tiempoCookie","flagCargado","cortesFuturosHabilitacion","cortesFuturos","switchCortesFuturos","initialValues","direccion","formik","useFormik","onSubmit","stylesCortes","useStylesCortes","enqueueSnackbar","useSnackbar","ID_MARKER_BUSQUEDA","dataMapa","infoBusqueda","setInfoBusqueda","modalNoDisponible","setModalNoDisponible","newZoom","setNewZoom","coordenadasFrontel","lat","lng","coordenadasEdelaysen","coordenadasOsorno","lugares","pos","compania","obtenerCoordenadas","marker","setMarker","mostrarInput","setMostrarInput","coordenadas","setCoordenadas","mostrarModal","mostrarBuscador","numeroCaso","setNumeroCaso","respuestaServicio","setRespuestaServicio","setModalTracking","servicioCargado","ventanaMobileState","corteProgramado","setCorteProgramado","setPrimeraData","primeraDataSinTracking","setPrimeraDataSinTracking","setSegundaData","segundaDataSinTracking","setSegundaDataSinTracking","respuesta","etapa","tamanioLinea","colorLinea","colorPaso","VERDE_OSCURO","colorTitulo","GRIS_L43","colorFecha","CheckTrackingIcon","fecha","mostrarTooltip","textoTooltip","ACTIVATED","ARRIBO_BRIGADA","FULL","obtenerElementoTimeInicio","RelojIcon","MEDIUM","obtenerElementoTimeMedio","LARGE","GRIS_L93","GRIS_L83","GRIS_L63","obtenerElementoTimeFin","vistaTextoInformativo","estilos","Trans","i18nKey","shouldUnescape","textoBajada","obtenerTextoInformativo","vistaProblemasServicio","programado","SIN_FALLAS","motivoCorte","fechaReposicion","horaInicioCorte","clientesAfectados","estadoCorte","porcentajeClientesSinServicio","obtenerPantallaSigoConProblemas","vistaTextoInferiorReportar","obtenerTextoInferiorReportar","tituloListaNegra","tipoCorteFuturo","isLoaded","useLoadScript","googleMapsApiKey","libraries","actualizarPosicionMarcador","consultarNroCliente","busquedaNroCliente","dataNroCliente","latitud","longitud","blur","AnalyticsService","enviarTag","EventosGtmSaesa","mapaDesconexiones","busqueda","busquedaServicio","catch","busquedaServicioError","tiempoMostrarModal","milisegundosPorMinuto","setFieldValue","acceso","mostrarModalCookie","modalActivo","values","validationSchema","Yup","required","soloNumero","max","onLoad","ref","realizarBusquedaPorDireccion","getPlaces","busquedaDireccionError","geometry","dataDireccion","name","busquedaDireccion","obtenerInformacion","event","objetoData","datas","filter","arregloModificado","obj","nuevoTitulo","toLowerCase","arregloModificadoFuturo","objetoFuturo","onClickKml","scrollInicialModal","featureData","infoWindowHtml","actualizarEstadoMensajeFlotanteCerrado","mensajeFlotanteCerrado","poligono","llamadaTracking","obtenerRespuestaCorte","description","actualizarAcordeonNotificacionTerAbierto","actualizarEstadoClienteSuscrito","fechaTER","dataCorte","e","obtenerFechaTER","responseTER","CORTE_INESPERADO","CORTE_FUTURO","tituloCorte","cargaTracking","Object","mostrarInputCorrespondiente","resetForm","desplegarModalTrackingComponente","classNamePrincipal","classNameCirculo","classNameIconoCnt","classNameIcono","classNameTextos","mostrarStepperOcultosMobile","ocultarPrimeraLinea","ocultarUltimaLinea","flashSlash","clock","repair","desplegarModalComponente","center","options","zoomControl","zoomControlOptions","streetViewControl","streetViewControlOptions","mapTypeControl","mapTypeControlOptions","fullscreenControl","gestureHandling","minZoom","mapContainerStyle","overflow","place","handleSubmit","errors","dataTestId","touched","value","onChange","handleChange","onBlur","handleBlur","placeholder","startAdornment","dirty","onPlacesChanged","desplegarBuscador","preserveViewport","suppressInfoWindows","ModalSitioNoDisponible","IconoEstadoStyles","IconoEstado","mostrarIconoCortado","iconoReportarCorteOK","iconoReportarCorteCortado","iconoReportarCorteComercial","MensajeServicioStyles","descripcionFallas","MensajeServicio","contenidoEstadoOK","contenidoEstadoCorteComercial","contenidoEstadoReposicion","contenidoEstadoTramiteCorte","contenidoEstadoCorteImprevisto","contenidoEstadoCorteProgramado","PagesItemStyle","pagesItem","flecha","header","borderBottom","flexGrow","ocultar","botonVolverTexto","flechaAtras","PagesItem","pasoActual","useHistory","enlace","addEventListener","preventDefault","parametros","empresa","cliente","getAttribute","ETAPAS","PASO3","SidemenuStyles","sidemenu","itemCnt","listStyle","sidemenuOpen","menu","sidemenuItemCnt","sidemenuItem","menuUsuario","perfilUsuario","divisorCnt","divisor","Sidemenu","menuMobile","GRUPOSAESA","QUEINESOMOS","INVERSIONISTA","INDICADORES","HERRAMIENTAS","CONTACTO","textoInformativoStyles","TextoInformativo","CaptchaV2","setTokenCaptchaV2","reiniciarCaptchaState","setReiniciarCaptchaState","recaptchaRef","useRef","reiniciarCaptcha","current","reset","intervalo","setInterval","tiempoRecargaV2","clearInterval","sitekey","onExpired","NotificacionService","solicitarNotificacionTer","estadoCaptchaV3","tokenCaptcha","email","tipoDeSuscripcion","solicitudDeTokenSeguridadBack","V3","tokenString","solicitudDeTokenSeguridadBackV2","V2","suscripcionNotificacionTer","removeItem","suscripcionCortes","CONFLICT","AcordeonNotificacionTerStyles","contenedorAcordeon","subtitulo","internoContenedor","botonAcordeon","borderAcordeonAbierto","inputNumero","inputRoot","inputInput","paddingLeft","contenedorCaptchaV2","textoCaptchaV2","recaptchaContainer","transformOrigin","ocultarCaptcha","contenedorGlobalSuscrito","alignSelf","contenedorTextosSuscrito","textoTituloSuscrito","subtituloTextoSuscrito","textoCorreoSuscrito","contendorSubTextosSuscritos","wordWrap","contenedorInput","SuscritoNotificacionTer","correo","TICK_CIRCLE","AcordeonNotificacionTer","captchaV3Estado","tokenCaptchaV3","estadoDeClienteSuscrito","clienteSuscritoTer","estadoAcordeonAbierto","acordeonNotificacionTerAbierto","tokenCaptchaV2","validarBoton","setValidarBoton","MAXIMO_CARACTERES_NUMERO_DE_CLIENTE","matches","REGEX_MAXIMO_OCHO_NUMEROS","setTouched","numeroClienteFiltrado","isValid","ARROW_UP","ARROW_DOWN","TextField","label","inputProps","nativeEvent","newEvent","emails","helperText","InputProps","classes","root","limitedValue","MINIMO_CARACTERES_NUMERO_DE_CLIENTE","disabled","AvisoPagoCortesStyles","avisoCorteCnt","noVistaAvisoCorteCnt","sinInfo","contenedorGrafico","grafico","objetoSobreponer","ovaloGrafica","porcentajeRecuperados","order","circuloVerde","contenedorPorcentaje","contenedorInternoOvaloGrafica","tituloClientesRecuperados","labelClientesRecuperados","contenedorPieDeGrafico","clientesSinServicio","AvisoPagoCortes","validacionClientesAfectados","objetoGrafico","colores","start","end","paddingAngle100porciento","strokeOpacity100porciento","strokeWidth100porciento","animacionActivada","graficoValido","porcentajeEn100porCiento","actualizarEstadoGrafico","validarGrafico","replaceAll","PieChart","entry","index","offset","stopColor","Pie","dataKey","cx","cy","innerRadius","outerRadius","paddingAngle","labelLine","startAngle","cornerRadius","strokeWidth","strokeOpacity","isAnimationActive","Cell","fill","TextoInferiorReportar","reportarCorte","open","obtenerLogo","tipoEmpresa","codEmpresa","SAESA_LOGO","FRONTEL_LOGO","EDELAYSEN_LOGO","LUZOSORNO_LOGO","GRUPOSAESA_LOGO","manejarLogo","cookieName","lastShown","nameEQ","ca","cookie","i","c","indexOf","getCookie","now","days","d","setTime","expires","toUTCString","setCookie","toISOString","ModalGlobalStyles","backdrop","modalGlobal","contenedorGlobal","tituloTextos","contenedorCerrar","contenedorTitulo","contenedorBotones","parrafosConLinks","textoLink","contenedorIcono","BotonCerrar","stylesGlobal","IconoCerrar","CLOSE_CIRCLE","ModalSitioNoDisponibleStyles","tituloTexto","imagenLogoSaesa","margenSuperiorTexto","element","ReactDOM","createPortal","desconexionSlice","createSlice","initialState","usuario","numeroTelefono","apellido","nombre","rut","numeroSolicitud","flagCargadoEstoySinLuz","captchaV2Estado","reducers","actualizarLogo","action","payload","actualizarFeatureFlagModoPEC","actualizarNumeroSolicitud","actualizarFeatureFlagCortesFuturos","actualizarSwitchCortesFuturos","actualizarEstadoModalPaginaNoDisponible","actualizarEstadoFlag","actualizarEstadoFlagEstoySinLuz","actualizarEstadoFlagNotificacionTer","actualizarTokenCaptchaV3","actualizarPasoActual","actions","store","configureStore","reducer","desconexionReducer","RouterConfig","PaginaMapaCortes","lazy","PaginaEstoySinLuz","fallback","MAPACORTESIFRAME","ESTOYSINLUZ","RootStyles","lineaTope","menuRoot","Root","actualizarLogoBody","validarNroCliente","FormValidation","validateRut","msg","exclusive","params","reference","resources","en","translation","es","i18n","initReactI18next","init","ns","AppStyles","variantSuccess","variantError","variantInfo","variantWarning","access_token","expires_in","token_type","userId","setUsuario","nuevoUsuario","auth","iniciarSesion","login","callback","String","cerrarSesion","usuarioAutenticado","date","jwt_decode","exp","authContext","createContext","AuthProvider","Provider","App","REACT_APP_INSIGHTS_CONNECTIONSTRING_KEY","ThemeProvider","maxSnack","autoHideDuration","anchorOrigin","vertical","horizontal","showTag","version","env","fullVersion","JSON","stringify","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","hostname","match","tagManagerArgs","gtmId","TagManager","render","StrictMode","navigator","serviceWorker","ready","registration","unregister","console","cantidadCaracteresMaximosSelect","ev","dataLayer","evento","attributes","eventLabel","eventCategory","categoria","eventId"],"mappings":"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","file":"static/js/main.1bfccf54.chunk.js","sourcesContent":["import { ReactPlugin } from '@microsoft/applicationinsights-react-js';\nimport { ApplicationInsights, DistributedTracingModes, ITelemetryItem } from '@microsoft/applicationinsights-web';\nimport { BrowserHistory } from 'history';\n\nlet reactPlugin: ReactPlugin;\nlet appInsights: any;\n\n/**\n * Create the App Insights Telemetry Service\n * @return {{reactPlugin: ReactPlugin, appInsights: Object, initialize: Function}} - Object\n */\nconst createTelemetryService = () => {\n /**\n * Initialize the Application Insights class\n * @param {string} connectionString - Application Insights Instrumentation Key\n * @param {Object} browserHistory - client's browser history, supplied by the withRouter HOC\n * @return {void}\n */\n const initialize = (connectionString: string, browserHistory: BrowserHistory) => {\n if (!browserHistory) {\n throw new Error('Could not initialize Telemetry Service');\n }\n if (!connectionString) {\n throw new Error('Instrumentation key not provided in ./src/telemetry-provider.jsx');\n }\n\n reactPlugin = new ReactPlugin();\n\n appInsights = new ApplicationInsights({\n config: {\n connectionString,\n maxBatchInterval: 0,\n disableFetchTracking: false,\n extensions: [reactPlugin],\n extensionConfig: {\n [reactPlugin.identifier]: {\n history: browserHistory,\n },\n },\n enableAutoRouteTracking: true,\n distributedTracingMode: DistributedTracingModes.W3C,\n samplingPercentage: Number(process.env.REACT_APP_TELEMETRY_SAMPLING_PERCENTAGE),\n },\n });\n\n appInsights.loadAppInsights();\n appInsights.addTelemetryInitializer((envelope: ITelemetryItem) => {\n envelope.tags = envelope.tags || [];\n envelope.tags.push({\n 'ai.cloud.role': process.env.REACT_APP_TELEMETRY_ROLE,\n });\n });\n };\n\n return { reactPlugin, appInsights, initialize };\n};\n\nexport const ai = createTelemetryService();\nexport const getAppInsights = () => appInsights;\n","export enum TipoColoresEnum {\n VERDE_CLARO = 'verdeClaro',\n VERDE_OSCURO = 'verdeOscuro',\n ROJO = 'rojo',\n AMARILLO = 'amarillo',\n GRIS_L93 = 'grisL93',\n GRIS_L83 = 'grisL83',\n GRIS_L63 = 'grisL63',\n GRIS_L43 = 'grisL43',\n}\n","export enum TipoEstadoActualTrackingCorteEnum {\n DEFAULT = '',\n ACTIVATED = 'activated',\n CONFIRMED = 'confirmed',\n NORMALIZED = 'normalized',\n ARRIBO_BRIGADA = 'ARRIBO_BRIGADA',\n SIN_FALLAS = 'SIN_FALLAS',\n}\n","export enum TipoLargoLineaEnum {\n LARGE = 'large',\n FULL = 'full',\n MEDIUM = 'medium',\n SMALL = 'small',\n}\n","export enum TipoTrackingCorteEnum {\n DEFAULT = '',\n IMPREVISTO = 'IMPREVISTO',\n PROGRAMADO = 'PROGRAMADO',\n}\n","export enum TIPOZOOM {\n DEFAULT = 6,\n ESCRITORIO_PEC = 12,\n MOBILE_PEC = 12,\n}\n","export enum TipoEstadoActualSecundarioTrackingCorteEnum {\n CONFIRMADO = 'CONFIRMADO',\n BRIGADA_ASIGNADA = 'BRIGADA_ASIGNADA',\n BRIGADA_EN_TERRENO = 'BRIGADA_EN_TERRENO',\n NORMALIZADO = 'NORMALIZADO',\n}\n","export enum EtapasNumero {\n DEFAULT = 0,\n PASO1 = 1,\n PASO2 = 2,\n PASO3 = 3,\n PASO4 = 4,\n}\n","export enum TipoCaptchaDesconexiones {\n V2 = 'desconexion-publico',\n V3 = 'desconexion-publico-v3',\n}\n","import axios from 'axios';\n\nconst mostrarLoading = () => {\n let contador: string | number | null = sessionStorage.getItem('loading');\n contador = parseInt(contador!, 10) + 1;\n sessionStorage.setItem('loading', contador.toString());\n\n const loading = document.getElementById('loading');\n return loading?.classList.add('backdrop--show');\n};\n\n/**\n * Función encargada de verificar si la url de la de notificación ter\n * @param url url a examinar\n * @returns true or false si es la url de notificación ter\n */\nconst checkSuscriocionTer = (url: string): boolean => url.includes('cortes/suscripcion-ter');\n\nconst AuthInterceptor = () => {\n const apiKey = `${process.env.REACT_APP_HEADER_API_KEY}`;\n\n /**\n * Constantes para ignorar el token\n */\n const publicIgnorePath = '/public';\n const regexFeatureFlagIgnorePath = '/featureFlag.json';\n\n axios.interceptors.request.use(request => {\n mostrarLoading();\n const token = localStorage.getItem('token');\n\n if (!request.url?.includes(regexFeatureFlagIgnorePath)) {\n request.headers['x-api-key'] = apiKey;\n\n if (!request.url?.includes(publicIgnorePath)) {\n if (!token || request.headers.Authorization) {\n request.headers.Authorization = request.headers.Authorization || null;\n } else {\n request.headers.Authorization = `Bearer ${token}`;\n }\n }\n }\n\n if (checkSuscriocionTer(request.url!)) {\n if (!token || request.headers.Authorization) {\n request.headers.Authorization = request.headers.Authorization || null;\n } else {\n request.headers.Authorization = `Bearer ${token}`;\n }\n }\n\n return request;\n });\n};\n\nexport default AuthInterceptor;\n","import axios from 'axios';\nimport { HttpStatusCodeEnum } from './HttpStatusCodeEnum';\n\nconst ocultarLoading = () => {\n let contador: string | number | null = sessionStorage.getItem('loading');\n contador = parseInt(contador!, 10);\n if (contador > 0) {\n contador = contador > 0 ? contador - 1 : 0;\n sessionStorage.setItem('loading', contador.toString());\n }\n\n if (contador === 0) {\n const loading: any = document.querySelectorAll('#loading');\n loading.forEach((item: any) => item.classList.remove('backdrop--show'));\n }\n};\n\nconst ErrorInterceptor = (t: any) => {\n axios.interceptors.response.use(\n response => {\n ocultarLoading();\n return response;\n },\n error => {\n ocultarLoading();\n const ERROR_MSG = t('errors.generic');\n if (error.response?.data) {\n if (error.response?.data?.message) {\n error.response.data.mensaje = error.response.data?.message || ERROR_MSG;\n const regexDesconexion = new RegExp(/desconexion/g);\n if (!regexDesconexion.test(error.response?.data?.message)) {\n error.response.data.mensaje = ERROR_MSG;\n }\n } else {\n error.response = { ...error.response, data: { mensaje: ERROR_MSG } };\n }\n } else {\n error.response = { ...error.response, data: { mensaje: ERROR_MSG } };\n }\n if (error.status === HttpStatusCodeEnum.INTERNAL_SERVER_ERROR) {\n error.response.data.mensaje = ERROR_MSG;\n }\n return Promise.reject(error);\n }\n );\n};\n\nexport default ErrorInterceptor;\n","import { useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst QueryParams = () => {\n const { search } = useLocation();\n return useMemo(() => new URLSearchParams(search), [search]);\n};\nexport default QueryParams;\n","import { withAITracking } from '@microsoft/applicationinsights-react-js';\nimport { BrowserHistory } from 'history';\nimport { Component, ReactNode } from 'react';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\nimport { ai } from './TelemetryService';\n/**\n * This Component provides telemetry with Azure App Insights\n *\n * NOTE: the package '@microsoft/applicationinsights-react-js' has a HOC withAITracking that requires this to be a Class Component rather than a Functional Component\n */\n\ninterface Props extends RouteComponentProps {\n history: BrowserHistory;\n children: ReactNode;\n conectionString: string;\n // eslint-disable-next-line react/require-default-props\n after?: () => void;\n}\n\ninterface State {\n initialized: boolean;\n}\n\nclass TelemetryProvider extends Component {\n constructor(props: Props) {\n super(props);\n this.state = {\n initialized: false,\n };\n }\n\n componentDidMount() {\n const { history, conectionString, after } = this.props;\n const { initialized } = this.state;\n const AppInsightsInstrumentationKey = conectionString;\n if (!initialized && Boolean(AppInsightsInstrumentationKey) && Boolean(history)) {\n ai.initialize(AppInsightsInstrumentationKey, history);\n this.setState({ initialized: true });\n }\n\n if (after) {\n after();\n }\n }\n\n render() {\n const { children } = this.props;\n return <>{children};\n }\n}\n\nexport default withRouter(withAITracking(ai.reactPlugin, TelemetryProvider));\n","/* eslint-disable prettier/prettier */\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\nexport const VERSION = {\n \"gitBuildGlobalVersion\": \"2.4.3\",\n \"gitBuildTime\": \"2025-03-17T20:06:20.715Z\",\n \"gitBuildVersion\": \"2.4.3\",\n \"gitCommitId\": \"42f469f\",\n \"gitCommitIdFull\": \"42f469fc333510cdac8f9602176e5b6d8ebe8e1f\",\n \"gitCommitTime\": \"2025-03-17T20:05:06.000Z\",\n \"version\": \"2.4.3-2025-03-17T20:05:06.000Z-(42f469f)\"\n};\n","import axios from 'axios';\nimport {\n BusquedaClientResponseModel,\n EnviarReclamoRequestModel,\n EstadoServicioResponseModel,\n TokenRequestDesconexionModel,\n TokenResponseDesconexionModel,\n TrackingCorteEstadosResponseModel,\n} from './models';\n\nclass DesconexionService {\n /**\n * Obtiene habilitadores generales de feature en la web\n * @returns retorna habilitadores para distintos feature\n */\n static obtenerFeatureFlag(): Promise {\n return axios.get(`${process.env.REACT_APP_ASSETS_URL}/data/featureFlag.json`).then(response => Promise.resolve(response.data));\n }\n\n /**\n * Metodo que obtiene data del poligono\n * @returns data\n * `${process.env.REACT_APP_CORTE}/${numeroOrden}`\n * mock: https://saesa.mockable.io/v1/public/cortes/orden/123456\n */\n static obtenerRespuestaCorte(numeroOrden: string): Promise {\n return axios.get(`${process.env.REACT_APP_CORTE}/${numeroOrden}`).then(response => Promise.resolve(response.data));\n }\n\n /**\n * Servicio que realiza busqueda por nro de cliente\n * @param nroCliente numero de cliente\n * @returns data\n */\n static busquedaNroCliente(nroCliente: string): Promise {\n return axios\n .get(`${process.env.REACT_APP_DESCONEXION}/public/${nroCliente}/ubicacion`)\n .then(response => Promise.resolve(response.data));\n }\n\n /**\n * Metodo que obtiene el token de la app\n * @param data request para token\n * @returns token desconexion\n */\n static obtenerTokenDesconexion(data: TokenRequestDesconexionModel): Promise {\n return axios.post(`${process.env.REACT_APP_DESCONEXION}/public/token`, data).then(response => Promise.resolve(response.data));\n }\n\n /**\n * Metodo que obtiene los datos del cliente\n * @param nroServicio request nroServicio\n * @returns respuesta del estado del servicio\n */\n static obtenerEstadoServicio(nroServicio: string): Promise {\n return axios.get(`${process.env.REACT_APP_DESCONEXION}/${nroServicio}/estado`).then(response => Promise.resolve(response.data));\n }\n\n /**\n * Metodo encargado de generar el ticket de reporte\n * @param data del reclamo\n * @returns respuesta de creación del ticket\n */\n static enviarReclamo(data: EnviarReclamoRequestModel): Promise {\n return axios.post(`${process.env.REACT_APP_DESCONEXION}/reclamo/sinluz`, data).then(response => Promise.resolve(response.data));\n }\n\n /**\n * Metodo que obtiene el listado de las regiones\n * @returns respuesta del estado del servicio\n */\n static obtenerListadoRegion(): Promise {\n return axios.get(`${process.env.REACT_APP_SUCURSAL}/info/region`).then(response => Promise.resolve(response.data));\n }\n\n /**\n * Metodo que obtiene el listado de las comunas\n * @param codigoRegion codigo de la region\n * @returns respuesta del estado del servicio\n */\n static obtenerListadoComunas(codigoRegion: string): Promise {\n return axios.get(`${process.env.REACT_APP_SUCURSAL}/info/comuna/${codigoRegion}`).then(response => Promise.resolve(response.data));\n }\n\n /**\n * Metodo encargado de generar la suscripción de notificacion TER\n * @param tipo es el tipo de suscripción\n * @param caso es el numero de caso que proviene del poligono\n * @param suscriptor email del suscriptor\n * @param numeroCliente número de cliente del suscriptor\n * @returns respuesta de notificación ter\n */\n static suscripcionNotificacionTer(tipo: string, caso: string, suscriptor: string, numeroCliente: string): Promise {\n return axios\n .post(`${process.env.REACT_APP_SUCRIPCION_TER}`, { tipo, caso, suscriptor, numeroCliente })\n .then(response => Promise.resolve(response.data));\n }\n\n /**\n * Función que realiza la petición a seguridad back para el captcha v3\n * @param captcha token que genera el captcha v3\n * @param tipo de seguridad back que se le aplicara\n * @param identificador numero de servicio\n * @returns token para generar id de pago\n */\n static solicitudDeTokenSeguridadBack(captcha: string, tipo: string, identificador: string): Promise {\n const body = {\n captcha,\n tipo,\n identificador,\n };\n return axios.post(`${process.env.REACT_APP_SEGURIDAD_URL}-v3`, body).then((response: any) => Promise.resolve(response.data));\n }\n\n /**\n * Función que realiza la petición a seguridad back para el captcha v2\n * @param captcha token que genera el captcha v2\n * @param tipo de seguridad back que se le aplicara\n * @param identificador numero de servicio\n * @returns token para generar id de pago\n */\n static solicitudDeTokenSeguridadBackV2(captcha: string, tipo: string, identificador: string): Promise {\n const body = {\n captcha,\n tipo,\n identificador,\n };\n return axios.post(`${process.env.REACT_APP_SEGURIDAD_URL}`, body).then((response: any) => Promise.resolve(response.data));\n }\n}\nexport default DesconexionService;\n","import { TipoEstadoActualTrackingCorteEnum, TipoTrackingCorteEnum } from 'config';\nimport { TipoCorteServicio } from 'config/tipoCorteServicioEnum';\nimport { TipoDistribuidora } from 'config/tipoDistribuidoraEnum';\nimport { TIPOCORTE } from 'config/tiposCorte';\nimport { InfoClienteModel } from 'models';\nimport { EstadoServicioResponseModel } from 'services/models';\n\n/**\n * Metodo que se encarga de validar si un dato existe.\n * @param dato valor del dato a validar.\n * @returns true si es valido, false si es invalido.\n */\nexport const esDatoValido = (dato: any) => dato && dato !== undefined && dato !== null;\n\n/**\n * Setea textos y url por distribuidora del cliente.\n */\nexport const setearDistribuidora = (infoCliente: InfoClienteModel) => {\n switch (infoCliente.codDistribuidora) {\n case TipoDistribuidora.SAESA:\n return { glosa: TipoDistribuidora.GLOSA_SAESA, url: process.env.REACT_APP_URL_HOME_SAESA! };\n case TipoDistribuidora.EDELAYSEN:\n return { glosa: TipoDistribuidora.GLOSA_EDELAYSEN, url: process.env.REACT_APP_URL_HOME_EDELAYSEN! };\n case TipoDistribuidora.FRONTEL:\n return { glosa: TipoDistribuidora.GLOSA_FRONTEL, url: process.env.REACT_APP_URL_HOME_FRONTEL! };\n case TipoDistribuidora.LUZ_OSORNO:\n return { glosa: TipoDistribuidora.GLOSA_LUZ_OSORNO, url: process.env.REACT_APP_URL_HOME_LUZOSORNO! };\n default:\n return { glosa: TipoDistribuidora.GLOSA_GRUPO_SAESA, url: process.env.REACT_APP_URL_GRUPO_SAESA! };\n }\n};\n\n/**\n * Valida el estado de corte y actualiza el estado de servicio del cliente según las condiciones.\n *\n * @param {EstadoServicioResponseModel} responseCodigo - Objeto que contiene información sobre el estado del servicio.\n * @param {InfoClienteModel} infoClienteModel - Objeto que representa información sobre el cliente y su servicio.\n * @returns {InfoClienteModel} - Objeto infoClienteModel actualizado con el estado de servicio modificado si corresponde.\n */\nexport const validarCorte = (responseCodigo: EstadoServicioResponseModel, infoClienteModel: InfoClienteModel) => {\n const corte = responseCodigo.cortes;\n const infoCliente = infoClienteModel;\n if (\n responseCodigo.codigoEstadoSuministro === TipoCorteServicio.NORMAL &&\n corte?.estadoActual === TipoEstadoActualTrackingCorteEnum.CONFIRMED\n ) {\n const tipoCorteMapping: { [key in TipoTrackingCorteEnum]: TIPOCORTE } = {\n [TipoTrackingCorteEnum.DEFAULT]: TIPOCORTE.DEFAULT,\n [TipoTrackingCorteEnum.PROGRAMADO]: TIPOCORTE.COD_CORTE_PROGRAMADO,\n [TipoTrackingCorteEnum.IMPREVISTO]: TIPOCORTE.COD_CORTE_IMPREVISTO,\n };\n if (corte?.tipo && corte.tipo in tipoCorteMapping) {\n infoCliente.estadoServicio = tipoCorteMapping[corte.tipo as TipoTrackingCorteEnum];\n }\n }\n return infoCliente;\n};\n","export const ROOT = '/';\nexport const DESCONEXION = '';\nexport const URL_ESTOY_SIN_LUZ = `${process.env.REACT_APP_URL_ESTOY_SIN_LUZ}`;\n","export default __webpack_public_path__ + \"static/media/saesa-error.1c5ab336.svg\";","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst NotfoundStyle = makeStyles((theme: Theme) =>\n createStyles({\n contenedor: {\n position: 'absolute',\n width: '100%',\n minHeight: '100vh',\n zIndex: -1,\n display: 'flex',\n alignItems: 'center',\n },\n contenido: {\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n marginLeft: '30%',\n [theme.breakpoints.down('lg')]: {\n marginLeft: '15%',\n },\n [theme.breakpoints.down('md')]: {\n marginLeft: '4%',\n },\n [theme.breakpoints.down('sm')]: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'baseline',\n marginTop: '10%',\n },\n [theme.breakpoints.down('xs')]: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'baseline',\n marginTop: '30%',\n },\n },\n texto: {\n maxWidth: '380px',\n [theme.breakpoints.down('md')]: {\n maxWidth: '300px',\n },\n [theme.breakpoints.down('sm')]: {\n textAlign: 'center',\n },\n },\n icono: {\n position: 'absolute',\n right: '0',\n [theme.breakpoints.down('md')]: {\n width: '80%',\n },\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n top: '300px',\n },\n },\n title: {\n color: 'var(--primario-morado)',\n },\n subtitle: {\n marginBottom: '1rem',\n color: 'var(--primario-morado)',\n },\n })\n);\n\nexport default NotfoundStyle;\n","import { ErrorInterceptor } from 'config';\nimport { ROOT } from 'navigation';\nimport { useTranslation } from 'react-i18next';\nimport { Redirect, Route, Switch } from 'react-router-dom';\nimport { MAPACORTES, RootPage } from 'root-page';\n\nconst RootRouterConfig = () => {\n const { t } = useTranslation();\n\n ErrorInterceptor(t);\n\n return (\n \n \n \n \n \n \n );\n};\n\nexport default RootRouterConfig;\n","export enum HttpStatusCodeEnum {\n OK = 200,\n BAD_REQUEST = 400,\n UNAUTHORIZED = 401,\n FORBBIDEN = 403,\n NOT_FOUND = 404,\n CONFLICT = 409,\n PRECONDITION_FAILED = 412,\n LIMIT_NUMBER_EXPIRATION = 417,\n INTERNAL_SERVER_ERROR = 500,\n}\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst HeaderStyles = makeStyles((theme: Theme) =>\n createStyles({\n logoImg: {\n height: 'inherit',\n },\n logo: {\n width: '160px',\n height: '60px',\n display: 'flex',\n alignItems: 'center',\n marginRight: 'auto',\n [theme.breakpoints.down('sm')]: {\n width: '110px',\n height: '36px',\n },\n },\n menuHeader: {\n display: 'flex',\n alignItems: 'center',\n margin: '0',\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n iconAbrirMenu: {\n display: 'block',\n stroke: 'var(--primario-azul-oscuro)',\n },\n iconCerrarMenu: {\n display: 'none',\n stroke: 'var(--primario-azul-oscuro)',\n },\n mostrarElemento: {\n display: 'block',\n },\n esconderElemento: {\n display: 'none',\n position: 'absolute',\n visibility: 'hidden',\n },\n item: {\n listStyleType: 'none',\n marginRight: '2.375rem',\n cursor: 'pointer',\n fontSize: '0.875rem',\n '&:last-child': {\n marginRight: '0',\n },\n },\n link: {\n color: 'var(--primario-azul-oscuro)',\n textDecoration: 'none',\n fontSize: '1.125rem',\n [theme.breakpoints.down('sm')]: {},\n },\n outlined: {\n color: 'var(--primario-morado)',\n backgroundColor: 'var(--blanco)',\n border: '2px solid var(--primario-morado)',\n borderWidth: '2px',\n '&:hover': {\n color: 'var(--primario-morado)',\n border: '2px solid var(--primario-morado)',\n backgroundColor: 'var(--hover-secundary)',\n },\n },\n menuItemActive: {\n display: 'none',\n },\n })\n);\n\nexport default HeaderStyles;\n","import { Hidden, IconButton } from '@material-ui/core';\nimport { CerrarIcon, MenuHamburguesaIcon, Strong } from '@saesa/ui-kit-front';\nimport clsx from 'clsx';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { actualizarEstadoMenuAbierto, RootState } from 'store';\nimport { CLIENTEHOGAR, CLIENTEMPRESA, SOMOSVECINOS } from '../../root-page/constants';\nimport useStyles from './HeaderStyles';\n\nconst Header = ({ className }: { className?: string }) => {\n const styles = useStyles();\n const { t } = useTranslation();\n const logo = useSelector((state: RootState) => state.desconexion.distribuidora);\n const dispatch = useDispatch();\n const menuAbierto = useSelector((state: RootState) => state.desconexion.menuAbierto);\n /**\n * Arreglo que contiene menu de navegacion de menu tope del header\n */\n const menuNavegacion = [\n {\n id: 0,\n option: t('desconexion:paginas.mapaCortes.home.menu.somosVecinos'),\n url: SOMOSVECINOS,\n },\n {\n id: 1,\n option: t('desconexion:paginas.mapaCortes.home.menu.clienteHogar'),\n url: CLIENTEHOGAR,\n },\n {\n id: 2,\n option: t('desconexion:paginas.mapaCortes.home.menu.clienteEmpresa'),\n url: CLIENTEMPRESA,\n },\n ];\n const abrirMenu = () => {\n dispatch(actualizarEstadoMenuAbierto({ menuAbierto: true }));\n };\n const cerrarMenu = () => {\n dispatch(actualizarEstadoMenuAbierto({ menuAbierto: false }));\n };\n return (\n
\n \n \"\"\n \n \n \n {\n cerrarMenu();\n }}\n className={clsx(styles.iconCerrarMenu, {\n [styles.mostrarElemento]: menuAbierto,\n })}\n data-testid=\"cerrar-menu-lateral\"\n >\n \n \n \n \n \n \n
\n );\n};\n\nHeader.defaultProps = {\n className: '',\n};\nexport default Header;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst InfoClienteStyles = makeStyles((theme: Theme) =>\n createStyles({\n servicio: {\n display: 'flex',\n background: 'hsla(var(--valor-primario-morado), 0.05)',\n borderRadius: '0.625rem',\n padding: '1.125rem 1rem',\n [theme.breakpoints.down('sm')]: {\n minWidth: 'initial',\n padding: '1.25rem .625rem',\n },\n },\n headerServicio: {\n display: 'flex',\n marginLeft: '1rem',\n marginRight: '15rem',\n },\n bodyServicio: {\n margin: '1rem 0 0 1rem',\n },\n contenedorEstado: {\n display: 'flex',\n flexDirection: 'column',\n gap: '6px',\n maxWidth: '70%',\n },\n numeroCliente: {\n display: 'flex',\n },\n calle: {\n display: 'flex',\n },\n comuna: {\n display: 'flex',\n },\n localidad: {\n display: 'flex',\n },\n estado: {\n display: 'flex',\n [theme.breakpoints.down('sm')]: {\n width: '200%',\n },\n },\n estadoActivo: {\n color: '#0B9D65',\n marginLeft: '0.25rem',\n fontWeight: 600,\n },\n estadoInactivo: {\n color: 'var(--rojo-error)',\n marginLeft: '0.25rem',\n fontWeight: 600,\n },\n estadoTransicion: {\n color: '#E08A00',\n marginLeft: '0.25rem',\n fontWeight: 600,\n },\n tituloCampo: {\n marginLeft: '0.25rem',\n },\n campo: {\n marginLeft: '0.25rem',\n },\n botonVolver: {\n padding: '0',\n height: '16px',\n textDecoration: 'none',\n },\n editar: {\n textAlign: 'right',\n color: 'var(--primario-morado)',\n fontSize: '14px',\n fontWeight: 600,\n },\n })\n);\n\nexport default InfoClienteStyles;\n","import { Hidden } from '@material-ui/core';\nimport { Typography } from '@saesa/ui-kit-front';\nimport { TipoCorteServicio } from 'config/tipoCorteServicioEnum';\nimport { InfoClienteModel } from 'models';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { TIPOCORTE } from 'config/tiposCorte';\nimport { PATH_ESTOY_SIN_LUZ } from 'root-page';\nimport useStyles from './InfoClienteStyles';\n\nconst InfoCliente = ({ className, infoCliente }: { className?: string; infoCliente: InfoClienteModel }) => {\n /**\n * Uso de estilos\n */\n const styles = useStyles();\n /**\n * Uso del i18n para traducciones\n */\n const { t } = useTranslation();\n\n /**\n * Valida con un switch el estado actual\n * @returns Retorna un RactNode\n */\n const contenidoPorTipo = () => {\n switch (infoCliente.estadoServicio) {\n case TipoCorteServicio.NORMAL:\n return (\n \n {t('componentes.detalleServicio.activo')}\n \n );\n case TipoCorteServicio.CORTADO:\n return (\n \n {t('componentes.detalleServicio.inactivo')}\n \n );\n case TipoCorteServicio.REPOSICION:\n return (\n \n {t('componentes.detalleServicio.enReposicion')}\n \n );\n case TipoCorteServicio.TRAMITE_CORTE:\n return (\n \n {t('componentes.detalleServicio.corteTramite')}\n \n );\n case TIPOCORTE.COD_CORTE_PROGRAMADO:\n return (\n \n {t('desconexion:paginas.estoySinLuz.paso2.corteProgramado.estadoCorte')}\n \n );\n case TIPOCORTE.COD_CORTE_IMPREVISTO:\n return (\n \n {t('desconexion:paginas.estoySinLuz.paso2.corteImprevisto.estadoCorte')}\n \n );\n default:\n return <>;\n }\n };\n /**\n * Obtiene contenido a renderizar\n */\n const [renderContenido, setRenderContenido] = useState(contenidoPorTipo());\n\n useEffect(() => {\n setRenderContenido(contenidoPorTipo());\n }, [infoCliente.estadoServicio]);\n\n return (\n
\n
\n
\n \n \n {t('componentes.detalleServicio.numeroCliente')}\n \n \n \n \n {t('componentes.detalleServicio.numeroClienteMobile')}\n \n \n \n {infoCliente.numeroCliente}\n \n
\n {infoCliente.codDistribuidora !== '' && (\n
\n \n {t('componentes.detalleServicio.comuna')}\n \n \n {infoCliente.comuna}\n \n
\n )}\n\n {infoCliente.codDistribuidora !== '' && (\n
\n \n {t('componentes.detalleServicio.localidad')}\n \n \n {infoCliente.localidad}\n \n
\n )}\n\n {infoCliente.codDistribuidora !== '' && (\n
\n \n {t('componentes.detalleServicio.estado')}\n \n {renderContenido}\n
\n )}\n
\n\n \n \n \n {t('componentes.detalleServicio.cambiarNumero')}\n \n \n \n \n {t('componentes.detalleServicio.cambiarNumeroMobile')}\n \n \n \n
\n );\n};\n\nInfoCliente.defaultProps = {\n className: '',\n};\n\nexport default InfoCliente;\n","import { TipoEstadoActualSecundarioTrackingCorteEnum, TipoEstadoActualTrackingCorteEnum, TipoTrackingCorteEnum } from 'config';\n\n/**\n * Ejemplo de respuesta de servicio de tracking.\n */\nexport const newResponseTracking = {\n clientesAfectadosTotales: '22',\n clientesNormalizados: '0',\n estadoActual: TipoEstadoActualTrackingCorteEnum.NORMALIZED,\n fechaArriboBrigada: '2022-07-01T11:28:25',\n fechaCreacionCaso: '',\n fechaFinCorte: '2022-07-01T11:30:00',\n fechaInicioCorte: '2022-07-01T08:43:52',\n motivo: 'Caída de alumbrado por choque de carros',\n tipo: TipoTrackingCorteEnum.IMPREVISTO,\n clientesRecuperados: '',\n clientesAfectadosIniciales: '',\n porcentajeClientesRecuperados: '',\n porcentajeClientesAunSinServicio: '',\n estadoActualSecundario: TipoEstadoActualSecundarioTrackingCorteEnum.CONFIRMADO,\n fechaActualizacion: '2022-07-01T11:30:00',\n};\n","import { endOfDay, format } from 'date-fns';\n\nconst LARGO_FORMATO_FECHA = 10;\nconst LARGO_FORMATO_FECHA_ISO = 19;\nconst FORMATO_FECHA_DIA_MES_ANIO = 'dd/MM/yyyy';\nconst LOCALE_ES_CL = 'es-CL';\n/**\n *\n * @param time Tiempo expresado en string\n * @returns Reemplaza guiones - por slash /\n */\nconst withSlash = (time: string) => time && time.replace(/-/g, '/');\n/**\n *\n * @param time Tiempo expresado en string\n * @returns Tiempo en String formateado de YYYY-MM-DD a DD/MM/YYYY\n */\nconst dateToString = (time: string) => {\n const timeFormatter = time\n ? `${new Date(withSlash(time)).toLocaleDateString(LOCALE_ES_CL, {\n hour12: false,\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n })}`\n : '';\n return timeFormatter.replace(/-/g, '/');\n};\n\n/**\n * Metodo que se encarga de validar si un dato existe.\n * @param dato valor del dato a validar.\n * @returns true si es valido, false si es invalido.\n */\nexport const esDatoValido = (dato: any) => dato && dato !== undefined && dato !== null;\n\n/**\n * Recibe una fecha de tipo string y la transforma en el formato dd/MM/yyyy\n * @param dato fecha enviada\n * @returns fecha formateada\n */\nexport const formatoFecha = (dato: string) => {\n if (!esDatoValido(dato)) {\n return '';\n }\n if (dato.length === LARGO_FORMATO_FECHA) {\n return dato && dateToString(dato);\n }\n if (dato.length === LARGO_FORMATO_FECHA_ISO) {\n return dato && format(endOfDay(new Date(dato)), FORMATO_FECHA_DIA_MES_ANIO);\n }\n return '';\n};\n\n/**\n * Recibe una fecha de tipo string y obtiene la hora\n * @param dato fecha enviada\n * @returns fecha formateada\n */\nexport const obtenerHora = (dato: any) => {\n if (dato !== null) return `${dato.split('T')[1].substring(0, 5)} hrs.`;\n return '';\n};\n\n/**\n * Recibe una fecha de tipo string y la transforma en el formato dd/MM/yyyy - HH:MM\n * @param dato fecha enviada\n * @returns fecha formateada\n */\nexport const formatoFechaConHora = (dato: string) => dato && `${formatoFecha(dato)} - ${obtenerHora(dato)}`;\n\n/**\n * Obtiene sin determinar si no viene fecha\n * @param dato fecha enviada\n * @param t componente traduccion\n * @returns retorna la fecha o el sin determinar\n */\nexport const fechaSinDeterminar = (dato: string, t: any) => dato || t('desconexion:paginas.tracking.corte.avisoPago.textos.sinDeterminar');\n\n/**\n * Función que permite realizar llevar al usuario a la parte inicial del modal\n */\nexport const scrollInicialModal = () => {\n // Obtener la ventana modal (ajusta el selector según estructura HTML)\n const ventanaModal = document.getElementById('modal-poligono');\n\n // Verificar si la ventana modal existe\n if (ventanaModal) {\n // Desplazar la ventana modal hasta el final\n ventanaModal.scrollTop = 0;\n }\n};\n","export default __webpack_public_path__ + \"static/media/cerrar-modal.d44b8ade.svg\";","export default __webpack_public_path__ + \"static/media/boton-volver.08d32def.svg\";","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst ModalStyles = makeStyles((theme: Theme) =>\n createStyles({\n caja: {\n borderRadius: '15px',\n position: 'fixed',\n width: '55vh',\n height: 'auto',\n minHeight: 'auto',\n maxHeight: '62vh',\n minWidth: '55vh',\n maxWidth: '55vh',\n color: 'black',\n background: '#FFFFFF;',\n zIndex: 7,\n marginLeft: '3.125rem',\n marginTop: '3vh',\n boxShadow: ' 0px 2px 20px rgba(9, 39, 84, 0.14)',\n display: 'flex',\n flexDirection: 'column',\n [theme.breakpoints.down('sm')]: {\n position: 'relative',\n marginLeft: '0vh',\n marginTop: '0vh',\n width: '100%',\n height: '100vh',\n minHeight: '100vh',\n maxHeight: '110vh',\n minWidth: '100%',\n maxWidth: 'auto',\n borderRadius: '0px',\n boxShadow: 'none',\n },\n },\n cajaIframe: {\n minHeight: '75vh !important',\n minWidth: '27% !important',\n [theme.breakpoints.down('sm')]: {\n minWidth: '100% !important',\n },\n },\n cuerpo: {\n overflowX: 'hidden',\n overflowY: 'auto',\n '&::-webkit-scrollbar': { width: '8px' },\n '&::-webkit-scrollbar-thumb': {\n background: '#D1D1D1',\n borderRadius: '40px',\n },\n '&::-webkit-scrollbar-track': {\n background: '#EAEBF0',\n borderTopLeftRadius: '10px',\n borderTopRightRadius: '10px',\n borderBottomRightRadius: '15px',\n borderBottomLeftRadius: '15px',\n },\n\n '&::-webkit-scrollbar-button:decrement': {\n height: '0px',\n display: 'block',\n background: 'transparent',\n borderTopRightRadius: '100%',\n borderTopLeftRadius: '100%',\n paddingTop: '100px',\n },\n\n '&::-webkit-scrollbar-button:end:increment': {\n display: 'block',\n height: '20px',\n background: 'transparent',\n borderTopRightRadius: '100%',\n borderTopLeftRadius: '100%',\n borderBottomRightRadius: '100%',\n },\n [theme.breakpoints.down('sm')]: {\n marginTop: '1vh',\n paddingBottom: '20vh',\n '&::-webkit-scrollbar': { display: 'none' },\n },\n },\n contenedorBoton: {\n display: 'flex',\n justifyContent: 'flex-end',\n paddingTop: '15px',\n paddingRight: '8px',\n },\n contenedorBotonImprevistos: {\n display: 'flex',\n position: 'absolute',\n justifyContent: 'flex-end',\n paddingTop: '20px',\n paddingRight: '15px',\n top: '0',\n right: '0',\n },\n contenedorBotonMobile: {\n display: 'flex',\n paddingTop: '1.5rem',\n marginLeft: '1.5rem',\n marginBottom: '1.5rem',\n },\n\n botonCerrar: {\n backgroundColor: 'transparent',\n border: 'none',\n position: 'absolute',\n top: '1rem',\n right: '0.3rem',\n },\n\n cajaTitulo: {\n marginTop: '0rem',\n marginLeft: '1.5rem',\n display: 'flex',\n alignItems: 'center',\n },\n textoTitulo: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '18px',\n },\n textoTituloImprevisto: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 700,\n fontSize: '21px',\n lineHeight: '28px',\n color: 'var(--secundario-azul-marino)',\n marginTop: '20px',\n marginBottom: '32px',\n },\n textoParrafo: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontSize: '14px',\n paddingTop: '2px',\n lineHeight: '18px',\n },\n sizeSmall: {\n padding: '1px',\n },\n linea: {\n border: '1px solid #EAEBF0',\n marginLeft: '1.5rem',\n marginRight: '1.5rem',\n marginTop: '1.3rem',\n },\n circuloRojo: {\n display: 'flex',\n width: '13px',\n height: '13px',\n backgroundColor: 'red',\n borderRadius: '50%',\n marginRight: '15px',\n },\n\n circuloNaranja: {\n display: 'flex',\n width: '13px',\n height: '13px',\n backgroundColor: '#E08A00',\n borderRadius: '50%',\n marginRight: '15px',\n },\n circuloAzul: {\n display: 'flex',\n width: '13px',\n height: '13px',\n backgroundColor: '#0285BF',\n borderRadius: '50%',\n marginRight: '15px',\n },\n circuloGris: {\n display: 'flex',\n width: '13px',\n height: '13px',\n backgroundColor: '#CCCFDB',\n borderRadius: '50%',\n marginRight: '15px',\n },\n\n children: {\n marginBottom: '30px',\n alignItems: 'center',\n marginLeft: '20px',\n marginRight: '20px',\n },\n tracking: {\n marginLeft: '3rem',\n marginRight: '1.5rem',\n },\n\n sinTracking: {\n alignItems: 'center',\n marginTop: '1rem',\n marginLeft: '1.1rem',\n marginRight: '1.1rem',\n backgroundColor: '#F4F4F4;',\n borderRadius: '10px',\n padding: '1.1rem',\n paddingBottom: '0.1rem',\n },\n\n cajaTextoNoTracking: {\n paddingBottom: '1rem',\n },\n\n contenedorMensaje: {\n marginTop: '1rem',\n marginLeft: '1.1rem',\n marginRight: '1.1rem',\n background: ' #F7F5FF',\n padding: '0.8rem',\n borderRadius: '0.5rem',\n display: 'flex',\n marginBottom: '2rem',\n\n [theme.breakpoints.down('sm')]: {\n width: 'auto',\n height: 'auto',\n marginBottom: '2rem',\n },\n },\n\n mensajeIcon: {\n '--icon-primary-dark': 'var(--primario-morado)',\n width: '1rem',\n height: '1rem',\n marginTop: '0.1rem',\n marginRight: '0.7rem',\n [theme.breakpoints.down('sm')]: {\n marginRight: '1rem',\n },\n },\n contenedorTextoIcono: {\n display: 'flex',\n },\n parrafo: {\n display: 'flex',\n },\n })\n);\n\nexport default ModalStyles;\n","import { Typography } from '@material-ui/core';\nimport cerrarModalLogo from 'assets/images/cerrar-modal.svg';\nimport volverModalLogo from 'assets/images/boton-volver.svg';\nimport IconButton from '@material-ui/core/IconButton';\nimport { InfoIcon, Loading } from '@saesa/ui-kit-front';\nimport { TIPOCORTE } from 'config/tiposCorte';\nimport { useTranslation } from 'react-i18next';\nimport { actualizarEstadoCaptchaV2, actualizarEstadoCaptchaV3 } from 'store';\nimport { useDispatch } from 'react-redux';\nimport { PATH_MAPA_IFRAME } from 'root-page';\nimport useStyles from './ModalStyles';\n\nconst ModalPoligono = ({\n titulo,\n setTitulo,\n setMostrarModal,\n setMostrarBuscador,\n estadoTracking,\n children,\n dataSinTracking,\n setDataSinTracking,\n setServicioCargado,\n setVentanaMobileState,\n activadorMobile,\n}: {\n titulo?: string;\n setTitulo?: any;\n setMostrarModal: any;\n setMostrarBuscador: any;\n estadoTracking?: any;\n children?: any;\n dataSinTracking?: any;\n setDataSinTracking?: any;\n setServicioCargado?: any;\n setVentanaMobileState?: any;\n activadorMobile?: any;\n}) => {\n /**\n * Pagina de estilos de componente.\n */\n const styles = useStyles();\n /**\n * Uso del i18n para traducciones.\n */\n const { t } = useTranslation();\n\n /**\n * Disparador para el selector\n */\n const dispatch = useDispatch();\n\n /**\n * Funcion para cerrar ventana modal y abrir buscador\n */\n const cerrarModal = () => {\n setMostrarModal(false);\n setMostrarBuscador(true);\n setServicioCargado(false);\n setTitulo('');\n dispatch(actualizarEstadoCaptchaV3(false));\n dispatch(actualizarEstadoCaptchaV2(false));\n if (dataSinTracking !== '') {\n setDataSinTracking('');\n }\n };\n\n /**\n * Funcion para obtener clase según el path\n */\n const obtenerClase = () => {\n if (window.location.pathname === PATH_MAPA_IFRAME) {\n return `${styles.caja} ${styles.cajaIframe}`;\n }\n\n return styles.caja;\n };\n\n /**\n * Funcion que permite volver a la ventana mobile\n */\n const volverModal = () => {\n setVentanaMobileState(true);\n setMostrarModal(false);\n setServicioCargado(false);\n };\n\n /**\n * Retorna el estilo del circulo segun sea el tipo de corte.\n *\n * @param tipo de corte\n * @returns Estilo de circulo asociado a corte\n */\n const tipoCorte = (tipo: string) => {\n let corte = '';\n switch (tipo) {\n case TIPOCORTE.CORTE_IMPREVISTO:\n corte = styles.circuloRojo;\n break;\n\n case TIPOCORTE.CORTE_PROGRAMADO:\n corte = styles.circuloNaranja;\n break;\n case TIPOCORTE.PROXIMO_CORTE_PROGRAMADO:\n corte = styles.circuloAzul;\n break;\n\n default:\n break;\n }\n return corte;\n };\n\n /**\n * Función que se encarga de dar el estilo correspondiente al boton de cerrar la ventana modal dependiendo el tipo de corte\n * @returns el estilo correspondiente para el tipo de corte\n */\n const obtenerContenedorBotones = () => {\n if (titulo !== TIPOCORTE.CORTE_IMPREVISTO || dataSinTracking) {\n return styles.contenedorBoton;\n }\n return styles.contenedorBotonImprevistos;\n };\n\n /**\n * Muestra vista inferior para informar al cliente cuando no hay información de tracking\n * asociado al corte.\n *\n * @returns Retorna vista para cuando no existe información desde tracking\n */\n const mostrarDataSinTracking = () =>\n dataSinTracking?.length > 1 ? (\n
\n
\n \n
\n\n
\n {t('desconexion:paginas.mapaCortes.modalTracking.infoSinTracking')}\n
\n
\n ) : (\n \n );\n\n const contenedoresBotonesModal = () =>\n activadorMobile ? (\n
\n \n \"Cerrar\"\n \n
\n ) : (\n
\n \n \"Cerrar\"\n \n
\n );\n\n /**\n * Función que decidi el titulo del modal\n * @returns Retorna titulo del modal\n */\n const tituloModal = () =>\n titulo === TIPOCORTE.PROXIMO_CORTE_PROGRAMADO ? (\n {titulo}\n ) : (\n \n {t('desconexion:paginas.mapaCortes.modalTracking.corteEnCurso', {\n total: titulo,\n })}\n \n );\n return (\n <>\n {titulo !== '' ? (\n
\n {contenedoresBotonesModal()}\n {titulo && (\n <>\n
\n {estadoTracking !== '' &&
}\n {dataSinTracking === '' && estadoTracking && tituloModal()}\n {titulo === TIPOCORTE.CORTE_IMPREVISTO && !activadorMobile && (\n \n {t('desconexion:paginas.mapaCortes.modalTracking.titulosModal.estadoDeTuServicio')}\n \n )}\n {dataSinTracking && {titulo}}\n
\n {estadoTracking !== '' &&
}\n \n )}\n\n
\n {estadoTracking &&
{estadoTracking}
}\n {children &&
{children}
}\n {dataSinTracking !== '' && (\n
\n {dataSinTracking.map((data: any) => (\n
\n {data.titulo}:\n {data.texto}\n
\n ))}\n
\n )}\n {mostrarDataSinTracking()}\n
\n
\n ) : (\n \n )}\n \n );\n};\n\nModalPoligono.defaultProps = {\n titulo: '',\n setTitulo: '',\n estadoTracking: '',\n children: '',\n dataSinTracking: '',\n setDataSinTracking: '',\n setServicioCargado: '',\n setVentanaMobileState: '',\n activadorMobile: '',\n};\n\nexport default ModalPoligono;\n","export enum TIPOCORTETITULO {\n CORTE_INESPERADO = 'IMPREVISTO',\n CORTE_PROGRAMADO = 'PROGRAMADO',\n CORTE_FUTURO = 'Próximo corte programado',\n}\n","import { createStyles, makeStyles } from '@material-ui/core';\nimport { theme } from '@saesa/ui-kit-front';\n\nconst VentanaMobileStyles = makeStyles(() =>\n createStyles({\n cajaVentana: {\n height: 'auto',\n minHeight: '225px',\n width: '100vw',\n minWidth: '100vw',\n color: 'black',\n background: '#FFFFFF;',\n position: 'fixed',\n zIndex: 25,\n bottom: 0,\n margin: 'auto',\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column',\n alignItems: 'flex-start',\n padding: '20px',\n gap: '16px',\n },\n\n circuloGris: {\n display: 'flex',\n width: '13px',\n height: '13px',\n backgroundColor: '#CCCFDB',\n borderRadius: '50%',\n marginRight: '15px',\n },\n\n contenedorBotonMobile: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n\n cajaTituloMobile: {\n marginTop: '0rem',\n display: 'flex',\n alignItems: 'center',\n },\n textoTituloMobile: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 600,\n fontSize: '16px',\n lineHeight: '18px',\n },\n textoParrafoMobile: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontSize: '14px',\n paddingTop: '2px',\n lineHeight: '18px',\n },\n sizeSmallMobile: {\n padding: '1px',\n },\n lineaMobile: {\n border: '1px solid #EAEBF0',\n width: '100%',\n marginTop: '1.3rem',\n },\n boton: {\n display: 'inline-flex',\n color: 'var(--blanco)',\n border: '2px solid transparent',\n boxShadow: 'unset',\n backgroundColor: 'var(--primario-morado)',\n borderRadius: '2.5rem',\n cursor: 'pointer',\n position: 'relative',\n alignItems: 'center',\n verticalAlign: 'middle',\n justifyContent: 'center',\n textDecoration: 'none',\n height: '2.813rem',\n padding: '14px 32px 13px 32px',\n minWidth: '64px',\n marginBottom: '1.12rem',\n transition:\n 'background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n '&:hover': {\n color: 'var(--blanco)',\n border: '2px solid var(--hover-primary)',\n backgroundColor: 'var(--hover-primary)',\n },\n [theme.breakpoints.down('sm')]: {\n width: '90vw',\n },\n },\n cajaBoton: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n cajaMobileInformacion: {\n display: 'flex',\n },\n\n textoTituloInformacion: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '18px',\n marginRight: '5px',\n },\n\n textoParrafoInformacion: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 400,\n fontSize: '14px',\n lineHeight: '18px',\n },\n cajaContenedoraInformacion: {\n display: 'flex',\n flexDirection: 'column',\n padding: '0px',\n gap: '8px',\n width: '335px',\n height: '44px',\n },\n textoBotonVerMasDetalles: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '18px',\n textAlign: 'center',\n color: '#F9F9FB',\n },\n contenedorTituloBoton: {\n width: '100%',\n },\n })\n);\n\nexport default VentanaMobileStyles;\n","import { TIPOCORTE } from 'config/tiposCorte';\nimport IconButton from '@material-ui/core/IconButton';\nimport cerrarModalLogo from 'assets/images/cerrar-modal.svg';\nimport { Typography, Button } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { actualizarEstadoModalMobileAbierto, actualizarEstadoModalMobileAbiertoCompleto } from 'store';\nimport { fechaSinDeterminar, formatoFechaConHora } from 'utils/trackingUtils';\nimport useStyles from './VentanaMobileStyles';\nimport useStylesModal from '../Modal/ModalStyles';\n\nconst VentanaMobile = ({\n titulo,\n setActivadorMobile,\n setVentanaMobileState,\n modalTracking,\n setMostrarModal,\n setServicioCargado,\n setMostrarBuscador,\n primeraData,\n segundaData,\n}: {\n titulo: string;\n setActivadorMobile: any;\n setVentanaMobileState: any;\n modalTracking: any;\n setMostrarModal: any;\n setServicioCargado: any;\n setMostrarBuscador: any;\n primeraData: any;\n segundaData: any;\n}) => {\n /**\n * Pagina de estilos de componente.\n */\n const styles = useStyles();\n /**\n * Pagina de estilos de componente modal.\n */\n const stylesModal = useStylesModal();\n\n /**\n * Uso del i18n para traducciones.\n */\n const { t } = useTranslation();\n\n /**\n * Disparador para el selector\n */\n const dispatch = useDispatch();\n\n const cerrarModal = () => {\n setActivadorMobile(false);\n setVentanaMobileState(false);\n setMostrarBuscador(true);\n setMostrarModal(false);\n dispatch(actualizarEstadoModalMobileAbierto({ modalMobileAbierto: false }));\n dispatch(actualizarEstadoModalMobileAbiertoCompleto({ modalMobileAbiertoCompleto: false }));\n };\n\n const verMasDetalles = () => {\n setActivadorMobile(true);\n setVentanaMobileState(false);\n setMostrarModal(true);\n setServicioCargado(true);\n dispatch(actualizarEstadoModalMobileAbiertoCompleto({ modalMobileAbiertoCompleto: true }));\n };\n\n /**\n * Retorna el estilo del circulo segun sea el tipo de corte.\n *\n * @param tipo de corte\n * @returns Estilo de circulo asociado a corte\n */\n const tipoCorte = (tipo: string) => {\n let corte = '';\n switch (tipo) {\n case TIPOCORTE.CORTE_IMPREVISTO:\n corte = stylesModal.circuloRojo;\n break;\n\n case TIPOCORTE.CORTE_PROGRAMADO:\n corte = stylesModal.circuloNaranja;\n break;\n case TIPOCORTE.PROXIMO_CORTE_PROGRAMADO:\n corte = stylesModal.circuloAzul;\n break;\n\n default:\n break;\n }\n return corte;\n };\n\n return (\n <>\n
\n
\n
\n \n \"Cerrar\"\n \n
\n {titulo && (\n <>\n
\n
\n {modalTracking &&\n (TIPOCORTE.PROXIMO_CORTE_PROGRAMADO === titulo ? (\n {titulo}\n ) : (\n \n {t('desconexion:paginas.mapaCortes.modalTracking.corteEnCurso', {\n total: titulo,\n })}\n \n ))}\n\n {modalTracking === false && {titulo}}\n
\n\n
\n \n )}\n
\n\n {modalTracking && (\n
\n
\n {/* Titulo pantalla modal con tracking */}\n {titulo === TIPOCORTE.CORTE_PROGRAMADO && (\n \n {t('desconexion:paginas.mapaCortes.modalMobile.tituloItemUnoProgramado')}\n \n )}\n\n {titulo === TIPOCORTE.PROXIMO_CORTE_PROGRAMADO && (\n \n {t('desconexion:paginas.mapaCortes.modalMobile.tituloItemUnoProgramadoFuturo')}\n \n )}\n {titulo !== TIPOCORTE.CORTE_IMPREVISTO && (\n \n {primeraData === t('desconexion:paginas.tracking.corte.avisoPago.textos.sinDeterminar')\n ? fechaSinDeterminar(primeraData, t)\n : formatoFechaConHora(primeraData)}\n \n )}\n
\n
\n \n {t('desconexion:paginas.mapaCortes.modalMobile.tituloItemDos')}\n \n\n \n {segundaData === t('desconexion:paginas.tracking.corte.avisoPago.textos.sinDeterminar')\n ? fechaSinDeterminar(segundaData, t)\n : formatoFechaConHora(segundaData)}\n \n
\n
\n )}\n\n {modalTracking === false && (\n
\n
\n {primeraData?.titulo}:\n\n {primeraData?.texto}\n
\n
\n {segundaData?.titulo}:\n\n {segundaData?.texto}\n
\n
\n )}\n\n
\n {\n verMasDetalles();\n }}\n className={styles.boton}\n data-testid=\"dataTestId\"\n >\n \n {t('desconexion:paginas.mapaCortes.modalMobile.botonDetalles')}\n \n \n
\n
\n \n );\n};\n\nexport default VentanaMobile;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst VistasCorteStyles = makeStyles((theme: Theme) =>\n createStyles({\n numeroServicio: {\n width: '290px',\n display: 'flex',\n margin: '0 auto',\n marginBottom: '1.5rem',\n [theme.breakpoints.down('sm')]: {\n margin: '',\n },\n },\n stepper: {\n justifyContent: 'center',\n marginBottom: '2rem',\n },\n stepperCorte: {\n justifyContent: 'center',\n marginBottom: '2rem',\n [theme.breakpoints.down('xs')]: {\n marginBottom: 0,\n },\n },\n botonIr: {\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n },\n },\n input: {\n maxWidth: '396px',\n },\n recaptcha: {\n width: '280px',\n margin: '0 auto',\n transform: 'translateX(-11px)',\n marginBottom: '2rem',\n },\n tooltip: {\n margin: '0',\n padding: '0',\n height: '30px',\n zIndex: 2,\n },\n tooltipIcon: {\n '--icon-primary-dark': 'var(--primario-morado)',\n },\n etapas: {\n margin: '2.75rem auto 0 auto',\n width: '600px',\n [theme.breakpoints.down('sm')]: {\n width: 'auto',\n marginTop: '0',\n },\n },\n textos: {\n maxWidth: '490px',\n margin: '0 auto',\n },\n descripcion: {\n margin: '.5rem 0 2.125rem',\n textAlign: 'center',\n },\n imgTooltip: {\n margin: '0 auto',\n },\n textoInformativo: {\n marginBottom: '1rem',\n maxWidth: '800px',\n [theme.breakpoints.down('sm')]: {\n marginBottom: '1.5rem',\n },\n },\n avisoPago: {\n margin: '0 auto',\n maxWidth: '712px',\n },\n reportarCorteCnt: {\n width: '100%',\n textAlign: 'center',\n marginTop: '2rem',\n },\n btnReportar: {\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n textoCorte: {\n marginBottom: '1rem',\n },\n iconReportar: {\n marginLeft: '0.5rem',\n '--icon-primary-light': 'var(--primario-morado)',\n },\n infoCnt: {\n display: 'flex',\n flexFlow: 'column',\n alignItems: 'Center',\n justifyContent: 'center',\n position: 'relative',\n },\n iconoManoArriba: {\n margin: '2.25rem auto 2.375rem auto',\n '--icon-primary-dark': 'hsla(var(--valor-primario-morado), 0.5)',\n '--icon-primary-light': 'hsla(var(--valor-primario-morado), 0.5)',\n '--icon-purple': 'var(--secundario-azul-marino)',\n [theme.breakpoints.down('sm')]: {\n margin: '1.875rem auto 1rem auto',\n },\n },\n line: {\n width: '100%',\n maxWidth: 'calc(100% - 345px)',\n position: 'absolute',\n left: '50%',\n bottom: '30%',\n height: '1px',\n background: 'var(--gris-l93)',\n transform: 'translateX(-50%)',\n [theme.breakpoints.down('sm')]: {\n maxWidth: '90%',\n bottom: '36%',\n },\n },\n info: {\n textAlign: 'center',\n margin: '1rem 0 1rem',\n [theme.breakpoints.down('sm')]: {\n margin: '1rem 0 1rem',\n },\n },\n formCnt: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexFlow: 'column',\n },\n })\n);\n\nexport default VistasCorteStyles;\n","import { TIPOZOOM } from 'config';\n\n/**\n *\n * @param mobile define si es mobile\n * @param pec si es pec\n * @returns el valor que depende si es pec\n */\nexport const obtenerZoom = (mobile: any, pec: boolean): number => {\n switch (true) {\n case !mobile && pec:\n return TIPOZOOM.ESCRITORIO_PEC;\n case mobile && pec:\n return TIPOZOOM.MOBILE_PEC;\n default:\n return TIPOZOOM.DEFAULT;\n }\n};\n","import { TipoEstadoActualSecundarioTrackingCorteEnum } from 'config';\nimport { TIPOCORTE } from 'config/tiposCorte';\n\n/**\n * Función que determina si un valor es no valido\n * @param data parametro que sera evaluado\n * @returns un valor boleano con el estado de no valido\n */\nexport const datoNoValido = (data: string | undefined | null): boolean => data === null || data === undefined || data.trim() === '';\n\n/**\n * Función que determina si un corte es imprevisto\n * @param corte tipo de corte\n * @returns un boleano con el estado de si es corte imprevisto\n */\nexport const esCorteImprevisto = (corte: any): boolean => corte === TIPOCORTE.CORTE_IMPREVISTO;\n\n/**\n * Función que determina si un corte no es imprevisto\n * @param corte tipo de corte\n * @returns un boleano con el estado de si no es corte imprevisto\n */\nexport const noEsCorteImprevisto = (corte: any): boolean => corte !== TIPOCORTE.CORTE_IMPREVISTO;\n\n/**\n * Función que determina si un corte es imprevisto y viene sin arribo de brigada\n * @param corte tipo de corte\n * @param arriboBrigada fecha arribo briigada\n * @param estadoActualSecundario estado secundario\n * @returns un boleano con el estado de si es corte imprevisto y sin arribo de brigada\n */\nexport const esCorteImprevistoSinArriboBrigada = (corte: any, arriboBrigada: any, estadoActualSecundario: any): boolean =>\n (esCorteImprevisto(corte) && (arriboBrigada === null || arriboBrigada === undefined || arriboBrigada.trim() === '')) ||\n (esCorteImprevisto(corte) && estadoActualSecundario === TipoEstadoActualSecundarioTrackingCorteEnum.CONFIRMADO);\n\n/**\n * Función que determina si un corte es imprevisto y viene con arribo de brigada\n * @param corte tipo de corte\n * @param arriboBrigada fecha arribo briigada\n * @param estadoActualSecundario estado secundario\n * @returns un boleano con el estado de si es corte imprevisto y con arribo de brigada\n */\nexport const esCorteImprevistoConArriboBrigada = (corte: any, arriboBrigada: any, estadoActualSecundario: any): boolean => {\n const tieneArriboBrigadaValido = !datoNoValido(arriboBrigada);\n const esCorteImprevistoCondicion = esCorteImprevisto(corte);\n\n return (\n (esCorteImprevistoCondicion &&\n tieneArriboBrigadaValido &&\n estadoActualSecundario !== TipoEstadoActualSecundarioTrackingCorteEnum.CONFIRMADO) ||\n (esCorteImprevistoCondicion &&\n tieneArriboBrigadaValido &&\n estadoActualSecundario === TipoEstadoActualSecundarioTrackingCorteEnum.NORMALIZADO)\n );\n};\n\n/**\n * Función para determinar si el estado es brigada en terreno\n * @param estadoActualSecundario tipo de estado del corte\n * @returns boleano que retorna si la brigada esta en terreno\n */\nexport const esBrigadaEnTerreno = (estadoActualSecundario: any): boolean =>\n estadoActualSecundario === TipoEstadoActualSecundarioTrackingCorteEnum.BRIGADA_EN_TERRENO ||\n estadoActualSecundario === TipoEstadoActualSecundarioTrackingCorteEnum.NORMALIZADO;\n\n/**\n * Función para determinar si el estado es brigada asignada\n * @param estadoActualSecundario tipo de estado del corte\n * @returns boleano que retorna si la brigada esta asignada\n */\nexport const esBrigadaAsignada = (estadoActualSecundario: any): boolean =>\n estadoActualSecundario === TipoEstadoActualSecundarioTrackingCorteEnum.BRIGADA_ASIGNADA &&\n estadoActualSecundario !== TipoEstadoActualSecundarioTrackingCorteEnum.NORMALIZADO;\n","import { addMinutes, isBefore } from 'date-fns';\nimport { LOCALE_EN_US, zonaHoraria } from './constants';\n\n/**\n * Comprueba si una hora proporcionada está vencida en comparación con la hora actual en Chile.\n * @param hora La hora proporcionada en formato ISO 8601.\n * @returns true si la hora proporcionada está vencida (anterior a la hora actual en Chile), false de lo contrario.\n */\nexport const esFechaVencida = (hora: string): boolean => {\n // Verificar si la hora es una cadena vacía o contiene solo espacios\n if (hora !== undefined && hora !== null)\n if (!hora.trim()) {\n return true;\n }\n\n // Obtener la hora actual en Chile\n const horaActualChile = new Date().toLocaleString(LOCALE_EN_US, { timeZone: zonaHoraria });\n\n // Convertir la hora proporcionada a un objeto Date\n const horaProporcionada = new Date(hora);\n\n // Comparar las horas y devolver true si la hora proporcionada es menor que la hora actual en Chile\n return isBefore(addMinutes(horaProporcionada, 1), new Date(horaActualChile));\n};\n","import { createStyles, makeStyles } from '@material-ui/core';\nimport { theme } from '@saesa/ui-kit-front';\n\nconst DisclaimerStyles = makeStyles(() =>\n createStyles({\n card: {\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'row',\n padding: '12px 20px 12px 12px',\n gap: '14px',\n height: '64px',\n background: '#FFF0F3',\n border: '1px solid var(--rojo-error)',\n borderRadius: '10px',\n flexWrap: 'wrap',\n alignItems: 'center',\n marginBottom: '36px',\n paddingRight: 'inherit',\n [theme.breakpoints.down('sm')]: { height: 'auto' },\n },\n\n frame: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'flex-start',\n padding: 0,\n gap: '0.260416vw',\n [theme.breakpoints.down('sm')]: { gap: '4px' },\n },\n icono: {\n display: 'flex',\n maxWidth: '1.822vw',\n [theme.breakpoints.down('sm')]: { maxWidth: '28px' },\n },\n text: {\n fontFamily: 'Neutrif Studio',\n fontWeight: 600,\n fontSize: '0.9114583333333334vw',\n lineHeight: ' 1.171875vw',\n color: 'var(--gris-l3)',\n [theme.breakpoints.down('sm')]: { fontSize: '14px', lineHeight: '18px' },\n },\n subtext: {\n fontFamily: 'Neutrif Studio',\n fontWeight: 400,\n fontSize: '0.78125vw',\n lineHeight: '1.0416vw',\n color: 'var(--gris-l43)',\n [theme.breakpoints.down('sm')]: { fontSize: '12px', lineHeight: '16px' },\n },\n })\n);\n\nexport default DisclaimerStyles;\n","import { Typography, Box } from '@material-ui/core';\nimport { alerta } from 'assets/images';\nimport { useTranslation } from 'react-i18next';\nimport useStyles from './DisclaimerStyles';\n\nconst Disclaimer = ({ horaActualizacion }: { horaActualizacion: string }) => {\n /**\n * Variable que maneja el uso de estilos.\n */\n const styles = useStyles();\n\n /**\n * Uso del traductor\n */\n const { t } = useTranslation();\n\n return (\n \n \"alerta\"\n \n {t('desconexion:paginas.mapaCortes.modalTracking.disclaimer.imprevistos.titulo')}\n {horaActualizacion != null && horaActualizacion !== '' && (\n \n {t('desconexion:paginas.mapaCortes.modalTracking.disclaimer.imprevistos.subTitulo')}\n {`${horaActualizacion} ${t('desconexion:paginas.mapaCortes.modalTracking.disclaimer.imprevistos.fechaHoras')}`}\n \n )}\n \n \n );\n};\n\nexport default Disclaimer;\n","import { createStyles, makeStyles } from '@material-ui/core';\nimport { theme } from '@saesa/ui-kit-front';\n\nconst ColorBallsStyles = makeStyles(() =>\n createStyles({\n contenedor: {\n display: 'flex',\n flexDirection: 'row',\n gap: '16px',\n marginBottom: '20px',\n marginLeft: '28px',\n width: 'calc(100% - 28px)',\n },\n\n contenedorInterno: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n flexWrap: 'wrap',\n alignItems: 'center',\n marginTop: '5px',\n },\n contenedorIconoPrimero: {\n backgroundColor: 'var(--rojo-error)',\n borderRadius: '50%',\n width: '40px',\n height: '40px',\n display: 'flex',\n alignContent: 'center',\n flexWrap: 'wrap',\n justifyContent: 'center',\n },\n\n contenedorIconoSegundo: {\n backgroundColor: 'var(--gris-l63)',\n borderRadius: '50%',\n width: '40px',\n height: '40px',\n display: 'flex',\n alignContent: 'center',\n flexWrap: 'wrap',\n justifyContent: 'center',\n },\n contenedorIconoFinalBrigada: {\n backgroundColor: 'var(--gris-l83)',\n borderRadius: '50%',\n width: '40px',\n height: '40px',\n display: 'flex',\n alignContent: 'center',\n flexWrap: 'wrap',\n justifyContent: 'center',\n },\n contenedorIconoCirculoSinIcono: {\n backgroundColor: 'var(--rojo-error)',\n borderRadius: '50%',\n width: '20px',\n height: '20px',\n display: 'flex',\n alignContent: 'center',\n flexWrap: 'wrap',\n justifyContent: 'center',\n marginTop: '-1px',\n marginBottom: '-1px',\n },\n contenedorIconoCirculoSinIconoSinBrigadaTerreno: {\n backgroundColor: 'var(--gris-l63)',\n borderRadius: '50%',\n width: '20px',\n height: '20px',\n display: 'flex',\n alignContent: 'center',\n flexWrap: 'wrap',\n justifyContent: 'center',\n },\n contenedorLinea: {\n width: '6px',\n height: '54px',\n position: 'relative',\n margin: '0px',\n },\n\n contenedorLineaUnionSinBrigadaTerreno: {\n width: '6px',\n height: '54px',\n position: 'relative',\n margin: '0px',\n backgroundColor: 'var(--gris-l93)',\n },\n parteSuperiorLinea: {\n width: '100%',\n height: '50%',\n backgroundColor: 'var(--rojo-l50)',\n position: 'absolute',\n top: 0,\n borderBottomLeftRadius: '5px',\n borderBottomRightRadius: '5px',\n },\n parteInferiorLinea: {\n width: '100%',\n height: '100%',\n backgroundColor: 'var(--gris-l93)',\n },\n contenedorLineaBrigada: {\n width: '6px',\n height: '46px',\n position: 'relative',\n margin: '0px',\n },\n contenedorSegundaLinea: {\n width: '6px',\n height: '36px',\n position: 'relative',\n margin: '0px',\n },\n contenedorSegundaLineaTerreno: {\n width: '6px',\n height: '30px',\n position: 'relative',\n margin: '0px',\n },\n contenedorTerceraLinea: {\n width: '6px',\n height: '50px',\n position: 'relative',\n margin: '0px',\n },\n contenedorTerceraLineaSinTerreno: {\n width: '6px',\n height: '67px',\n position: 'relative',\n margin: '0px',\n },\n parteInferiorLineaBrigada: {\n width: '100%',\n height: '100%',\n backgroundColor: 'var(--rojo-l50)',\n },\n\n parteInferiorSegundaLinea: {\n width: '100%',\n height: '100%',\n backgroundColor: 'var(--rojo-l50)',\n },\n\n lineaUnionPrimeraEtapa: {\n width: '5px',\n height: '54px',\n background: 'linear-gradient(to top, var(--gris-l93) 50%, var(--rojo-l50) 50%)',\n margin: '0px',\n },\n textoGlobal: {\n fontFamily: 'Neutrif Studio',\n },\n tituloConfirmado: {\n fontWeight: 600,\n fontSize: '0.911vw',\n lineHeight: '18px',\n color: 'var(--rojo-error)',\n [theme.breakpoints.down('sm')]: {\n fontSize: '14px',\n },\n },\n tituloReposicion: {\n fontWeight: 600,\n fontSize: '0.911vw',\n lineHeight: '18px',\n color: 'var(--gris-l43)',\n [theme.breakpoints.down('sm')]: {\n fontSize: '14px',\n },\n },\n tituloBrigadaSinTerreno: {\n fontWeight: 600,\n fontSize: '0.911vw',\n lineHeight: '18px',\n color: 'var(--gris-l43)',\n [theme.breakpoints.down('sm')]: {\n fontSize: '14px',\n },\n },\n tituloBrigada: {\n fontWeight: 600,\n fontSize: '0.911vw',\n lineHeight: '18px',\n color: 'var(--gris-l3)',\n [theme.breakpoints.down('sm')]: {\n fontSize: '14px',\n },\n },\n complementoBrigadaAsignada: {\n marginTop: '42px',\n marginBottom: '27px',\n },\n complementoBrigadaAsignadaSinTerreno: {\n marginTop: '31px',\n },\n complementoBrigadaAsignadaSinTerrenoTexto: {\n marginBottom: '52px',\n },\n textoHoraReposicion: {\n fontWeight: 400,\n fontSize: '0.78125vw',\n lineHeight: '16px',\n color: 'var(--gris-l43)',\n [theme.breakpoints.down('sm')]: {\n fontSize: '12px',\n },\n },\n textoPrincipalMotivoCorte: {\n fontWeight: 600,\n fontSize: '0.78125vw',\n lineHeight: '0px',\n color: 'var(--gris-l3)',\n display: 'inline',\n [theme.breakpoints.down('sm')]: {\n fontSize: '12px',\n },\n },\n textoPrincipalBrigadaTerreno: {\n fontWeight: 400,\n fontSize: '0.78125vw',\n lineHeight: '0px',\n color: 'var(--gris-l3)',\n display: 'inline',\n [theme.breakpoints.down('sm')]: {\n fontSize: '12px',\n },\n },\n textoPrincipalBrigadaTerrenoLink: {\n cursor: 'pointer',\n fontWeight: 600,\n fontSize: '0.78125vw',\n lineHeight: '0px',\n color: 'var(--primario-morado)',\n display: 'inline',\n textDecoration: 'underline',\n userSelect: 'none',\n [theme.breakpoints.down('sm')]: {\n fontSize: '12px',\n },\n },\n textoMotivoCorte: {\n fontWeight: 400,\n fontSize: '0.78125vw',\n lineHeight: '0px',\n color: 'var(--gris-l3)',\n display: 'inline',\n [theme.breakpoints.down('sm')]: {\n fontSize: '12px',\n },\n },\n\n contenedorTextosMotivoCorte: {\n display: 'block',\n lineHeight: '16px',\n [theme.breakpoints.down('sm')]: {},\n },\n contenedorTextos: {\n display: 'flex',\n flexDirection: 'column',\n gap: '48px',\n [theme.breakpoints.down('sm')]: {\n maxWidth: '80%',\n },\n },\n contenedorInternoBolaCorte: {\n display: 'flex',\n },\n contenedorPrimerosTexto: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n padding: '0px',\n gap: '4px',\n width: '16.2760vw',\n height: '54px',\n flex: 'none',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n contenedorTextosBrigada: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n padding: '0px',\n width: '16.2760vw',\n flex: 'none',\n [theme.breakpoints.down('sm')]: {\n width: '98%',\n height: '169px',\n },\n },\n contenedorSegundosTexto: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n padding: '0px',\n gap: '4px',\n width: '251px',\n height: '54px',\n flex: 'none',\n },\n\n contenedorTextoReposicion: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n padding: '0px',\n gap: '4px',\n height: '54px',\n flex: 'none',\n },\n complementoTextoReposicionEnTerreno: {\n marginTop: '-18px',\n },\n tituloReposicionReposicionSinTerreno: {\n marginTop: '7px',\n },\n complementoTextoReposicionEnTerrenoSinGrafica: {\n marginTop: '-4px',\n [theme.breakpoints.down('sm')]: {\n marginTop: '-19px',\n },\n },\n\n contenedorTextosSecundariosBrigadaEnTerreno: {\n marginLeft: '8px',\n },\n })\n);\n\nexport default ColorBallsStyles;\n","import { Typography } from '@material-ui/core';\nimport { fechaSinDeterminar, formatoFechaConHora } from 'utils/trackingUtils';\nimport { useTranslation } from 'react-i18next';\nimport { useEffect, useState } from 'react';\nimport { datoNoValido } from 'utils/colorBallsUtils';\nimport useStyles from './ColorBallsStyles';\n\nconst ColorBallsImprevistoSinBrigada = ({ iconoInicio, iconoFinal, data }: { iconoInicio: string; iconoFinal: string; data: any }) => {\n /**\n * Variable que maneja el uso de estilos.\n */\n const styles = useStyles();\n\n /**\n * Uso del traductor\n */\n const { t } = useTranslation();\n\n /**\n * Variable de estado que contiene el estado de la data si es invalida para el motivo\n */\n const [dataInvalidaMotivo, setDataInvalidaMotivo] = useState(false);\n\n /**\n * UseEffect inicializador\n * data es la respuesta del servicio que espera como prop el componente\n */\n useEffect(() => {\n setDataInvalidaMotivo(datoNoValido(data.motivo));\n }, [data]);\n\n return (\n
\n
\n
\n \"corte\"\n
\n
\n
\n
\n
\n
\n \"reposicion\"\n
\n
\n
\n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.corteConfirmado')}\n \n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.motivoCorte')}{' '}\n \n \n {dataInvalidaMotivo ? t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.textos.sinDeterminar') : data.motivo}\n \n
\n
\n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.reposicionServicio')}\n \n {fechaSinDeterminar(formatoFechaConHora(data.fechaFinCorte), t)}\n
\n
\n
\n );\n};\n\nexport default ColorBallsImprevistoSinBrigada;\n","import { Typography } from '@material-ui/core';\nimport { fechaSinDeterminar, formatoFechaConHora } from 'utils/trackingUtils';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { RootState } from 'store';\nimport { useEffect, useState } from 'react';\nimport { datoNoValido, esBrigadaAsignada, esBrigadaEnTerreno } from 'utils/colorBallsUtils';\nimport useStyles from './ColorBallsStyles';\n\nconst ColorBallsImprevistoConBrigada = ({\n iconoInicial,\n iconoMedio,\n iconoFinal,\n data,\n}: {\n iconoInicial: any;\n iconoMedio: any;\n iconoFinal: any;\n data: any;\n}) => {\n /**\n * Variable que maneja el uso de estilos.\n */\n const styles = useStyles();\n\n /**\n * Uso del traductor\n */\n const { t } = useTranslation();\n\n /**\n * Variable de estado que contiene el estado de la data si es invalida para el motivo\n */\n const [dataInvalidaMotivo, setDataInvalidaMotivo] = useState(false);\n\n /**\n * Obtiene el valor del switch de cortes futuros\n */\n const estadoGrafico = useSelector((state: RootState) => state.desconexion.estadoGrafico);\n\n /**\n * UseEffect inicializador\n * data es la respuesta del servicio que espera como prop el componente\n */\n useEffect(() => {\n setDataInvalidaMotivo(datoNoValido(data.motivo));\n }, [data]);\n\n /**\n * Función que permite realizar llevar al usuario a la parte final del modal\n */\n const verClientesAfectados = () => {\n // Obtener la ventana modal (ajusta el selector según estructura HTML)\n const ventanaModal = document.getElementById('modal-poligono');\n\n // Verificar si la ventana modal existe\n if (ventanaModal) {\n // Obtener la altura total de la ventana modal\n const alturaTotalVentanaModal = ventanaModal.scrollHeight;\n\n // Desplazar la ventana modal hasta el final\n ventanaModal.scrollTop = alturaTotalVentanaModal;\n }\n };\n\n /**\n * Función que permite dar estilos a reposicion final\n * @param estadoActualSecundario estado actual secundario\n * @param estadoGraficos estado del grafico\n * @returns estilo correspondiente\n */\n function determinarEstiloFinal(estadoActualSecundario: any, estadoGraficos: any) {\n switch (true) {\n case esBrigadaEnTerreno(estadoActualSecundario) && estadoGraficos:\n return styles.complementoTextoReposicionEnTerreno;\n case esBrigadaEnTerreno(estadoActualSecundario) && !estadoGraficos:\n return styles.complementoTextoReposicionEnTerrenoSinGrafica;\n default:\n return styles.tituloReposicionReposicionSinTerreno;\n }\n }\n\n return (\n
\n
\n
\n \"corte\"\n
\n
\n
\n
\n
\n \"reparar\"\n
\n \n
\n
\n
\n\n {esBrigadaEnTerreno(data.estadoActualSecundario) ? (\n <>\n
\n
\n
\n
\n
\n
\n
\n
\n \n ) : (\n <>\n
\n
\n
\n
\n
\n
\n \n )}\n
\n \"reposicion\"\n
\n
\n
\n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.corteConfirmado')}\n \n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.motivoCorte')}\n \n \n {dataInvalidaMotivo ? t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.textos.sinDeterminar') : data.motivo}\n \n
\n
\n\n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.trabajosReposicion')}\n \n {esBrigadaAsignada(data.estadoActualSecundario) && (\n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.asignacionBrigada')}\n \n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.textos.asignacionBrigada')}\n \n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.brigadaEnTerreno')}\n \n
\n )}\n {esBrigadaEnTerreno(data.estadoActualSecundario) && (\n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.asignacionBrigada')}\n \n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.brigadaEnTerreno')}\n \n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.textos.brigadaEnTerreno')}\n \n {estadoGrafico && (\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.textos.brigadaEnTerrenoLink')}\n \n )}\n
\n
\n )}\n
\n\n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.textosStepper.titulos.reposicionServicio')}\n \n {fechaSinDeterminar(formatoFechaConHora(data.fechaFinCorte), t)}\n
\n
\n
\n );\n};\n\nexport default ColorBallsImprevistoConBrigada;\n","import { createStyles, makeStyles } from '@material-ui/core';\nimport { theme } from '@saesa/ui-kit-front';\n\nconst DisclaimerTerVencidoStyles = makeStyles(() =>\n createStyles({\n contenedor: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'flex-start',\n padding: '16px 20px',\n gap: '16px',\n background: '#FFF3E0',\n border: '1px solid #E08A00',\n borderRadius: '10px',\n marginBottom: '16px',\n [theme.breakpoints.down('sm')]: {},\n },\n contenedorInterno: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n padding: '0px',\n gap: '12px',\n },\n contenedorParrafos: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n padding: '0px',\n gap: '4px',\n },\n parrafoGlobal: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontSize: '14px',\n lineHeight: '18px',\n color: 'var(--gris-l3)',\n },\n parrafoTitulo: {\n fontWeight: 600,\n },\n parrafoSubTitulo: {\n fontWeight: 400,\n },\n })\n);\n\nexport default DisclaimerTerVencidoStyles;\n","import { Typography } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { alertaNaranja } from 'assets/images';\nimport DisclaimerTerVencidoStyles from './DisclaimerTerVencidoStyles';\n\nconst DisclaimerTerVencido = () => {\n /**\n * Variable que maneja el uso de estilos.\n */\n const styles = DisclaimerTerVencidoStyles();\n\n /**\n * Uso del traductor\n */\n const { t } = useTranslation();\n\n return (\n
\n
\n \"alerta\"\n
\n \n {t('desconexion:paginas.mapaCortes.modalTracking.disclaimerFechaTer.titulo')}\n \n\n \n {t('desconexion:paginas.mapaCortes.modalTracking.disclaimerFechaTer.parrafoUno')}\n \n\n \n {t('desconexion:paginas.mapaCortes.modalTracking.disclaimerFechaTer.parrafoDos')}\n \n
\n
\n
\n );\n};\n\nexport default DisclaimerTerVencido;\n","import { createStyles, makeStyles } from '@material-ui/core';\nimport { theme } from '@saesa/ui-kit-front';\n\nconst MapsStyles = makeStyles(() =>\n createStyles({\n buscadorCnt: {\n width: '350px',\n padding: '0.875rem',\n background: 'white',\n boxShadow: '0px 0.125rem 1.25rem hsla(var(--valor-primario-azul-oscuro), 0.14)',\n borderRadius: '0.625rem',\n position: 'relative',\n top: '2rem',\n left: '3.125rem',\n alignItems: 'center',\n justifyContent: 'center',\n display: 'flex',\n flexDirection: 'column',\n gap: '10px',\n [theme.breakpoints.down('sm')]: {\n top: '1.875rem',\n left: '50%',\n transform: 'translateX(-50%)',\n display: 'block',\n },\n },\n inputCnt: {\n position: 'relative',\n width: '100%',\n },\n formCnt: {\n position: 'relative',\n width: '100%',\n height: 'auto',\n },\n inputNroServicio: {\n width: '100%',\n color: 'var(--gris-l43)',\n [theme.breakpoints.down('sm')]: {\n width: '310px',\n marginBottom: '0.625rem',\n },\n },\n inputDireccion: {\n color: 'var(--gris-l43)',\n [theme.breakpoints.down('sm')]: {\n width: '310px',\n marginBottom: '0.625rem',\n },\n },\n lupaIcon: {\n '--icon-primary-dark': 'var(--gris-l43)',\n },\n btnIconDireccion: {\n position: 'absolute',\n right: '1.275rem',\n display: 'flex',\n alignItems: 'center',\n background: 'transparent',\n border: 'none',\n cursor: 'pointer',\n },\n flechaIcon: {\n '--icon-primary-dark': 'var(--primario-morado)',\n transition: '.5s ease all',\n },\n flechaIconDisabled: {\n opacity: 0.5,\n },\n inputHasError: {},\n esconderElemento: {\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n textoCambiar: {\n fontSize: '.875rem',\n color: 'var(--primario-morado)',\n textAlign: 'center',\n },\n modal: {\n zIndex: 1,\n },\n principal: {\n display: 'flex',\n position: 'relative',\n alignItems: 'flex-start',\n flexDirection: 'column',\n },\n circulo: {\n display: 'flex',\n position: 'relative',\n justifyContent: 'start',\n alignItems: 'center',\n width: '2.75rem',\n height: '2.75rem',\n borderRadius: '50%',\n margin: '2.5rem 9.375rem 0 0',\n '&:first-child': {\n marginLeft: '0',\n marginRight: '9.375rem',\n '&::before': {\n width: '2.5rem',\n transform: 'translateY(-2.625rem) rotate(90deg)',\n },\n },\n '&::before': {\n display: 'block',\n position: 'absolute',\n content: '\"\"',\n height: '.25rem',\n width: '2.5rem',\n transform: 'translateY(-2.625rem) rotate(90deg)',\n },\n '&:last-child': {\n margin: '2.5rem 9.375rem 2.5rem 0',\n },\n },\n\n textos: {\n position: 'absolute',\n top: '-40px',\n width: 'max-content',\n transform: 'translate(65px, 45px)',\n textAlign: 'start',\n },\n\n iconoCnt: {\n display: 'flex',\n padding: '1rem 0',\n width: '100%',\n alignItems: 'center',\n justifyContent: 'flex-start',\n },\n icono: {\n transform: 'translateX(10px)',\n },\n disclaimerQuinceMinutos: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '8px 20px',\n gap: '10px',\n background: 'var(--gris-l96)',\n borderRadius: '0px 0px 15px 15px',\n margin: '-0.875rem',\n marginTop: '0px',\n width: 'calc(100% + 0.875rem + 0.875rem)',\n },\n textoDisclaimerQuinceMinutos: {\n display: 'flex',\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 400,\n fontSize: '12px',\n lineHeight: '16px',\n textAlign: 'center',\n color: 'var(--gris-l43)',\n justifyContent: 'center',\n },\n contenedorBuscadorDireccion: {\n width: '100%',\n },\n })\n);\n\nexport default MapsStyles;\n","import { Hidden } from '@material-ui/core';\nimport { GoogleMap, KmlLayer, Marker, StandaloneSearchBox, useLoadScript } from '@react-google-maps/api';\nimport { FlechaVerticalIcon, Input, LupaIcon, Typography, StepperTracking } from '@saesa/ui-kit-front';\nimport { newResponseTracking } from 'utils/ejemploRespuestaServicioCortes';\nimport {\n obtenerElementoTimeFin,\n obtenerElementoTimeInicio,\n obtenerElementoTimeMedio,\n obtenerTextoInformativo,\n obtenerPantallaSigoConProblemas,\n obtenerTextoInferiorReportar,\n} from 'helper/trackingCorte.helper';\nimport clsx from 'clsx';\nimport ModalPoligono from 'components/Modal/ModalPoligono';\nimport { QueryParams, TipoEstadoActualSecundarioTrackingCorteEnum, TipoEstadoActualTrackingCorteEnum, TipoTrackingCorteEnum } from 'config';\nimport { useFormik } from 'formik';\nimport { CoordenadasMapa, CoordenadasEmpresasModel } from 'models';\nimport { useSnackbar } from 'notistack';\nimport { useEffect, useState } from 'react';\nimport { TIPOCORTETITULO } from 'config/tiposCorteTitulo';\nimport { useTranslation } from 'react-i18next';\nimport DesconexionService from 'services/desconexionService';\nimport { EtapasModels } from 'models/EtapasModels';\nimport { TipoDistribuidora } from 'config/tipoDistribuidoraEnum';\nimport { TrackingCorteEstadosResponseModel } from 'services/models';\nimport * as Yup from 'yup';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n RootState,\n actualizarAcordeonNotificacionTerAbierto,\n actualizarEstadoCaptchaV3,\n actualizarEstadoClienteSuscrito,\n actualizarEstadoMensajeFlotanteCerrado,\n actualizarEstadoModalMobileAbierto,\n} from 'store';\nimport VentanaMobile from 'components/VentanaMobile/VentanaMobile';\nimport AnalyticsService from 'services/AnalyticsService';\nimport useStylesCortes from 'pages/Styles/VistasCorteStyles';\nimport { obtenerZoom } from 'utils/obtenerZoom';\nimport { milisegundosPorMinuto } from 'utils/constants';\nimport { EventosGtmSaesa } from 'utils/GtmEvents';\nimport { clock, flashSlash, repair } from 'assets/images';\nimport { TIPOCORTE } from 'config/tiposCorte';\nimport {\n esCorteImprevisto,\n esCorteImprevistoConArriboBrigada,\n esCorteImprevistoSinArriboBrigada,\n noEsCorteImprevisto,\n} from 'utils/colorBallsUtils';\nimport { esFechaVencida } from 'utils/utilitario';\nimport { scrollInicialModal } from 'utils/trackingUtils';\nimport ModalSitioNoDisponible from 'components/ModalSitioNoDisponible/ModalSitioNoDisponible';\nimport { mostrarModalCookie } from 'utils/cookieUtils';\nimport Disclaimer from './Disclaimer/Disclaimer';\nimport ColorBallsImprevistoSinBrigada from './ColorBalls/ColorBallsImprevistoSinBrigada';\nimport ColorBallsImprevistoConBrigada from './ColorBalls/ColorBallsImprevistoConBrigada';\nimport DisclaimerTerVencido from './DisclaimerTerVencido/DisclaimerTerVencido';\nimport useStyles from './MapsStyles';\n\nconst Maps = ({\n className,\n height,\n maxHeight,\n width,\n zoom,\n mobile,\n}: {\n className: string;\n height?: string;\n maxHeight: string;\n width?: string;\n zoom?: number;\n mobile?: boolean;\n}) => {\n /**\n * Variable de estado para almacenar cache Control de kml\n */\n const [cacheControl, setCacheControl] = useState();\n\n /**\n * Metodo encargado de setear el cache control\n */\n useEffect(() => {\n setCacheControl(new Date().getTime());\n }, []);\n\n /**\n * Constante que contiene la url del kml\n */\n const kmlUrl = `${process.env.REACT_APP_MAP_ASSETS_URL}/outage.kml`;\n /**\n * Constante que contiene la url del kml de cortes futuros\n */\n const kmlUrlFuturos = `${process.env.REACT_APP_MAP_ASSETS_URL}/cortes_futuros.kml`;\n\n /**\n * Constante que contiene el nombre del corte futuro\n */\n const nombreCorteFuturo = 'Corte: Futuro';\n\n /**\n * Disparador para el selector\n */\n const dispatch = useDispatch();\n\n /**\n * Función que genera un número según la fecha y hora actual.\n * Se genera para consultar al mapa y evitar el caché de Google Maps.\n * @returns retorna el valor como un número.\n */\n const rutaKmlCache = (kml: string) => {\n const concatenador = kml.toLocaleLowerCase().endsWith('kml') ? '?' : '&';\n return kml + concatenador + cacheControl;\n };\n\n /**\n * Variable que almacena el número de caché generado.\n */\n const nuevaRutaKml = rutaKmlCache(kmlUrl);\n /**\n * Variable que almacena el número de caché generado de cortes futuros.\n */\n const nuevaRutaKmlFuturos = rutaKmlCache(kmlUrlFuturos);\n\n /**\n * Modelo de pasos stepper\n */\n const modeloPasos: EtapasModels[] = [];\n /**\n * Variable que maneja query params\n */\n const query = QueryParams();\n /**\n * valor de cliente obtenido por query params\n */\n const queryNroCliente = query.get('cliente') || '';\n\n /**\n * valor de empresa obtenido por query params\n */\n const queryNombreEmpresa = query.get('empresa') || '';\n\n /**\n * Obtiene el valor del pec\n */\n const modoPEC = useSelector((state: RootState) => state.desconexion.modoPEC);\n\n /**\n * Obtiene el valor del flag del estado modal no disponible\n */\n const modalNoDisponibleFlagVisible = useSelector((state: RootState) => state.desconexion.modalPaginaNoDisponible.activacionModal);\n\n /**\n * Obtiene el valor del flag del estado de notificación TER\n */\n const notificacionTerActivo = useSelector((state: RootState) => state.desconexion.flagCargadoNotificacionTer);\n\n /**\n * Obtiene el valor del flag del valor en minutos de la cookie para el modal no disponible\n */\n const valorMinutosModal: number = useSelector((state: RootState) => state.desconexion.modalPaginaNoDisponible.tiempoCookie);\n\n /**\n * Obtiene el valor del flag estado de carga del flag\n */\n const flagCargado: boolean = useSelector((state: RootState) => state.desconexion.flagCargado);\n\n /**\n * Obtiene el valor de habilitación del corte futuro\n */\n const cortesFuturosHabilitacion = useSelector((state: RootState) => state.desconexion.cortesFuturos);\n\n /**\n * Obtiene el valor del switch de cortes futuros\n */\n const switchCortesFuturos = useSelector((state: RootState) => state.desconexion.switchCortesFuturos);\n\n /**\n * Variable para opciones de google maps\n */\n const zoomControlOptionsPosition = 9;\n\n /**\n * Variable para opciones de google maps\n */\n const streetViewControlOptionsPosition = 0;\n\n /**\n * Variable para opciones de google maps\n */\n const mapTypeControlOptionsPosition = 3;\n\n /**\n * Inicializador de inputs de formulario\n */\n const initialValues: FormValues = {\n nroCliente: '',\n direccion: '',\n };\n\n let formik = useFormik({\n initialValues,\n onSubmit: () => {\n // Inicialización formik\n },\n });\n /**\n * Variable que maneja el uso de estilos.\n */\n const styles = useStyles();\n const stylesCortes = useStylesCortes();\n\n /**\n * Uso de las pildoras de notificaciones\n */\n const { enqueueSnackbar } = useSnackbar();\n\n /**\n * Uso del traductor\n */\n const { t } = useTranslation();\n\n /**\n * id marker busqueda\n */\n const ID_MARKER_BUSQUEDA = 'pinBusqueda';\n\n /**\n * Valores de formulario\n */\n interface FormValues {\n nroCliente: string;\n direccion: string;\n }\n\n /**\n * Arreglo que contiene modelo de coordenadas a utilizar en mapa de google maps.\n */\n let dataMapa: CoordenadasMapa[] = [];\n\n /**\n * useState que actualiza data de busquedas realizadas\n */\n const [infoBusqueda, setInfoBusqueda] = useState();\n\n /**\n * UseState que controla el estado del modal de no disponible\n */\n const [modalNoDisponible, setModalNoDisponible] = useState(false);\n\n /**\n * useState que actualiza data de busquedas realizadas\n */\n const [newZoom, setNewZoom] = useState();\n\n /**\n * Constante que contiene las coordenadas iniciales de la distribuidora Frontel\n */\n const coordenadasFrontel = { lat: -37.7984415592484, lng: -72.70651503708764 };\n\n /**\n * Constante que contiene las coordenadas iniciales de la distribuidora Edelaysen\n */\n const coordenadasEdelaysen = { lat: -45.572728092875316, lng: -72.0688308325724 };\n\n /**\n * Constante que contiene las coordenadas iniciales de la distribuidora Osorno\n */\n const coordenadasOsorno = { lat: -40.57118, lng: -73.1387 };\n\n /**\n *\n * @param compania string obtiene de la querypraams la compañia a la que pertenece el cliente\n * @returns coordenadas de la compañia\n */\n function obtenerCoordenadas(compania: string): CoordenadasEmpresasModel {\n switch (compania) {\n case TipoDistribuidora.FRONTEL:\n return coordenadasFrontel;\n case TipoDistribuidora.EDELAYSEN:\n return coordenadasEdelaysen;\n case TipoDistribuidora.LUZ_OSORNO:\n return coordenadasOsorno;\n default:\n return coordenadasOsorno;\n }\n }\n\n /**\n * inicializacion de arreglo de lugares que guarda coordenadas a marcar en el mapa\n */\n let lugares: CoordenadasMapa[] = [\n {\n id: 'CentralSaesaOsorno',\n pos: obtenerCoordenadas(queryNombreEmpresa),\n },\n ];\n\n /**\n * useState que actualiza data de marker al realizar busquedas\n */\n const [marker, setMarker] = useState(lugares);\n\n /**\n * Use state\n */\n const [mostrarInput, setMostrarInput] = useState(false);\n\n /**\n * Use state de las coordenadas del mapa.\n */\n const [coordenadas, setCoordenadas] = useState(dataMapa);\n\n /**\n * useState tipo booleano para mostrar modal\n */\n const [mostrarModal, setMostrarModal] = useState(false);\n\n /**\n * useState tipo booleano para mostrar buscador\n */\n const [mostrarBuscador, setMostrarBuscador] = useState(true);\n\n /**\n * useState tipo arreglo de strings de reposicion estimada sin tracking\n */\n const [dataSinTracking, setDataSinTracking] = useState();\n\n /**\n * useState tipo arreglo de strings de reposicion estimada sin tracking\n */\n const [titulo, setTitulo] = useState('inesperado');\n\n /**\n * useState que contiene el numero de caso que le han dado clic\n */\n const [numeroCaso, setNumeroCaso] = useState('');\n\n /**\n * useState tipo string para capturar el tipo de corte\n */\n const [respuestaServicio, setRespuestaServicio] = useState(newResponseTracking);\n\n /**\n * Use state para mostrar modal con elementos de tracking\n */\n const [modalTracking, setModalTracking] = useState(false);\n\n /**\n * Use state para mostrar modal con elementos de tracking\n */\n const [servicioCargado, setServicioCargado] = useState(false);\n\n /**\n * Use state para mostrar modal de mobile\n */\n const [ventanaMobileState, setVentanaMobileState] = useState(false);\n\n /**\n * Use state para mostrar modal de mobile\n */\n const [activadorMobile, setActivadorMobile] = useState(false);\n\n /**\n * Use state para mostrar si el corte es porgramado futuro\n */\n const [corteProgramado, setCorteProgramado] = useState(false);\n\n /**\n * Use state de fecha de inicio de corte de corte o el primer item\n */\n const [primeraData, setPrimeraData] = useState('');\n\n /**\n * Use state de fecha de inicio de corte de corte o el primer item\n */\n const [primeraDataSinTracking, setPrimeraDataSinTracking] = useState();\n\n /**\n * Use state de fecha de inicio de corte de corte o el segundo item\n */\n const [segundaData, setSegundaData] = useState('');\n /**\n * Use state de fecha de inicio de corte de corte o el segundo item\n */\n const [segundaDataSinTracking, setSegundaDataSinTracking] = useState();\n /**\n * Modelo de pasos stepper\n */\n modeloPasos.push(obtenerElementoTimeInicio(respuestaServicio, t)); // inicio\n modeloPasos.push(obtenerElementoTimeMedio(respuestaServicio, t)); // medio\n modeloPasos.push(obtenerElementoTimeFin(respuestaServicio, t)); // fin\n\n /**\n * Componente texto bajada stepper\n */\n const vistaTextoInformativo = obtenerTextoInformativo(respuestaServicio, t, stylesCortes.textoInformativo);\n\n /**\n * Componente \"continuo con dramas de servicio\" solo aplica en estado *normalized*\n */\n const vistaProblemasServicio = obtenerPantallaSigoConProblemas(\n respuestaServicio,\n t,\n notificacionTerActivo,\n numeroCaso,\n stylesCortes.avisoPago,\n corteProgramado\n );\n\n /**\n * Componente texto bajada stepper\n */\n const vistaTextoInferiorReportar = obtenerTextoInferiorReportar(respuestaServicio, t, corteProgramado);\n\n /**\n * Constante que contiene el titulo que no se debe mostrar cuando no existe tracking\n */\n const tituloListaNegra = 'Caso';\n\n /**\n * Constante que contiene el titulo del Estado el cual es usado para cambiar el texto de los kml\n */\n const tituloParaObtenerEstado = 'estado';\n\n /**\n * Constante que contiene el texto del titulo del Estado que será cambiado del kml\n */\n const textoEnCursoHipotetico = 'en curso (hipotético)';\n\n /**\n * Constante que contiene el titulo que no se debe mostrar\n */\n const tituloClientesListaNegra = 'Clientes afectados';\n\n /**\n * Constante que contiene el titulo que no se debe mostrar\n */\n const tituloRestauracionListaNegra = 'Restauración estimada';\n\n /**\n * Constante que contiene el tipo de titulo que no se debe mostar para el corte sin tracking en vista reducida\n */\n const tipoCorteFuturo = 'Futuro ';\n\n /**\n * Constante que contiene el titulo que no se debe mostrar\n */\n const tituloFechaFinListaNegra = ' Fecha fin';\n /**\n * Constante que contiene el titulo que no se debe mostrar\n */\n const tituloFechaInicioListaNegra = ' Fecha inicio';\n\n /**\n * Zoom del mapa para mobile para busqueda de numero de cliente o dirección\n */\n const zoomMobile = 14;\n\n /**\n * Zoom del mapa para escritorio para busqueda de numero de cliente o dirección\n */\n const zoomEscritorio = 13;\n\n /**\n * Setea datos en el mapa al cargar\n */\n const { isLoaded } = useLoadScript({\n googleMapsApiKey: process.env.REACT_APP_API_KEY || '',\n libraries: ['places', 'drawing', 'visualization'],\n });\n\n /**\n * Metodo inicializa los puntos de coordenadas por defecto en el mapa.\n */\n const inicializarDataMapa = () => {\n formik.setFieldValue('nroCliente', queryNroCliente);\n dataMapa = lugares;\n setCoordenadas(dataMapa);\n setNewZoom(zoom);\n\n // Se envía información a tag manager con carga incial del mapa\n AnalyticsService.enviarTag(EventosGtmSaesa.mapaDesconexiones.acceso);\n };\n\n /**\n * Metodo que actualiza la posicion del marcador\n * @param lat latitud de coordenadas de busqueda\n * @param lng longitud de coordenadas de busqueda\n */\n const actualizarPosicionMarcador = (lat: number, lng: number) => {\n const dataPinDireccion: CoordenadasMapa[] = [\n {\n id: ID_MARKER_BUSQUEDA,\n pos: {\n lat,\n lng,\n },\n },\n ];\n lugares = [];\n setMarker(dataPinDireccion);\n setNewZoom(mobile ? zoomMobile : zoomEscritorio);\n };\n\n /**\n * Metodo que realiza busqueda por numero de cliente\n * @param nroCliente numero de cliente\n */\n const consultarNroCliente = (nroCliente: string) => {\n DesconexionService.busquedaNroCliente(nroCliente)\n .then(response => {\n const dataNroCliente: CoordenadasMapa[] = [\n {\n id: 'pinBusqueda',\n pos: {\n lat: Number(response.latitud),\n lng: Number(response.longitud),\n },\n },\n ];\n setCoordenadas(dataNroCliente);\n actualizarPosicionMarcador(Number(response.latitud), Number(response.longitud));\n document.getElementById('nroCliente')!.blur();\n\n // Se envía información a tag manager con busqueda por numero de cliente\n AnalyticsService.enviarTag(EventosGtmSaesa.mapaDesconexiones.busqueda.busquedaServicio);\n })\n .catch((error: any) => {\n // Se envía información a tag manager con busqueda por numero de cliente con error\n AnalyticsService.enviarTag(EventosGtmSaesa.mapaDesconexiones.busqueda.busquedaServicioError);\n\n enqueueSnackbar(t(`errors:${error?.response?.data?.mensaje}`), {\n variant: 'error',\n });\n });\n };\n\n /**\n * Metodo que se gatilla al enviar formulario\n * @param values Valor del formulario\n */\n const onFormSubmit = (values: FormValues) => {\n consultarNroCliente(values.nroCliente);\n };\n\n /**\n * Constante que contiene el tiempo para mostrar el modal\n */\n const tiempoMostrarModal = valorMinutosModal * milisegundosPorMinuto;\n\n /**\n * Use effect que se gatilla al inicializar componente\n */\n useEffect(() => {\n inicializarDataMapa();\n\n if (queryNroCliente) {\n consultarNroCliente(queryNroCliente);\n }\n }, []);\n\n /**\n * UseEffect que maneja el estado de la cookie del modal\n */\n useEffect(() => {\n if (valorMinutosModal > 0 && modalNoDisponibleFlagVisible) {\n setModalNoDisponible(mostrarModalCookie('cookieModalMapa', tiempoMostrarModal));\n }\n }, [flagCargado]);\n\n /**\n * Constante que contiene el estado del modal\n */\n const modalActivo = modalNoDisponible && modalNoDisponibleFlagVisible;\n\n /**\n * inicializacion de formik\n */\n formik = useFormik({\n initialValues,\n onSubmit: onFormSubmit,\n validationSchema: Yup.object({\n nroCliente: Yup.string()\n .required(t('desconexion:paginas.mapaCortes.inputs.errors.inputNroCliente'))\n .soloNumero(t('desconexion:paginas.mapaCortes.inputs.errors.soloNumero'))\n .max(20, t('desconexion:paginas.mapaCortes.inputs.errors.max')),\n }),\n });\n\n /**\n * Metodo que carga funcionalidades del mapa\n * @param ref referencia\n */\n const onLoad = (ref: any) => {\n setInfoBusqueda(ref);\n };\n\n /**\n * Metodo que actualzia coordenadas de las busquedas por direcciones en el mapa\n */\n const realizarBusquedaPorDireccion = () => {\n if (infoBusqueda.getPlaces()[0] === undefined) {\n // Se envía información a tag manager con busqueda por dirección con error\n AnalyticsService.enviarTag(EventosGtmSaesa.mapaDesconexiones.busqueda.busquedaDireccionError);\n\n enqueueSnackbar(t('desconexion:paginas.mapaCortes.inputs.errors.direccionMapaInvalida'), {\n variant: 'error',\n });\n } else {\n actualizarPosicionMarcador(infoBusqueda.getPlaces()[0].geometry.location.lat(), infoBusqueda.getPlaces()[0].geometry.location.lng());\n const dataDireccion: CoordenadasMapa[] = [\n {\n id: ID_MARKER_BUSQUEDA,\n pos: {\n lat: infoBusqueda.getPlaces()[0].geometry.location.lat(),\n lng: infoBusqueda.getPlaces()[0].geometry.location.lng(),\n },\n },\n ];\n setCoordenadas(dataDireccion);\n formik.setFieldValue('direccion', infoBusqueda.getPlaces()[0].name);\n document.getElementById('direccion')!.blur();\n // Se envía información a tag manager con busqueda por dirección\n AnalyticsService.enviarTag(EventosGtmSaesa.mapaDesconexiones.busqueda.busquedaDireccion);\n }\n };\n\n /**\n * Obtiene la información del poligono y transforma los datos que se mostrara cuando no existe tracking\n * @param event es el evento que se la pasa del click\n */\n const obtenerInformacion = (event: any) => {\n const data = event.split('
')[1].split('
');\n data[data.length - 1] = data[data.length - 1].replace('
', '');\n\n const objetoData = data\n .map((datas: string) => ({ titulo: datas.split(':')[0], texto: datas.split(': ')[1] }))\n .filter((datas: any) => datas.titulo !== tituloListaNegra);\n\n /**\n * Se realiza cambios en el titulo del poligono del kml\n */\n const arregloModificado = objetoData.map((obj: any) => {\n let nuevoTitulo;\n if (obj.titulo.toLowerCase() === tituloParaObtenerEstado && obj.texto.toLowerCase() === textoEnCursoHipotetico) {\n obj.texto = t('desconexion:paginas.tracking.corte.listaBlancaKML.enCurso'); // eslint-disable-line no-param-reassign\n }\n if (obj.titulo === tituloClientesListaNegra) {\n nuevoTitulo = t('desconexion:paginas.tracking.corte.listaBlancaKML.clientesAfectados');\n } else if (obj.titulo === tituloRestauracionListaNegra) {\n nuevoTitulo = t('desconexion:paginas.tracking.corte.listaBlancaKML.reposicionEstimada');\n } else {\n nuevoTitulo = obj.titulo;\n }\n return { ...obj, titulo: nuevoTitulo };\n });\n\n if (arregloModificado[0].texto === tipoCorteFuturo) {\n const arregloModificadoFuturo = objetoData.map((obj: any) => {\n let nuevoTitulo;\n if (obj.titulo === tituloFechaInicioListaNegra) {\n nuevoTitulo = t('desconexion:paginas.tracking.corte.listaBlancaKML.fechaInicio');\n } else if (obj.titulo === tituloFechaFinListaNegra) {\n nuevoTitulo = t('desconexion:paginas.tracking.corte.listaBlancaKML.reposicionEstimada');\n } else {\n nuevoTitulo = obj.titulo;\n }\n return { ...obj, titulo: nuevoTitulo };\n });\n\n setPrimeraDataSinTracking(arregloModificadoFuturo[1]);\n setSegundaDataSinTracking(arregloModificadoFuturo[2]);\n const objetoFuturo = arregloModificadoFuturo.filter((datas: any) => datas.texto !== tipoCorteFuturo);\n setDataSinTracking(objetoFuturo);\n } else {\n setPrimeraDataSinTracking(arregloModificado[0]);\n setSegundaDataSinTracking(arregloModificado[1]);\n setDataSinTracking(arregloModificado);\n }\n };\n\n /**\n * Metodo encargado de obtener y formatear fecha TER desde KML\n * @param event del kml\n * @returns fecha formeateada\n */\n const obtenerFechaTER = (event: any) => {\n try {\n const data = event.split('
')[1].split('
');\n data[data.length - 1] = data[data.length - 1].replace('
', '');\n const objetoData = data\n .map((datas: string) => ({ titulo: datas.split(':')[0], texto: datas.split(': ')[1] }))\n .filter((datas: any) => datas.titulo !== tituloListaNegra);\n\n const fechaTER = objetoData.filter((dataCorte: any) => dataCorte.titulo === 'Restauración estimada')[0].texto;\n\n const [day, month, yearHour] = fechaTER.split('/');\n const [year, time] = yearHour.split(' ');\n\n return `${year}-${month}-${day}T${time}`;\n } catch (e) {\n return undefined;\n }\n };\n\n /**\n *Función que se encarga de obtener el titulo para el tipo de corte\n * @param tipo titulo de corte proveniente del tracking\n */\n const tituloCorte = (tipo: string) => {\n switch (tipo) {\n case TIPOCORTETITULO.CORTE_INESPERADO:\n setTitulo(t('desconexion:paginas.mapaCortes.modalTracking.titulosModal.corteInesperado'));\n break;\n\n case TIPOCORTETITULO.CORTE_PROGRAMADO:\n setTitulo(t('desconexion:paginas.mapaCortes.modalTracking.titulosModal.corteProgramado'));\n break;\n\n case TIPOCORTETITULO.CORTE_FUTURO:\n setTitulo(t('desconexion:paginas.mapaCortes.modalTracking.titulosModal.corteFuturo'));\n break;\n\n default:\n setTitulo(t('desconexion:paginas.mapaCortes.modalTracking.titulosModal.corteSinTracking'));\n break;\n }\n };\n\n /**\n * Función para verificar el estado actual secundario en caso que sea null o \"\" se tomara como un error de la respuesta de tracking y se mostrara la data del kml\n * @param estadoActualSecundario estado actual secundario respuesta del servicio\n * @param tipo tipo de corte\n */\n function verificarEstadoActualSecundario(estadoActualSecundario: any, tipo: any) {\n if (\n !Object.values(TipoEstadoActualSecundarioTrackingCorteEnum).includes(estadoActualSecundario) &&\n tipo === TipoTrackingCorteEnum.IMPREVISTO\n ) {\n setModalTracking(false);\n setTitulo(t('desconexion:paginas.mapaCortes.modalTracking.titulosModal.corteSinTracking'));\n }\n }\n\n /**\n * Metodo de clic de los poligonos\n * Captura los datos del KML, activa el modal que muestra la información del corte\n * Ejecuta un servicio\n * @param event: nos trae datos del arhcivo KML entre los cuales esta el OA o numero del servicio\n */\n\n const onClickKml = (event: any) => {\n scrollInicialModal();\n obtenerInformacion(event.featureData.infoWindowHtml);\n dispatch(actualizarEstadoModalMobileAbierto({ modalMobileAbierto: true }));\n dispatch(actualizarEstadoMensajeFlotanteCerrado({ mensajeFlotanteCerrado: true }));\n\n AnalyticsService.enviarTag(EventosGtmSaesa.mapaDesconexiones.poligono.llamadaTracking);\n\n DesconexionService.obtenerRespuestaCorte(event.featureData.name)\n .then(response => {\n setRespuestaServicio(response);\n setNumeroCaso(event.featureData.name);\n setCorteProgramado(event.featureData.description.includes(nombreCorteFuturo));\n setPrimeraData(\n response.fechaInicioCorte !== '' && response.fechaInicioCorte !== null\n ? response.fechaInicioCorte\n : t('desconexion:paginas.tracking.corte.avisoPago.textos.sinDeterminar')\n );\n setSegundaData(\n response.fechaFinCorte !== '' && response.fechaFinCorte !== null\n ? response.fechaFinCorte\n : t('desconexion:paginas.tracking.corte.avisoPago.textos.sinDeterminar')\n );\n\n dispatch(actualizarEstadoCaptchaV3(false));\n dispatch(actualizarAcordeonNotificacionTerAbierto(false));\n dispatch(actualizarEstadoClienteSuscrito(false));\n\n const fechaTER = obtenerFechaTER(event.featureData.infoWindowHtml);\n if (\n fechaTER &&\n response.estadoActual !== TipoEstadoActualTrackingCorteEnum.NORMALIZED &&\n response.tipo === TipoTrackingCorteEnum.IMPREVISTO &&\n (response.fechaFinCorte === undefined || response.fechaFinCorte === null || response.fechaFinCorte === '')\n ) {\n const responseTER = { ...response, fechaFinCorte: fechaTER };\n setRespuestaServicio(responseTER);\n setSegundaData(fechaTER);\n }\n\n setModalTracking(true);\n setServicioCargado(true);\n tituloCorte(event.featureData.description.includes(nombreCorteFuturo) ? TIPOCORTETITULO.CORTE_FUTURO : response.tipo);\n setVentanaMobileState(true);\n\n // Se valida que el tracking tenga falla activa para el corte, en caso de tener falla pero no contar con el tipo de corte\n // se muestra la información desde el KML.\n if (response.estadoActual === TipoEstadoActualTrackingCorteEnum.SIN_FALLAS || response.tipo === '' || !response.tipo) {\n obtenerInformacion(event.featureData.infoWindowHtml);\n setModalTracking(false);\n setServicioCargado(true);\n setTitulo(t('desconexion:paginas.mapaCortes.modalTracking.titulosModal.corteSinTracking'));\n } else {\n AnalyticsService.enviarTag(EventosGtmSaesa.mapaDesconexiones.poligono.cargaTracking);\n }\n\n verificarEstadoActualSecundario(response.estadoActualSecundario, response.tipo);\n })\n .catch(() => {\n setModalTracking(false);\n setVentanaMobileState(true);\n setCorteProgramado(event.featureData.description.includes(nombreCorteFuturo));\n setServicioCargado(true);\n setTitulo(t('desconexion:paginas.mapaCortes.modalTracking.titulosModal.corteSinTracking'));\n });\n\n setMostrarModal(true);\n setMostrarBuscador(false);\n };\n\n /**\n * Metodo que se encarga de mostrar input correspondiente en mobile\n */\n const mostrarInputCorrespondiente = () => {\n setMostrarInput(!mostrarInput);\n formik.resetForm();\n };\n\n /**\n * Función para cerrar modal de no disponible\n */\n const cerrarModalNoDisponible = () => {\n setModalNoDisponible(false);\n };\n\n /**\n * Componente de buscar en el mapa\n * @returns componente de buscar en el mapa\n */\n const desplegarBuscador: any = () =>\n mostrarBuscador ? (\n
\n
\n \n \n \n }\n />\n \n
\n \n
\n \n }\n />\n
\n \n \n {t('desconexion:paginas.mapaCortes.texts.buscarPorDireccion')}\n \n \n {t('desconexion:paginas.mapaCortes.texts.buscarPorNroCliente')}\n \n \n
\n \n
\n \n
\n {t('desconexion:paginas.mapaCortes.texts.disclaimer')}\n
\n
\n \n ) : (\n ''\n );\n\n /**\n * Funcion que renderiza la ventana mobile\n * @returns la ventana mobile\n */\n const ventanaMobileFuncionTracking = () =>\n ventanaMobileState && (\n \n \n \n );\n\n /**\n * Funcion que despliega el modal cuando existe tracking\n * @returns\n */\n const desplegarModalTrackingComponente: any = () => (\n \n ) : (\n ''\n )\n }\n setServicioCargado={setServicioCargado}\n >\n {esCorteImprevisto(titulo) && }\n\n {esCorteImprevistoSinArriboBrigada(titulo, respuestaServicio.fechaArriboBrigada, respuestaServicio.estadoActualSecundario) && (\n \n )}\n\n {esCorteImprevistoConArriboBrigada(titulo, respuestaServicio.fechaArriboBrigada, respuestaServicio.estadoActualSecundario) && (\n \n )}\n {esCorteImprevisto(titulo) && esFechaVencida(respuestaServicio.fechaFinCorte) && }\n\n {noEsCorteImprevisto(titulo) && vistaTextoInformativo}\n {vistaProblemasServicio}\n {noEsCorteImprevisto(titulo) && vistaTextoInferiorReportar}\n \n );\n\n /**\n * Funcion que despliega el modal cuando no existe tracking\n * @returns\n */\n const desplegarModalComponente: any = () => (\n \n );\n\n /**\n * Metodo encargado de mostrar modal con información de tracking.\n * @returns Modal del poligono\n */\n const desplegarModalTracking: any = () => (\n <>\n \n {mostrarModal && modalTracking && servicioCargado && activadorMobile && !ventanaMobileState\n ? desplegarModalTrackingComponente()\n : ''}\n \n\n {mostrarModal && modalTracking && servicioCargado ? desplegarModalTrackingComponente() : ''};\n \n );\n\n /**\n * Metodo encargado de desplegar modal desde KML\n * @returns Modal del poligono\n */\n const desplegarModal: any = () => (\n <>\n \n {mostrarModal && !modalTracking && servicioCargado && activadorMobile && !ventanaMobileState ? desplegarModalComponente() : ''}\n \n\n {mostrarModal && !modalTracking && servicioCargado ? desplegarModalComponente() : ''}\n \n );\n\n return (\n
\n {isLoaded ? (\n \n {marker.map((place: CoordenadasMapa) => (\n {\n // Obligatorio\n }}\n />\n ))}\n\n {desplegarBuscador()}\n\n {cortesFuturosHabilitacion && switchCortesFuturos && (\n onClickKml(event)}\n />\n )}\n\n onClickKml(event)}\n />\n\n {ventanaMobileFuncionTracking()}\n {desplegarModalTracking()}\n\n {desplegarModal()}\n \n ) : null}\n\n {modalActivo && }\n
\n );\n};\nMaps.defaultProps = {\n height: '80vh',\n width: '100vh',\n zoom: 1,\n mobile: false,\n};\nexport default Maps;\n","import { CheckTrackingIcon, RelojIcon } from '@saesa/ui-kit-front';\nimport { TipoColoresEnum, TipoEstadoActualTrackingCorteEnum, TipoLargoLineaEnum, TipoTrackingCorteEnum } from 'config';\nimport { TextoInformativo, AvisoPagoCortes, TextoInferiorReportar } from 'components';\nimport { EtapasModels } from 'models/EtapasModels';\nimport { TrackingCorteEstadosResponseModel } from 'services/models';\nimport { ReactElement } from 'react';\nimport { fechaSinDeterminar, formatoFechaConHora, formatoFecha, obtenerHora } from 'utils/trackingUtils';\nimport { Trans } from 'react-i18next';\n\n/**\n * Encargado de retornar estado timeInicial\n * @param respuesta\n * @param t\n * @returns objeto timeLine inicio\n */\nexport const obtenerElementoTimeInicio = (respuesta: TrackingCorteEstadosResponseModel, t: any) => {\n /**\n * Valores por defecto\n */\n const etapa: EtapasModels = {\n tamanioLinea: undefined,\n colorLinea: undefined,\n colorPaso: TipoColoresEnum.VERDE_OSCURO,\n colorTitulo: TipoColoresEnum.GRIS_L43,\n colorFecha: TipoColoresEnum.GRIS_L43,\n icono: CheckTrackingIcon,\n titulo: '',\n fecha: '',\n mostrarTooltip: false,\n textoTooltip: '',\n };\n\n /**\n * Valores dinamicos dependiendo del caso\n */\n if (respuesta.tipo === TipoTrackingCorteEnum.IMPREVISTO) {\n etapa.fecha = fechaSinDeterminar(formatoFechaConHora(respuesta?.fechaInicioCorte), t);\n etapa.titulo = t('desconexion:paginas.tracking.corte.cortesNoProgramado.etapas.inicioCorte');\n } else if (respuesta.tipo === TipoTrackingCorteEnum.PROGRAMADO) {\n etapa.fecha = fechaSinDeterminar(formatoFechaConHora(respuesta.fechaCreacionCaso), t);\n etapa.titulo = t('desconexion:paginas.tracking.corte.cortesProgramado.etapas.notificacionCorte');\n }\n if (\n (respuesta.tipo === TipoTrackingCorteEnum.IMPREVISTO && respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.CONFIRMED) ||\n respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.ACTIVATED\n ) {\n etapa.colorTitulo = TipoColoresEnum.VERDE_OSCURO;\n }\n\n if (\n respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.ARRIBO_BRIGADA ||\n respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.CONFIRMED\n ) {\n etapa.tamanioLinea = TipoLargoLineaEnum.FULL;\n }\n\n return etapa;\n};\n\n/**\n * Encargado de retornar estado timeInicial\n * @param respuesta\n * @param t\n * @returns objeto timeLine inicio\n */\nexport const obtenerElementoTimeMedio = (respuesta: TrackingCorteEstadosResponseModel, t: any) => {\n /**\n * Valores por defecto\n */\n const etapa: EtapasModels = {\n tamanioLinea: TipoLargoLineaEnum.FULL,\n colorLinea: TipoColoresEnum.VERDE_OSCURO,\n colorPaso: TipoColoresEnum.VERDE_OSCURO,\n colorTitulo: TipoColoresEnum.GRIS_L43,\n colorFecha: TipoColoresEnum.GRIS_L43,\n icono: CheckTrackingIcon,\n titulo: '',\n fecha: '',\n mostrarTooltip: false,\n textoTooltip: '',\n };\n\n /**\n * Valores dinamicos dependiendo del caso\n */\n if (respuesta.tipo === TipoTrackingCorteEnum.IMPREVISTO) {\n etapa.fecha = fechaSinDeterminar(formatoFechaConHora(respuesta.fechaArriboBrigada), t);\n etapa.titulo = t('desconexion:paginas.tracking.corte.cortesNoProgramado.etapas.arriboBrigada');\n } else if (respuesta.tipo === TipoTrackingCorteEnum.PROGRAMADO) {\n etapa.fecha = fechaSinDeterminar(formatoFechaConHora(respuesta?.fechaInicioCorte), t);\n etapa.titulo = t('desconexion:paginas.tracking.corte.cortesProgramado.etapas.inicioCorteProgramado');\n }\n\n if (\n respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.ARRIBO_BRIGADA ||\n (respuesta.tipo === TipoTrackingCorteEnum.PROGRAMADO && respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.CONFIRMED)\n ) {\n etapa.colorTitulo = TipoColoresEnum.VERDE_OSCURO;\n }\n\n if (\n respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.ACTIVATED ||\n (respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.CONFIRMED && respuesta.tipo === TipoTrackingCorteEnum.IMPREVISTO)\n ) {\n etapa.icono = RelojIcon;\n etapa.tamanioLinea = TipoLargoLineaEnum.MEDIUM;\n etapa.colorPaso = TipoColoresEnum.GRIS_L43;\n }\n\n return etapa;\n};\n\n/**\n * Encargado de retornar estado timeFin\n * @param respuesta\n * @param t\n * @returns objeto timeLine inicio\n */\nexport const obtenerElementoTimeFin = (respuesta: TrackingCorteEstadosResponseModel, t: any) => {\n /**\n * Valores por defecto\n */\n const etapa: EtapasModels = {\n tamanioLinea: TipoLargoLineaEnum.LARGE,\n colorLinea: TipoColoresEnum.GRIS_L93,\n colorPaso: TipoColoresEnum.GRIS_L83,\n colorTitulo: TipoColoresEnum.GRIS_L43,\n colorFecha: TipoColoresEnum.GRIS_L43,\n icono: RelojIcon,\n titulo: t('desconexion:paginas.tracking.corte.cortesNoProgramado.etapas.reposicionEstimada'),\n fecha: fechaSinDeterminar(formatoFechaConHora(respuesta.fechaFinCorte), t),\n mostrarTooltip: false,\n textoTooltip: '',\n };\n\n /**\n * Valores dinamicos dependiendo del caso\n */\n if (\n respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.ARRIBO_BRIGADA ||\n (respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.CONFIRMED && respuesta.tipo === TipoTrackingCorteEnum.PROGRAMADO)\n ) {\n etapa.tamanioLinea = TipoLargoLineaEnum.MEDIUM;\n etapa.colorPaso = TipoColoresEnum.GRIS_L63;\n etapa.colorTitulo = TipoColoresEnum.GRIS_L43;\n etapa.colorFecha = TipoColoresEnum.GRIS_L43;\n etapa.colorLinea = TipoColoresEnum.VERDE_OSCURO;\n }\n if (respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.NORMALIZED) {\n etapa.tamanioLinea = TipoLargoLineaEnum.FULL;\n etapa.colorPaso = TipoColoresEnum.VERDE_OSCURO;\n etapa.colorTitulo = TipoColoresEnum.VERDE_OSCURO;\n etapa.colorFecha = TipoColoresEnum.GRIS_L43;\n etapa.colorLinea = TipoColoresEnum.VERDE_OSCURO;\n etapa.icono = CheckTrackingIcon;\n etapa.titulo = t('desconexion:paginas.tracking.corte.cortesNoProgramado.etapas.reposicionServicio');\n }\n\n return etapa;\n};\n\n/**\n * Vista de retornar vista pantalla sigo con problemas\n * @param respuesta respuesta del servicio de corte\n * @param t Una función de traducción para internacionalización.\n * @param notificacionTerActivo Boleano que si el ter esta activo\n * @param numeroCaso numero de caso del poligono\n * @param estilos estilos para la vista\n * @param programado boleano que verifica si el corte es programado\n * @returns vista de sigo con problemas\n */\nexport const obtenerPantallaSigoConProblemas = (\n respuesta: TrackingCorteEstadosResponseModel,\n t: any,\n notificacionTerActivo: boolean,\n numeroCaso: string,\n estilos?: any,\n programado?: any\n) => {\n if (respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.SIN_FALLAS) {\n return null;\n }\n\n return (\n \n );\n};\n\n/**\n *\n * @param respuesta es la \"respuesta del tracking\"\n * @param t es el useTranslate\n * @returns\n */\n\nexport const obtenerTextoInformativo = (respuesta: TrackingCorteEstadosResponseModel, t: any, estilos?: any) => {\n /**\n * Componente styles\n */\n\n let mensaje: ReactElement = <>;\n if (respuesta.tipo === TipoTrackingCorteEnum.IMPREVISTO && respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.CONFIRMED) {\n mensaje = t('desconexion:paginas.tracking.corte.cortesNoProgramado.inicioCorte.mensajesEtapa.titulo');\n }\n if (respuesta.tipo === TipoTrackingCorteEnum.IMPREVISTO && respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.ARRIBO_BRIGADA) {\n mensaje = t('desconexion:paginas.tracking.corte.cortesNoProgramado.arriboBrigada.mensajesEtapa.titulo');\n }\n if (respuesta.tipo === TipoTrackingCorteEnum.IMPREVISTO && respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.NORMALIZED) {\n mensaje = t('desconexion:paginas.tracking.corte.cortesNoProgramado.reposicionServicio.mensajesEtapa.titulo');\n }\n if (respuesta.tipo === TipoTrackingCorteEnum.PROGRAMADO && respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.ACTIVATED) {\n mensaje = (\n \n Existe un corte de servicio programado el {{ fecha: formatoFecha(respuesta?.fechaInicioCorte) }} a las{' '}\n {{ hora: obtenerHora(respuesta?.fechaInicioCorte) }} para tu sector\n \n );\n }\n if (respuesta.tipo === TipoTrackingCorteEnum.PROGRAMADO && respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.CONFIRMED) {\n mensaje = t('desconexion:paginas.tracking.corte.cortesProgramado.inicioCorteProgramado.mensajesEtapa.textoBajada');\n }\n if (respuesta.tipo === TipoTrackingCorteEnum.PROGRAMADO && respuesta.estadoActual === TipoEstadoActualTrackingCorteEnum.NORMALIZED) {\n mensaje = t('desconexion:paginas.tracking.corte.cortesProgramado.reposicionServicio.mensajesEtapa.textoBajada');\n }\n return ;\n};\n\n/**\n * Retornar vista texto inferior reportar\n * @param respuesta\n * @returns\n */\nexport const obtenerTextoInferiorReportar = (respuesta: TrackingCorteEstadosResponseModel, t: any, programado?: boolean) => {\n let texto = '';\n if ((respuesta.tipo === TipoTrackingCorteEnum.IMPREVISTO && respuesta.estadoActual) === TipoEstadoActualTrackingCorteEnum.NORMALIZED) {\n texto = t('desconexion:paginas.tracking.corte.cortesNoProgramado.reposicionServicio.textos.info');\n }\n if ((respuesta.tipo === TipoTrackingCorteEnum.PROGRAMADO && respuesta.estadoActual) === TipoEstadoActualTrackingCorteEnum.NORMALIZED) {\n texto = t('desconexion:paginas.tracking.corte.cortesProgramado.reposicionServicio.mensajesEtapa.textoCorte');\n }\n if (programado && TipoEstadoActualTrackingCorteEnum.ACTIVATED) {\n texto = t('desconexion:paginas.tracking.corte.cortesProgramado.reposicionServicio.mensajesEtapa.textoCorte');\n }\n if (texto === '') {\n return null;\n }\n return ;\n};\n","import { createStyles, makeStyles } from '@material-ui/core';\n\nconst IconoEstadoStyles = makeStyles(() =>\n createStyles({\n icono: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '32px',\n height: '32px',\n },\n })\n);\n\nexport default IconoEstadoStyles;\n","import { TipoCorteServicio } from 'config/tipoCorteServicioEnum';\nimport { iconoReportarCorteComercial, iconoReportarCorteCortado, iconoReportarCorteOK } from 'assets/images';\nimport { TIPOCORTE } from 'config/tiposCorte';\nimport useStyles from './IconoEstadoStyles';\n\nconst IconoEstado = ({ estadoServicio }: { estadoServicio: string }) => {\n const styles = useStyles();\n\n /**\n * Retorna div con ícono para cerrar vista\n *\n * @returns Retorna icono de cerrar vista\n */\n const mostrarIconoCortado: any = (icono: any) => (\n
\n {TipoCorteServicio.NORMAL}\n
\n );\n\n /**\n * Valida con un switch el estado actual\n * @returns Retorna el nodo con el icono según el estado del servicio.\n */\n const contenidoPorTipo = () => {\n switch (estadoServicio) {\n case TipoCorteServicio.NORMAL:\n return mostrarIconoCortado(iconoReportarCorteOK);\n case TipoCorteServicio.CORTADO:\n return mostrarIconoCortado(iconoReportarCorteCortado);\n case TipoCorteServicio.REPOSICION:\n return mostrarIconoCortado(iconoReportarCorteComercial);\n case TipoCorteServicio.TRAMITE_CORTE:\n return mostrarIconoCortado(iconoReportarCorteComercial);\n case TIPOCORTE.COD_CORTE_IMPREVISTO:\n return mostrarIconoCortado(iconoReportarCorteCortado);\n case TIPOCORTE.COD_CORTE_PROGRAMADO:\n return mostrarIconoCortado(iconoReportarCorteCortado);\n default:\n return <>;\n }\n };\n\n /**\n * Renderiza el contenido por tipo.\n */\n const renderContenido = contenidoPorTipo();\n\n return <>{renderContenido};\n};\n\nexport default IconoEstado;\n","import { createStyles, makeStyles } from '@material-ui/core';\n\nconst MensajeServicioStyles = makeStyles(() =>\n createStyles({\n contenedor: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n borderRadius: '.625rem',\n },\n descripcionFallas: {\n marginTop: '1rem',\n textAlign: 'center',\n },\n textoTitulo: {\n maxWidth: '430px',\n marginBottom: '4px',\n lineHeight: '24px',\n fontWeight: 600,\n },\n })\n);\n\nexport default MensajeServicioStyles;\n","import { Typography } from '@saesa/ui-kit-front';\nimport { TipoCorteServicio } from 'config/tipoCorteServicioEnum';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { TIPOCORTE } from 'config/tiposCorte';\nimport IconoEstado from './IconoEstado/IconoEstado';\nimport useStyles from './MensajeServicioStyles';\n\nconst MensajeServicio = ({ className, estadoServicio }: { className?: string; estadoServicio: string }) => {\n /**\n * Estilos del componente.\n */\n const styles = useStyles();\n\n /**\n * Uso del i18n para traducciones\n */\n const { t } = useTranslation();\n\n /**\n * Genera contenido para estado de corte normal\n * @returns contenido para estado normal\n */\n const contenidoEstadoOK = () => (\n <>\n \n {t('desconexion:paginas.estoySinLuz.paso2.contenido.titulo1')}\n \n {t('desconexion:paginas.estoySinLuz.paso2.contenido.titulo2')}\n \n );\n\n /**\n * Genera contenido para estado de corte comercial\n * @returns contenido para estado corte comercial\n */\n const contenidoEstadoCorteComercial = () => (\n <>\n \n {t('desconexion:paginas.estoySinLuz.paso2.corteComercial.titulo1')}\n \n {t('desconexion:paginas.estoySinLuz.paso2.corteComercial.titulo2')}\n \n );\n\n /**\n * Genera contenido para estado de corte en reposición\n * @returns contenido para estado corte en reposición\n */\n const contenidoEstadoReposicion = () => (\n <>\n \n {t('desconexion:paginas.estoySinLuz.paso2.reposicion.titulo1')}\n \n \n );\n\n /**\n * Genera contenido para estado de corte en tramite\n * @returns contenido para estado corte en tramite\n */\n const contenidoEstadoTramiteCorte = () => (\n <>\n \n {t('desconexion:paginas.estoySinLuz.paso2.corteTramite.titulo1')}\n \n {t('desconexion:paginas.estoySinLuz.paso2.corteTramite.titulo2')}\n \n );\n\n /**\n * Genera contenido para estado de corte imprevisto\n * @returns contenido para estado corte imprevisto\n */\n const contenidoEstadoCorteImprevisto = () => (\n <>\n \n {t('desconexion:paginas.estoySinLuz.paso2.corteImprevisto.titulo1')}\n \n {t('desconexion:paginas.estoySinLuz.paso2.corteImprevisto.titulo2')}\n \n );\n\n /**\n * Genera contenido para estado de corte programado\n * @returns contenido para estado corte programado\n */\n const contenidoEstadoCorteProgramado = () => (\n <>\n \n {t('desconexion:paginas.estoySinLuz.paso2.corteProgramado.titulo1')}\n \n {t('desconexion:paginas.estoySinLuz.paso2.corteProgramado.titulo2')}\n \n );\n\n /**\n * Genera el contneido del mensaje según el estado del servicio.\n * @returns contenido según el estado del servicio\n */\n const contenidoPorTipo = () => {\n switch (estadoServicio) {\n case TipoCorteServicio.NORMAL:\n return contenidoEstadoOK;\n case TipoCorteServicio.CORTADO:\n return contenidoEstadoCorteComercial;\n case TipoCorteServicio.REPOSICION:\n return contenidoEstadoReposicion;\n case TipoCorteServicio.TRAMITE_CORTE:\n return contenidoEstadoTramiteCorte;\n case TIPOCORTE.COD_CORTE_IMPREVISTO:\n return contenidoEstadoCorteImprevisto;\n case TIPOCORTE.COD_CORTE_PROGRAMADO:\n return contenidoEstadoCorteProgramado;\n default:\n return <>;\n }\n };\n\n /**\n * Estado para manejo de contenido por tipo.\n */\n const [renderContenido, setRenderContenido] = useState(contenidoPorTipo());\n\n /**\n * Efecto que gatilla el cambio del mensaje por tipo\n */\n useEffect(() => {\n setRenderContenido(contenidoPorTipo());\n }, [estadoServicio]);\n\n return (\n
\n \n
{renderContenido}
\n
\n );\n};\n\nMensajeServicio.defaultProps = {\n className: '',\n};\nexport default MensajeServicio;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst PagesItemStyle = makeStyles((theme: Theme) =>\n createStyles({\n pagesItem: {\n display: 'flex',\n flexFlow: 'column',\n boxShadow: '0px 0.125rem 1.25rem hsla(var(--valor-primario-azul-oscuro), 0.14)',\n borderRadius: '1.25rem',\n },\n flecha: {\n '--icon-primary-dark': 'var(--primario-morado)',\n marginRight: '0.625rem',\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n padding: '1.1875rem 1.75rem 1.1875rem 2.375rem',\n borderBottom: '1px solid var(--secundario-gris-azulado)',\n width: '95%',\n marginLeft: 'auto',\n marginRight: 'auto',\n [theme.breakpoints.down('sm')]: {\n padding: '1.125rem 5% 1.375rem 5%',\n width: '90%',\n },\n },\n title: {\n display: 'flex',\n alignItems: 'center',\n color: 'var(--secundario-azul-marino)',\n justifyContent: 'center',\n flexGrow: 1,\n fontSize: '18px',\n fontStyle: 'normal',\n fontWeight: 600,\n lineHeight: '26px',\n },\n body: {\n padding: '2rem 2.375rem 2.75rem 2.375rem',\n [theme.breakpoints.down('sm')]: {\n padding: '1.5rem 5%',\n width: '100%',\n },\n },\n ocultar: {\n display: 'none !important',\n },\n botonVolver: {\n textDecoration: 'none',\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n position: 'absolute',\n fontSize: '14px',\n fontWeight: 600,\n marginLeft: '-38px',\n [theme.breakpoints.down('sm')]: {\n marginLeft: '0',\n },\n },\n botonVolverTexto: {\n [theme.breakpoints.down('sm')]: {\n display: 'none !important',\n },\n },\n flechaAtras: {\n '--icon-primary-dark': 'hsla(var(--valor-primario-morado), 1)',\n },\n })\n);\n\nexport default PagesItemStyle;\n","import { Card, FlechaAtrasIcon, Typography } from '@saesa/ui-kit-front';\nimport { ReactNode, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\nimport { ETAPAS } from 'config/tipoEtapasEnum';\nimport { MAPACORTES } from 'root-page';\nimport { InfoClienteModel } from 'models';\nimport { useHistory } from 'react-router-dom';\nimport useStyles from './PagesItemStyle';\n\nconst PagesItem = ({\n dataTestId,\n className,\n children,\n header,\n pasoActual,\n titulo,\n infoCliente,\n}: {\n dataTestId?: string;\n className?: string;\n children: ReactNode;\n header?: ReactNode | null;\n titulo: string;\n pasoActual: ETAPAS;\n infoCliente: InfoClienteModel;\n}) => {\n /**\n * Componente history gestor ruteos\n */\n const history = useHistory();\n\n /**\n * Uso del i18n para traducciones\n */\n const { t } = useTranslation();\n\n /**\n * Estilos del componente\n */\n const styles = useStyles();\n\n /**\n * Use Effect encargado de volver al mapa desde el evento del link.\n */\n useEffect(() => {\n // Obtiene el enlace para volver al mapa en base al id del elemento\n const enlace = document.getElementById('irAlMapa');\n if (enlace) {\n enlace.addEventListener('click', e => {\n e.preventDefault();\n\n // Objeto de parametros para la url\n const parametros = {\n empresa: infoCliente.codDistribuidora,\n cliente: infoCliente.numeroCliente,\n };\n\n // Añade parametros a la url de empresa y cliente\n const url = `${enlace.getAttribute('href')}?${new URLSearchParams(parametros).toString()}`;\n history.push(url);\n });\n }\n }, [infoCliente]);\n\n return (\n \n
\n \n \n {t('desconexion:paginas.estoySinLuz.textoVolver')}\n \n \n {titulo}\n \n {header}\n
\n
{children}
\n
\n );\n};\n\nPagesItem.defaultProps = {\n dataTestId: '',\n className: '',\n header: null,\n};\n\nexport default PagesItem;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst SidemenuStyles = makeStyles((theme: Theme) =>\n createStyles({\n sidemenu: {\n position: 'relative',\n display: 'flex',\n flexFlow: 'column',\n alignItems: 'center',\n transition: 'var(--transition) all',\n background: 'var(--primario-azul-oscuro)',\n zIndex: 30,\n [theme.breakpoints.down('sm')]: {\n position: 'fixed',\n alignItems: 'flex-start',\n left: '50%',\n top: '72px',\n width: '95%',\n overflow: 'auto',\n transform: 'translateX(100%)',\n },\n },\n itemCnt: {\n padding: '0 1rem',\n margin: '0',\n listStyle: 'none',\n },\n sidemenuOpen: {\n transform: 'translateX(-50%)',\n },\n logo: {\n width: '60%',\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n logoImg: {\n width: '100%',\n height: '38px',\n },\n menu: {\n marginTop: '6rem',\n width: '100%',\n [theme.breakpoints.down('sm')]: {\n marginTop: '0',\n padding: '1.75rem 0',\n },\n },\n sidemenuItemCnt: {\n padding: '0.75rem 0',\n },\n sidemenuItem: {\n marginBottom: '1.25rem',\n color: 'var(--blanco)',\n listStyle: 'none',\n textDecoration: 'none',\n fontSize: '.875rem',\n },\n menuUsuario: {\n background: 'var(--gray03)',\n width: '100%',\n padding: '1.75rem 0',\n flexGrow: 1,\n },\n perfilUsuario: {\n padding: '0 2rem',\n },\n divisorCnt: {\n display: 'block',\n width: '100%',\n padding: '0 2rem',\n },\n divisor: {\n display: 'block',\n width: '100%',\n borderBottom: '1px solid var(--saesa-sky)',\n },\n })\n);\n\nexport default SidemenuStyles;\n","import { Hidden } from '@material-ui/core';\nimport clsx from 'clsx';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport {\n CLIENTEHOGAR,\n CLIENTEMPRESA,\n CONTACTO,\n GRUPOSAESA,\n HERRAMIENTAS,\n INDICADORES,\n INVERSIONISTA,\n QUEINESOMOS,\n SOMOSVECINOS,\n} from 'root-page';\nimport { RootState } from 'store';\nimport useStyles from './SidemenuStyles';\n\n// eslint-disable-next-line react/no-unused-prop-types\nconst Sidemenu = ({ className }: { className?: string; path: string }) => {\n const styles = useStyles();\n /**\n * translate\n */\n const { t } = useTranslation();\n\n const menuAbierto = useSelector((state: RootState) => state.desconexion.menuAbierto);\n\n /**\n * Arreglo que contiene menu de navegacion de menu tope del header\n */\n const menuMobile = [\n {\n id: 0,\n option: t('desconexion:paginas.mapaCortes.home.menu.grupoSaesa'),\n url: GRUPOSAESA,\n },\n {\n id: 1,\n option: t('desconexion:paginas.mapaCortes.home.menu.quienesSomos'),\n url: QUEINESOMOS,\n },\n {\n id: 2,\n option: t('desconexion:paginas.mapaCortes.home.menu.inversionistas'),\n url: INVERSIONISTA,\n },\n {\n id: 3,\n option: t('desconexion:paginas.mapaCortes.home.menu.indicadores'),\n url: INDICADORES,\n },\n {\n id: 4,\n option: t('desconexion:paginas.mapaCortes.home.menu.herramientas'),\n url: HERRAMIENTAS,\n },\n {\n id: 5,\n option: t('desconexion:paginas.mapaCortes.home.menu.contacto'),\n url: CONTACTO,\n },\n {\n id: 6,\n option: t('desconexion:paginas.mapaCortes.home.menu.somosVecinos'),\n url: SOMOSVECINOS,\n },\n {\n id: 7,\n option: t('desconexion:paginas.mapaCortes.home.menu.clienteHogar'),\n url: CLIENTEHOGAR,\n },\n {\n id: 8,\n option: t('desconexion:paginas.mapaCortes.home.menu.clienteEmpresa'),\n url: CLIENTEMPRESA,\n },\n ];\n\n return (\n \n \n
\n
\n
\n \n \n \n );\n};\n\nSidemenu.defaultProps = {\n className: '',\n};\n\nexport default Sidemenu;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst textoInformativoStyles = makeStyles((theme: Theme) =>\n createStyles({\n titulo: {\n position: 'relative',\n textAlign: 'center',\n marginBottom: '.5rem',\n fontSize: '1rem',\n [theme.breakpoints.down('sm')]: {},\n },\n textoBajada: {\n position: 'relative',\n textAlign: 'center',\n width: '100%',\n margin: '0 auto',\n [theme.breakpoints.down('sm')]: {\n textAlign: 'start',\n },\n },\n })\n);\n\nexport default textoInformativoStyles;\n","import { Typography } from '@saesa/ui-kit-front';\nimport { ReactElement } from 'react';\nimport useStyles from './TextoInformativoStyles';\n\nconst TextoInformativo = ({\n className,\n titulo,\n textoBajada,\n}: {\n className?: string;\n titulo: string | ReactElement;\n textoBajada?: string | ReactElement;\n}) => {\n /**\n * Variable que maneja el uso de estilos.\n */\n const styles = useStyles();\n return (\n
\n \n {titulo}\n \n \n {textoBajada}\n \n
\n );\n};\n\nTextoInformativo.defaultProps = {\n className: '',\n textoBajada: '',\n};\nexport default TextoInformativo;\n","import { useEffect, useRef } from 'react';\nimport ReCAPTCHA from 'react-google-recaptcha';\nimport { tiempoRecargaV2 } from 'utils/constants';\n\nconst CaptchaV2 = ({\n setTokenCaptchaV2,\n reiniciarCaptchaState,\n setReiniciarCaptchaState,\n}: {\n setTokenCaptchaV2: any;\n reiniciarCaptchaState: any;\n setReiniciarCaptchaState: any;\n}) => {\n /**\n * Referencia de captcha\n */\n const recaptchaRef = useRef(null);\n\n /**\n * Clave del captcha desde el entorno de variables\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const googleCaptchaKeyV2 = process.env.REACT_APP_CAPTCHA_KEY_V2 || '';\n\n /**\n * Función para reiniciar el captcha\n */\n const reiniciarCaptcha = () => {\n if (recaptchaRef.current) {\n recaptchaRef.current.reset();\n setReiniciarCaptchaState(false);\n }\n };\n\n /**\n * UseEffect para reiniciar el captcha automáticamente cada 2 minutos\n */\n useEffect(() => {\n const intervalo = setInterval(() => {\n reiniciarCaptcha();\n }, tiempoRecargaV2);\n\n return () => clearInterval(intervalo);\n }, []);\n\n /**\n * UseEffect para reiniciar el captcha en caso de error\n */\n useEffect(() => {\n if (reiniciarCaptchaState) {\n reiniciarCaptcha();\n }\n }, [reiniciarCaptchaState]);\n\n /**\n * Función controladora de la expiración del token del captcha\n */\n const handleExpired = () => {\n // Se reinicia el captcha manualmente si expira\n reiniciarCaptcha();\n };\n\n return (\n {\n setTokenCaptchaV2(value);\n }}\n />\n );\n};\n\nexport default CaptchaV2;\n","import DesconexionService from 'services/desconexionService';\nimport { TipoCaptchaDesconexiones } from 'config';\nimport { EventosGtmSaesa } from 'utils/GtmEvents';\nimport AnalyticsService from 'services/AnalyticsService';\nimport { HttpStatusCodeEnum } from 'config/HttpStatusCodeEnum';\n\n/**\n * Solicita el servicio de token y notificación.\n *\n * @param estadoCaptchaV3 - Un booleano que indica si el captcha V3 está habilitado.\n * @param tokenCaptcha - El token de captcha.\n * @param email - La dirección de correo electrónico del cliente.\n * @param numeroCaso - El número de caso para el cual se solicita la notificación.\n * @param tipoDeSuscripcion - El tipo de suscripción.\n * @param t - Una función de traducción para internacionalización.\n * @param enqueueSnackbar - Una función para encolar una notificación de barra de estado.\n * @param dispatch - Una función de despacho de Redux.\n * @param actualizarEstadoClienteSuscrito - Una función para actualizar el estado de suscripción del cliente.\n * @param actualizarEstadoCaptchaV3 - Una función para actualizar el estado del captcha V3.\n * @returns Una promesa que se resuelve cuando la solicitud de notificación se completa.\n */\nclass NotificacionService {\n static solicitarNotificacionTer = async (\n estadoCaptchaV3: boolean,\n tokenCaptcha: string,\n email: string,\n numeroCliente: string,\n numeroCaso: string,\n tipoDeSuscripcion: string,\n t: any,\n enqueueSnackbar: any,\n dispatch: any,\n actualizarEstadoClienteSuscrito: any,\n actualizarEstadoCaptchaV3: any,\n setReiniciarCaptchaState: any\n ): Promise => {\n try {\n let token: string | undefined;\n if (estadoCaptchaV3) {\n const response = await DesconexionService.solicitudDeTokenSeguridadBack(tokenCaptcha, TipoCaptchaDesconexiones.V3, email);\n token = response.token;\n const tokenString = token || '';\n localStorage.setItem('token', tokenString);\n } else {\n const response = await DesconexionService.solicitudDeTokenSeguridadBackV2(tokenCaptcha, TipoCaptchaDesconexiones.V2, email);\n token = response.token;\n const tokenString = token || '';\n localStorage.setItem('token', tokenString);\n }\n\n await DesconexionService.suscripcionNotificacionTer(tipoDeSuscripcion, numeroCaso, email, numeroCliente);\n localStorage.removeItem('token');\n AnalyticsService.enviarTag(EventosGtmSaesa.mapaDesconexiones.poligono.suscripcionCortes);\n dispatch(actualizarEstadoClienteSuscrito(true));\n } catch (error: any) {\n setReiniciarCaptchaState(true);\n if (estadoCaptchaV3) {\n dispatch(actualizarEstadoCaptchaV3(false));\n } else if (error?.response?.status === HttpStatusCodeEnum.CONFLICT) {\n enqueueSnackbar(t('errors:enviarNotificacionTer.errorServicioEmailSuscrito'), {\n variant: 'error',\n });\n } else {\n enqueueSnackbar(t('errors:enviarNotificacionTer.errorServicioEnviarCorreo'), {\n variant: 'error',\n });\n }\n }\n };\n}\n\nexport default NotificacionService;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst AcordeonNotificacionTerStyles = makeStyles((theme: Theme) =>\n createStyles({\n contenedorAcordeon: {\n display: 'flex',\n flexDirection: 'column',\n padding: '0px',\n boxShadow: ' 0px 1px 8px rgba(9, 39, 84, 0.14)',\n borderRadius: '5px',\n },\n contenedorInterno: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n padding: '16px 20px',\n background: 'var(--blanco)',\n borderRadius: '5px',\n gap: '4px',\n },\n titulo: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '18px',\n color: 'var(--gris-l3)',\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px 20px 24px',\n gap: '32px',\n background: 'var(--blanco)',\n borderRadius: '0px 0px 5px 5px',\n },\n subtitulo: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 400,\n fontSize: '14px',\n lineHeight: '18px',\n color: '#060709',\n [theme.breakpoints.down('sm')]: {},\n },\n internoContenedor: {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n marginBottom: '-16px',\n [theme.breakpoints.down('sm')]: {\n marginBottom: '-24px',\n },\n },\n\n input: {\n display: 'block',\n width: '100%',\n padding: '8px',\n marginBottom: '10px',\n border: '1px solid #ccc',\n borderRadius: '4px',\n },\n\n botonAcordeon: {\n padding: '0px',\n color: 'transparent',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n '&:active': {\n backgroundColor: 'transparent',\n },\n },\n\n borderAcordeonAbierto: {\n borderBottom: '1px solid var(--gris-l93)',\n borderTopLeftRadius: '5px',\n borderTopRightRadius: '5px',\n borderBottomLeftRadius: '0px',\n borderBottomRightRadius: '0px',\n },\n\n inputNumero: {\n width: '100%',\n backgroundColor: 'var(--blanco)',\n [theme.breakpoints.down(960)]: {\n width: '100%',\n },\n },\n inputRoot: {\n display: 'flex',\n alignItems: 'center',\n height: '45px',\n },\n inputInput: {\n paddingLeft: '16px',\n [theme.breakpoints.down(960)]: {\n paddingLeft: '14px',\n },\n },\n contenedorCaptchaV2: {\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n alignItems: 'flex-start',\n flexWrap: 'wrap',\n alignContent: 'center',\n marginTop: '7px',\n [theme.breakpoints.down(960)]: {\n marginTop: '12px',\n alignItems: 'center',\n },\n },\n\n textoCaptchaV2: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 400,\n fontSize: '14px',\n lineHeight: '18px',\n color: 'var(--rojo-l30)',\n textAlign: 'center',\n },\n recaptchaContainer: {\n transform: 'scale(0.86)',\n transformOrigin: '0 0',\n width: '254px',\n [theme.breakpoints.down('sm')]: {},\n },\n ocultarCaptcha: {\n height: '0',\n overflow: 'hidden',\n },\n\n contenedorGlobalSuscrito: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '0px',\n gap: '16px',\n flex: 'none',\n alignSelf: 'stretch',\n marginBottom: '40px',\n },\n\n contenedorTextosSuscrito: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '0px',\n gap: '8px',\n maxWidth: '100%',\n },\n\n textoTituloSuscrito: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 600,\n fontSize: '16px',\n lineHeight: '24px',\n textAlign: 'center',\n color: 'var(--secundario-azul-marino)',\n },\n subtituloTextoSuscrito: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 400,\n fontSize: '14px',\n lineHeight: '20px',\n textAlign: 'center',\n color: 'var(--gris-l3)',\n },\n\n textoCorreoSuscrito: {\n fontWeight: 600,\n },\n\n contendorSubTextosSuscritos: {\n display: 'flex',\n flexDirection: 'column',\n maxWidth: '100%',\n overflow: 'hidd',\n wordWrap: 'break-word',\n },\n contenedorInput: {\n display: 'flex',\n flexDirection: 'column',\n gap: '20px',\n },\n })\n);\n\nexport default AcordeonNotificacionTerStyles;\n","import { useTranslation } from 'react-i18next';\nimport { Typography } from '@material-ui/core';\nimport { TICK_CIRCLE } from 'assets/images';\nimport useStyles from './AcordeonNotificacionTerStyles';\n\nconst SuscritoNotificacionTer = ({ correo }: { correo: string }) => {\n /**\n * Hook de traducción de textos\n */\n const { t } = useTranslation();\n\n /**\n * Hook de estilos\n */\n const styles = useStyles();\n\n return (\n
\n \"cerrar\"\n
\n \n {t('desconexion:paginas.mapaCortes.notificacionTer.clienteSuscrito.titulo')}\n \n
\n \n {t('desconexion:paginas.mapaCortes.notificacionTer.clienteSuscrito.subTitulo')}\n \n {correo}\n
\n
\n
\n );\n};\n\nexport default SuscritoNotificacionTer;\n","import { useEffect, useState } from 'react';\nimport { Button, IconButton, Typography, TextField } from '@material-ui/core';\nimport { useFormik } from 'formik';\nimport { ARROW_UP, ARROW_DOWN } from 'assets/images';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { actualizarAcordeonNotificacionTerAbierto, actualizarEstadoCaptchaV3, actualizarEstadoClienteSuscrito, RootState } from 'store';\nimport * as Yup from 'yup';\nimport {\n MAXIMO_CARACTERES_NUMERO_DE_CLIENTE,\n MINIMO_CARACTERES_NUMERO_DE_CLIENTE,\n REGEX_MAXIMO_OCHO_NUMEROS,\n tipoDeSuscripcion,\n} from 'utils/constants';\nimport { useSnackbar } from 'notistack';\nimport CaptchaV2 from 'components/Captchas/CaptchaV2';\nimport { QueryParams } from 'config';\nimport NotificacionService from './NotificacionService';\nimport SuscritoNotificacionTer from './SuscritoNotificacionTer';\nimport './Selector.css';\nimport useStyles from './AcordeonNotificacionTerStyles';\n\nconst AcordeonNotificacionTer = ({ numeroCaso }: { numeroCaso: string }) => {\n /**\n * Hook de traducción de textos\n */\n const { t } = useTranslation();\n\n /**\n * Hook de estilos\n */\n const styles = useStyles();\n\n /**\n * Disparador para el selector\n */\n const dispatch = useDispatch();\n\n /**\n * Notificaciones en forma de pildora\n */\n const { enqueueSnackbar } = useSnackbar();\n\n /**\n * Obtiene el valor del estado del captcha v3\n */\n const estadoCaptchaV3 = useSelector((state: RootState) => state.desconexion.captchaV3Estado);\n\n /**\n * Obtiene el valor del token de captcha v3\n */\n const tokenCaptchaV3 = useSelector((state: RootState) => state.desconexion.tokenCaptchaV3);\n\n /**\n * Obtiene el estado de la suscripción del cliente\n */\n const estadoDeClienteSuscrito = useSelector((state: RootState) => state.desconexion.clienteSuscritoTer);\n\n /**\n * Obtiene el estado de abierto del acordeon\n */\n const estadoAcordeonAbierto = useSelector((state: RootState) => state.desconexion.acordeonNotificacionTerAbierto);\n\n /**\n * Variable que maneja query params\n */\n const query = QueryParams();\n\n /**\n * valor de cliente obtenido por query params\n */\n const queryNroCliente = query.get('cliente') || '';\n\n /**\n * Valores iniciales de formulario\n */\n const initialValues = {\n email: '',\n numeroCliente: queryNroCliente || '',\n };\n\n /**\n * Valor de formik\n */\n /* eslint-disable prefer-const */\n let formik: any;\n\n /**\n * UseState que contiene token generado por el captcha V2\n */\n const [tokenCaptchaV2, setTokenCaptchaV2] = useState('');\n\n /**\n * UseState que contiene el estado de reiniciar el captcha\n */\n const [reiniciarCaptchaState, setReiniciarCaptchaState] = useState(false);\n\n /**\n * UseState que contiene el validador del boton enviar\n */\n const [validarBoton, setValidarBoton] = useState(true);\n\n /**\n * Funcion que controla el abrir y cerrar acordeon\n */\n const handleAcordeon = () => {\n dispatch(actualizarAcordeonNotificacionTerAbierto(!estadoAcordeonAbierto));\n\n if (formik.values.email === '') {\n dispatch(actualizarEstadoClienteSuscrito(false));\n }\n };\n\n /**\n * Controlador de disparador en el boton enviar correo\n */\n const onSubmit = () => {\n NotificacionService.solicitarNotificacionTer(\n estadoCaptchaV3,\n estadoCaptchaV3 ? tokenCaptchaV3 : tokenCaptchaV2,\n formik.values.email,\n formik.values.numeroCliente,\n numeroCaso,\n tipoDeSuscripcion,\n t,\n enqueueSnackbar,\n dispatch,\n actualizarEstadoClienteSuscrito,\n actualizarEstadoCaptchaV3,\n setReiniciarCaptchaState\n );\n };\n\n /**\n * Validaciones de errores del formulario\n */\n formik = useFormik({\n initialValues,\n onSubmit,\n validationSchema: Yup.object({\n email: Yup.string().required(t('errors:enviarNotificacionTer.emailRequerido')).email(t('errors:enviarNotificacionTer.email')),\n numeroCliente: Yup.string()\n .required(t('errors:enviarNotificacionTer.numeroServicioRequerido'))\n .length(MAXIMO_CARACTERES_NUMERO_DE_CLIENTE, t('errors:enviarNotificacionTer.numeroServicio'))\n .matches(REGEX_MAXIMO_OCHO_NUMEROS, t('errors:enviarNotificacionTer.numeroServicio')),\n }),\n });\n\n /**\n * Función que controla el estado del input email\n * @param event de clic\n */\n const onHandleBlur = (event: any) => {\n if (event.nativeEvent.target.value.length > 0) {\n const email = event.nativeEvent.target.value;\n const newEvent = { ...event };\n formik.values.emails = email;\n formik.handleBlur(newEvent);\n } else {\n formik.handleBlur(event);\n }\n };\n\n /**\n * Función que controla el estado del input de número de cliente\n * Asegura que solo se ingresen números\n * @param event de clic\n */\n const onHandleBlurNumeroCliente = (event: any) => {\n if (\n event.nativeEvent.target.value.length > MINIMO_CARACTERES_NUMERO_DE_CLIENTE &&\n event.nativeEvent.target.value.length <= MAXIMO_CARACTERES_NUMERO_DE_CLIENTE\n ) {\n // Limpiar el valor para asegurar que solo se almacenen números\n const numeroCliente = event.nativeEvent.target.value.replace(/\\D/g, ''); // Filtra todo lo que no sea número\n const newEvent = { ...event };\n formik.values.numeroCliente = numeroCliente;\n formik.handleBlur(newEvent);\n } else {\n formik.handleBlur(event);\n }\n };\n\n /**\n * Función para manejar el cambio de valor en el campo numeroCliente\n * Asegura que solo se ingrese números y no más de 8 caracteres\n */\n const onHandleChangeNumeroCliente = (event: any) => {\n // Filtrar todo lo que no sea un número\n const numericValue = event.target.value.replace(/\\D/g, '');\n\n // Limitar el valor a 8 caracteres\n const limitedValue = numericValue.substring(MINIMO_CARACTERES_NUMERO_DE_CLIENTE, MAXIMO_CARACTERES_NUMERO_DE_CLIENTE);\n\n formik.setFieldValue('numeroCliente', limitedValue);\n };\n\n /**\n * UseEffect inicializador de formik\n */\n useEffect(() => {\n if (!estadoAcordeonAbierto) {\n // Restablecer los campos tocados del formulario\n formik.setTouched({\n email: false,\n numeroCliente: false,\n });\n\n formik.resetForm({\n values: {\n email: '',\n numeroCliente: '',\n },\n });\n\n if (queryNroCliente !== '') {\n const numeroClienteFiltrado = queryNroCliente.replace(/\\D/g, '');\n formik.setFieldValue('numeroCliente', numeroClienteFiltrado);\n }\n }\n\n formik.values.email = '';\n }, [estadoAcordeonAbierto, queryNroCliente]);\n\n /**\n * UseEffect que valida el estado del boton de enviar\n */\n useEffect(() => {\n setValidarBoton(\n !formik.isValid ||\n (tokenCaptchaV2 === '' && !tokenCaptchaV3) ||\n (!estadoCaptchaV3 && tokenCaptchaV2 === '') ||\n formik.values.email === ''\n );\n }, [formik, tokenCaptchaV2, tokenCaptchaV3, formik.values.email]);\n\n return (\n <>\n {!estadoDeClienteSuscrito && (\n
\n
\n {t('desconexion:paginas.mapaCortes.notificacionTer.titulo')}\n \n {estadoAcordeonAbierto ? \"cerrar\" : \"abrir\"}\n \n
\n {estadoAcordeonAbierto && (\n
\n
\n {t('desconexion:paginas.mapaCortes.notificacionTer.subtitulo')}\n\n
\n \n\n \n
\n\n
\n
\n \n
\n
\n
\n\n \n {t('desconexion:paginas.mapaCortes.notificacionTer.boton')}\n \n
\n )}\n
\n )}\n {estadoDeClienteSuscrito && }\n \n );\n};\n\nexport default AcordeonNotificacionTer;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst AvisoPagoCortesStyles = makeStyles((theme: Theme) =>\n createStyles({\n avisoCorteCnt: {\n width: '100%',\n display: 'flex',\n flexFlow: 'column',\n justifyContent: 'center',\n margin: '0 auto 0 auto',\n background: 'var(--gris-l96)',\n borderRadius: '0.625rem',\n padding: '1rem',\n [theme.breakpoints.down('sm')]: {\n flexDirection: 'column',\n minWidth: 'auto',\n padding: '16px',\n maxWidth: '422px',\n },\n },\n noVistaAvisoCorteCnt: {\n display: 'none',\n },\n dataCorte: {\n width: '100%',\n [theme.breakpoints.down('sm')]: {\n flexFlow: 'column',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n marginBottom: '0',\n },\n },\n label: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n marginBottom: '0.25rem',\n [theme.breakpoints.down('sm')]: {\n display: 'block',\n textAlign: 'left',\n },\n },\n item: {\n flexGrow: 41,\n marginBottom: '0.7rem',\n [theme.breakpoints.down('sm')]: {\n marginBottom: '1rem',\n },\n },\n info: {\n textAlign: 'left',\n marginBottom: '0.25rem',\n [theme.breakpoints.down('sm')]: {\n display: 'block',\n },\n },\n sinInfo: {\n textAlign: 'left',\n },\n contenedorGrafico: {\n display: 'flex',\n flexDirection: 'column',\n background: 'var(--blanco)',\n boxShadow: '0px 2px 12px 0px rgba(9, 39, 84, 0.14)',\n borderRadius: '5px',\n paddingBottom: '10px',\n marginTop: '12px',\n },\n grafico: { position: 'relative', display: 'flex', justifyContent: 'center' },\n objetoSobreponer: {\n position: 'relative',\n top: '50px',\n height: '0',\n display: 'flex',\n justifyContent: 'center',\n },\n ovaloGrafica: {\n width: ' 112.32px',\n height: '112.32px',\n borderRadius: '50%',\n display: 'flex',\n background: 'var(--blanco)',\n boxShadow: '0px 1.3061px 13.061px rgba(9, 39, 84, 0.14)',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n porcentajeRecuperados: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 700,\n fontSize: '24px',\n lineHeight: '32px',\n display: 'flex',\n alignItems: 'center',\n textAlign: 'center',\n color: 'var(--gris-l3)',\n order: 1,\n flexGrow: 0,\n },\n circuloVerde: {\n borderRadius: '50%',\n width: '9.14px',\n height: '9.14px',\n background: 'var(--verde-exito)',\n flex: 'none',\n order: 0,\n flexGrow: 0,\n },\n contenedorPorcentaje: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n gap: '8px',\n },\n textos: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 400,\n fontSize: '12px',\n lineHeight: '16px',\n display: 'flex',\n textAlign: 'center',\n color: 'var(--gris-l3)',\n order: 1,\n alignSelf: 'stretch',\n flexGrow: 0,\n },\n contenedorInternoOvaloGrafica: {\n display: 'flex',\n flexDirection: 'column',\n },\n tituloClientesRecuperados: {\n marginTop: '20px',\n display: 'flex',\n fontSize: '18px',\n fontWeight: 600,\n justifyContent: 'center',\n },\n labelClientesRecuperados: {\n display: 'flex',\n fontSize: '14px',\n justifyContent: 'center',\n },\n contenedorPieDeGrafico: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '6px',\n padding: '1vh',\n },\n circuloRojo: {\n borderRadius: '50%',\n width: '9.14px',\n height: '9.14px',\n background: 'var(--rojo-error)',\n },\n clientesSinServicio: {\n fontSize: '14px',\n lineHeight: '16px',\n alignItems: 'center',\n textAlign: 'center',\n justifyContent: 'center',\n },\n })\n);\n\nexport default AvisoPagoCortesStyles;\n","import { Typography } from '@saesa/ui-kit-front';\nimport { TipoEstadoActualTrackingCorteEnum, TipoTrackingCorteEnum } from 'config';\nimport { useEffect, useState } from 'react';\nimport { PieChart, Pie, Cell } from 'recharts';\nimport { useTranslation } from 'react-i18next';\nimport AcordeonNotificacionTer from 'components/AcordeonNotificacionTer/AcordeonNotificacionTer';\nimport { useDispatch } from 'react-redux';\nimport { actualizarEstadoGrafico } from 'store';\nimport useStyles from './AvisoPagoCortesStyles';\n\nconst AvisoPagoCortes = ({\n className,\n horaInicioCorte,\n fechaInicioCorte,\n fechaReposicion,\n motivoCorte,\n clientesAfectados,\n estadoCorte,\n programado,\n tipoCorte,\n clientesAfectadosIniciales,\n porcentajeClientesRecuperados,\n porcentajeClientesSinServicio,\n notificacionTerActivo,\n numeroCaso,\n}: {\n className?: string;\n horaInicioCorte: string;\n fechaInicioCorte: string;\n fechaReposicion: string;\n motivoCorte?: string;\n clientesAfectados: string;\n estadoCorte: string;\n programado?: boolean;\n tipoCorte?: string;\n clientesAfectadosIniciales: any;\n porcentajeClientesRecuperados: any;\n porcentajeClientesSinServicio: any;\n notificacionTerActivo: boolean;\n numeroCaso: string;\n}) => {\n /**\n * Hook de traducción de textos\n */\n const { t } = useTranslation();\n\n /**\n * Disparador para el selector\n */\n const dispatch = useDispatch();\n\n /**\n * Hook de estilos\n */\n const styles = useStyles();\n\n /**\n * Objeto que contiene los datos para el grafico\n */\n const objetoGrafico = [\n { name: 'clientesAfectados', value: parseInt(porcentajeClientesSinServicio, 10) },\n { name: 'clientesRecuperados', value: parseInt(porcentajeClientesRecuperados, 10) },\n ];\n\n /**\n * Colores para el grafico\n */\n const colores = [\n { start: '#FE0130', end: '#98011D' },\n { start: '#4EF3B4', end: '#0ECC83' },\n ];\n\n /**\n * Variables para modificar el grafico en caso de 100%\n */\n let paddingAngle100porciento = 5;\n let strokeOpacity100porciento = 6;\n let strokeWidth100porciento = 6;\n /**\n * Variables para indicar si se debe animar o no el grafico\n */\n let animacionActivada = true;\n /**\n * Indicador de si se debe mostrar o no gráfico\n */\n let graficoValido = false;\n /**\n * Indicador de si existe algun porcentaje al 100%\n */\n let porcentajeEn100porCiento = false;\n /**\n * Indicador de si se debe mostrar o no clientes afectados\n */\n let validacionClientesAfectados = true;\n\n /**\n * Funcion que valida si porcentajes y clientes afectados son validos\n */\n const validarGrafico = () => {\n porcentajeEn100porCiento = porcentajeClientesRecuperados === '100' || porcentajeClientesSinServicio === '100';\n\n // validación de valores válidos para gráfico, si alguno no es válido no se muestra gráfico\n if (\n porcentajeClientesRecuperados === undefined ||\n porcentajeClientesRecuperados === null ||\n porcentajeClientesRecuperados === '' ||\n porcentajeClientesSinServicio === undefined ||\n porcentajeClientesSinServicio === null ||\n porcentajeClientesSinServicio === '' ||\n clientesAfectadosIniciales === undefined ||\n clientesAfectadosIniciales === null ||\n clientesAfectadosIniciales === '0' ||\n clientesAfectadosIniciales === ''\n ) {\n graficoValido = false;\n dispatch(actualizarEstadoGrafico(graficoValido));\n return;\n }\n\n graficoValido = true;\n dispatch(actualizarEstadoGrafico(graficoValido));\n\n // validación para casos de 100%\n if (porcentajeClientesRecuperados === '100' || porcentajeClientesSinServicio === '100') {\n paddingAngle100porciento = 0;\n strokeOpacity100porciento = 0;\n animacionActivada = false;\n }\n\n // validación para casos de porcentajes menores a 2%\n if (parseInt(porcentajeClientesRecuperados, 10) < 2 || parseInt(porcentajeClientesSinServicio, 10) < 2) {\n strokeWidth100porciento = 0;\n }\n };\n\n validarGrafico();\n validacionClientesAfectados =\n (graficoValido === false && tipoCorte === TipoTrackingCorteEnum.IMPREVISTO) || tipoCorte === TipoTrackingCorteEnum.PROGRAMADO;\n\n const contenido = () => (\n <>\n
\n
\n {!programado && tipoCorte !== TipoTrackingCorteEnum.IMPREVISTO && (\n
\n \n {t('desconexion:paginas.tracking.corte.avisoPago.textos.inicioCorte')}\n \n\n {tipoCorte !== TipoTrackingCorteEnum.IMPREVISTO && fechaInicioCorte ? (\n \n {`${fechaInicioCorte} - ${horaInicioCorte}`}\n \n ) : (\n \n {t('desconexion:paginas.tracking.corte.avisoPago.textos.sinDeterminar')}\n \n )}\n
\n )}\n {!programado && tipoCorte !== TipoTrackingCorteEnum.IMPREVISTO && (\n
\n {estadoCorte === TipoEstadoActualTrackingCorteEnum.NORMALIZED ? (\n \n {t('desconexion:paginas.tracking.corte.avisoPago.textos.reposicionServicio')}\n \n ) : (\n \n {t('desconexion:paginas.tracking.corte.avisoPago.textos.reposicionEstimada')}\n \n )}\n\n {tipoCorte !== TipoTrackingCorteEnum.IMPREVISTO && fechaReposicion ? (\n \n {fechaReposicion}\n \n ) : (\n \n {t('desconexion:paginas.tracking.corte.avisoPago.textos.sinDeterminar')}\n \n )}\n
\n )}\n\n {tipoCorte !== TipoTrackingCorteEnum.IMPREVISTO && validacionClientesAfectados && (\n
\n \n {t('desconexion:paginas.tracking.corte.avisoPago.textos.clientesAfectados')}\n \n\n {clientesAfectados ? (\n \n {clientesAfectados}\n \n ) : (\n \n {t('desconexion:paginas.tracking.corte.avisoPago.textos.sinDeterminar')}\n \n )}\n
\n )}\n {tipoCorte !== TipoTrackingCorteEnum.IMPREVISTO && (\n
\n \n {t('desconexion:paginas.tracking.corte.avisoPago.textos.motivoCorte')}\n \n\n {motivoCorte ? (\n \n {motivoCorte}\n \n ) : (\n \n {t('desconexion:paginas.tracking.corte.avisoPago.textos.sinDeterminar')}\n \n )}\n
\n )}\n\n {tipoCorte === TipoTrackingCorteEnum.IMPREVISTO && notificacionTerActivo && }\n\n {tipoCorte === TipoTrackingCorteEnum.IMPREVISTO && graficoValido && (\n \n
\n \n {parseInt(clientesAfectadosIniciales, 10).toLocaleString('en-US').replaceAll(',', '.')}\n \n \n {t('desconexion:paginas.mapaCortes.GraficoClientesNormalizados.clientesAfectados')}\n \n
\n {/* Circulo interno de gráfico */}\n\n
\n
\n
\n
\n {!porcentajeEn100porCiento &&
}\n {porcentajeClientesRecuperados}%\n
\n \n {t('desconexion:paginas.tracking.corte.avisoPago.textos.clientesRecuperados')}\n \n
\n
\n
\n\n {/* Grafico */}\n
\n \n \n {objetoGrafico.map((entry, index) => (\n \n \n \n \n ))}\n \n \n {objetoGrafico.map((datas, index) => (\n \n ))}\n \n \n
\n\n {porcentajeClientesRecuperados !== '100' && (\n
\n
\n {porcentajeClientesSinServicio}%\n \n {t('desconexion:paginas.mapaCortes.GraficoClientesNormalizados.clientesSinServicio')}\n \n
\n )}\n
\n )}\n
\n
\n \n );\n\n const [renderContenido, setRenderContenido] = useState(contenido());\n\n useEffect(() => {\n setRenderContenido(contenido());\n }, [\n horaInicioCorte,\n fechaInicioCorte,\n fechaReposicion,\n motivoCorte,\n clientesAfectados,\n estadoCorte,\n programado,\n clientesAfectadosIniciales,\n porcentajeClientesRecuperados,\n porcentajeClientesSinServicio,\n tipoCorte,\n notificacionTerActivo,\n ]);\n\n return (\n
\n {renderContenido}\n
\n );\n};\n\nAvisoPagoCortes.defaultProps = {\n className: '',\n programado: false,\n tipoCorte: '',\n motivoCorte: '',\n};\n\nexport default AvisoPagoCortes;\n","import { Button } from '@material-ui/core';\nimport { ExportIcon, Typography } from '@saesa/ui-kit-front';\nimport { URL_ESTOY_SIN_LUZ } from 'navigation';\nimport useStyles from 'pages/Styles/VistasCorteStyles';\nimport { useTranslation } from 'react-i18next';\nimport AnalyticsService from 'services/AnalyticsService';\nimport { EventosGtmSaesa } from 'utils/GtmEvents';\n\nconst TextoInferiorReportar = ({ titulo }: { titulo: string }) => {\n /**\n * Componente de traduccion i18n\n */\n const { t } = useTranslation();\n /**\n * Componente de hoja de estilos\n */\n const styles = useStyles();\n /**\n * Metodo que redirecciona a sitio publico para reportar un corte\n */\n const reportarCorte = () => {\n AnalyticsService.enviarTag(EventosGtmSaesa.mapaDesconexiones.reportarCorte);\n window.open(URL_ESTOY_SIN_LUZ, '_blank');\n };\n return (\n
\n \n {titulo}\n \n \n
\n );\n};\n\nexport default TextoInferiorReportar;\n","import { EDELAYSEN_LOGO, FRONTEL_LOGO, GRUPOSAESA_LOGO, LUZOSORNO_LOGO, SAESA_LOGO } from 'assets/images';\nimport { TipoDistribuidora } from 'config/tipoDistribuidoraEnum';\nimport { SetStateAction } from 'react';\nimport { esDatoValido } from './desconexionUtils';\n\nlet logo = '';\n\nconst manejarLogo = (codEmpresa: string): any => {\n switch (codEmpresa) {\n case TipoDistribuidora.SAESA:\n return SAESA_LOGO;\n case TipoDistribuidora.FRONTEL:\n return FRONTEL_LOGO;\n case TipoDistribuidora.EDELAYSEN:\n return EDELAYSEN_LOGO;\n case TipoDistribuidora.LUZ_OSORNO:\n return LUZOSORNO_LOGO;\n default:\n return GRUPOSAESA_LOGO;\n }\n};\n\n/**\n * Maneja el logo al seleccionar un tipo de servicio en el selector\n * @param servicio arreglo de data de servicios proveniente de reduxta\n * @param nuevoNumeroServicio numero de servicio seleccionado\n * @returns string\n */\nexport const obtenerLogo = (tipoEmpresa: string | null): SetStateAction => {\n if (esDatoValido(tipoEmpresa)) {\n logo = manejarLogo(tipoEmpresa!);\n } else {\n logo = GRUPOSAESA_LOGO;\n }\n return logo;\n};\n","export enum ETAPAS {\n DEFAULT = '0',\n PASO1 = '1',\n PASO2 = '2',\n PASO3 = '3',\n PASO4 = '4',\n PASO_TICKET_INGRESADO = 'TICKET_INGRESADO',\n PASO_TICKET_EN_PROCESO = 'TICKET_EN_PROCESO',\n}\n","/**\n * Establece una cookie con un nombre, un valor y una duración en días.\n *\n * @param name - El nombre de la cookie.\n * @param value - El valor de la cookie.\n * @param days - El número de días durante los cuales la cookie debe estar válida.\n * @param tiempoMostrarModal - Valor en milisegundos que se debe mostrar el modal\n */\nconst setCookie = (name: string, value: string, days: number, tiempoMostrarModal: number) => {\n const d = new Date();\n d.setTime(d.getTime() + days * tiempoMostrarModal);\n const expires = `expires=${d.toUTCString()}`;\n document.cookie = `${name}=${value || ''}; ${expires}; path=/`;\n};\n\n/**\n * Obtiene el valor de una cookie por su nombre.\n *\n * @param name - El nombre de la cookie a obtener.\n * @returns El valor de la cookie si existe, o null si no se encuentra.\n */\nconst getCookie = (name: string): string | null => {\n const nameEQ = `${name}=`;\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i += 1) {\n const c = ca[i].trim();\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length);\n }\n return null;\n};\n\n/**\n * Muestra un modal basado en la cookie especificada. El modal se muestra si no se ha mostrado en las últimas 24 horas.\n *\n * @param cookieName - El nombre de la cookie que controla la visibilidad del modal.\n * @returns true si el modal se muestra, false en caso contrario.\n */\nexport const mostrarModalCookie = (cookieName: string, tiempoMostrarModal: number): boolean => {\n const lastShown = getCookie(cookieName);\n const now = new Date();\n const shouldShowModal = !lastShown || now.getTime() - new Date(lastShown).getTime() > tiempoMostrarModal;\n\n if (shouldShowModal) {\n setCookie(cookieName, now.toISOString(), 1, tiempoMostrarModal);\n return true;\n }\n return false;\n};\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst ModalGlobalStyles = makeStyles((theme: Theme) =>\n createStyles({\n backdrop: {\n display: 'block',\n position: 'fixed',\n top: '0',\n bottom: '0',\n left: '0',\n right: '0',\n background: 'hsla(var(--gris-l3-h), var(--gris-l3-s), var(--gris-l3-l), 0.7)',\n transition: 'var(--transition) opacity',\n zIndex: 40,\n [theme.breakpoints.down('sm')]: {\n zIndex: 40,\n },\n },\n modalGlobal: {\n position: 'fixed',\n top: '50%',\n left: '50%',\n background: 'var(--blanco)',\n padding: '44px',\n borderRadius: '15px',\n boxShadow: 'var(--box-shadow)',\n transform: 'translate(-50%, -50%)',\n zIndex: 40,\n display: 'flex',\n flexDirection: 'column',\n [theme.breakpoints.down('sm')]: {\n width: '90%',\n padding: '44px 20px 44px 20px',\n },\n },\n contenedorGlobal: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '0px',\n gap: '24px',\n flex: 'none',\n order: 0,\n alignSelf: 'stretch',\n flexGrow: 0,\n zIndex: 0,\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n\n tituloTextos: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 600,\n fontSize: '16px',\n lineHeight: '20px',\n textAlign: 'center',\n color: 'var(--secundario-azul-marino)',\n flex: 'none',\n order: 0,\n flexGrow: 0,\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n\n parrafoGlobal: {\n textAlign: 'center',\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 400,\n fontSize: '14px',\n lineHeight: '18px',\n color: 'var(--gris-l3)',\n flex: 'none',\n alignSelf: 'stretch',\n flexGrow: 0,\n\n [theme.breakpoints.down('sm')]: {\n textAlign: 'center',\n },\n },\n\n contenedorCerrar: {\n position: 'fixed',\n top: 0,\n right: 0,\n padding: '18px',\n },\n\n contenedorTitulo: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n\n boton: {\n width: '106px',\n fontSize: '14px',\n padding: '14px 32px 13px 32px',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n\n contenedorBotones: {\n marginTop: '20px',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'flex-start',\n padding: '0px',\n gap: '16px',\n width: '100%',\n height: '45px',\n flex: 'none',\n order: 1,\n flexGrow: 0,\n zIndex: 1,\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n },\n },\n\n parrafosConLinks: {\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 400,\n fontSize: '14px',\n lineHeight: '18px',\n color: 'var(--gris-l3)',\n },\n textoLink: {\n fontSize: '14px',\n fontFamily: 'Neutrif Studio',\n fontStyle: 'normal',\n fontWeight: 600,\n lineHeight: '18px',\n color: 'var(--primario-morado)',\n textDecoration: 'none',\n cursor: 'pointer',\n userSelect: 'none',\n '&:hover': {\n color: '#2700B8',\n },\n [theme.breakpoints.down('sm')]: {\n display: 'inline',\n },\n },\n contenedorIcono: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: '14px',\n },\n botonCerrar: {\n padding: '0px',\n },\n })\n);\n\nexport default ModalGlobalStyles;\n","import { Button } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport ModalGlobalStyles from 'utils/styles/ModalGlobalStyles';\n\nconst BotonCerrar = ({ cerrarModal }: { cerrarModal: () => void }) => {\n /**\n * Componente styles de modal global\n */\n const stylesGlobal = ModalGlobalStyles();\n\n /**\n * Componente de traduccion i18n\n */\n const { t } = useTranslation();\n\n return (\n
\n \n {t('desconexion:paginas.modalSitioNoDisponible.botonCerrar')}\n \n
\n );\n};\n\nexport default BotonCerrar;\n","import { IconButton } from '@material-ui/core';\nimport { CLOSE_CIRCLE } from 'assets/images';\nimport ModalGlobalStyles from 'utils/styles/ModalGlobalStyles';\n\nconst IconoCerrar = ({ cerrarModal }: { cerrarModal: () => void }) => {\n /**\n * Componente styles de modal global\n */\n const stylesGlobal = ModalGlobalStyles();\n\n return (\n
\n \n \"cerrar\"\n \n
\n );\n};\n\nexport default IconoCerrar;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst ModalSitioNoDisponibleStyles = makeStyles((theme: Theme) =>\n createStyles({\n modalGlobal: {\n gap: '12px',\n },\n tituloTexto: {\n width: 'auto',\n [theme.breakpoints.down('sm')]: {\n width: '95%',\n },\n },\n contenedorInterno: {\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n maxWidth: '364px',\n [theme.breakpoints.down('sm')]: {\n maxWidth: '95%',\n },\n },\n\n imagenLogoSaesa: {\n width: ' 120px !important',\n maxWidth: '120px !important',\n },\n margenSuperiorTexto: {\n marginTop: '-8px',\n },\n })\n);\n\nexport default ModalSitioNoDisponibleStyles;\n","import ReactDOM from 'react-dom';\nimport { Typography } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport BotonCerrar from 'components/BotonCerrar/BotonCerrar';\nimport IconoCerrar from 'components/BotonCerrar/IconoCerrar';\nimport { GRUPOSAESA_LOGO } from 'assets/images';\nimport ModalGlobalStyles from 'utils/styles/ModalGlobalStyles';\nimport ModalSitioNoDisponibleStyles from './ModalSitioNoDisponibleStyles';\n\nconst ModalSitioNoDisponible = ({ cerrarModal }: { cerrarModal: () => void }) => {\n /**\n * Selecciona el elemento modal\n */\n const element = document.getElementById('modal')!;\n\n /**\n * Componente styles\n */\n const styles = ModalSitioNoDisponibleStyles();\n /**\n * Componente styles de modal global\n */\n const stylesGlobal = ModalGlobalStyles();\n\n /**\n * Componente de traduccion i18n\n */\n const { t } = useTranslation();\n\n return (\n element &&\n ReactDOM.createPortal(\n
\n
\n
\n \"Logo\n
\n\n
\n {t('desconexion:paginas.modalSitioNoDisponible.textoUno')}\n\n {t('desconexion:paginas.modalSitioNoDisponible.textoDos')}\n\n \n {t('desconexion:paginas.modalSitioNoDisponible.textoTres')}\n \n
\n\n \n \n
\n
,\n element\n )\n );\n};\n\nexport default ModalSitioNoDisponible;\n","export default __webpack_public_path__ + \"static/media/tooltip-numero-servicio.1c82e67d.png\";","export default __webpack_public_path__ + \"static/media/icono-reportar-ok.6f70a9c3.svg\";","export default __webpack_public_path__ + \"static/media/icono-reportar-cortado.8b6b4a2e.svg\";","export default __webpack_public_path__ + \"static/media/icono-reportar-comercial.ac40d49c.svg\";","export default __webpack_public_path__ + \"static/media/icono-redireccion.c79e5f92.svg\";","export default __webpack_public_path__ + \"static/media/icono-redireccion-morado.332f2852.svg\";","export default __webpack_public_path__ + \"static/media/icono-volver.6becedd4.svg\";","export default __webpack_public_path__ + \"static/media/icono-informacion.92f66ad0.svg\";","export default __webpack_public_path__ + \"static/media/icono-mapa.2955e5f7.svg\";","export default __webpack_public_path__ + \"static/media/icono-reloj.8308eb50.svg\";","export default __webpack_public_path__ + \"static/media/flash-slash.597e9742.svg\";","export default __webpack_public_path__ + \"static/media/clock.dae65af1.svg\";","export default __webpack_public_path__ + \"static/media/alerta.f1915b27.svg\";","export default __webpack_public_path__ + \"static/media/repair.d0857617.svg\";","export default __webpack_public_path__ + \"static/media/alert-orange.26627e99.svg\";","export default __webpack_public_path__ + \"static/media/close-circle.29f7c1f6.svg\";","export default __webpack_public_path__ + \"static/media/arrow-up.002d7f04.svg\";","export default __webpack_public_path__ + \"static/media/arrow-down.17c7d4f5.svg\";","export default __webpack_public_path__ + \"static/media/tick-circle.4a86b6f0.svg\";","export const GRUPOSAESA_LOGO = `${process.env.REACT_APP_ASSETS_URL}/images/grupo-saesa-logo.svg`\nexport const SAESA_LOGO = `${process.env.REACT_APP_ASSETS_URL}/images/saesa-logo.svg`\nexport const FRONTEL_LOGO = `${process.env.REACT_APP_ASSETS_URL}/images/frontel-logo.svg`\nexport const EDELAYSEN_LOGO = `${process.env.REACT_APP_ASSETS_URL}/images/edelaysen-logo.svg`;\nexport const LUZOSORNO_LOGO = `${process.env.REACT_APP_ASSETS_URL}/images/luz-osorno-logo.svg`;\nexport { default as tooltipServicio } from './tooltip-numero-servicio.png';\nexport { default as iconoReportarCorteOK } from './icono-reportar-ok.svg';\nexport { default as iconoReportarCorteCortado } from './icono-reportar-cortado.svg';\nexport { default as iconoReportarCorteComercial } from './icono-reportar-comercial.svg';\nexport { default as iconoRedireccion } from './icono-redireccion.svg';\nexport { default as iconoRedireccionMorado } from './icono-redireccion-morado.svg';\nexport { default as iconoVolver } from './icono-volver.svg';\nexport { default as iconoInformacion } from './icono-informacion.svg';\nexport { default as iconoMapa } from './icono-mapa.svg';\nexport { default as iconoReloj } from './icono-reloj.svg';\nexport { default as flashSlash } from './flash-slash.svg';\nexport { default as clock } from './clock.svg';\nexport { default as alerta } from './alerta.svg';\nexport { default as repair } from './repair.svg';\nexport { default as alertaNaranja } from './alert-orange.svg';\nexport { default as CLOSE_CIRCLE } from './close-circle.svg';\nexport { default as ARROW_UP } from './arrow-up.svg';\nexport { default as ARROW_DOWN } from './arrow-down.svg';\nexport { default as TICK_CIRCLE } from './tick-circle.svg';\n","export default __webpack_public_path__ + \"static/media/logo-google.dc35acb2.svg\";","export enum TIPOCORTE {\n CORTE_IMPREVISTO = 'inesperado',\n CORTE_PROGRAMADO = 'programado',\n PROXIMO_CORTE_PROGRAMADO = 'Próximo corte programado',\n COD_CORTE_PROGRAMADO = 'CP',\n COD_CORTE_IMPREVISTO = 'CI',\n DEFAULT = '',\n}\n","import { createSlice } from '@reduxjs/toolkit';\nimport { DesconexionState } from './desconexionState.interface';\n\nconst initialState: DesconexionState = {\n distribuidora: {\n urlLogo: '',\n },\n servicio: {\n id: '',\n },\n usuario: {\n numeroTelefono: '',\n apellido: '',\n email: '',\n id: '',\n nombre: '',\n rut: '',\n },\n menuAbierto: false,\n modalMobileAbierto: false,\n modalMobileAbiertoCompleto: false,\n mensajeFlotanteCerrado: false,\n modoPEC: true,\n numeroSolicitud: '',\n cortesFuturos: false,\n switchCortesFuturos: false,\n estadoGrafico: false,\n modalPaginaNoDisponible: {\n tiempoCookie: 0,\n activacionModal: false,\n },\n flagCargado: false,\n flagCargadoEstoySinLuz: false,\n flagCargadoNotificacionTer: false,\n tokenCaptchaV3: '',\n captchaV3Estado: false,\n captchaV2Estado: false,\n acordeonNotificacionTerAbierto: false,\n pasoActual: 1,\n clienteSuscritoTer: false,\n};\n\nexport const desconexionSlice = createSlice({\n name: 'desconexion',\n initialState,\n reducers: {\n actualizarLogo: (state, action) => {\n state.distribuidora.urlLogo = action.payload?.urlLogo || state.distribuidora.urlLogo;\n },\n actualizarEstadoMenuAbierto: (state, action) => {\n state.menuAbierto = action.payload.menuAbierto;\n },\n actualizarEstadoModalMobileAbierto: (state, action) => {\n state.modalMobileAbierto = action.payload.modalMobileAbierto;\n },\n actualizarEstadoModalMobileAbiertoCompleto: (state, action) => {\n state.modalMobileAbiertoCompleto = action.payload.modalMobileAbiertoCompleto;\n },\n actualizarEstadoMensajeFlotanteCerrado: (state, action) => {\n state.mensajeFlotanteCerrado = action.payload.mensajeFlotanteCerrado;\n },\n actualizarFeatureFlagModoPEC: (state, action) => {\n state.modoPEC = action.payload;\n },\n actualizarNumeroSolicitud: (state, action) => {\n state.numeroSolicitud = action.payload;\n },\n actualizarFeatureFlagCortesFuturos: (state, action) => {\n state.cortesFuturos = action.payload;\n },\n actualizarSwitchCortesFuturos: (state, action) => {\n state.switchCortesFuturos = action.payload;\n },\n actualizarEstadoGrafico: (state, action) => {\n state.estadoGrafico = action.payload;\n },\n actualizarEstadoModalPaginaNoDisponible: (state, action) => {\n state.modalPaginaNoDisponible.tiempoCookie = action.payload.tiempoCookie;\n state.modalPaginaNoDisponible.activacionModal = action.payload.activacionModal;\n },\n actualizarEstadoFlag: (state, action) => {\n state.flagCargado = action.payload;\n },\n actualizarEstadoFlagEstoySinLuz: (state, action) => {\n state.flagCargadoEstoySinLuz = action.payload;\n },\n actualizarEstadoFlagNotificacionTer: (state, action) => {\n state.flagCargadoNotificacionTer = action.payload;\n },\n actualizarTokenCaptchaV3: (state, action) => {\n state.tokenCaptchaV3 = action.payload;\n },\n actualizarEstadoCaptchaV3: (state, action) => {\n state.captchaV3Estado = action.payload;\n },\n actualizarEstadoCaptchaV2: (state, action) => {\n state.captchaV2Estado = action.payload;\n },\n actualizarAcordeonNotificacionTerAbierto: (state, action) => {\n state.acordeonNotificacionTerAbierto = action.payload;\n },\n actualizarPasoActual: (state, action) => {\n state.pasoActual = action.payload;\n },\n actualizarEstadoClienteSuscrito: (state, action) => {\n state.clienteSuscritoTer = action.payload;\n },\n },\n});\n\nexport const {\n actualizarLogo,\n actualizarEstadoMenuAbierto,\n actualizarEstadoModalMobileAbierto,\n actualizarEstadoModalMobileAbiertoCompleto,\n actualizarEstadoMensajeFlotanteCerrado,\n actualizarFeatureFlagModoPEC,\n actualizarNumeroSolicitud,\n actualizarFeatureFlagCortesFuturos,\n actualizarSwitchCortesFuturos,\n actualizarEstadoGrafico,\n actualizarEstadoModalPaginaNoDisponible,\n actualizarEstadoFlag,\n actualizarEstadoFlagEstoySinLuz,\n actualizarEstadoFlagNotificacionTer,\n actualizarTokenCaptchaV3,\n actualizarEstadoCaptchaV3,\n actualizarEstadoCaptchaV2,\n actualizarAcordeonNotificacionTerAbierto,\n actualizarPasoActual,\n actualizarEstadoClienteSuscrito,\n} = desconexionSlice.actions;\n\nexport default desconexionSlice.reducer;\n","import { configureStore } from '@reduxjs/toolkit';\nimport desconexionReducer from './desconexion/desconexion';\n\nconst store = configureStore({\n reducer: {\n desconexion: desconexionReducer,\n },\n});\n\nexport default store;\n\nexport type RootState = ReturnType;\nexport type AppDispatch = typeof store.dispatch;\n","import { Loading } from '@saesa/ui-kit-front';\nimport { lazy, Suspense } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { ESTOYSINLUZ, MAPACORTES, MAPACORTESIFRAME } from 'root-page';\n\nconst RouterConfig = ({ path }: { path: string }) => {\n const PaginaMapaCortes = lazy(() => import('pages/Desconexion/MapaCortes/MapaCortes'));\n const PaginaEstoySinLuz = lazy(() => import('pages/Desconexion/EstoySinLuz/EstoySinLuz'));\n\n return (\n }>\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default RouterConfig;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst RootStyles = makeStyles((theme: Theme) =>\n createStyles({\n lineaTope: {\n width: '100%',\n height: '24px',\n position: 'relative',\n background: 'var(--primario-azul-oscuro)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n menuRoot: {\n display: 'flex',\n alignItems: 'center',\n margin: '0',\n },\n item: {\n listStyleType: 'none',\n marginRight: '2.375rem',\n cursor: 'pointer',\n fontSize: '0.875rem',\n },\n link: {\n color: 'white',\n textDecoration: 'none',\n },\n logo: {\n width: '160px',\n height: '60px',\n display: 'flex',\n alignItems: 'center',\n marginRight: 'auto',\n [theme.breakpoints.down('sm')]: {\n width: '110px',\n height: '36px',\n },\n },\n desconexion: {\n minHeight: '100vh',\n maxHeight: '100vh',\n },\n header: {\n display: 'flex',\n padding: '1.25rem 3.125rem',\n justifyContent: 'space-between',\n [theme.breakpoints.down('sm')]: {\n position: 'relative',\n\n padding: '1.25rem 1.25rem .75rem .75rem',\n alignItems: 'center',\n boxShadow: 'rgba(0, 0, 0, 0.09) 0px 3px 12px;',\n zIndex: 9,\n },\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n zIndex: 1,\n paddingBottom: '0',\n background: 'linear-gradient(180deg, var(--secundario-gris-azulado) 12%, var(--blanco) 108%)',\n },\n })\n);\n\nexport default RootStyles;\n","import { Hidden } from '@material-ui/core';\nimport { Header, Sidemenu } from 'components';\nimport { QueryParams } from 'config';\nimport { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { actualizarLogo } from 'store';\nimport { obtenerLogo } from 'utils';\nimport { esDatoValido } from 'utils/desconexionUtils';\nimport {\n CONTACTO,\n GRUPOSAESA,\n HERRAMIENTAS,\n INDICADORES,\n INVERSIONISTA,\n PATH_ESTOY_SIN_LUZ,\n PATH_MAPA_IFRAME,\n QUEINESOMOS,\n} from './constants';\nimport Routes from './navigation/RouterConfig';\nimport useStyles from './RootStyles';\n\nconst Root = ({ path }: { path: string }) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n /**\n * translate\n */\n const { t } = useTranslation();\n\n /**\n * Variable que maneja query params\n */\n const query = QueryParams();\n /**\n * valor de empresa obtenido por query params\n */\n const tipoEmpresa = query.get('empresa');\n\n /**\n * Metodo que hace llamado de servicio para validar numero de cliente\n */\n const validarNroCliente = () => {\n let actualizarLogoBody = {\n urlLogo: obtenerLogo(null),\n };\n if (esDatoValido(tipoEmpresa)) {\n actualizarLogoBody = {\n urlLogo: obtenerLogo(tipoEmpresa),\n };\n }\n dispatch(actualizarLogo(actualizarLogoBody));\n };\n\n /**\n * Arreglo que contiene menu de navegacion de menu tope del header\n */\n const menuNavegacion = [\n {\n id: 0,\n option: t('desconexion:paginas.mapaCortes.home.menu.grupoSaesa'),\n url: GRUPOSAESA,\n },\n {\n id: 1,\n option: t('desconexion:paginas.mapaCortes.home.menu.quienesSomos'),\n url: QUEINESOMOS,\n },\n {\n id: 2,\n option: t('desconexion:paginas.mapaCortes.home.menu.inversionistas'),\n url: INVERSIONISTA,\n },\n {\n id: 3,\n option: t('desconexion:paginas.mapaCortes.home.menu.indicadores'),\n url: INDICADORES,\n },\n {\n id: 4,\n option: t('desconexion:paginas.mapaCortes.home.menu.herramientas'),\n url: HERRAMIENTAS,\n },\n {\n id: 5,\n option: t('desconexion:paginas.mapaCortes.home.menu.contacto'),\n url: CONTACTO,\n },\n ];\n\n useEffect(() => {\n validarNroCliente();\n }, []);\n\n return (\n
\n {window.location.pathname !== PATH_ESTOY_SIN_LUZ && window.location.pathname !== PATH_MAPA_IFRAME && (\n // Se excluye el header en el flujo de Reportar Corte\n <>\n
\n \n
\n \n \n \n
\n \n )}\n
\n \n
\n
\n );\n};\n\nexport default Root;\n","export enum TipoDistribuidora {\n SAESA = 'S',\n EDELAYSEN = 'E',\n LUZ_OSORNO = 'L',\n FRONTEL = 'F',\n GLOSA_SAESA = 'Saesa',\n GLOSA_EDELAYSEN = 'Edelaysen',\n GLOSA_LUZ_OSORNO = 'Luz Osorno',\n GLOSA_FRONTEL = 'Frontel',\n GLOSA_GRUPO_SAESA = 'Grupo Saesa',\n}\n","export enum TipoCorteServicio {\n DEFAULT = '',\n NORMAL = 'N',\n CORTADO = 'C',\n REPOSICION = 'R',\n TRAMITE_CORTE = 'T',\n}\n","/* eslint-disable func-names */\n/* eslint-disable react/no-this-in-sfc */\nimport React, { ReactNode } from 'react';\nimport { validate as validateRut } from 'rut.js';\nimport * as Yup from 'yup';\n\nconst FormValidation = ({ children }: { children: ReactNode }) => {\n Yup.addMethod(Yup.string, 'rut', function (message: string) {\n return this.test('rut-test', message, rut => (rut ? validateRut(rut) : false));\n });\n\n Yup.addMethod(Yup.string, 'soloNumero', function (message?: string) {\n return this.matches(new RegExp(/^\\d*$/), message);\n });\n\n Yup.addMethod(Yup.string, 'noNumero', function (message?: string) {\n return this.matches(new RegExp(/^[a-zA-Z\\s]*$/), message);\n });\n\n Yup.addMethod(Yup.string, 'equalTo', function (ref, msg) {\n return this.test({\n name: 'equalTo',\n exclusive: false,\n // eslint-disable-next-line no-template-curly-in-string\n message: msg || '${path} must be the same as ${reference}',\n params: {\n reference: ref.path,\n },\n test(value: any) {\n return value === this.resolve(ref);\n },\n });\n });\n return <>{children};\n};\n\nexport default FormValidation;\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport enCommon from './en/common.json';\nimport enDesconexion from './en/desconexion.json';\nimport enErrors from './en/errors.json';\nimport esCommon from './es/common.json';\nimport esDesconexion from './es/desconexion.json';\nimport esErrors from './es/errors.json';\n\nexport const resources = {\n en: {\n translation: enCommon,\n desconexion: enDesconexion,\n errors: enErrors,\n },\n es: {\n translation: esCommon,\n desconexion: esDesconexion,\n errors: esErrors,\n },\n} as const;\n\ni18n.use(initReactI18next).init({\n lng: 'es',\n resources,\n ns: ['translation', 'desconexion', 'migracion'],\n});\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst AppStyles = makeStyles((theme: Theme) =>\n createStyles({\n variantSuccess: {\n backgroundColor: 'var(--success)',\n fontWeight: 700,\n },\n variantError: {\n backgroundColor: 'var(--rojo-error)',\n fontWeight: 700,\n padding: '16px, 64px, 16px, 64px',\n [theme.breakpoints.down('sm')]: {\n padding: '.375rem 1rem .375rem 1.25rem',\n },\n },\n variantInfo: {\n backgroundColor: 'var(--azul-info)',\n fontWeight: 700,\n },\n variantWarning: {\n backgroundColor: 'var(--amarillo-advertencia)',\n fontWeight: 700,\n },\n })\n);\n\nexport default AppStyles;\n","import jwt_decode, { JwtPayload } from 'jwt-decode';\nimport { createContext, ReactNode } from 'react';\nimport { LoginResponse } from 'services/models';\n\nexport type Auth = {\n usuario: LoginResponse | null;\n iniciarSesion: (login: LoginResponse, callback: () => void) => void;\n cerrarSesion: (callback: () => void) => void;\n usuarioAutenticado: () => boolean;\n};\n\nconst obtenerUsuarioStorage = () => ({\n access_token: localStorage.getItem('token')!,\n expires_in: parseInt(localStorage.getItem('expires_in')!, 10),\n token_type: localStorage.getItem('token_type')!,\n userId: localStorage.getItem('userId')!,\n});\n\nlet usuario: LoginResponse | null = obtenerUsuarioStorage();\n\nconst setUsuario = (nuevoUsuario: LoginResponse | null) => {\n usuario = nuevoUsuario;\n};\n\nconst iniciarSesion = (\n login: LoginResponse,\n callback = () => {\n // Parámetro obligatorio\n }\n) => {\n setUsuario(login);\n localStorage.setItem('token', login.access_token ? login.access_token : '');\n localStorage.setItem('expires_in', login.expires_in ? String(login.expires_in) : '');\n localStorage.setItem('token_type', login.token_type ? login.token_type : '');\n localStorage.setItem('userId', login.userId ? login.userId : '');\n\n callback();\n};\n\nconst cerrarSesion = (\n callback = () => {\n // Parámetro obligatorio\n }\n) => {\n setUsuario(null);\n localStorage.removeItem('token');\n localStorage.removeItem('expires_in');\n localStorage.removeItem('token_type');\n localStorage.removeItem('userId');\n callback();\n};\n\nconst usuarioAutenticado = () => {\n if (usuario?.access_token) {\n const date = new Date();\n const decodedToken = jwt_decode(usuario?.access_token);\n return decodedToken.exp! * 1000 > date.getTime();\n }\n return false;\n};\n\nconst auth: Auth = {\n usuario,\n iniciarSesion,\n cerrarSesion,\n usuarioAutenticado,\n};\n\nexport const authContext = createContext(auth);\n\nconst AuthProvider = ({ children }: { children: ReactNode }) => {children};\n\nexport default AuthProvider;\n","import { ThemeProvider } from '@material-ui/core';\nimport { Loading, theme, Version } from '@saesa/ui-kit-front';\nimport FormValidation from 'components/FormValidation/FormValidation';\nimport 'i18n/config';\nimport { SnackbarProvider } from 'notistack';\nimport { BrowserRouter } from 'react-router-dom';\nimport useStyles from './AppStyles';\nimport { TelemetryProvider, VERSION } from './config';\nimport { AuthProvider } from './context';\nimport { RootRouterConfig } from './navigation';\n\nfunction App() {\n const styles = useStyles();\n const conectionString = process.env.REACT_APP_INSIGHTS_CONNECTIONSTRING_KEY || '';\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","/* eslint-disable no-console */\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n window.location.hostname === '[::1]' ||\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\n/**\n * Función para validar service worker válido cuando cambie estado\n *\n * @param installingWorker estado de worker\n * @param registration registro\n * @param config estado configuración\n */\nfunction validateOnStateChangeValidSW(installingWorker: any, registration: any, config?: Config) {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n console.log('New content is available and will be used when all tabs for this page are closed. See https://cra.link/PWA.');\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n console.log('Content is cached for offline use.');\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n}\n\n/**\n * Función encargada de registrar service worker\n * @param swUrl url del service worker\n * @param config estado configuración\n */\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n const asignRegistration = registration;\n asignRegistration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n validateOnStateChangeValidSW(installingWorker, registration, config);\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n const contentType = response.headers.get('content-type');\n if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n checkValidServiceWorker(swUrl, config);\n navigator.serviceWorker.ready.then(() => {\n console.log('This web app is being served cache-first by a service worker. To learn more, visit https://cra.link/PWA');\n });\n } else {\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import '@saesa/ui-kit-front/lib/esm/assets/fonts/stylesheet.css';\nimport '@saesa/ui-kit-front/lib/esm/styles/colors.css';\nimport '@saesa/ui-kit-front/lib/esm/styles/reset.css';\nimport '@saesa/ui-kit-front/lib/esm/styles/styles.css';\nimport App from 'App';\nimport { AuthInterceptor } from 'config';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport TagManager from 'react-gtm-module';\nimport { Provider } from 'react-redux';\nimport reportWebVitals from './reportWebVitals';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\nimport { store } from './store';\n\nconst tagManagerArgs = {\n gtmId: String(process.env.REACT_APP_GTM),\n};\n\nTagManager.initialize(tagManagerArgs);\nsessionStorage.setItem('loading', '0');\nAuthInterceptor();\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\nserviceWorkerRegistration.unregister();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","/**\n * Constante que contiene la zona horaria de Chile\n */\nexport const zonaHoraria = 'America/Santiago';\n\n/**\n * Constante que contiene el tipo de idioma de la hora en español de chile\n */\nexport const LOCALE_ES_CL = 'es-CL';\n\n/**\n * Constante que contiene el tipo de idioma de la hora en ingles de Estados unidos\n */\nexport const LOCALE_EN_US = 'en-US';\n\n/**\n * Constante que coneitne el Tipo de formato para la hora\n */\nexport const tipoFormateo = 'M-d-yyyy, HH:mm:ss';\n\n/**\n * Constante que contiene el valor de cuantos milisegundos existen por cada minuto\n */\nexport const milisegundosPorMinuto = 60000;\n\n/**\n * Constante que contiene el numero de caracteres maximos en los selects\n */\nexport const cantidadCaracteresMaximosSelect = 23;\n\n/**\n * Constante de tipo de suscripción de notificacion de TER\n */\nexport const tipoDeSuscripcion = 'email';\n\n/**\n * Constante que contiene el tiempo de recarga de los captchas\n */\nexport const tiempoRecarga = 6000;\n\n/**\n * Constante que contiene el tiempo de recarga de los captcha v2\n */\nexport const tiempoRecargaV2 = 120000;\n\n/**\n * Constante que contiene el tiempo de recarga de los estilos d captcha v3\n */\nexport const tiempoRecargaEstilosCaptchaV3 = 100;\n\n/**\n * Constante para el umbral de ancho de ventana para diferenciar entre móvil y escritorio\n */\nexport const UMBRAL_ANCHO_VENTANA = 768;\n\n/**\n * Constante que contiene el minimo de caracteres posibles para un input de numero de cliente\n */\nexport const MINIMO_CARACTERES_NUMERO_DE_CLIENTE = 0;\n\n/**\n * Constante que contiene el maximo de caracteres posibles para un input de numero de cliente\n */\nexport const MAXIMO_CARACTERES_NUMERO_DE_CLIENTE = 8;\n\n/**\n * Constante que contiene el regex en el cual limita a que sean un total de ocho numeros\n */\nexport const REGEX_MAXIMO_OCHO_NUMEROS = /^\\d{8}$/;\n","export const ROOT = '';\nexport const MAPACORTES = 'mapa';\nexport const ESTOYSINLUZ = 'estoy-sin-luz';\nexport const MAPACORTESIFRAME = 'mapa-iframe';\nexport const PATH_ESTOY_SIN_LUZ = '/estoy-sin-luz';\nexport const PATH_MAPA_IFRAME = '/mapa-iframe';\nexport const QUEINESOMOS = 'https://web.gruposaesa.cl/web/guest/quienes-somos/nuestras-empresas';\nexport const INVERSIONISTA = 'https://web.gruposaesa.cl/web/guest/inversionistas/memoria-anual';\nexport const GRUPOSAESA = 'https://web.gruposaesa.cl/web/guest/inicio';\nexport const HERRAMIENTAS = 'https://web.gruposaesa.cl/web/saesa/tendido-electrico';\nexport const CONTACTO = 'https://web.gruposaesa.cl/web/saesa/red-de-oficinas';\nexport const INDICADORES = 'https://web.gruposaesa.cl/web/saesa/indicadores/conexion-y-ampliacion-de-servicios/';\nexport const CLIENTEHOGAR = 'https://web.gruposaesa.cl/web/saesa/cliente-hogar';\nexport const CLIENTEMPRESA = 'https://web.gruposaesa.cl/web/saesa/cliente-empresa';\nexport const SOMOSVECINOS = 'https://web.gruposaesa.cl/sustentabilidad/sustentabilidad-en-la-comunidad/somos-vecinos';\nexport const SEGUNDOS_REINTENTO = process.env.REACT_APP_TIEMPO_REINTENTO ?? 3000;\nexport const CANTIDAD_REINTENTOS = process.env.REACT_APP_CANTIDAD_REINTENTO ?? 3;\n","import { EventoAnalytics } from 'models/eventoAnalyticsModel.model';\nimport TagManager from 'react-gtm-module';\n\ndeclare global {\n interface Window {\n dataLayer: any;\n }\n}\n\n/**\n * Clase encargada de realizar marcaje en GTM\n */\nclass AnalyticsService {\n /**\n * Funcion encargada de inicializar tag manager\n */\n static inicializarGTM() {\n const tagManagerArgs = {\n gtmId: String(process.env.REACT_APP_GTM),\n };\n TagManager.initialize(tagManagerArgs);\n }\n\n /**\n * Función encargada de realizar envío de un evento a tag manager.\n *\n * @param ev evento a tagear\n * @returns envio tag manager\n */\n static enviarTag(ev: EventoAnalytics) {\n return window.dataLayer?.push({\n event: ev.evento,\n attributes: {\n eventLabel: ev.nombre,\n eventCategory: ev.categoria,\n eventId: process.env.REACT_APP_ANALYTICS,\n },\n });\n }\n}\nexport default AnalyticsService;\n","/**\n * Eventos GTM\n */\nexport const EventosGtmSaesa = {\n mapaDesconexiones: {\n acceso: {\n evento: 'mapafalla-accesosalmapa',\n nombre: 'accesosalmapa',\n categoria: 'mapafalla',\n },\n busqueda: {\n busquedaServicio: {\n evento: 'mapafalla-busquedaservicio',\n nombre: 'busquedaservicio',\n categoria: 'mapafalla',\n },\n busquedaServicioError: {\n evento: 'mapafalla-errorbusquedaservicio',\n nombre: 'errorbusquedaservicio',\n categoria: 'mapafalla',\n },\n busquedaDireccion: {\n evento: 'mapafalla-busquedadireccion',\n nombre: 'busquedadireccion',\n categoria: 'mapafalla',\n },\n busquedaDireccionError: {\n evento: 'mapafalla-errorbusquedadireccion',\n nombre: 'errorbusquedadireccion',\n categoria: 'mapafalla',\n },\n },\n reportarCorte: {\n evento: 'mapafalla-reportarcorte',\n nombre: 'reportarcorte',\n categoria: 'mapafalla',\n },\n poligono: {\n llamadaTracking: {\n evento: 'mapafalla-clickpoligono',\n nombre: 'clickpoligono',\n categoria: 'mapafalla',\n },\n cargaTracking: {\n evento: 'mapafalla-clickpoligonotracking',\n nombre: 'clickpoligonotracking',\n categoria: 'mapafalla',\n },\n switchCortesFuturos: {\n evento: 'mapafalla-cortesfuturos',\n nombre: 'cortesfuturos',\n categoria: 'mapafalla',\n },\n suscripcionCortes: {\n evento: 'mapafalla-suscripcionacortes',\n nombre: 'suscripcionacortes',\n categoria: 'mapafalla',\n },\n },\n },\n};\n"],"sourceRoot":""}