{"version":3,"sources":["services/AnalyticsService.ts","utils/GtmEvents.ts","config/HttpStatusCodeEnum.ts","config/AuthInterceptor.ts","config/ErrorInterceptor.ts","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/QueryParams.tsx","config/TelemetryProvider.tsx","config/version.ts","utils/constants.ts","utils/desconexionUtils.ts","navigation/constants.ts","assets/images/saesa-error.svg","navigation/NotFound/NotfoundStyle.ts","navigation/RootRouterConfig.tsx","services/desconexionService.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/AvisoPagoCortes/AvisoPagoCortesStyles.ts","components/AvisoPagoCortes/AvisoPagoCortes.tsx","components/TextoInferiorReportar/TextoInferiorReportar.tsx","utils/manejadorLogo.ts","config/tipoEtapasEnum.ts","utils/cookieUtils.ts","config/tiposCorte.ts","utils/styles/ModalGlobalStyles.ts","components/BotonCerrar/BotonCerrar.tsx","components/BotonCerrar/IconoCerrar.tsx","components/ModalSitioNoDisponible/ModalSitioNoDisponibleStyles.ts","components/ModalSitioNoDisponible/ModalSitioNoDisponible.tsx","assets/images/logo-google.svg","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/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/index.ts","root-page/navigation/RouterConfig.tsx","root-page/RootStyles.ts","root-page/Root.tsx","config/tipoDistribuidoraEnum.ts","config/tipoCorteServicioEnum.ts","store/desconexion/desconexion.ts","store/store.ts","components/FormValidation/FormValidation.tsx","i18n/config.ts","AppStyles.ts","context/Auth/AuthProvider.tsx","App.tsx","reportWebVitals.js","serviceWorkerRegistration.ts","index.tsx","root-page/constants.ts"],"names":["AnalyticsService","tagManagerArgs","gtmId","String","process","TagManager","initialize","ev","window","dataLayer","push","event","evento","attributes","eventLabel","nombre","eventCategory","categoria","eventId","EventosGtmSaesa","mapaDesconexiones","acceso","busqueda","busquedaServicio","busquedaServicioError","busquedaDireccion","busquedaDireccionError","reportarCorte","poligono","llamadaTracking","cargaTracking","switchCortesFuturos","HttpStatusCodeEnum","AuthInterceptor","apiKey","axios","interceptors","request","use","contador","sessionStorage","getItem","parseInt","setItem","toString","loading","document","getElementById","classList","add","mostrarLoading","token","localStorage","url","includes","headers","Authorization","reactPlugin","appInsights","TipoColoresEnum","TipoEstadoActualTrackingCorteEnum","TipoLargoLineaEnum","TipoTrackingCorteEnum","TIPOZOOM","TipoEstadoActualSecundarioTrackingCorteEnum","EtapasNumero","ocultarLoading","querySelectorAll","forEach","item","remove","ErrorInterceptor","t","response","error","ERROR_MSG","data","message","mensaje","RegExp","test","status","INTERNAL_SERVER_ERROR","Promise","reject","QueryParams","search","useLocation","useMemo","URLSearchParams","ai","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","REACT_APP_TELEMETRY_ROLE","TelemetryProvider","props","state","initialized","this","conectionString","after","AppInsightsInstrumentationKey","Boolean","setState","children","Component","withRouter","withAITracking","VERSION","zonaHoraria","LOCALE_EN_US","milisegundosPorMinuto","cantidadCaracteresMaximosSelect","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","tipo","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","DesconexionService","get","then","resolve","numeroOrden","nroCliente","post","nroServicio","idReclamo","codigoRegion","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","numeroCliente","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","volverModal","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","timeZone","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","Maps","zoom","cacheControl","setCacheControl","getTime","kmlUrl","kmlUrlFuturos","nombreCorteFuturo","rutaKmlCache","kml","concatenador","toLocaleLowerCase","endsWith","nuevaRutaKml","nuevaRutaKmlFuturos","modeloPasos","query","queryNroCliente","queryNombreEmpresa","modoPEC","modalNoDisponibleFlagVisible","modalPaginaNoDisponible","activacionModal","valorMinutosModal","tiempoCookie","flagCargado","cortesFuturosHabilitacion","cortesFuturos","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","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","enviarTag","catch","tiempoMostrarModal","setFieldValue","mostrarModalCookie","modalActivo","values","validationSchema","Yup","required","soloNumero","max","onLoad","ref","realizarBusquedaPorDireccion","getPlaces","geometry","dataDireccion","name","obtenerInformacion","objetoData","datas","filter","arregloModificado","obj","nuevoTitulo","arregloModificadoFuturo","objetoFuturo","onClickKml","scrollInicialModal","featureData","infoWindowHtml","actualizarEstadoMensajeFlotanteCerrado","mensajeFlotanteCerrado","obtenerRespuestaCorte","description","fechaTER","dataCorte","e","obtenerFechaTER","responseTER","CORTE_INESPERADO","CORTE_FUTURO","tituloCorte","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","body","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","AvisoPagoCortesStyles","avisoCorteCnt","noVistaAvisoCorteCnt","label","sinInfo","contenedorGrafico","grafico","objetoSobreponer","ovaloGrafica","porcentajeRecuperados","order","circuloVerde","contenedorPorcentaje","alignSelf","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","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","RouterConfig","PaginaMapaCortes","lazy","PaginaEstoySinLuz","fallback","MAPACORTESIFRAME","ESTOYSINLUZ","RootStyles","lineaTope","menuRoot","Root","actualizarLogoBody","actualizarLogo","validarNroCliente","desconexionSlice","createSlice","initialState","usuario","numeroTelefono","apellido","email","rut","numeroSolicitud","flagCargadoEstoySinLuz","reducers","action","payload","actualizarFeatureFlagModoPEC","actualizarNumeroSolicitud","actualizarFeatureFlagCortesFuturos","actualizarSwitchCortesFuturos","actualizarEstadoModalPaginaNoDisponible","actualizarEstadoFlag","actualizarEstadoFlagEstoySinLuz","actualizarPasoActual","actions","store","configureStore","reducer","desconexionReducer","FormValidation","validateRut","matches","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","cerrarSesion","removeItem","usuarioAutenticado","date","jwt_decode","exp","authContext","createContext","AuthProvider","Provider","App","REACT_APP_INSIGHTS_CONNECTIONSTRING_KEY","ThemeProvider","classes","maxSnack","autoHideDuration","anchorOrigin","vertical","horizontal","showTag","version","env","fullVersion","JSON","stringify","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","hostname","match","render","StrictMode","navigator","serviceWorker","ready","registration","unregister","console","SEGUNDOS_REINTENTO","CANTIDAD_REINTENTOS"],"mappings":"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","file":"static/js/main.464421a2.chunk.js","sourcesContent":["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: 'accesos_mapa',\n nombre: 'Acceso a mapa de desconexiones',\n categoria: 'mapa_desconexiones',\n },\n busqueda: {\n busquedaServicio: {\n evento: 'busqueda_servicio',\n nombre: 'Busqueda por numero de servicio',\n categoria: 'mapa_desconexiones',\n },\n busquedaServicioError: {\n evento: 'busqueda_servicio_error',\n nombre: 'Error en busqueda de servicio',\n categoria: 'mapa_desconexiones',\n },\n busquedaDireccion: {\n evento: 'busqueda_direccion',\n nombre: 'Busqueda por dirección',\n categoria: 'mapa_desconexiones',\n },\n busquedaDireccionError: {\n evento: 'busqueda_direccion_error',\n nombre: 'Error en Busqueda por dirección',\n categoria: 'mapa_desconexiones',\n },\n },\n reportarCorte: {\n evento: 'reportar_corte',\n nombre: 'Botón reportar corte',\n categoria: 'mapa_desconexiones',\n },\n poligono: {\n llamadaTracking: {\n evento: 'click_poligono',\n nombre: 'Click en poligono busqueda tracking',\n categoria: 'mapa_desconexiones',\n },\n cargaTracking: {\n evento: 'click_poligono_tracking',\n nombre: 'Información cargada desde tracking',\n categoria: 'mapa_desconexiones',\n },\n switchCortesFuturos: {\n evento: 'click_switch_cortes_futuros',\n nombre: 'Switch cortes futuros',\n categoria: 'mapa_desconexiones',\n },\n },\n },\n};\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 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\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 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 { 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","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\": \"1.24.9\",\n \"gitBuildTime\": \"2024-08-14T14:54:16.210Z\",\n \"gitBuildVersion\": \"1.24.9\",\n \"gitCommitId\": \"10bc9b7\",\n \"gitCommitIdFull\": \"10bc9b74e926cdca50135e536d67adb070bef1f6\",\n \"gitCommitTime\": \"2024-08-14T14:53:03.000Z\",\n \"version\": \"1.24.9-2024-08-14T14:53:03.000Z-(10bc9b7)\"\n};\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","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","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 encargado de obtener el estado del ticket\n * @param nroServicio del cliente\n * @param idReclamo a validar\n * @returns respuesta de estado del ticket\n */\n static obtenerEstadoReclamo(nroServicio: string, idReclamo: string): Promise {\n return axios\n .get(`${process.env.REACT_APP_DESCONEXION}/reclamo/sinluz/${nroServicio}/${idReclamo}`)\n .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}\nexport default DesconexionService;\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 { 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 * Funcion para cerrar ventana modal y abrir buscador\n */\n const cerrarModal = () => {\n setMostrarModal(false);\n setMostrarBuscador(true);\n setServicioCargado(false);\n setTitulo('');\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 display: 'block',\n top: '2rem',\n left: '3.125rem',\n alignItems: 'center',\n justifyContent: 'center',\n [theme.breakpoints.down('sm')]: {\n top: '1.875rem',\n left: '50%',\n transform: 'translateX(-50%)',\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 height: '45px',\n marginBottom: '1rem',\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 marginBottom: '1.575rem',\n },\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 })\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 { RootState, actualizarEstadoMensajeFlotanteCerrado, actualizarEstadoModalMobileAbierto } 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 * 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 * Disparador para el selector\n */\n const dispatch = useDispatch();\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 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 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(respuestaServicio, t, stylesCortes.avisoPago, corteProgramado);\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 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\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 === 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 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 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 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 );\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 * Retornar vista pantalla sigo con problemas , caso estado *normalized*\n * @param respuesta\n * @returns\n */\nexport const obtenerPantallaSigoConProblemas = (respuesta: TrackingCorteEstadosResponseModel, t: any, estilos?: any, programado?: any) => {\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 { 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 },\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 { 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}: {\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}) => {\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 && 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 ]);\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}\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","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 { 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/logo-google.dc35acb2.svg\";","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/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 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 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';\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 { CONTACTO, GRUPOSAESA, HERRAMIENTAS, INDICADORES, INVERSIONISTA, PATH_ESTOY_SIN_LUZ, PATH_MAPA_IFRAME, QUEINESOMOS } 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","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 pasoActual: 1,\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 actualizarPasoActual: (state, action) => {\n state.pasoActual = 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 actualizarPasoActual,\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","/* 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: '.625rem 9.375rem',\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","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"],"sourceRoot":""}