{"version":3,"sources":["services/AnalyticsService.ts","utils/GtmEvents.ts","config/TelemetryService.ts","config/tipoColoresEnum.ts","config/tipoEstadoActualTrackingCorteEnum.ts","config/tipoLargoLineaEnum.ts","config/tipoTrackingCorteEnum.ts","config/tipoZoomEnum.ts","config/tipoEstadoActualSecundarioTrackingCorteEnum.ts","config/AuthInterceptor.ts","config/ErrorInterceptor.ts","config/QueryParams.tsx","config/TelemetryProvider.tsx","config/version.ts","utils/desconexionUtils.ts","navigation/constants.ts","assets/images/saesa-error.svg","navigation/NotFound/NotfoundStyle.ts","navigation/RootRouterConfig.tsx","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","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/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","services/desconexionService.ts","utils/manejadorLogo.ts","config/tipoEtapasEnum.ts","config/HttpStatusCodeEnum.ts","assets/images/logo-google.svg","config/tiposCorte.ts","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/index.ts","root-page/navigation/RouterConfig.tsx","root-page/RootStyles.ts","root-page/Root.tsx","config/tipoDistribuidoraEnum.ts","store/desconexion/desconexion.ts","store/store.ts","config/tipoCorteServicioEnum.ts","components/FormValidation/FormValidation.tsx","i18n/config.ts","AppStyles.ts","context/Auth/AuthProvider.tsx","App.tsx","reportWebVitals.js","serviceWorkerRegistration.ts","index.tsx","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","reactPlugin","appInsights","TipoColoresEnum","TipoEstadoActualTrackingCorteEnum","TipoLargoLineaEnum","TipoTrackingCorteEnum","TIPOZOOM","TipoEstadoActualSecundarioTrackingCorteEnum","AuthInterceptor","apiKey","publicIgnore","RegExp","regexFeatureFlagIgnore","axios","interceptors","request","use","contador","sessionStorage","getItem","parseInt","setItem","toString","loading","document","getElementById","classList","add","mostrarLoading","token","localStorage","test","url","headers","Authorization","ocultarLoading","querySelectorAll","forEach","item","remove","ErrorInterceptor","t","response","error","ERROR_MSG","data","message","mensaje","status","HttpStatusCodeEnum","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","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","ROOT","URL_ESTOY_SIN_LUZ","makeStyles","theme","createStyles","contenedor","position","width","minHeight","zIndex","display","alignItems","contenido","marginLeft","breakpoints","down","justifyContent","marginTop","texto","maxWidth","textAlign","icono","right","top","title","color","subtitle","marginBottom","RootRouterConfig","useTranslation","path","exact","to","MAPACORTES","HeaderStyles","logoImg","height","logo","marginRight","menuHeader","margin","iconAbrirMenu","stroke","iconCerrarMenu","mostrarElemento","esconderElemento","visibility","listStyleType","cursor","fontSize","link","textDecoration","outlined","backgroundColor","border","borderWidth","menuItemActive","Header","className","styles","useStyles","useSelector","desconexion","distribuidora","dispatch","useDispatch","menuAbierto","menuNavegacion","id","option","SOMOSVECINOS","CLIENTEHOGAR","CLIENTEMPRESA","src","urlLogo","alt","map","href","target","rel","type","Hidden","only","IconButton","onClick","actualizarEstadoMenuAbierto","clsx","defaultProps","InfoClienteStyles","servicio","background","borderRadius","padding","minWidth","headerServicio","bodyServicio","contenedorEstado","flexDirection","gap","numeroCliente","calle","comuna","localidad","estado","estadoActivo","fontWeight","estadoInactivo","estadoTransicion","tituloCampo","campo","botonVolver","editar","InfoCliente","contenidoPorTipo","estadoServicio","TipoCorteServicio","NORMAL","variant","CORTADO","REPOSICION","TRAMITE_CORTE","TIPOCORTE","COD_CORTE_PROGRAMADO","COD_CORTE_IMPREVISTO","useState","renderContenido","setRenderContenido","useEffect","strong","PATH_ESTOY_SIN_LUZ","newResponseTracking","clientesAfectadosTotales","clientesNormalizados","estadoActual","NORMALIZED","fechaArriboBrigada","fechaCreacionCaso","fechaFinCorte","fechaInicioCorte","motivo","tipo","IMPREVISTO","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","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","DEFAULT","datoNoValido","trim","esCorteImprevisto","noEsCorteImprevisto","esCorteImprevistoConArriboBrigada","arriboBrigada","tieneArriboBrigadaValido","esCorteImprevistoCondicion","NORMALIZADO","esBrigadaEnTerreno","BRIGADA_EN_TERRENO","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","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","get","queryNombreEmpresa","modoPEC","cortesFuturosHabilitacion","cortesFuturos","initialValues","nroCliente","direccion","formik","useFormik","onSubmit","stylesCortes","useStylesCortes","enqueueSnackbar","useSnackbar","ID_MARKER_BUSQUEDA","dataMapa","infoBusqueda","setInfoBusqueda","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","PROGRAMADO","CONFIRMED","ACTIVATED","ARRIBO_BRIGADA","FULL","obtenerElementoTimeInicio","RelojIcon","MEDIUM","obtenerElementoTimeMedio","LARGE","GRIS_L93","GRIS_L83","GRIS_L63","obtenerElementoTimeFin","vistaTextoInformativo","estilos","Trans","i18nKey","hora","shouldUnescape","textoBajada","obtenerTextoInformativo","vistaProblemasServicio","programado","SIN_FALLAS","motivoCorte","fechaReposicion","horaInicioCorte","clientesAfectados","estadoCorte","porcentajeClientesSinServicio","obtenerPantallaSigoConProblemas","vistaTextoInferiorReportar","obtenerTextoInferiorReportar","tituloListaNegra","tipoCorteFuturo","isLoaded","useLoadScript","googleMapsApiKey","libraries","actualizarPosicionMarcador","consultarNroCliente","DesconexionService","busquedaNroCliente","then","dataNroCliente","latitud","longitud","blur","enviarTag","catch","setFieldValue","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","includes","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","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","toLocaleString","replaceAll","PieChart","entry","index","offset","stopColor","Pie","dataKey","cx","cy","innerRadius","outerRadius","paddingAngle","labelLine","startAngle","cornerRadius","strokeWidth","strokeOpacity","isAnimationActive","Cell","fill","TextoInferiorReportar","open","resolve","numeroOrden","post","nroServicio","idReclamo","obtenerLogo","tipoEmpresa","codEmpresa","SAESA_LOGO","FRONTEL_LOGO","EDELAYSEN_LOGO","LUZOSORNO_LOGO","GRUPOSAESA_LOGO","manejarLogo","RouterConfig","PaginaMapaCortes","lazy","PaginaEstoySinLuz","fallback","MAPACORTESIFRAME","ESTOYSINLUZ","RootStyles","lineaTope","menuRoot","Root","actualizarLogoBody","actualizarLogo","validarNroCliente","desconexionSlice","createSlice","initialState","usuario","numeroTelefono","apellido","email","rut","numeroSolicitud","reducers","action","payload","actualizarFeatureFlagModoPEC","actualizarNumeroSolicitud","actualizarFeatureFlagCortesFuturos","actualizarSwitchCortesFuturos","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","ReactDOM","render","StrictMode","navigator","serviceWorker","ready","registration","unregister","console","SEGUNDOS_REINTENTO","CANTIDAD_REINTENTOS"],"mappings":"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","file":"static/js/main.95657954.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","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","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 const publicIgnore = new RegExp(/\\/public/g);\n const regexFeatureFlagIgnore = new RegExp(/\\/featureFlag.json/g);\n axios.interceptors.request.use(request => {\n mostrarLoading();\n const token = localStorage.getItem('token');\n\n if (!regexFeatureFlagIgnore.test(request.url!)) {\n request.headers['x-api-key'] = apiKey;\n\n if (!publicIgnore.test(request.url!)) {\n if (!token || request.headers.Authorization) {\n request.headers.Authorization = request.headers.Authorization || null;\n } else {\n request.headers.Authorization = `Bearer ${token}`;\n }\n }\n }\n\n return request;\n });\n};\n\nexport default AuthInterceptor;\n","import axios from 'axios';\nimport { HttpStatusCodeEnum } from './HttpStatusCodeEnum';\n\nconst ocultarLoading = () => {\n let contador: string | number | null = sessionStorage.getItem('loading');\n contador = parseInt(contador!, 10);\n if (contador > 0) {\n contador = contador > 0 ? contador - 1 : 0;\n sessionStorage.setItem('loading', contador.toString());\n }\n\n if (contador === 0) {\n const loading: any = document.querySelectorAll('#loading');\n loading.forEach((item: any) => item.classList.remove('backdrop--show'));\n }\n};\n\nconst ErrorInterceptor = (t: any) => {\n axios.interceptors.response.use(\n response => {\n ocultarLoading();\n return response;\n },\n error => {\n ocultarLoading();\n const ERROR_MSG = t('errors.generic');\n if (error.response?.data) {\n if (error.response?.data?.message) {\n error.response.data.mensaje = error.response.data?.message || ERROR_MSG;\n const regexDesconexion = new RegExp(/desconexion/g);\n if (!regexDesconexion.test(error.response?.data?.message)) {\n error.response.data.mensaje = ERROR_MSG;\n }\n } else {\n error.response = { ...error.response, data: { mensaje: ERROR_MSG } };\n }\n } else {\n error.response = { ...error.response, data: { mensaje: ERROR_MSG } };\n }\n if (error.status === HttpStatusCodeEnum.INTERNAL_SERVER_ERROR) {\n error.response.data.mensaje = ERROR_MSG;\n }\n return Promise.reject(error);\n }\n );\n};\n\nexport default ErrorInterceptor;\n","import { useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst QueryParams = () => {\n const { search } = useLocation();\n return useMemo(() => new URLSearchParams(search), [search]);\n};\nexport default QueryParams;\n","import { withAITracking } from '@microsoft/applicationinsights-react-js';\nimport { BrowserHistory } from 'history';\nimport { Component, ReactNode } from 'react';\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\nimport { ai } from './TelemetryService';\n/**\n * This Component provides telemetry with Azure App Insights\n *\n * NOTE: the package '@microsoft/applicationinsights-react-js' has a HOC withAITracking that requires this to be a Class Component rather than a Functional Component\n */\n\ninterface Props extends RouteComponentProps {\n history: BrowserHistory;\n children: ReactNode;\n conectionString: string;\n // eslint-disable-next-line react/require-default-props\n after?: () => void;\n}\n\ninterface State {\n initialized: boolean;\n}\n\nclass TelemetryProvider extends Component {\n constructor(props: Props) {\n super(props);\n this.state = {\n initialized: false,\n };\n }\n\n componentDidMount() {\n const { history, conectionString, after } = this.props;\n const { initialized } = this.state;\n const AppInsightsInstrumentationKey = conectionString;\n if (!initialized && Boolean(AppInsightsInstrumentationKey) && Boolean(history)) {\n ai.initialize(AppInsightsInstrumentationKey, history);\n this.setState({ initialized: true });\n }\n\n if (after) {\n after();\n }\n }\n\n render() {\n const { children } = this.props;\n return <>{children};\n }\n}\n\nexport default withRouter(withAITracking(ai.reactPlugin, TelemetryProvider));\n","/* eslint-disable prettier/prettier */\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\nexport const VERSION = {\n \"gitBuildGlobalVersion\": \"1.22.1\",\n \"gitBuildTime\": \"2024-04-30T14:35:49.039Z\",\n \"gitBuildVersion\": \"1.22.1\",\n \"gitCommitId\": \"de7cc4e\",\n \"gitCommitIdFull\": \"de7cc4e3b30d9476145e78c3aa052f128cf4d1cc\",\n \"gitCommitTime\": \"2024-04-30T14:34:13.000Z\",\n \"version\": \"1.22.1-2024-04-30T14:34:13.000Z-(de7cc4e)\"\n};\n","import { TipoDistribuidora } from 'config/tipoDistribuidoraEnum';\nimport { InfoClienteModel } from '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","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 { 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 { 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 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 { 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 { scrollInicialModal } from 'utils/trackingUtils';\nimport Disclaimer from './Disclaimer/Disclaimer';\nimport ColorBallsImprevistoSinBrigada from './ColorBalls/ColorBallsImprevistoSinBrigada';\nimport ColorBallsImprevistoConBrigada from './ColorBalls/ColorBallsImprevistoConBrigada';\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 * 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 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 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 * Use effect que se gatilla al inicializar componente\n */\n useEffect(() => {\n inicializarDataMapa();\n if (queryNroCliente) {\n consultarNroCliente(queryNroCliente);\n }\n }, []);\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 !== ''\n ? response.fechaInicioCorte\n : t('desconexion:paginas.tracking.corte.avisoPago.textos.sinDeterminar')\n );\n setSegundaData(\n response.fechaFinCorte !== '' ? response.fechaFinCorte : 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 ) {\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 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\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 );\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 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}\nexport default DesconexionService;\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","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","export default __webpack_public_path__ + \"static/media/logo-google.dc35acb2.svg\";","export enum TIPOCORTE {\n CORTE_IMPREVISTO = 'inesperado',\n CORTE_PROGRAMADO = 'programado',\n PROXIMO_CORTE_PROGRAMADO = 'Próximo corte programado',\n COD_CORTE_PROGRAMADO = 'CP',\n COD_CORTE_IMPREVISTO = 'CI',\n}\n","export default __webpack_public_path__ + \"static/media/tooltip-numero-servicio.1c82e67d.png\";","export default __webpack_public_path__ + \"static/media/icono-reportar-ok.6f70a9c3.svg\";","export default __webpack_public_path__ + \"static/media/icono-reportar-cortado.8b6b4a2e.svg\";","export default __webpack_public_path__ + \"static/media/icono-reportar-comercial.ac40d49c.svg\";","export default __webpack_public_path__ + \"static/media/icono-redireccion.c79e5f92.svg\";","export default __webpack_public_path__ + \"static/media/icono-redireccion-morado.332f2852.svg\";","export default __webpack_public_path__ + \"static/media/icono-volver.6becedd4.svg\";","export default __webpack_public_path__ + \"static/media/icono-informacion.92f66ad0.svg\";","export default __webpack_public_path__ + \"static/media/icono-mapa.2955e5f7.svg\";","export default __webpack_public_path__ + \"static/media/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 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';\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","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};\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 },\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} = 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","export enum TipoCorteServicio {\n DEFAULT = '',\n NORMAL = 'N',\n CORTADO = 'C',\n REPOSICION = 'R',\n TRAMITE_CORTE = 'T',\n}\n","/* eslint-disable func-names */\n/* eslint-disable react/no-this-in-sfc */\nimport React, { ReactNode } from 'react';\nimport { validate as validateRut } from 'rut.js';\nimport * as Yup from 'yup';\n\nconst FormValidation = ({ children }: { children: ReactNode }) => {\n Yup.addMethod(Yup.string, 'rut', function (message: string) {\n return this.test('rut-test', message, rut => (rut ? validateRut(rut) : false));\n });\n\n Yup.addMethod(Yup.string, 'soloNumero', function (message?: string) {\n return this.matches(new RegExp(/^\\d*$/), message);\n });\n\n Yup.addMethod(Yup.string, 'noNumero', function (message?: string) {\n return this.matches(new RegExp(/^[a-zA-Z\\s]*$/), message);\n });\n\n Yup.addMethod(Yup.string, 'equalTo', function (ref, msg) {\n return this.test({\n name: 'equalTo',\n exclusive: false,\n // eslint-disable-next-line no-template-curly-in-string\n message: msg || '${path} must be the same as ${reference}',\n params: {\n reference: ref.path,\n },\n test(value: any) {\n return value === this.resolve(ref);\n },\n });\n });\n return <>{children};\n};\n\nexport default FormValidation;\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport enCommon from './en/common.json';\nimport enDesconexion from './en/desconexion.json';\nimport enErrors from './en/errors.json';\nimport esCommon from './es/common.json';\nimport esDesconexion from './es/desconexion.json';\nimport esErrors from './es/errors.json';\n\nexport const resources = {\n en: {\n translation: enCommon,\n desconexion: enDesconexion,\n errors: enErrors,\n },\n es: {\n translation: esCommon,\n desconexion: esDesconexion,\n errors: esErrors,\n },\n} as const;\n\ni18n.use(initReactI18next).init({\n lng: 'es',\n resources,\n ns: ['translation', 'desconexion', 'migracion'],\n});\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\n\nconst AppStyles = makeStyles((theme: Theme) =>\n createStyles({\n variantSuccess: {\n backgroundColor: 'var(--success)',\n fontWeight: 700,\n },\n variantError: {\n backgroundColor: 'var(--rojo-error)',\n fontWeight: 700,\n padding: '.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":""}